🚀 Controlnet - v1.1 - 线条动漫版本
Controlnet v1.1是一个基于扩散模型的图像生成工具,通过添加额外条件来控制图像生成过程,本版本专注于线条动漫风格的图像生成。
🚀 快速开始
Controlnet v1.1由Lvmin Zhang在lllyasviel/ControlNet-v1-1中发布。此检查点是将原始检查点转换为diffusers
格式后的版本,可与Stable Diffusion结合使用,例如runwayml/stable-diffusion-v1-5。
更多详细信息,请查看🧨 Diffusers文档。
ControlNet是一种神经网络结构,通过添加额外条件来控制扩散模型。

此检查点对应于基于线条动漫图像的ControlNet。
✨ 主要特性
- 可与Stable Diffusion结合,实现线条动漫风格的图像生成。
- 支持多种额外条件输入,丰富图像生成的控制方式。
- 训练速度快,可在个人设备上进行训练。
📦 安装指南
安装依赖库
若要处理图像以创建辅助条件,需要安装以下外部依赖:
- 安装https://github.com/patrickvonplaten/controlnet_aux
$ pip install controlnet_aux==0.3.0
- 安装
diffusers
及相关包:
$ pip install diffusers transformers accelerate
💻 使用示例
基础用法
建议将此检查点与Stable Diffusion v1-5配合使用,因为该检查点是基于此进行训练的。实验表明,此检查点也可与其他扩散模型(如经过微调的Stable Diffusion)一起使用。
import torch
import os
from huggingface_hub import HfApi
from pathlib import Path
from diffusers.utils import load_image
from PIL import Image
import numpy as np
from controlnet_aux import LineartAnimeDetector
from transformers import CLIPTextModel
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15s2_lineart_anime"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15s2_lineart_anime/resolve/main/images/input.png"
)
image = image.resize((512, 512))
prompt = "A warrior girl in the jungle"
processor = LineartAnimeDetector.from_pretrained("lllyasviel/Annotators")
control_image = processor(image)
control_image.save("./images/control.png")
text_encoder = CLIPTextModel.from_pretrained("runwayml/stable-diffusion-v1-5", subfolder="text_encoder", num_hidden_layers=11, torch_dtype=torch.float16)
controlnet = ControlNetModel.from_pretrained(checkpoint, torch_dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", text_encoder=text_encoder, controlnet=controlnet, torch_dtype=torch.float16
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
generator = torch.manual_seed(0)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')



📚 详细文档
模型详情
简介
Controlnet由Lvmin Zhang和Maneesh Agrawala在论文Adding Conditional Control to Text-to-Image Diffusion Models中提出。
论文摘要如下:
我们提出了一种神经网络结构ControlNet,用于控制预训练的大型扩散模型,以支持额外的输入条件。ControlNet以端到端的方式学习特定任务的条件,即使训练数据集较小(< 50k),学习过程也很稳健。此外,训练ControlNet的速度与微调扩散模型一样快,并且可以在个人设备上进行训练。或者,如果有强大的计算集群,模型可以扩展到大量(数百万到数十亿)的数据。我们发现,像Stable Diffusion这样的大型扩散模型可以通过ControlNet进行增强,以支持边缘图、分割图、关键点等条件输入。这可能会丰富控制大型扩散模型的方法,并进一步促进相关应用的发展。
其他已发布的检查点v1-1
作者发布了14种不同的检查点,每种都在Stable Diffusion v1-5上针对不同类型的条件进行了训练:
更多信息
更多信息,请查看Diffusers ControlNet博客文章和官方文档。
📄 许可证
本项目采用CreativeML OpenRAIL M许可证。
⚠️ 重要提示
若要处理图像以创建辅助条件,需要安装外部依赖。
💡 使用建议
建议将此检查点与Stable Diffusion v1-5配合使用,因为该检查点是基于此进行训练的。