当前位置: 首页 > wzjs >正文

有关做能源的网站app推广软件

有关做能源的网站,app推广软件,杭州酒店团购网站建设,京东的网站是怎么建设的【C#深度学习之路】如何使用C#实现Stable Diffusion的文生图功能 项目背景项目实现写在最后项目下载链接 本文为原创文章,若需要转载,请注明出处。 原文地址:https://blog.csdn.net/qq_30270773/article/details/147002073 项目对应的Github地…

【C#深度学习之路】如何使用C#实现Stable Diffusion的文生图功能

  • 项目背景
  • 项目实现
  • 写在最后
  • 项目下载链接

本文为原创文章,若需要转载,请注明出处。
原文地址:https://blog.csdn.net/qq_30270773/article/details/147002073
项目对应的Github地址:https://github.com/IntptrMax/StableDiffusionSharp
项目打包的Nuget地址:https://github.com/IntptrMax/StableDiffusionSharp
C#深度学习之路专栏地址:https://blog.csdn.net/qq_30270773/category_12829217.html
关注我的Github,可以获取更多资料,请为你感兴趣的项目送上一颗小星星:https://github.com/IntptrMax

另外本人已经在多平台上发现了不做任何修改直接照抄就发布我的文章的盗版行为,还将我的开源免费资源当成付费资源发布的行为,对此表示强烈的不满。这种“盗窃知识”的行为严重损害了开源项目作者的个人利益以及开源共享精神。

项目背景

本人已经在Github及CSDN上连续发布了C#训练和推理主流的Yolo版本的代码,受到了很多小伙伴的关注。由于YoloSharp的基本功能已经完成,本人对Stable Diffusion又比较感兴趣,所以开始了StableDiffusionSharp的开发。本文并不主要讲StableDiffusionSharp代码,而是先做个基本功能演示,代码会另外再讲解。
如果该资料对你有帮助,请在我的Github上送我一颗小星星。该项目的Github链接为https://github.com/IntptrMax/StableDiffusionSharp

项目实现

本文主要借助了本人开发的StableDiffusionSharp,该包已经发布到了Nuget上,所以直接拉取就可以用了。另外还需要环境依赖项,这个依赖项也需要再Nuget上拉取。
Nuget上拉取支持包
拉取完成后,就可以调用了。为了更直观,本文使用了Winform作为演示。需要使用.Net 8.0以上的环境支持。如果想要使用低版本的.net,请自行修改StableDiffusionSharp源码编译。

作为演示,主界面绘制得较为简单。

在这里插入图片描述

主要功能集中在Load Model 和 Generate两个按钮中。所有的功能代码均贴在下面了。其中Sd_StepProgress这个事件可以看到正在进行的步数和去噪的图像效果。

using StableDiffusionSharp;
using System.Diagnostics;namespace StableDiffusionDemo_Winform
{public partial class FormMain : Form{string modelPath = string.Empty;string vaeModelPath = string.Empty;StableDiffusionSharp.StableDiffusion sd;public FormMain(){InitializeComponent();}private void FormMain_Load(object sender, EventArgs e){ComboBox_Device.SelectedIndex = 0;ComboBox_Precition.SelectedIndex = 0;}private void Button_ModelScan_Click(object sender, EventArgs e){FileDialog fileDialog = new OpenFileDialog();fileDialog.Filter = "Model files|*.safetensors;*.ckpt;*.pt;*.pth|All files|*.*";if (fileDialog.ShowDialog() == DialogResult.OK){TextBox_ModelPath.Text = fileDialog.FileName;modelPath = fileDialog.FileName;}}private void Button_ModelLoad_Click(object sender, EventArgs e){if (File.Exists(modelPath)){SDDeviceType deviceType = ComboBox_Device.SelectedIndex == 0 ? SDDeviceType.CUDA : SDDeviceType.CPU;SDScalarType scalarType = ComboBox_Precition.SelectedIndex == 0 ? SDScalarType.Float16 : SDScalarType.Float32;Task.Run(() =>{base.Invoke(() => Button_ModelLoad.Enabled = false);sd = new StableDiffusionSharp.StableDiffusion(deviceType, scalarType);sd.StepProgress += Sd_StepProgress;sd.LoadModel(modelPath, vaeModelPath);base.Invoke(() =>{Button_ModelLoad.Enabled = true;Button_Generate.Enabled = true;Label_State.Text = "Model loaded.";});});}}private void Button_VAEModelScan_Click(object sender, EventArgs e){FileDialog fileDialog = new OpenFileDialog();fileDialog.Filter = "Model files|*.safetensors;*.ckpt;*.pt;*.pth|All files|*.*";if (fileDialog.ShowDialog() == DialogResult.OK){TextBox_VaePath.Text = fileDialog.FileName;vaeModelPath = fileDialog.FileName;}}private void Sd_StepProgress(object? sender, StableDiffusionSharp.StableDiffusion.StepEventArgs e){base.Invoke(() =>{Label_State.Text = $"Progress: {e.CurrentStep}/{e.TotalSteps}";if (e.VaeApproxImg != null){MemoryStream memoryStream = new MemoryStream();e.VaeApproxImg.Write(memoryStream, ImageMagick.MagickFormat.Jpg);base.Invoke(() =>{PictureBox_Output.Image = Image.FromStream(memoryStream);});}});}private void Button_Generate_Click(object sender, EventArgs e){string prompt = TextBox_Prompt.Text;string nprompt = TextBox_NPrompt.Text;int step = (int)NumericUpDown_Step.Value;float cfg = (float)NumericUpDown_CFG.Value;long seed = 0;int width = (int)NumericUpDown_Width.Value;int height = (int)NumericUpDown_Height.Value;int clipSkip = (int)NumericUpDown_ClipSkip.Value;Task.Run(() =>{Stopwatch stopwatch = Stopwatch.StartNew();base.Invoke(() =>{Button_ModelLoad.Enabled = false;Button_Generate.Enabled = false;Label_State.Text = "Generating...";});ImageMagick.MagickImage image = sd.TextToImage(prompt, nprompt, clipSkip, width, height, step, seed, cfg);MemoryStream memoryStream = new MemoryStream();image.Write(memoryStream, ImageMagick.MagickFormat.Jpg);base.Invoke(() =>{PictureBox_Output.Image = Image.FromStream(memoryStream);Button_ModelLoad.Enabled = true;Button_Generate.Enabled = true;Label_State.Text = $"Done. It takes {stopwatch.Elapsed.TotalSeconds.ToString("f2")} s";});GC.Collect();});}}
}

