文章来源:lllyasviel/ControlNet-v1-1-nightly官方
翻译整理:大华说AI
ControlNet 1.1介绍
从 ControlNet 1.1 开始,我们开始使用标准 ControlNet 命名规则 (SCNNRs) 来命名所有模型。我们希望这个命名规则能够提升用户体验。
文件名上的字母标识:p是最终版,e是测试版,u是未完成
ControlNet 1.1 包括 14 个模型(11 个生产就绪模型、2 个实验模型和 1 个未完成模型):
control_v11p_sd15_canny
control_v11p_sd15_mlsd
control_v11f1p_sd15_depth
control_v11p_sd15_normalbae
control_v11p_sd15_seg
control_v11p_sd15_inpaint
control_v11p_sd15_lineart
control_v11p_sd15s2_lineart_anime
control_v11p_sd15_openpose
control_v11p_sd15_scribble
control_v11p_sd15_softedge
control_v11e_sd15_shuffle
control_v11e_sd15_ip2p control_v11u_sd15_tile
您可以从我们的HuggingFace 模型页面下载所有这些模型。所有这些模型都应该放在“models”文件夹中。
您需要下载 Stable Diffusion 1.5 模型“v1-5-pruned.ckpt”并将其放在“models”文件夹中。
我们的 python 代码将自动下载其他注释器模型,如 HED 和 OpenPose。不过,如果您想手动下载这些,您可以从此处下载所有其他注释器模型。所有这些模型都应该放在文件夹“annotator/ckpts”中。
ControlNet 1.1 Depth (深度)
用深度图控制稳定扩散。
模型文件:control_v11f1p_sd15_depth.pth
配置文件:control_v11f1p_sd15_depth.yaml
训练数据:Midas depth(分辨率256/384/512)+ Leres Depth(分辨率256/384/512)+ Zoe Depth(分辨率256/384/512)。多分辨率的多深度图生成器作为数据增强。
可接受的预处理器:Depth_Midas、Depth_Leres、Depth_Zoe。该模型非常稳健,可以处理来自渲染引擎的真实深度图。
一个帅哥 随机种子12345 提示词 ("a handsome man") 生成结果如下:
ControlNet 1.1 Normal (正常)
使用法线贴图控制稳定扩散。
模型文件:control_v11p_sd15_normalbae.pth
配置文件:control_v11p_sd15_normalbae.yaml
训练数据:Bae 的法线图估计方法。
可接受的预处理器:普通 BAE。只要法线贴图遵循ScanNet 的协议,该模型就可以接受来自渲染引擎的法线贴图。也就是说,您的法线贴图的颜色应该看起来像这张图片的第二列。
请注意,此方法比 ControlNet 1.1 中的 normal-from-midas 方法合理得多。以前的方法将被放弃。
花做的人 随机种子 12345 提示词 ("a man made of flowers") 生成结果如下:
房间 随机种子 12345 提示词 ("room") 生成结果如下:
ControlNet 1.1 Canny (边缘检测-精明)
使用 Canny Maps 控制稳定扩散。
模型文件:control_v11p_sd15_canny.pth
配置文件:control_v11p_sd15_canny.yaml
训练数据:具有随机阈值的 Canny。
可接受的预处理器:Canny。
我们修复了之前训练数据集中的几个问题。
房间里的狗 随机种子 12345 提示词("dog in a room") 生成结果如下:
ControlNet 1.1 MLSD(线条检测)
用 M-LSD 直线控制稳定扩散。
模型文件:control_v11p_sd15_mlsd.pth
配置文件:control_v11p_sd15_mlsd.yaml
训练数据:M-LSD 线。
可接受的预处理器:MLSD。
我们修复了之前训练数据集中的几个问题。该模型从 ControlNet 1.0 恢复并使用 A100 80G 的 200 GPU 小时进行训练。
房间 随机种子 12345 提示词("room") 生成结果如下:
ControlNet 1.1 Scribble(涂鸦)
用涂鸦控制稳定扩散。
模型文件:control_v11p_sd15_scribble.pth
配置文件:control_v11p_sd15_scribble.yaml
训练数据:合成的涂鸦。
可接受的预处理器:合成涂鸦(Scribble_HED、Scribble_PIDI 等)或手绘涂鸦。
我们修复了之前训练数据集中的几个问题。该模型从 ControlNet 1.0 恢复并使用 A100 80G 的 200 GPU 小时进行训练。
# To test synthesized scribbles python gradio_scribble.py # To test hand-drawn scribbles in an interactive demo python gradio_interactive.py
图书馆里的男人 随机种子 12345 提示词("man in library") 生成结果如下:
美丽的风景 随机种子 12345 提示词(interactive, "the beautiful landscape") 生成结果如下:
ControlNet 1.1 Soft Edge(软边缘)
使用软边控制稳定扩散。
模型文件:control_v11p_sd15_softedge.pth
配置文件:control_v11p_sd15_softedge.yaml
训练数据:SoftEdge_PIDI、SoftEdge_PIDI_safe、SoftEdge_HED、SoftEdge_HED_safe。
可接受的预处理器:SoftEdge_PIDI、SoftEdge_PIDI_safe、SoftEdge_HED、SoftEdge_HED_safe。
与以前的模型相比,该模型有了显着改进。所有用户应尽快更新。
ControlNet 1.1 中的新功能:现在我们添加了一种名为“SoftEdge_safe”的新型软边缘。这是因为 HED 或 PIDI 倾向于在软估计中隐藏原始图像的损坏灰度版本,而这种隐藏模式会分散 ControlNet 的注意力,从而导致不良结果。解决方案是使用预处理将边缘图量化为多个级别,以便完全删除隐藏的模式。实现在 annotator/util.py 的第 78 行。
性能可以大致记为:
鲁棒性:SoftEdge_PIDI_safe > SoftEdge_HED_safe >> SoftEdge_PIDI > SoftEdge_HED
最高结果质量:SoftEdge_HED > SoftEdge_PIDI > SoftEdge_HED_safe > SoftEdge_PIDI_safe
考虑到权衡,我们建议默认使用 SoftEdge_PIDI。在大多数情况下,它工作得很好。
帅哥 随机种子12345 提示词 ("a handsome man") 生成结果如下:
ControlNet 1.1 Segmentation(分段)
用语义分割控制稳定扩散。
模型文件:control_v11p_sd15_seg.pth
配置文件:control_v11p_sd15_seg.yaml
训练数据:COCO + ADE20K。
可接受的预处理器:Seg_OFADE20K (Oneformer ADE20K)、Seg_OFCOCO (Oneformer COCO)、Seg_UFADE20K (Uniformer ADE20K) 或手动创建的掩码。
现在该模型可以接收 ADE20K 或 COCO 两种类型的注释。我们发现识别分段协议对于 ControlNet 编码器来说是微不足道的,并且训练多个分段协议的模型可以带来更好的性能。
使用随机种子 12345 提示词 (ADE20k protocol, "house")
房子 random seed 12345 (COCO protocol, "house"):
ControlNet 1.1 Openpose (姿态检测)
使用 Openpose 控制稳定扩散。
模型文件:control_v11p_sd15_openpose.pth
配置文件:control_v11p_sd15_openpose.yaml
该模型经过训练,可以接受以下组合:
打开姿势身体
张开手
打开姿势脸
Openpose 身体 + Openpose 手
Openpose 身体 + Openpose 脸部
Openpose 手 + Openpose 脸
Openpose 身体 + Openpose 手 + Openpose 脸
然而,提供所有这些组合太复杂了。我们建议只为用户提供两种选择:
“Openpose”= Openpose 身体
"Openpose Full" = Openpose 身体 + Openpose 手 + Openpose 脸
穿西装的人 随机种子 12345 提示词 ("man in suit")
野外多人,“派对帅哥 随机种子 12345 提示词(multiple people in the wild, "handsome boys in the party")
ControlNet 1.1 Lineart(线稿)
用线稿控制稳定扩散。
模型文件:control_v11p_sd15_lineart.pth
配置文件:control_v11p_sd15_lineart.yaml
该模型是在 awacke1/Image-to-Line-Drawings 上训练的。预处理器可以从图像(Lineart 和 Lineart_Coarse)生成详细或粗略的线稿。该模型经过足够的数据增强训练,可以接收手动绘制的线稿。
详细的艺术线条提取器,“书包” 随机种子 12345 提示词 (detailed lineart extractor, "bag")
随机种子12345 提示词(coarse lineart extractor, "Michael Jackson's concert")
使用手动绘制的线稿,“狼” 随机种子12345 提示词(use manually drawn linearts, "wolf"):
ControlNet 1.1 Anime Lineart(动漫线稿)
用动漫艺术线条控制稳定扩散。
模型文件:control_v11p_sd15s2_lineart_anime.pth
配置文件:control_v11p_sd15s2_lineart_anime.yaml
培训数据和实施细节:(已删除说明)。
该模型可以将真实的动漫线条图或提取的线条图作为输入。
一些重要的通知:
您需要一个文件“anything-v3-full.safetensors”来运行演示。我们不会提供文件。请自行在 Internet 上查找该文件。
该模型使用 3x 令牌长度和 clip skip 2 进行训练。
这是一个长提示模型。除非您使用 LoRA,否则长提示的结果会更好。
此型号不支持猜测模式。
随机种子2345 提示词("1girl, in classroom, skirt, uniform, red hair, bag, green eyes"):
随机种子12345 提示词 ("1girl, saber, at night, sword, green eyes, golden hair, stocking"):
随机种子12345 提示词(extracted line drawing, "1girl, Castle, silver hair, dress, Gemstone, cinematic lighting, mechanical hand, 4k, 8k, extremely detailed, Gothic, green eye"):
ControlNet 1.1 Shuffle(洗牌)
通过内容随机播放控制稳定的传播。
模型文件:control_v11e_sd15_shuffle.pth
配置文件:control_v11e_sd15_shuffle.yaml
该模型经过训练以重组图像。我们使用随机流来打乱图像并控制稳定扩散来重组图像。
香港 随机种子 12345 提示词("hong kong")
在右侧的 6 张图像中,左上角的图像是“打乱”的图像。其他都是输出。
事实上,由于 ControlNet 被训练来重组图像,我们甚至不需要打乱输入——有时我们可以只使用原始图像作为输入。
这样,这个ControlNet可以通过提示或其他ControlNet的引导来改变图像风格。
请注意,此方法与 CLIP 视觉或其他一些模型无关。
这是一个纯 ControlNet。
钢铁侠 随机种子 12345 提示词("iron man")
蜘蛛侠 random seed 12345 ("spider man"):
如果您实施自己的推理,则很重要:
请注意,此 ControlNet 需要在 ControlNet 编码器输出和 SD Unet 层之间添加全局平均池“x = torch.mean(x, dim=(2, 3), keepdim=True)”。并且 ControlNet 必须仅放在 cfg 规模的条件侧。我们建议使用 yaml 文件中的“global_average_pooling”项来控制此类行为。
极其重要
请注意,此 ControlNet Shuffle 将是唯一一种图像风格化方法,我们将在长期支持中保持稳健性。
我将重复这 3 次,因为它们非常重要(不要再问我对 XXX 其他方法有何看法):
所有其他 CLIP 图像编码器、Unclip、图像标记化和基于图像的提示在本质上和根本上都是有限的。所有这些方法都不能 (!!!) 与用户提示或额外/多个 U-Net 注入一起使用。使这些方法运作良好是不可能的。我们已经放弃了那些方法。另请参阅此处、此处等证据。
所有其他 CLIP 图像编码器、Unclip、图像标记化和基于图像的提示在本质上和根本上都是有限的。所有这些方法都不能 (!!!) 与用户提示或额外/多个 U-Net 注入一起使用。使这些方法运作良好是不可能的。我们已经放弃了那些方法。另请参阅此处、此处等证据。
所有其他 CLIP 图像编码器、Unclip、图像标记化和基于图像的提示在本质上和根本上都是有限的。所有这些方法都不能 (!!!) 与用户提示或额外/多个 U-Net 注入一起使用。使这些方法运作良好是不可能的。我们已经放弃了那些方法。另请参阅此处、此处等证据。
ControlNet Shuffle 是唯一一种有可能与所有其他 ControlNet 和用户提示一起很好地工作的方法。
ControlNet Shuffle 是唯一一种有可能与所有其他 ControlNet 和用户提示一起很好地工作的方法。
ControlNet Shuffle 是唯一一种有可能与所有其他 ControlNet 和用户提示一起很好地工作的方法。
ControlNet 1.1 指导 Pix2Pix
使用 Instruct Pix2Pix 控制稳定扩散。
模型文件:control_v11e_sd15_ip2p.pth
配置文件:control_v11e_sd15_ip2p.yaml
这是一个在Instruct Pix2Pix 数据集上训练的控制网络。
不同于官方的Instruct Pix2Pix,这个模型是用50%的指令提示和50%的描述提示来训练的。例如,“一个可爱的男孩”是描述提示,而“让男孩变得可爱”是指令提示。
因为这是一个ControlNet,所以你不需要为原来的IP2P的double cfg tuning而烦恼。并且,该模型可以应用于任何基础模型。
此外,似乎“将其变成 X”之类的指令比“将 Y 变成 X”更有效。
让它着火 随机种子 12345 提示词(“make it on fire”)
让它过冬 随机种子 12345 提示词("make it winter")
让他成为钢铁侠 随机种子 12345 提示词 ("make he iron man"):
ControlNet 1.1 Inpaint(修复)
使用 Inpaint 控制稳定扩散。
模型文件:control_v11p_sd15_inpaint.pth
配置文件:control_v11p_sd15_inpaint.yaml
演示:
python gradio_inpaint.py
一些注意事项:
这个修复 ControlNet 使用 50% 的随机掩码和 50% 的随机光流遮挡掩码进行训练。这意味着该模型不仅可以支持修复应用程序,还可以处理视频光流扭曲。也许我们将来会提供一些示例(取决于我们的工作量)。
此 gradio 演示不包括后期处理。理想情况下,您需要在每次扩散迭代中对潜像进行后处理,并对 vae 解码后的图像进行后处理,使未遮罩区域保持不变。然而,这实现起来很复杂,也许更好的想法是在 a1111 中实现。在这个 gradio 示例中,输出只是扩散的原始输出,图像中未遮罩的区域可能会因为 vae 或扩散过程而改变。
帅哥 随机种子12345 一个帅锅("a handsome man"):
ControlNet 1.1 Tile(未完成)
用瓷砖控制稳定扩散。
模型文件:control_v11u_sd15_tile.pth
配置文件:control_v11u_sd15_tile.yaml
演示:
python gradio_tile.py
越来越多的人开始考虑采用不同的方法在拼贴处进行漫射,以便图像可以非常大(4k 或 8k)。
问题是,在 Stable Diffusion 中,您的提示总是会影响每个板块。
比如你的提示是“a beautiful girl”,你把一张图片分成4×4=16个block,每个block做diffusion,那么你得到的是16个“beautiful girls”,而不是“a beautiful girl”。这是一个众所周知的问题。
现在人们的解决办法是使用一些无意义的提示,比如“清晰、清晰、超清晰”来扩散块。但是你可以预料,如果去污强度高,结果会很糟糕。而且由于提示很糟糕,所以内容非常随机。
ControlNet Tile 就是解决这个问题的模型。对于给定的图块,它识别图块内部的内容并增加识别语义的影响,如果内容不匹配,它还会减少全局提示的影响。
随机种子12345 提示词:一个帅锅 ("a handsome man")
作者:大华说AI https://www.bilibili.com/read/cv23120278/ 出处:bilibili
发表评论