动手学Avalonia:基于硅基流动构建一个文生图应用(一)
文生图
文生图,全称“文字生成图像”(Text-to-Image),是一种AI技术,能够根据给定的文本描述生成相应的图像。这种技术利用深度学习模型,如生成对抗网络(GANs)或变换器(Transformers),来理解和解析文本中的语义信息,并将其转化为视觉表现。文生图可以用于创意设计、图像编辑、虚拟现实、游戏开发等多个领域,为用户提供了从文字到图像的创造性转换工具。例如,用户可以输入“一只蓝色的猫坐在月球上”,AI将尝试生成符合描述的图像。

Stable Diffusion
Stable Diffusion 是一种潜在的文本到图像扩散模型。得益于 Stability AI 慷慨的计算资源捐赠以及 LAION 的支持,我们得以使用 LAION-5B 数据库的一个子集中的 512x512 图像来训练一个潜在扩散模型。与 Google 的 Imagen 类似,此模型使用一个冻结的 CLIP ViT-L/14 文本编码器来根据文本提示对模型进行条件设定。该模型拥有 8.6 亿参数的 UNet 和 1.23 亿参数的文本编码器,相对轻量,只需要至少 10GB VRAM 的 GPU 即可运行。详情请参阅以下部分和模型卡片。
简而言之,Stable Diffusion 是一个由 Stability AI 和 LAION 支持的项目,使用 LAION-5B 数据库中的图像训练而成。它借鉴了 Google Imagen 的设计理念,使用 CLIP ViT-L/14 文本编码器处理文本提示,具有相对较小的模型大小,使得它在普通 GPU 上即可运行。
Stable Diffusion 3 Medium 是目前 Stable Diffusion 3 系列中最新、最先进的文本到图像 AI 模型,包含 20 亿个参数。它擅长照片级真实感,处理复杂的提示并生成清晰的文本。
stable-diffusion-3-medium模型开源地址:https://huggingface.co/stabilityai/stable-diffusion-3-medium

硅基流动
由于我目前硬件资源不行无法本地运行stable-diffusion-3-medium,但又想试试文生图模型,因此现阶段可以采用调用api的方式来使用。硅基流动平台目前提供了stable-diffusion-3的调用接口,并且限时免费,因为选择调用硅基流动提供的api。

Avalonia
基于Avalonia可以使用C#+Xaml构建跨平台应用。
本项目或许不具备太大的实用价值,权且当做学习Avalonia的一个练手项目。
项目架构:

在使用Avalonia的模板创建项目之后,更改项目为.net8,并升级一下包,这样可能会避免一些报错。
由于发现不支持中文提示词,因此还是使用SemanticKerenl基于LLM将中文提示词翻译为英文提示词,然后根据英文提示词绘图。
观察一下桌面端的依赖项,桌面端引用了核心项目,使用的包是Avalonia.Desktop。

桌面端实现效果如下所示:

观察一下Android端的依赖项,Android端也引用了核心项目,使用的包是Avalonnia.Android与Xamarin.AndroidX.Core.SplashScreen。

Android端调试可以选择模拟器与物理机。

避坑
选择物理机调试时要打开开发者模式,打开USB调试,最重要的是要允许通过USB安装,我之前没有设置这个,就会遇到一个被用户取消的错误提示。
Android端不知道为什么SenmanticKernel对提示模板不起作用如下所示:

现在只能自己写英文提示词绘图。
Android端的实现效果如下:

