
10分钟上手diffusers-rsRust实现Stable Diffusion 1.5/2.1文生图的完整教程【免费下载链接】diffusers-rsAn implementation of the diffusers api in Rust项目地址: https://gitcode.com/gh_mirrors/di/diffusers-rsdiffusers-rs 是一个用Rust语言实现的 Stable Diffusion 文生图项目完整复刻了 Hugging Face 著名 diffusers 库的核心 API基于 tchRust 版 Torch构建支持 Stable Diffusionv1.5 和 v2.1两个版本。它不仅能做文本生成图像text2img还内置了图生图img2img、局部重绘inpainting和 ControlNet四条主流 AI 绘图管线。想脱离 Python 环境、用 Rust 做文生图这篇文章带你 10 分钟跑通全流程 diffusers-rs 能做什么简单说diffusers-rs 就是Rust 版的 diffusers。它把 Stable Diffusion 的三大核心组件都用 Rust 重新实现了一遍模块作用CLIP 文本编码器把你的提示词prompt转成语义向量UNet 去噪网络扩散模型的主力负责一步步雕刻出图像VAE 变分自编码器在潜在空间与像素空间之间互相转换此外还内置了 DDIM、DDPM、Euler、Heun 等10 种采样调度器供你自行切换速度与画质的平衡。下图就是用它生成的文生图效果提示词是 A rusty robot holding a fire torch.一个手持火把的生锈机器人✅ 环境准备开始前检查清单开始之前请确认你的机器满足以下条件Rust 工具链安装最新 stable 版本的 RustrustupPython 3仅用于下载和转换模型权重需要torch库显卡NVIDIA GPU显存8GB 以上没有 GPU 也能用 CPU 跑只是慢一些磁盘预留约 10GB 空间存放权重文件 第一步获取 diffusers-rs 项目源码打开终端执行以下命令克隆项目并进入目录git clone https://gitcode.com/gh_mirrors/di/diffusers-rs cd diffusers-rs项目结构非常清晰核心代码都在src/下models/是 UNet 和 VAE 等模型实现pipelines/是 Stable Diffusion 主管线schedulers/是各种采样调度器transformers/是 CLIP 文本编码器。四个可运行的示例程序位于examples/目录稍后我们会用到。⬇️ 第二步下载 Stable Diffusion 模型权重权重文件需要放到项目根目录的data/文件夹中。项目提供了现成的 Python 脚本一条命令搞定下载 格式转换自动完成# 默认下载 Stable Diffusion 2.1 权重 python3 ./scripts/get_weights.py # 如需下载 1.5 版本权重加上版本号参数 python3 ./scripts/get_weights.py --sd_version 1.5该脚本scripts/get_weights.py会自动下载 CLIP 编码器、UNet、VAE 以及 BPE 词表并转换为 Rust 可直接加载的.safetensors格式。下载完成后data/目录里会有 4 个文件例如 2.1 版本对应的是clip_v2.1.safetensors、unet_v2.1.safetensors、vae_v2.1.safetensors和bpe_simple_vocab_16e6.txt。 第三步10分钟跑出第一张 AI 图这是最激动人心的时刻——执行下面这条命令cargo run --example stable-diffusion --features clap -- --prompt A rusty robot holding a fire torch.首次运行会自动编译依赖torch-sys 会下载 libtorch稍需耐心等待。运行过程中会逐步打印去噪进度Timestep 0/30 Timestep 1/30 ... Generating the final image for sample 1/1.默认使用DDIM 调度器、30 步去噪、guidance scale 7.5最终图像保存为sd_final.png。除了机器人换个提示词你也能得到完全不同的画面比如另一只手持火把的复古机器人 常用参数速查表stable-diffusion示例通过命令行参数控制生成过程常用参数如下参数默认值说明--prompt沙滩上的生锈机器人提示词英文效果最佳--seed32随机种子固定后可复现结果--n-steps30去噪步数越大越精细越慢--sd-versionv2-1可选v1-5/v2-1--num-samples1一次生成多张图--width/--height512 / 512输出图像尺寸--cpu无指定模块如unet、vae跑在 CPU 上--final-imagesd_final.png输出文件名️ 图生图img2img让 AI 重绘你的画面除了纯文生图diffusers-rs 还支持图像到图像的转换以一张图作为构图参考用提示词引导重新生成。示例程序是stable-diffusion-img2imgcargo run --example stable-diffusion-img2img --features clap -- --input-image media/in_img2img.jpg下面对比一下左边是手绘风格的输入图右边是 AI 重绘后的结果——构图保留风格被提示词默认是 A fantasy landscape, trending on artstation.彻底重塑 局部重绘Inpainting只改图中一部分想只替换画面中的某个区域而保持其他部分不变这就是inpainting的强项。使用它需要额外下载一个专门的unet-inpaint.safetensors权重文件放入data/目录然后cargo run --example stable-diffusion-inpaint --features clap \ --input-image sd_input.png --mask-image sd_mask.png其中--input-image是原图--mask-image是白色遮罩图白色区域将被重绘。默认提示词是 Face of a yellow cat, high resolution, sitting on a park bench.最终效果如下图——掩膜区域被精准替换成了一只坐在长椅上的橘猫背景完整保留 ControlNet用边缘线条精确控制生成diffusers-rs 还集成了ControlNet管线这是目前最主流的可控生成方案之一。它以一张参考图默认自动做 Canny 边缘检测作为骨架生成符合指定构图的图像。需要先下载 SD 1.5 权重和 ControlNet canny 权重保存为data/controlnet.safetensors然后cargo run --example controlnet --features clap,image,imageproc -- \ --prompt a rusty robot, lit by a fire torch, hd, very detailed \ --input-image media/vermeer.jpg以名画《戴珍珠耳环的少女》为输入AI 先提取出她的边缘轮廓再据此生成一个机器人少女——构图、发带姿态与原作几乎一一对应这正是 ControlNet 的精髓所在❓ 常见问题 FAQQ显存不足 / 报错 CUDA out of memory 怎么办Stable Diffusion 完整模型通常需要 8GB 以上显存。两个解决方案纯 CPU 模式慢但能跑加上--cpu all参数cargo run --example stable-diffusion --features clap -- --prompt A very rusty robot holding a fire torch. --cpu all混合模式8GB 显卡只把 UNet 放在 GPU 上CLIP 和 VAE 放 CPU并可配合 fp16 精度的 UNet 权重进一步省显存PYTORCH_CUDA_ALLOC_CONFgarbage_collection_threshold:0.6,max_split_size_mb:128 \ cargo run --example stable-diffusion --features clap -- \ --cpu vae --cpu clip --unet-weights data/unet-fp16.safetensorsQ1.5 和 2.1 版本怎么选两者命令完全相同只需通过--sd-version v1-5或--sd-version v2-1切换并保证data/里有对应版本的权重。2.1 版默认开启画面色彩通常更浓烈1.5 版生态更成熟ControlNet 权重也只适配 1.5。Q生成的图和 Python 版 diffusers 一样吗diffusers-rs 是 Hugging Face diffusers 的 Rust 移植版相同的提示词、种子和调度器下两者输出高度一致。Rust 的优势在于零 GC 的内存管理和更好的并发性能很适合把 AI 绘图能力嵌入 Rust 服务或桌面应用。 总结从 0 到 AI 绘图只需 10 分钟回顾一下我们走完的路径克隆项目 → 下载权重 → 一条命令出图。diffusers-rs 用纯 Rust 实现了 Stable Diffusion 文生图的完整能力栈包括✅ 文本生成图像SD 1.5 / 2.1✅ 图生图 img2img✅ 局部重绘 inpainting✅ ControlNet 可控生成✅ GPU / CPU 灵活调度如果你正计划在 Rust 技术栈中集成 AI 绘图能力或者单纯好奇不用 Python 能不能跑 Stable Diffusiondiffusers-rs 都是一个值得 Star 的优质参考实现。快去试试吧你的第一张 AI 图已经在 10 分钟之后了 【免费下载链接】diffusers-rsAn implementation of the diffusers api in Rust项目地址: https://gitcode.com/gh_mirrors/di/diffusers-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考