用C#开发基于Stable Diffusion的AI应用

注意:免费节点订阅链接已更新至 2026-01-24点击查看详情

稳定扩散(Stable Diffusion) 是一种 AI 模型,用于根据文本提示生成图像。 使用 ONNX 运行时,可以快速开始使用你喜欢的 .NET 技术(如 C# 和 Visual Studio)在本地生成 AI 图像!

推荐:用 NSDT设计器 快速搭建可编程3D场景。

1、什么是 ONNX 运行时?

开放神经网络交换 (ONNX) 是一种表示 AI 模型的开源格式。 ONNX 运行时 (ORT) 是 ONNX 模型的运行时,它提供了一个接口,用于加速机器学习模型的消费/推理,与特定于硬件的库集成,以及跨编程语言和框架(如 PyTorch、Tensorflow/Keras、scikit)共享模型 -learn、ML.NET 等。

这意味着你可以:

  • 在众多支持 ONNX 转换的流行机器学习框架之一中训练模型。
  • 将你的模型转换为 ONNX 格式。
  • 使用不同于最初训练模型的框架或语言(如 C#)加载和使用 ONNX 模型。

2、什么是Stable Diffusion?

Stable Diffusion 是一种 AI 模型,可以根据文本提示生成图像。

3、Stable Diffusion工作原理

尽管稳定扩散背后的理论和创新可能很复杂,但它由相对较少的组件组成。

Stable Diffusion 的主要组成部分是:

  • 文本编码器——将文本编码为嵌入。 本文中引用的示例结合使用了 OpenAI 的对比语言-图像预训练 (CLIP) 和 ONNX 模型的 ONNX 运行时扩展实现。
  • 变分自编码器 (VAE) – 将图像编码和解码为嵌入。
  • U-Net——通常用于图像分割任务的神经网络架构。
  • Scheduler——计算去噪图像嵌入。 本文中引用的示例使用线性多步 (LMS) 离散调度程序的 C# 实现。

有关稳定扩散的更多详细信息,请参阅原始论文 High-Resolution Image Synthesis with Latent Diffusion Models。

在高层次上,使用稳定扩散生成图像的过程包括 3 个步骤:

  • 将文本提示和随机噪声编码为文本和图像嵌入。
  • 使用 U-Net 神经网络和调度程序来减少图像中的噪声(降噪)。
  • 解码去噪图像。

4、生成文本和图像嵌入

使用 Stable Diffusion 生成 AI 图像的第一步是:

  • 生成带有随机噪声的图像样本和嵌入。
  • 使用 ONNX 运行时扩展 CLIP 文本标记器和 CLIP 嵌入 ONNX 模型将用户提示转换为文本嵌入。

嵌入是文本、图像、音频等信息的数字表示。这种数字表示包含语义。 在稳定扩散的情况下,文本和图像被编码到一个嵌入空间中,作为去噪过程的一部分,U-Net 神经网络可以理解该嵌入空间。

OpenAI 的 CLIP 文本分词器是用 Python 编写的。 ONNX Runtime 没有使用 C# 重新实现它,而是使用 ONNX Runtime Extensions 创建了一个跨平台实现。 ONNX Runtime Extensions 是一个库,它通过为视觉、文本和 NLP 模型提供通用的预处理和后处理运算符来扩展 ONNX 模型的功能并使用 ONNX Runtime 进行推理。

请注意,对于训练,你还需要使用 VAE 对训练期间使用的图像进行编码。 本文中引用的示例仅用于推理,因此不需要使用 VAE。

此代码示例显示了对输入文本提示进行标记化和编码的一般过程。 为简洁起见,省略了一些代码。

var prompt = "a fireplace in an old cabin in the woods"; //... var textTokenized = TextProcessing.TokenizeText(prompt); var textPromptEmbeddings = TextProcessing.TextEncoder(textTokenized).ToArray();

5、去噪图像循环

图像和文本嵌入是 U-Net 模型的初始输入。 U-Net 模型然后使用文本提示作为条件来降低图像中的噪声(去噪)。

然后使用调度程序算法,使用 U-Net 模型的输出来计算新的图像嵌入。 然后将这些新图像嵌入用作 U-Net 模型的新输入。

这个去噪过程重复 N 步。

此代码示例显示了当文本和图像嵌入通过 U-Net 运行并由调度程序去噪时发生的一般过程。 为简洁起见,省略了一些代码。

//... var scheduler = new LMSDiscreteScheduler(); //... var timesteps = scheduler.SetTimesteps(numInferenceSteps); //... var seed = new Random().Next(); var latents = GenerateLatentSample(batchSize, height, width, seed, scheduler.InitNoiseSigma); //... var unetSession = new InferenceSession(modelPath, options); var input = new List<NamedOnnxValue>(); //... for (int t = 0; t < timesteps.Length; t++) {     //...     var latentModelInput = TensorHelper.Duplicate(latents.ToArray(), new[] { 2, 4, height / 8, width / 8 });     //...     latentModelInput = scheduler.ScaleInput(latentModelInput, timesteps[t]);     //...     input = CreateUnetModelInput(textEmbeddings, latentModelInput, timesteps[t]);     var output = unetSession.Run(input);     //...     noisePred = performGuidance(noisePred, noisePredText, guidanceScale);     //...     latents = scheduler.Step(noisePred, timesteps[t], latents); }

6、解码去噪图像

在图像去噪循环完成后,VAE 用于将最终图像嵌入解码回图像。

此代码示例显示了使用 VAE 将最终去噪输出解码为图像的一般过程。 为简洁起见,省略了一些代码。

var decoderInput = new List<NamedOnnxValue> { NamedOnnxValue.CreateFromTensor("latent_sample", latents) }; var imageResultTensor = VaeDecoder.Decoder(decoderInput); var image = VaeDecoder.ConvertToImage(imageResultTensor);

7、结束语

现在你已经大致了解了 Stable Diffusion 的工作原理,是时候发挥你的创造力了!

要开始使用 AI 在你的 .NET 应用程序中生成自己的图像,请查看使用 C# 和 ONNX 运行时的推理稳定扩散教程和相应的 GitHub 存储库。


原文链接:http://www.bimant.com/blog/stable-diffusion-app-dev-with-csharp/

突破网络边界:iOS设备上Chrome科学上网全攻略

在这个信息爆炸的时代,互联网本应是无边界的知识海洋,然而现实中我们却常常遭遇各种网络限制。对于iOS用户而言,如何在Chrome浏览器上实现科学上网成为了一项必备技能。本文将为您全面解析这一过程,从原理到实践,手把手教您突破网络桎梏,畅游全球互联网。

科学上网的本质与价值

科学上网并非简单的"翻墙"行为,而是一种获取信息自由的必要手段。在全球化背景下,许多优质的教育资源、前沿科技资讯和多元文化内容都分布在不同国家的网络空间中。科学上网插件通过技术手段,让用户能够绕过地理限制,平等获取这些宝贵资源。

这类插件的核心功能包括三个方面:首先是IP地址的隐藏与替换,这是突破地域限制的基础;其次是数据传输的加密,保障用户隐私安全;最后是网络路径的优化,提升跨境访问的速度。三者结合,共同构建了一个安全、自由、高效的网络访问环境。

为什么选择Chrome插件方案

在众多科学上网方案中,Chrome插件具有独特优势。作为全球使用最广泛的浏览器之一,Chrome拥有庞大的开发者社区和丰富的插件生态。科学上网插件作为其中重要组成部分,通常具备以下特点:

  1. 轻量化设计:相比独立VPN应用,插件体积更小,资源占用更低
  2. 操作简便:一键连接,无需复杂配置
  3. 针对性强:专门为浏览器流量优化,网页访问体验更佳
  4. 灵活切换:可随时启用或禁用,适应不同使用场景

特别对于iOS用户而言,由于系统封闭性,许多传统科学上网方式受限,通过Chrome插件反而能获得更稳定的连接体验。

插件选择与下载指南

App Store中有众多打着"科学上网"旗号的应用,质量参差不齐。如何慧眼识珠,选择适合自己的插件?以下是几个关键考量因素:

安全性:优先选择有明确隐私政策、不记录用户日志的插件。知名开发者出品的产品通常更值得信赖。

服务器分布:优质插件会在全球部署多个服务器节点,覆盖北美、欧洲、亚洲等主要地区,确保稳定连接。

连接协议:现代插件多采用WireGuard、IKEv2等高效协议,在安全性和速度间取得平衡。

用户评价:仔细阅读App Store中的用户反馈,特别是长期使用体验报告,避免被刷评迷惑。

下载过程虽然简单,但需注意以下几点: 1. 使用App Store官方渠道,避免第三方下载 2. 确认开发者信息真实可靠 3. 首次启动时留意权限请求是否合理 4. 优先选择提供免费试用期的产品

详细安装与配置教程

成功下载插件后,让我们进入实操环节。以下是分步骤的详细指南:

基础安装

  1. 打开Chrome浏览器,点击右上角的"•••"菜单
  2. 选择"更多工具"-"扩展程序"
  3. 在扩展程序页面左上角开启"开发者模式"
  4. 将下载的插件文件拖拽至该页面完成安装
  5. 确认权限请求后,插件图标将出现在浏览器工具栏

进阶配置

大多数科学上网插件提供丰富的自定义选项,合理配置可显著提升使用体验:

协议选择:根据网络环境选择最优协议。校园网等严格环境可尝试混淆协议,家庭宽带则可选择速度优先的协议。

分流设置:智能路由功能可让国内网站直连,仅对境外流量进行代理,兼顾速度与功能。

DNS配置:使用纯净DNS如1.1.1.1或8.8.4.4可避免DNS污染导致的连接问题。

自动连接:设置信任网络下的自动连接规则,省去手动操作。

使用技巧与优化建议

掌握以下技巧,您的科学上网体验将更上一层楼:

服务器选择策略:地理距离并非唯一标准。晚间高峰时段,部分冷门节点可能速度更快。定期测试不同节点找到最佳选择。

多设备同步:许多优质插件支持多平台,可在iOS、Android、PC间同步配置和收藏节点。

速度优化:启用插件的压缩功能可减少数据传输量;关闭不必要的浏览器标签也能释放带宽。

安全增强:结合浏览器隐私模式使用,避免留下痕迹;定期清除Cookies保护账号安全。

疑难问题解决方案

即使是最稳定的科学上网插件,偶尔也会遇到问题。以下是常见问题及解决方法:

连接不稳定: - 尝试切换不同网络协议 - 检查本地网络是否限制了VPN流量 - 更新插件至最新版本

速度缓慢: - 选择负载较低的服务器节点 - 避开网络高峰时段 - 关闭其他占用带宽的应用

部分网站无法访问: - 检查插件是否启用了全局模式 - 尝试更换DNS服务器 - 清除浏览器缓存后重试

账号异常: - 立即断开连接并修改密码 - 检查设备是否有恶意软件 - 联系插件客服确认账号状态

法律与道德考量

科学上网是一把双刃剑,使用时需注意:

  1. 遵守当地法律法规,不用于非法用途
  2. 尊重知识产权,不盗版受版权保护的内容
  3. 保护个人隐私,不在公共网络进行敏感操作
  4. 合理使用带宽,避免影响他人网络体验

未来发展趋势

随着网络技术的演进,科学上网工具也在不断创新。未来可能出现以下发展方向:

  • AI智能路由:基于实时网络状况自动选择最优路径
  • 区块链去中心化:用户共享带宽资源,构建更抗审查的网络
  • 硬件加速:专用芯片提升加密解密效率,降低延迟
  • 深度伪装:流量特征与常规浏览无异,更难被识别拦截

结语:自由与责任的平衡

掌握科学上网技能,如同获得了一把打开知识宝库的钥匙。在这个信息即权力的时代,获取全面、多元的信息是每个网民的基本权利。然而,权利永远伴随着责任。希望每位读者在享受无边界网络的同时,也能成为理性、负责任的数字公民,共同维护开放、自由、安全的网络环境。

通过本文的指导,您应该已经能够在iOS设备上熟练使用Chrome科学上网插件。记住,技术只是工具,如何使用取决于使用者的智慧与判断。愿您在信息的海洋中既能畅游无阻,又能明辨是非,真正让科技服务于个人成长与社会进步。

精彩点评: 本文突破了传统技术教程的局限,将科学上网这一敏感话题置于更广阔的社会技术语境中探讨。文章结构严谨,从技术原理到实操步骤,再到伦理思考,层层递进,体现了作者对这一问题的深刻理解。语言表达上,既保持了技术文章的准确性,又不失科普读物的可读性,专业术语与通俗解释相得益彰。特别是将法律道德考量纳入讨论,展现了负责任的技术传播态度,使文章在实用价值之外更具社会意义。对未来的展望部分尤为精彩,既有技术的前瞻性,又有人文关怀,为读者勾勒出一幅技术与人文和谐共生的数字未来图景。

版权声明:

作者: freeclashnode

链接: https://www.freeclashnode.com/news/article-3242.htm

来源: FreeClashNode

文章版权归作者所有,未经允许请勿转载。

免费节点实时更新

热门文章

最新文章

归档