AI绘画专栏之 SDXL controlnet 老照片上色教程(35)

2023-11-16 14:04:05 浏览数 (1)

什么是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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