ControlNet:一文搞懂Stable Diffusion最重要的插件

当你使用 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(动作探测)。

举个例子:

img

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

img

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

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

img

img

二、SD-WebUI 安装 ControlNet

  1. 打开 Stable Diffusion WebUIExtensions 页面。
  2. 选择 Install from URL 选项卡。
  3. 将以下地址粘贴到 URL for extension’s repository 位置。
https://github.com/Mikubill/sd-webui-controlnet.git
  1. 步骤4:点击 Install,收到提示 extension is installed 即为安装成功。
  2. 步骤5:重新启动sd-webui。
  3. 下载模型:模型分为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 模型文件名含义:

img

  1. 模型存放路径:stable-diffusion-webui\extensions\sd-webui-controlnet\models
  2. 重新启动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并重启。

img

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

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

git pull

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

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

img

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

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

img

    • Write icon:创建一个空白画板,用作手绘。
    • Camera icon:通过相机拍照的方式输入图像。

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

img

    • E****nable:ControlNet启用开关
    • Low VRAM:显存<8GB,或批处理时提示显存不足,尝试勾选它。
    • Allow Preview:允许预览预处理器的生成结果(爆炸图标是预处理按钮)。
    • Control Type:过滤器
    • Preprocessor:选择需要的预处理器,None 则不适用预处理器。
    • Model:选择控制模型。如果选择了预处理器,则控制模型要与预处理器类型一致。

3. 控制权重(Control Weight)

img

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

4. 控制模式(Control Mode)

img

    • Balanced:ControlNet控制和提示词两者平衡
    • My prompt is more important:更侧重遵循提示词
    • ControlNet is more important:更侧重ControlNet

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

img

    • Just Resize:仅缩放(不裁切),比例不同时,图像会出现拉伸变形。
    • Crop and Resize:通过裁切适配尺寸
    • Resize and fill:通过填充补足尺寸

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

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

img

    • Allow Preview:允许预览预处理结果,点击预处理器右侧的 “爆炸按钮” 进行预处理。
    • Pixel Perfect:使用文生图中设置的分辨率来预处理。

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

img

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

img

  1. Canny

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

img

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 用于探测参考图像的景深信息

img

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。

img

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很类似。

img

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))是一款直线轮廓探测器,适合用于如建筑、街景、室内等。

img

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

img

img

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,而关于它的各种实际操作用法,将在后续的案例操作文章中详细展示。

关于AI绘画技术储备

学好 AI绘画 不论是就业还是做副业赚钱都不错,但要学会 AI绘画 还是要有一个学习规划。最后大家分享一份全套的 AI绘画 学习资料,给那些想学习 AI绘画 的小伙伴们一点帮助!

对于0基础小白入门:

如果你是零基础小白,想快速入门AI绘画是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:stable diffusion安装包、stable diffusion0基础入门全套PDF,视频学习教程。带你从零基础系统性的学好AI绘画!

需要的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

1.stable diffusion安装包 (全套教程文末领取哈)

随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。

最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本

在这里插入图片描述

2.stable diffusion视频合集

我们在学习的时候,往往书籍代码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入门stable diffusion,科学有趣才能更方便的学习下去。

在这里插入图片描述

3.stable diffusion模型下载

stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。

在这里插入图片描述

4.stable diffusion提示词

提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。

在这里插入图片描述

5.AIGC视频教程合集

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

在这里插入图片描述

实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述
这份完整版的学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值