🚀 Stable Diffusion 3.5 Large Controlnet - Canny
本项目为图像生成模型,提供了基于Stable Diffusion 3.5 Large的Canny ControlNet,可用于生成高质量的图像,满足科研、个人创作等多种需求。
🚀 快速开始
使用SD3.5独立仓库中的Controlnets
安装仓库:
git clone git@github.com:Stability-AI/sd3.5.git
pip install -r requirements.txt
然后,按如下方式下载模型和示例图像:
input/sample_cond.png
models/clip_g.safetensors
models/clip_l.safetensors
models/t5xxl.safetensors
models/sd3.5_large.safetensors
models/canny_8b.safetensors
接着,你可以运行以下命令:
python sd3_infer.py --controlnet_ckpt models/canny_8b.safetensors --controlnet_cond_image input/sample_cond.png --prompt "An adorable fluffy pastel creature"
运行后你会得到如下类似的图像:

在Diffusers中使用Controlnets
确保你将diffusers升级到最新版本:pip install -U diffusers
。然后你可以运行以下代码:
import torch
from diffusers import StableDiffusion3ControlNetPipeline, SD3ControlNetModel
from diffusers.utils import load_image
from diffusers.image_processor import VaeImageProcessor
class SD3CannyImageProcessor(VaeImageProcessor):
def __init__(self):
super().__init__(do_normalize=False)
def preprocess(self, image, **kwargs):
image = super().preprocess(image, **kwargs)
image = image * 255 * 0.5 + 0.5
return image
def postprocess(self, image, do_denormalize=True, **kwargs):
do_denormalize = [True] * image.shape[0]
image = super().postprocess(image, **kwargs, do_denormalize=do_denormalize)
return image
controlnet = SD3ControlNetModel.from_pretrained("stabilityai/stable-diffusion-3.5-large-controlnet-canny", torch_dtype=torch.float16)
pipe = StableDiffusion3ControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-3.5-large",
controlnet=controlnet,
torch_dtype=torch.float16
).to("cuda")
pipe.image_processor = SD3CannyImageProcessor()
control_image = load_image("https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/canny.png")
prompt = "A Night time photo taken by Leica M11, portrait of a Japanese woman in a kimono, looking at the camera, Cherry blossoms"
generator = torch.Generator(device="cpu").manual_seed(0)
image = pipe(
prompt,
control_image=control_image,
controlnet_conditioning_scale=1.0,
guidance_scale=3.5,
num_inference_steps=60,
generator=generator,
max_sequence_length=77,
).images[0]
image.save(f'canny-8b.jpg')
预处理
可以按照以下代码片段对输入图像进行预处理以用于控制。SD3.5未实现此行为,因此我们建议事先在外部脚本中进行处理。
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)
提示
⚠️ 重要提示
所有模型的使用都必须符合我们的可接受使用政策。
💡 使用建议
- 建议从ControlNet强度0.8开始,根据需要进行调整。
- 使用Euler采样器和稍高的步数(50 - 60)可获得最佳效果。
- 传递
--text_encoder_device <device_name>
参数可将文本编码器直接加载到VRAM中,这可以加快整个推理循环,但会增加VRAM的使用量。
✨ 主要特性
本仓库为Stable Diffusion 3.5 Large提供了Canny ControlNet。
📄 许可证
本模型根据Stability社区许可证发布。访问Stability AI了解详情,或联系我们获取商业许可详情。
许可证的关键内容如下:
- 非商业使用免费:个人和组织可以免费将该模型用于非商业用途,包括科学研究。
- 商业使用免费(年收入不超过100万美元):初创企业、中小型企业和创作者可以免费将该模型用于商业目的,只要其年总收入低于100万美元。
- 输出所有权:保留生成媒体的所有权,且无限制性许可影响。
对于年收入超过100万美元的组织,请点击此处咨询企业许可证。
📚 详细文档
使用范围
该模型并非用于生成真实或准确反映人物或事件的内容。因此,使用该模型生成此类内容超出了其能力范围。
训练数据和策略
这些模型在多种数据上进行训练,包括合成数据和经过筛选的公开可用数据。
🔧 技术细节
安全性
我们秉持安全、负责任的人工智能实践理念,并采取了深思熟虑的措施,确保在开发的早期阶段就注重模型的完整性。这意味着我们已经并将继续采取合理措施,防止不良行为者滥用Stable Diffusion 3.5。有关我们的安全方法的更多信息,请访问我们的安全页面。
完整性评估
我们的完整性评估方法包括结构化评估和针对某些危害的红队测试。测试主要以英语进行,可能无法涵盖所有可能的危害。
已识别的风险及缓解措施:
- 有害内容:我们在训练模型时使用了经过筛选的数据集,并实施了保障措施,试图在实用性和防止危害之间取得平衡。然而,这并不能保证所有可能的有害内容都已被清除。所有开发者和部署者应谨慎行事,并根据其特定的产品政策和应用用例实施内容安全防护措施。
- 滥用:技术限制以及对开发者和最终用户的教育有助于减轻模型的恶意应用。所有用户都必须遵守我们的可接受使用政策,包括在应用微调和平提示工程机制时。请参考Stability AI可接受使用政策,了解我们产品的违规使用信息。
- 隐私侵犯:鼓励开发者和部署者采用尊重数据隐私的技术,遵守隐私法规。
致谢
联系我们
请报告模型的任何问题或联系我们:
- 安全问题:safety@stability.ai
- 安全漏洞:security@stability.ai
- 隐私问题:privacy@stability.ai
- 许可证及一般问题:https://stability.ai/license