以上就是动手学Avalonia:基于硅基流动构建一个文生图应用(一)的内容,希望对使用C#构建跨平台应用感兴趣的小伙伴有所帮助。
动手学Avalonia:基于硅基流动构建一个文生图应用(一)的更多相关文章
- .NET 跨平台应用开发动手教程 |用 Uno Platform 构建一个 Kanban-style Todo App
作者:Steven Giesel 翻译:Alan Wang 校对:李卫涵 – 微软 MVP 排版:Rani Sun 有什么比参考包含分步说明和代码示例的动手教程更好的学习新技术的方式呢?当你完成或 f ...
- 基于 vue2 + vuex 构建一个具有 45 个页面的大型单页面应用
源码地址: https://github.com/bailicangdu/vue2-elm 技术栈 vue2 + vuex + vue-router + webpack + ES6/7 + fetch ...
- 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
- 基于jib-maven-plugin快速构建微服务docker镜像
一.说明 本文介绍基于 Maven 插件 jib-maven-plugin 实现快速构建 Spring Boot 程序镜像,并推送到远程仓库中,且 无需安装 Docker 环境 . Jib 是 Goo ...
- 流程自动化RPA,Power Automate Desktop系列 - 构建VuePress文档中心脚手架
一.背景 笔者曾基于VuePress搭建过一个文档中心,但是在实现在线管理功能之前,很多时候,新建文档需要手动处理很多数据,看有没有可能实现一个脚手架来处理这些问题,所谓脚手架,就是进行文档初始化的一 ...
- 小白学 Python 爬虫(31):自己构建一个简单的代理池
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- Gravitational Teleport 是一个先进的 SSH 服务器,基于 Golang SSH 构建,完全兼容 OpenSSH
Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器.其目的是为了替代 sshd.Teleport 可以轻松让团队 ...
- 使用 XMPP 构建一个基于 web 的通知工具——转
Inserting of file(使用 XMPP 构建一个基于 web 的通知工具.docx) failed. Please try again. http://www.ibm.com/develo ...
- 构建一个基于 Spring 的 RESTful Web Service
本文详细介绍了基于Spring创建一个“hello world” RESTful web service工程的步骤. 目标 构建一个service,接收如下HTTP GET请求: http://loc ...
随机推荐
- 复现禅道V17.4的sql注入漏洞
漏洞详情 简述:禅道是第一款国产的开源项目管理软件,它的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理.计划管理.发布管理.文档管理.事务管理等功 ...
- 通过XML标记生成word
思路 word生成可以通过标签,也可以通过XML元素. word文档实际上是由文档对象模型描述的,因此我们能够通过对文档对象进行操作去生成word. 由于word允许我们附加XML结构(元素),如下: ...
- 关于EF Core 更新速度随时间越来越慢的解决办法
关于EF Core更新速度随时间越来越慢的解决办法 概要 本篇主要介绍使用 context.ChangeTracker.Clear() 方法,在通过循环进行批量更新时,通过手动清除跟踪实体以提高性能的 ...
- 给师妹写的《Java并发编程之线程池十八问》被表扬啦!
写在开头 之前给一个大四正在找工作的学妹发了自己总结的关于Java并发中线程池的面试题集,总共18题,将之取名为<Java并发编程之线程池十八问>,今天聊天时受了学妹的夸赞,心里很 ...
- Windows库链接报错
问题回溯 今天拿到别人已经编译好的库,发现在链接的时候出现了报错 [9/9 12.7/sec] Linking CXX shared module bin\plugins\AsensingPlugin ...
- MySQL学习笔记-多表查询(下)
多表查询(下) 一. 联合查询 联合查询:将多次查询结果合并,形成新的查询结果集 select {字段列表} from {表A} ... union [all] select {字段列表} from ...
- Python 将Word/ Exce/ PDF/ PPT文档转为OFD文档
OFD(Open Fixed-layout Document )是我国自主制定的一种开放版式文件格式标准.OFD文档具有不易被篡改.格式独立.版式固定等特点,目前常用于政府公文.金融.电子发票等领域. ...
- 生成树协议(STP)基本知识及实验(使用eNSP)
1.基本知识--摘至<网络之路--交换专题> (1)生成树的作用:在链路层消除环路上可能出现的广播风暴. (2)生成树的工作由三部分组成:选举过程.拓扑计算.端口行为确定. 选举过程:在二 ...
- INFINI Labs 产品更新 | Easysearch 新增跨集群复制 (CCR)、支持快照生命周期管理 (SLM) 功能等
INFINI Labs 产品重量级更新!!!本次更新了很多亮点功能,如 Easysearch 新增跨集群复制 (CCR).支持快照生命周期管理 (SLM) 功能等:支持多集群.跨版本的搜索基础设施统一 ...
- 3代 I3 3220 对比12代 G6900 测试 入手 上手 评测
3代 I3 3220 对比12代 G6900 测试 入手 上手 评测 I3 3220 的CPU-Z ,和cinebench r23 跑分. G6900 的CPU-Z ,和cinebench r23 跑 ...