什么是controlnet?
顾名思义控制网络,主要用于控制画面元素,画面主体等等
ControlNet 是一种神经网络结构,通过添加额外的条件来控制扩散模型。
它将神经网络块的权重复制到“锁定”副本和“可训练”副本中。
“可训练”的人会了解您的病情。“锁定”的模型会保留您的模型。
因此,使用图像对的小数据集进行训练不会破坏生产就绪的扩散模型。
“零卷积”是 1×1 卷积,权重和偏差都初始化为零。
在训练之前,所有零卷积都输出零,ControlNet 不会造成任何失真。
没有一层是从头开始训练的。你还在微调。您的原始模型是安全的。
这允许在小规模甚至个人设备上进行培训。
这也有利于合并/替换/偏移模型/权重/块/层。
常见问题
问:但是等等,如果一个转换层的权重为零,梯度也将为零,网络将不会学到任何东西。为什么“零卷积”有效?
事实并非如此
稳定扩散 ControlNet
通过重复上述简单结构 14 次,我们可以这样控制稳定扩散:
通过这种方式,ControlNet 可以重用 SD 编码器作为深度、强大、稳健和强大的骨干来学习各种控制。许多证据(如这样和这样)证实了标清编码器是一个优秀的骨干。
请注意,我们连接图层的方式是计算效率高的。原始 SD 编码器不需要存储渐变(锁定的原始 SD 编码器 Block 1234 和 Middle)。所需的 GPU 内存并不比原始 SD 大多少,尽管添加了许多层。伟大!
安装包
代码语言:javascript复制https://pan.quark.cn/s/710049442977
前置条件
controlnet版本 :v1.1.410
预处理器:RECOLOR
模型:RECOLOR
垫图选图
选择地图为旧照片风格或者黑白
参数调试
Gradio 应用程序还允许您更改 Canny 边缘阈值。尝试一下了解更多细节。
带 M-LSD 管路的 ControlNet
Stable Diffusion 1.5 ControlNet(使用简单的 M-LSD 直线检测)
代码语言:javascript复制python gradio_hough2image.py
Gradio 应用程序还允许您更改 M-LSD 阈值。尝试一下了解更多细节。
提示:“room”
Prompt: "building"
ControlNet with HED Boundary
Stable Diffusion 1.5 ControlNet (using soft HED Boundary)
代码语言:javascript复制python gradio_hed2image.py
The soft HED Boundary will preserve many details in input images, making this app suitable for recoloring and stylizing. Just try it for more details.
Prompt: "oil painting of handsome old man, masterpiece"
Prompt: "Cyberpunk robot"
带有用户涂鸦的 ControlNet
Stable Diffusion 1.5 ControlNet(使用 Scribbles)
代码语言:javascript复制python gradio_scribble2image.py
请注意,UI 基于 Gradio,而 Gradio 有些难以自定义。现在,您需要在UI之外绘制涂鸦(使用您喜欢的绘图软件,例如MS Paint),然后将涂鸦图像导入Gradio。
提示词:“热气球”
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!