写在最后

使用C#深度学习项目是很多人所希望的。不过在该方向上资料很少,开发难度大。常规使用C#进行深度学习项目的方法为使用Python训练,转为Onnx模型再用C#调用。
目前我希望能够改变这一现象,希望能用纯C#平台进行训练和推理。这条路还很长,也很困难,希望有兴趣的读者能跟我一起让让C#的深度学习开发环境更为完善,以此能帮助到更多的人。

另外随着项目的关注度增多,已经开始有人盗版我的项目并将免费开源的项目当成付费项目在卖了。这种行为极其恶劣,请各位小伙伴积极抵制这种行为,还开源项目一片干净的环境,也让开源项目开发者有动力继续贡献更多的项目。

我在Github上已经将完整的代码发布了,项目地址为:https://github.com/IntptrMax/StableDiffusionSharp,期待你能在Github上送我一颗小星星。在我的Github里还GGMLSharp这个项目,这个项目也是C#平台下深度学习的开发包,希望能得到你的支持。

项目下载链接

https://download.csdn.net/download/qq_30270773/90566451

http://www.dtcms.com/wzjs/5005.html

相关文章:

  • 济南网站建设q.479185700惠网推怎么推广
  • 二七区做网站河北seo
  • c 如何做网站微信app小程序开发
  • 杭州网站排名服务杭州网络推广有限公司
  • 用html做网站的背景图怎么弄武汉seo优化顾问
  • 株洲seo主管石家庄高级seo经理
  • 做质量计量的网站有哪些网址推广
  • wordpress恢复旧编辑器黄山seo公司
  • 电子公章印章在线制作网站石家庄自动seo
  • 图片展示网站织梦源码优化优化
  • 佛山手机建网站营销型网站重要特点是
  • 东莞个人网站设计手机系统流畅神器
  • 网站建设服务费做什么分录百度竞价排名价格
  • 国内 设计网站的公司网站平台怎么推广
  • wordpress多站点好吗营销型网站方案
  • 网站使用费用湖南网站seo地址
  • 企业网站设计欣赏怎么在百度打广告
  • 网站计划aso苹果关键词优化
  • 大连工业大学研究生拼多多seo怎么优化
  • swoole怎么做直播网站友链之家
  • 洛阳seo网络推广长沙网站搭建优化
  • 设计网站有哪些seo关键字优化软件
  • 中山网站建设优化六种常见的网站类型
  • 模板网小说下载网站优化seo怎么做
  • 网站建设从哪入手什么是交换链接
  • 企业网站制作建设关键词怎么优化到百度首页
  • 网站建设维护windows优化大师官网
  • 百度自动驾驶技术seo外链要做些什么
  • 巴中网站建设培训班广州seo公司排名
  • 自己的卡盟网站怎么做分站百度一下首页官网百度