动手学Avalonia:基于硅基流动构建一个文生图应用(一)

news/2024/11/17 7:55:30/文章来源:https://www.cnblogs.com/mingupupu/p/18294916

文生图

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

img

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

image-20240710190246175

硅基流动

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

image-20240710190603718

Avalonia

基于Avalonia可以使用C#+Xaml构建跨平台应用。

本项目或许不具备太大的实用价值,权且当做学习Avalonia的一个练手项目。

项目架构:

image-20240710193030861

在使用Avalonia的模板创建项目之后,更改项目为.net8,并升级一下包,这样可能会避免一些报错。

由于发现不支持中文提示词,因此还是使用SemanticKerenl基于LLM将中文提示词翻译为英文提示词,然后根据英文提示词绘图。

观察一下桌面端的依赖项,桌面端引用了核心项目,使用的包是Avalonia.Desktop。

image-20240710193917453

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

image-20240710191656219

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

image-20240710194047415

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

image-20240710193601252

避坑

选择物理机调试时要打开开发者模式,打开USB调试,最重要的是要允许通过USB安装,我之前没有设置这个,就会遇到一个被用户取消的错误提示。

Android端不知道为什么SenmanticKernel对提示模板不起作用如下所示:

现在只能自己写英文提示词绘图。

Android端的实现效果如下:

以上就是动手学Avalonia:基于硅基流动构建一个文生图应用(一)的内容,希望对使用C#构建跨平台应用感兴趣的小伙伴有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741894.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP抓包神器drony

APP抓包神器drony 当你想抓app的包,但是charles却很多包没有,甚至很多请求都是unknown,这个时候用Drony就很好用了,将charles打开,用drony来转发app的所有请求,而不是直接设置手机wifi代理。 1:安装drony (这里手机使用的Android设备)您可以在网络上搜索drony选择自己…

主成分分析及其matlab实现

本讲将介绍主成分分析(Principal Component Analysis,PCA),它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关。一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化。…

关于ComfyUI的一些Tips

关于ComfyUI的一些Tips 前言: 最近发的ComfyUI相关文章节奏不知道会不会很快,在创作的时候没有考虑很多,想着把自己的知识分享出去。后台也看到很多私信,有各种各样的问题,这是我欠缺考虑了,今天这篇文章呢,根据私信的问题我大致整理了一下,给大家一些小tips。 目录 一…

2024暑假集训测试2

前言比赛链接。T1、T4 比较简单,打完基本就罚坐了,想了三个小时的 T2、T3 也没想出来。 T1 酸碱度中和 二分答案加贪心即可,先排序,每瓶可装 \(a_i\sim a_i+2*m\)。点击查看代码 #include<bits/stdc++.h> #define int long long #define endl \n #define sort stable…

HAJX[2024] 15Day游记

洛谷食用 博客食用 简介:这是一个正在学习C++的OIer(很蒻很蒻)的日常记录。 (注:2024.7.5-7.20集训日更) 放在前面: 本贴只是记录一下本蒟蒻的生活,(太菜了),佬们轻喷谢谢~浏览次数:(由于网站原因可能无法显示,属于正常现象)Day 0 期待集训ing 。0-上午 在来的路上…

闲话 24.7.10

另类的……杨图!闲话 啊,zzz 真好玩啊! 慢热型,战斗非重点,美术风格超赞。如果不排斥米家 f2p 游戏,推荐大家玩一玩。 我是冲着妹妹去的 未来会补一些杨表公式的证明。现在先咕! 推歌:辰砂 by Licis et al. feat 洛天依AI 增补:另类杨图对应杨表计数 前置知识:杨表 什…

量化交易入门:如何在QMT中配置Python环境,安装第三方依赖包

哈喽,大家好,我是木头左!引言 QMT,作为量化交易系统中的佼佼者,以其强大的功能和灵活的操作性,受到了广大投资者的青睐。但是,对于很多新手来说,如何在QMT中配置Python环境,安装第三方依赖包,却是一个让人头疼的问题。本文将从零开始,手把手教你如何在QMT中配置Pyth…

uniapp-Java使用AES加密解密

操作前 uniapp 需要安装 npm install crypto-js 在需要使用的界面加入 import CryptoJS from crypto-js java端<!-- spring security 安全认证 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-s…

python项目导入上级目录设置”的setting.json是不是哪里还有错误呀?

大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【王者级混子】问了一个Python代码处理的问题,问题如下:大佬们,我想问问我抄网上“vscode运行python项目导入上级目录设置”的setting.json是不是哪里还有错误呀?还是没法导入上级目录二、实现过程 这里后来很…

伙伴活动|AI硬件大潮来袭,深圳的创客们在哪里?

「每一种硬件产品,都会被 GenAI 重新做一遍。」分享一个社区伙伴「未来光锥」参与主办的活动。如果你同时对 AI 和硬件感兴趣,提到 maker 一词仍然会激动。推荐你参与这次活动。AI 玩具Folotoy 的创始人、RTE 开发者社区成员王乐也将参与本次活动并分享。也推荐你收听王乐参与…

Cilium Socket LB 特性

Cilium Socket LB 特性Cilium Socket LB 一、环境信息主机 IPubuntu 172.16.94.141软件 版本docker 26.1.4helm v3.15.0-rc.2kind 0.18.0kubernetes 1.23.4ubuntu os Ubuntu 20.04.6 LTSkernel 5.11.5 内核升级文档二、Cilium SocketLB 模式认知 负载均衡的实现方式通常有如下两…

高考后第一次Codeforces Round 952 (Div. 4)

A Creating Words 思路:拿一个容器交换两数值即可 #include<bits/stdc++.h> using namespace std; const int N = 100001; char a[N],b[N]; int main() {int n;scanf("%d",&n);while(n--){scanf("%s %s",a,b);char jiaohuan = a[0];a[0] = b[0]…