🚀 Stable Diffusion 3.5 ControlNets
本项目提供了一系列与 Stable Diffusion 3.5 Large 配合使用的 ControlNet 模型,可用于图像生成的多种控制场景。
🚀 快速开始
本仓库提供了多个针对 Stable Diffusion 3.5 Large 训练的 ControlNet 模型。
可用的控制类型如下:
- Canny - 使用 Canny 边缘图来引导生成图像的结构。这对插画尤其有用,但适用于所有风格。
- Depth - 使用由 DepthFM 生成的深度图来引导生成。一些示例用例包括生成建筑渲染图或为 3D 资产添加纹理。
- Blur - 可用于执行极高保真度的图像放大。常见用例是将输入图像分块,对每个块应用 ControlNet,然后合并这些块以生成更高分辨率的图像。关于此用例的更深入描述 在此。
- 对于 Comfy 用户,此扩展 提供支持。
- 我们建议将图像分块,块大小在 128 到 512 之间。
目前发布的所有 ControlNet 仅与 Stable Diffusion 3.5 Large (8b) 兼容。未来,本仓库将添加更多 ControlNet 模型,包括上述变体的 2B 版本以及其他多种控制类型。
请注意:此模型根据 Stability 社区许可证 发布。访问 Stability AI 了解详情,或 联系我们 获取商业许可详情。
✨ 主要特性
- 多种控制类型:提供 Canny、Depth、Blur 等多种控制类型,满足不同的图像生成需求。
- 高保真度:如 Blur 控制类型可实现极高保真度的图像放大。
- 广泛兼容性:与 Stable Diffusion 3.5 Large 兼容。
📦 安装指南
在 SD3.5 独立仓库中安装
git clone git@github.com:Stability-AI/sd3.5.git
pip install -r requirements.txt
然后,下载模型和示例图像:
input/canny.png
models/clip_g.safetensors
models/clip_l.safetensors
models/t5xxl.safetensors
models/sd3.5_large.safetensors
models/sd3.5_large_controlnet_canny.safetensors
💻 使用示例
基础用法
在 SD3.5 独立仓库中运行:
python sd3_infer.py --controlnet_ckpt models/sd3.5_large_controlnet_canny.safetensors --controlnet_cond_image input/canny.png --prompt "An adorable fluffy pastel creature"
高级用法
预处理代码示例
Canny
import torchvision.transforms.functional as F
img = F.to_tensor(img)
img = cv2.cvtColor(img.transpose(1, 2, 0), cv2.COLOR_RGB2GRAY)
img = cv2.Canny(img, 100, 200)
Blur
import torchvision.transforms as transforms
gaussian_blur = transforms.GaussianBlur(kernel_size=50)
blurred_image = gaussian_blur(img)
Depth
import torchvision.transforms as transforms
from depthfm.dfm import DepthFM
depthfm_model = DepthFM(ckpt_path=checkpoint_path)
depthfm_model.eval()
img = F.to_tensor(img)
c, h, w = img.shape
img = F.interpolate(img, (512, 512), mode='bilinear', align_corners=False)
with torch.no_grad():
img = self.depthfm_model(img, num_steps=2, ensemble_size=4)
img = F.interpolate(img, (h, w), mode='bilinear', align_corners=False)
使用提示
- 建议从 0.7 - 0.8 的 ControlNet 强度开始,根据需要进行调整。
- Euler 采样器和稍高的步数(50 - 60)会得到最佳结果,尤其是在使用 Canny 时。
- 传递
--text_encoder_device <device_name>
可将文本编码器直接加载到 VRAM 中,这可以加快整个推理循环,但会增加 VRAM 使用量。
📚 详细文档
使用范围
模型的所有使用必须符合我们的 可接受使用政策。
超出范围的使用
该模型并非用于生成事实性或真实反映人物或事件的内容。因此,使用该模型生成此类内容超出了其能力范围。
训练数据和策略
这些模型在多种数据上进行训练,包括合成数据和经过筛选的公开可用数据。
🔧 技术细节
完整性评估
我们的完整性评估方法包括结构化评估和针对某些危害的红队测试。测试主要以英语进行,可能无法涵盖所有可能的危害。
识别的风险和缓解措施
- 有害内容:我们实施了保障措施,试图在实用性和防止危害之间取得平衡。然而,这并不能保证所有可能的有害内容都已被去除。所有开发者和部署者应谨慎行事,并根据其特定的产品政策和应用用例实施内容安全防护措施。
- 滥用:技术限制以及开发者和最终用户的教育可以帮助减轻模型的恶意应用。所有用户都必须遵守我们的可接受使用政策,包括在应用微调和平提示工程机制时。请参考 Stability AI 可接受使用政策,了解我们产品的违规使用信息。
- 隐私侵犯:鼓励开发者和部署者采用尊重数据隐私的技术来遵守隐私法规。
📄 许可证
许可证关键组件
- 非商业使用免费:个人和组织可以免费将该模型用于非商业用途,包括科学研究。
- 商业使用免费(年收入不超过 100 万美元):初创企业、中小型企业和创作者可以免费将该模型用于商业目的,只要其年总收入低于 100 万美元。
- 输出所有权:保留生成媒体的所有权,无限制性许可影响。
对于年收入超过 100 万美元的组织,请 在此 联系我们咨询企业许可证。
致谢
- Lvmin Zhang、Anyi Rao 和 Maneesh Agrawala,原始 ControlNet 论文 的作者。
- Lvmin Zhang,他还开发了 Tile ControlNet,启发了 Blur ControlNet。
- Diffusers 库的作者,开发过程中参考了他们的代码。
- InstantX 团队,训练过程中也参考了他们的 Flux 和 SD3 ControlNets。
- 所有模型的早期测试者和评估者,以及 Stability AI 团队。
联系我们
请报告模型的任何问题或联系我们:
- 安全问题:safety@stability.ai
- 安全漏洞:security@stability.ai
- 隐私问题:privacy@stability.ai
- 许可证和一般问题:https://stability.ai/license
- 企业许可证:https://stability.ai/enterprise