当前位置:AIGC资讯 > AIGC > 正文

【AI绘画】ControlNet:一文搞懂Stable Diffusion最重要的插件

大家好,我是SD教程菌。

当你使用 Stable diffusion 生成图像时,是否有过这种经历?提示词内容在生成结果中似乎都体现出来了,但又总不是自己想要的样子,于是陷入到无限生成(抽卡)的状态,耗费大量时间,逐渐消磨兴趣、耐性及对SD的信任。

同样的文字,不同的人理解会不同,想象的画面也各不一样,机器当然也是如此,最好的办法就是“用图表达”。给SD一张参考图,让SD充分理解你的想法。俗话说,一张图胜过千言万语。

Stable Diffusion 的基本工作原理就是以文字作为引导条件,生成符合条件的图像。其短板就是无法对图像细节做精准控制,例如构图、动作、面部特征、空间关系等。ControlNet 的出现弥补了这一不足,更是成为SD绘画中必须熟练掌握的工具。

本文将带你全面了解最重要的SD辅助工具 —— ControlNet

Official ControlNet Blog Post:https://huggingface.co/blog/controlnet

一、ControlNet 是什么?

ControlNet 是一种增强型神经网络模型,它在SD中通过添加额外的条件来控制图像生成。可通过**[论文]**(https://arxiv.org/abs/2302.05543)了解更多。

ControlNet 有多种控制方式供选择使用(仍在不断地扩充和更迭),帮助我们应对不同的绘画需求。例如较为常用的 Canny(边缘探测)、Depth(景深探测)、Openpose(动作探测)。

举个例子:

未使用ControlNet的情况下,即便尽量用文字描述了动作细节,生成结果依然难以掌控,甚至有些细节的描述,SD也难以理解。

使用ControlNet后(以Canny为例),通过对参考图的边缘进行探测和提取,作为生成图像的附加引导条件,很好地掌控了构图和形态,提示词也精简了很多。

下图是ControlNet的其他控制方式,可以先感觉一下它们的用途和效果。(取自论文)

二、SD-WebUI 安装 ControlNet

1. 打开 Stable Diffusion WebUI 的 Extensions 页面。

2. 选择 Install from URL 选项卡。

3. 将以下地址粘贴到 URL for extension’s repository 位置。

https://github.com/Mikubill/sd-webui-controlnet.git

4. 步骤4:点击 Install,收到提示 extension is installed 即为安装成功。

5. 步骤5:重新启动sd-webui。

6. 下载模型:模型分为SD1.5和SDXL两种版本,使用时要与Checkpoint模型版本相同。

ControlNet Models for SD1.5:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main(pth 和 yaml 文件都需要下载)

ControlNet Models for SDXL:https://huggingface.co/lllyasviel/sd_control_collection/tree/main

ControlNet 模型文件名含义:

7. 模型存放路径:stable-diffusion-webui\extensions\sd-webui-controlnet\models

8. 重新启动sd webui。

显存设置

由于SDXL模型能生成更高分辨率的图像,显存占用也会更高。可根据显存情况,用记事本打开 web-ui.bat ,添加对应的 COMMANDLINE 指令。

如果显存在8GB~16GB,添加 --medvram-sdxl

@echo off``   ``set PYTHON=``set GIT=``set VENV_DIR=``set COMMANDLINE_ARGS=--medvram-sdxl --xformers``   ``call webui.bat

如果显存<8GB,添加 --lowvram-sdxl

@echo off``   ``set PYTHON=``set GIT=``set VENV_DIR=``set COMMANDLINE_ARGS=--lowvram --xformers``   ``call webui.bat

三、升级 ControlNet

方法1:在 SD-WebUI 升级

1. 打开 Extensions 页面;

2. 进入 Installed 选项卡,点击 Check for updates;

3. 等待完成;

4. 完全关闭SD-WebUI并重启。

方法2:通过控制台指令升级

在 stable-diffusion-webui/extensions/sd-webui-controlnet 路径内启动控制台,输入以下指令:

git pull

四、ControlNet 界面说明(SD-WebUI)

安装成功后,在SD-WebUI下方可以看到 ControlNet面板。

1. 导入控制素材(参考图像或蒙版)

Image Canvas:在此处添加图像,图像将被选择的预处理器处理,生成一个控制图,提供给控制模型作用于生成图像。

Write icon:创建一个空白画板,用作手绘。

Camera icon:通过相机拍照的方式输入图像。

2. 选择控制模型(Control Model)

Enable:ControlNet启用开关

Low VRAM:显存<8GB,或批处理时提示显存不足,尝试勾选它。

Allow Preview:允许预览预处理器的生成结果(爆炸图标是预处理按钮)。

Control Type:过滤器

Preprocessor:选择需要的预处理器,None 则不适用预处理器。

Model:选择控制模型。如果选择了预处理器,则控制模型要与预处理器类型一致。

3. 控制权重(Control Weight)

Control Weight:ContorlNet控制权重。数值越高,越接近控制素材(参考图或预处理生成图),但图像生成的发挥空间也更小。

Starting Control Weight:从采样的哪个阶段介入控制。比如,若设定提示词为“sitting”,但参考图像是站立的,且起始控制权重(Starting Control Weight)不为0,结果很可能不是站立的。因为采样一开始是全局控制的阶段,此时ControlNet还未发挥作用,系统会先按“Sitting”的提示进行,随后ControlNet虽会介入,但要大幅改变已生成的图像内容难度较大。

Ending Control Weight:从采样的哪个阶段结束控制。

4. 控制模式(Control Mode)

Balanced:ControlNet控制和提示词两者平衡

My prompt is more important:更侧重遵循提示词

ControlNet is more important:更侧重ControlNet

5. 尺寸调整模式(Resize mode)

Just Resize:仅缩放(不裁切),比例不同时,图像会出现拉伸变形。

Crop and Resize:通过裁切适配尺寸

Resize and fill:通过填充补足尺寸

五、ControlNet 预处理器和控制模型

选择适合的预处理器和正确的控制模型是使用ControlNet最重要的事。

Allow Preview:允许预览预处理结果,点击预处理器右侧的 “**爆炸按钮**” 进行预处理。

Pixel Perfect:使用文生图中设置的分辨率来预处理。

个别类型允许仅使用预处理器或控制模型,但同时使用时,模型和预处理器类型必须相同。

选用的ControlNet模型版本也必须与Checkpoint模型的版本相同。

1. Canny

Canny(https://en.wikipedia.org/wiki/Canny_edge_detector)是一款边缘探测器,用于提取参考图的边缘信息,有助于生成图像能原始参考图的构图。

Canny 预处理器:

canny:仅一款

Canny 模型:

control_v11p_sd15_canny:sd15仅一款

diffusers_xl_canny_full:模型越大,越接近参考图,损失一些速度。

diffusers_xl_canny_mid:效果不错,速度适中,我习惯选它。

diffusers_xl_canny_small:电脑性能差的可以尝试。

kohya_controllllite_xl_canny:基于动漫图像训练而成,适合用于动漫或绘画风格。

kohya_controllllite_xl_canny_anime:特点同上,细节更多。

sai_xl_canny_128lora:模型小,速度慢,很少用到。

sai_xl_canny_256lora:同上

t2i-adapter_xl_canny**:模型小,速度快,但依然很少用。

t2i-adapter_diffusers_xl_canny**:同上

2. Depth

Depth 用于探测参考图像的景深信息。

Depth 预处理器:

Depth Midas:一款经典的景深探测器。(也可以用于SDv2模型)

Depth Leres:能获得更多的细节,也更侧重于背景。

Depth Leres++:Depth Leres 增强版,可以捕捉更多细节。

Zoe:介于 Midas 和 Leres 之间的细节水平。

Depth Anything:一款增强型的模型。

Depth Hand Refiner:用于重绘时对手的修复。

Depth 模型:

control_v11f1p_sd15_depth:sd15仅一款

diffusers_xl_depth_full:模型越大,越接近参考图,损失一些速度。

diffusers_xl_depth_mid:效果不错,速度适中,我习惯选它。

diffusers_xl_depth_small:电脑性能差的可以尝试。

kohya_controllllite_xl_depth_anime:偏向动漫风格。

kohya_controllllite_xl_depth:同上

sai_xl_depth_128lora:没用过

sai_xl_depth_256lora:没用过

sargezt_xl_depth:据说很难用

sargezt_xl_depth_faid_vidit:同上

sargezt_xl_depth_zeed:同上

t2i-adapter_diffusers_xl_depth_midas:没用过

t2i-adapter_diffusers_xl_depth_zoe:没用过

3. OpenPose

OpenPose(https://github.com/CMU-Perceptual-Computing-Lab/openpose)主要用于捕捉人体的骨骼姿态,而不涉及外观细节(如发型、服饰、背景等)。因此,在仅对姿态有明确要求,并希望在其他画面元素上有更大创作空间时,推荐使用 OpenPose。

Openpose 预处理器:

OpenPose:眼、鼻、脖、肩、肘、腕、膝和脚踝。

OpenPose_face:OpenPose + 面部细节

OpenPose_hand:OpenPose + 手和手指

OpenPose_faceonly:仅面部细节

OpenPose_full:上述所有,但基本被更优秀的 DWPose 取代。

DWPose:OpenPose_full 的增强版,几乎可替代上述所有。它需要独立安装:Extensions > Install form URL,URL地址如下:

https://github.com/IDEA-Research/DWPose.git

Openpose 模型:

control_v11p_sd15_openpose:sd15仅一款

kohya_controllllite_xl_openpose_anime

kohya_controllllite_xl_openpose_anime_v2

t2i-adapter_xl_openpose

t2i-adapter_diffusers_xl_openpose

thibaud_xl_openpose

thibaud_xl_openpose_256lora

技巧:

sd-webui-openpose-editor(GitHub - huchenlei/sd-webui-openpose-editor: Openpose editor for ControlNet. Full hand/face support.):可对生成的Openpose预处理图像进行编辑,安装URL地址如下:



https://github.com/huchenlei/sd-webui-openpose-editor.git


Magic Poser(Magic Poser Web):在线创建动作。当很难找到理想的动作参考图时,可以尝试动制作一个动作,截图后导入给Openpose。

4. Line Art(only SD1.5)

Line Art 对图像的轮廓进行重新渲染,看着似乎与Canny很类似。

Line Art 预处理器:

Line art anime:动漫风格线条

Line art anime denoise:动漫风格线条(更少的细节)

Line art realistic: 写实风格线条

Line art coarse:更粗的写实风格线条

lineart_standard (from white bg & black line)

Line Art 模型:

control_v11p_sd15_lineart

control_v11p_sd15s2_lineart_anim

5. MLSD

M-LSD(GitHub - navervision/mlsd: Official Tensorflow implementation of “M-LSD: Towards Light-weight and Real-time Line Segment Detection” (AAAI 2022 Oral))是一款直线轮廓探测器,适合用于如建筑、街景、室内等。

MLSD 预处理器:

mlsd

MLSD 模型:

control_v11p_sd15_mlsd

6. IP-adapter(Image Prompt adapter)

IP-adapter 用于将图片作为提示条件使用。它可以用来复制一张参考图像的风格、构图和人脸特征。可通过 [论文](https://arxiv.org/abs/2308.06721)或[Github主页](GitHub - tencent-ailab/IP-Adapter: The image prompt adapter is designed to enable a pretrained text-to-image diffusion model to generate images with image prompt.) 了解更多。

IP-adapter 几乎是当前最好的风格迁移工具,用途广泛,一定要掌握它。后续会有单独介绍它的文章。

IP-adapter 预处理器:

ip-adapter-auto

ip-adapter_clip_h

ip-adapter_pulid

ip-adapter_face_id_plus

ip-adapter_face_id

ip-adapter_clip_sdxl_plus_vith

ip-adapter_clip_g

IP-adapter 模型

ip-adapter_sd15

ip-adapter_sd15_light

ip-adapter-full-face_sd15

ip-adapter-plus_sd15

ip-adapter-plus-face_sd15

ip-adapter_sd15_vit-G

ip-adapter-faceid_sd15

ip-adapter-faceid-plusv2_sd15

ip-adapter-faceid-portrait-v11_sd15

ip-adapter_sdxl

ip-adapter_sdxl_vit-h

ip-adapter-plus_sdxl_vit-h

ip-adapter-plus-face_sdxl_vit-h

ip-adapter-faceid_sdxl

ip-adapter-faceid-plusv2_sdxl

ip-adapter-faceid-portrait_sdxl

ip-adapter-faceid-portrait_sdxl_unnorm

ip-adapter_instant_id_sdxl

7. Tile resample

Tile resample 通过网格分块重新取样,为图像添加细节。通常与 Upscaler(图像分辨率放大)一起使用,用于放大图像。

Tile 预处理器:

tile_resample

tile_colorfix+sharp

tile_colorfix

blur_gaussian

Tile 模型:

control_v11f1e_sd15_tile

8. Reference

Reference 是一组预处理器(它没有对应的控制模型),用于生成与参考图像相似的图像。SD模型和提示词仍然会影响图像。

Reference 预处理器:

Reference adain:通过自适应进行风格迁移。

Reference only:将参考图像直接链接到注意层。

Reference adain + attn:以上两项组合。

9. Recolor

用于将黑白图像重新上色,较为依赖摄影或图像风格方面的提示词。

Recolor 预处理器:

recolor_intensity

recolor_luminance

Recolor 控制模型:

sai_xl_recolor_128lora

sai_xl_recolor_256lora

10. Normal maps

Normal map(法线图)用于确定图像像素的表面方向,类似浮雕的凹凸效果。

Normal map 预处理器:

Normal Midas:从 [Midas] depth map 计算法线图。(侧重于主体)

Normal Bae:使用 [normal uncertainty method] 计算法线图。(侧重整幅)

normal_dsine

Normal map 模型:

control_v11p_sd15_normalbae

11. Scribble

Scribble 预处理器通过探测图像中的轮廓线,生成涂鸦图,类型如下:

Scribbles 预处理器:

Scribble HED:是一款边缘探测器,擅长生成人物的轮廓线。它适用于重新着色和重塑风格。

Scribble Pidinet: 擅长探测曲线和直线,结果与HED类似,但细节更少。

Scribble xdog

Scribbles 模型:

control_v11p_sd15_scribble

12. Segmentation(only SD1.5)

Segmentation 预处理器通过不同的填充色来区分参考图像中的对象类型。[着色表](https://docs.google.com/spreadsheets/d/1se8YEtb2detS7OuPE86fXGyD269pMycAWe2mtKUj2W8/edit#gid=0)

Segmentation 预处理器类型:

ufade20k

ofade20k

ofcoco

seg_anime_face

mobile_sam

Segmentation 模型:

control_v11p_sd15_seg

13. Shuffle

The Shuffle 预处理器将参考图搅拌,一般用于为生成图像提供配色方案。它有几个特点:

Shuffle 预处理器类型:

shuffle

Shuffle 模型:

control_v11e_sd15_shuffle

Shuffle 预处理器可以独立使用,或与Shuffle模型一起使用。它的效果是随机的,受种子影响。

14. ControlNet Inpaint

ControlNet inpaint 可以在确保整图一致性的前提下,使用高重绘幅度(Denoising)进行重绘,来获得更大的变化。(SD的图生图重绘使用高Denoising会出问题)

Inpaint 预处理器:

Inpaint_global_harmonious:允许使用高重绘幅度,并确保全局一致性。

Inpaint_only:不改变非蒙版区域。

Inpaint_only+lama:使用 lama 模型处理图像,通常用作移除某对象(不使用提示词)。

Inpaint 模型:

control_v11p_sd15_inpaint

总结

上述列举的控制类型并非穷尽所有,而是涵盖了较为常用的几种。随着开发者们的不断创新与迭代,新的控制类型不断涌现,因此我们应当保持持续关注。ControlNet在Stable Diffusion 中扮演着至关重要的角色,为了充分发挥其潜力,我们需要通过大量的实践与练习来熟练掌握其应用。

本文的主要目的是让读者系统性地了解ControlNet,而关于它的各种实际操作用法,将在后续的案例操作文章中详细展示。

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

若有侵权,请联系删除

总结

更新时间 2024-09-20