动手学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 ...
随机推荐
- Java面试题:线程池内“闹情绪”的线程,怎么办?
在Java中,线程池中工作线程出现异常的时候,默认会把异常往外抛,同时这个工作线程会因为异常而销毁,我们需要自己去处理对应的异常,异常处理的方法有几种: 在传递的任务中去处理异常,对于每个提交到线程池 ...
- OpenAirInterface,开源的 4G EPS 实现
目录 文章目录 目录 前文列表 OSA OpenAirInterface OAI 的仿真 物理信道仿真 系统级仿真 OAI 的 SDR LTE 参考文档 前文列表 <USRP B210 软件定义 ...
- TypingLearn解决了我在学习英语中的一大痛点
上一次在博客园发贴还是在上一次(2021年),那个时候博客园就遇到了危机(被罚款).彼时在疫情期间,我个人生活也受到了影响,先后去了多个城市,最终在上海找到了 .NET Web开发的岗位,还是比较幸运 ...
- PHP 中使用 ElasticSearch 的最佳实践 (下)
引言 上一篇文章,我们使用同步的方式将数据,同步写入到 ElasticSearch 中.接下来的这篇文章,主要介绍使用 RabbitMQ 的方式,异步的将数据同步到 ElasticSearch . 部 ...
- Python并行运算——threading库详解(持续更新)
0. 写在前面:进程和线程 博文参考: Python的并行(持续更新)_python 并行-CSDN博客 <Python并行编程 中文版> 一些相关概念请见上一篇博文. 1. 在Pytho ...
- kubenetes中的pod删除策略 级联删除与非级联删除
StatefulSet 有状态应用[有状态应用] 有状态:StatefulSet - 集群节点之间的关系. - 数据不完全一致. - 实例之间不对等的关系. - 依靠外部存储的应用. - 通过dns维 ...
- docker基础使用和资源限制
为什么使用容器 docker设计目标: 提供简单的应用打包工具 开发人员和运维人员职责逻辑分离 多环境保持一致性 轻量级 kubernetes设计目标: 集中管理所有容器 资源编排 资源调度 弹性伸缩 ...
- OC的引用计数
一.引用计数 引用计数是Objetive-C语言的内存管理机制,用于管理OC对象(通常指包含isa指针的结构体)的内存. 一个对象的引用计数为大于0的计数,表示这个对象被持有,不能被释放,当引用计数为 ...
- Part1--软件规范总纲
开发人员规范 软件代码编写规范 套话 目的:统一公司编码风格:提高代码易读性.可靠性和稳定性:减少软件维护成本提高生产力 基本原则:维持代码易读.可维护:保持代码清晰:尽可能复用代码 实用规则 缩进 ...
- 30万奖金池鼓励工控人,AIRIOT智慧物联应用场景创新大赛等你来战!
随着工业和智慧领域数智化发展步伐的逐步加快,智慧物联应用场景越来越广泛,涵盖了智慧城市.智能园区.智慧能源.智慧电力.智能制造.工业物联网等多个领域.航天科技控股集团股份有限公司举办[AIRIOT智慧 ...