ControlNet Stable Diffusion 完全指南

ControlNet 是 Stable Diffusion中的一种扩展模型,通过这种扩展模型,我们能够将参考图像的构图(compositions )或者人体姿势迁移到目标图像。

资深 Stable Diffusion 用户都知道,很难精准控制Stable Diffusion生成的图像,比如如何在不同场景中保持原来的构图(compositions )或者人物形象,但是有了ControlNet ,这些问题变得轻松多了。

这篇文章,我带你系统了解:

  1. 什么是ControlNet;
  2. ControlNet的工作原理
  3. ControlNet 常用preprocessing
  4. 如何部署和使用ControlNet

ControlNet 是用来控制Stable Diffusion 模型的一种神经网络模型。Stable Diffusion 本身是一种根据文本或者图像用来生成图像的扩散模型,在生成图像过程中,可以通过 ControlNet 引入更多条件来干预图像生成过程,它可以(也需要) 跟现有 任何 Stable Diffusion 模型搭配使用。

下面举两个例子来说明ControlNet 如何来干预图像生成:

  1. 使用canny边缘检测 来控制图像生成

图片

在这个示例图中,有两种条件来控制最终的图像生成:文本条件和canny边缘检测结果(control map)。前者是prompt,大家都很熟悉了,后者需要额外提供参考图像,示例中通过canny 边缘检测器,提取参考图像的边缘信息。两者共同作用于目标图像。

从参考图像中提取额外信息的过程,在Stable Diffusion中有专门的术语叫:preprocessing。

  1. 使用OpenPose来迁移人物姿势特征

OpenPose是一种快速检测人体特征的模型,包括手,脚,肩膀,头和眼睛等位置特征。

图片

从上面示例,大家能够看到边缘检测器和OpenPose的一些区别,前者勾勒人物轮廓,目标图像会保留原图中的头发,衣服等轮廓,适合于一些富含边缘信息的主题和背景迁移,而后者更自由,它关注人物的关键姿势特征,但是不会保留那些衣服,头发等的轮廓信息。

实际上,OpenPose相关的有多种preprocessing,比如:

OpenPose: ,nose, eyes, neck, shoulder, elbow, wrist, knees, and ankles.

OpenPose_face: OpenPose + facial details

OpenPose_hand: OpenPose + hands and fingers

OpenPose_faceonly: facial details only

OpenPose_full: All of the above

OpenPose有专门提取脸部特征,手部特征,关节,膝盖,脚踝以及以上特征的组合等多种模型。这么看,OpenPose 也并不是那么粗枝大叶,也可以做到精细控制,为什么有专门针对脸和手的模型呢?因为没有这些模型,Stable Diffusion对手的生成 不在行,经常出现 多手指或者手指变形等情况,人脸的重要性更不用说了,脸部细节直接关系结果图像的成败。

关于OpenPose提取人体特征,我们看几个例子:

图片

图片

这里是根据脸部表情特征 生成的目标图像:

图片

可见,这个模型处理好的话,可以用于那些对人物角色形象相似度度要求不高,但是又要求是同一人物的场景。

Reference

跟OpenPose相似的另一个preprocessing是Reference。Reference能够生成跟参考图像相似的图像,这个特性经常用于在不同场景中生成同一人物形象,比如绘本创作中,至少要求是同一张脸。OpenPose 虽然也能精细控制脸,但是 相比 Reference,OpenPose 主要是保证脸部,包括眼睛,鼻子等的相似,但是 整体脸部效果 还是不能保证。

使用 Reference 只需要选择 preprocessing,不需要搭配模型,在SD web Ui中,选择模型选项自动不可用。

有3个Reference相关的preprocessing:

Reference adain: Style transfer via Adaptive Instance Normalization. (paper【https://arxiv.org/abs/1703.06868】)

Reference only: Link the reference image directly to the attention layers.

Reference adain+attn: Combination of above.

Reference adain 在github中有关讨论:

https://github.com/Mikubill/sd-webui-controlnet/discussions/1280

Reference only 在github中有关讨论:

https://github.com/Mikubill/sd-webui-controlnet/discussions/1236】

结合作者的评论,使用中推荐Reference only。

ControlNet Inpainting

ControlNet Inpainting 其实是借助类似蒙版的概念,能够对图像的部分进行修改,而保持其他部分不变。举个例子,将下面美女的脸换一下,同时保持图像其他整体风格和内容不变。

这是原图:

图片

我们在原图中将脸打上掩码:

图片

选择重新生成掩码部分,将得到新的脸:

图片

这一步你也可以选择保持掩码部分不变,而改变其他地方。

inpainting preprocessors 相关的有3种:

Inpaint_global_harmonious: Improve global consistency and allow you to use high denoising strength.

Inpaint_only: Won’t change unmasked area. It is the same as Inpaint_global_harmonious in AUTOMATIC1111.

Inpaint_only+lama: Process the image with the lama model. It tends to produce cleaner results and is good for object removal.

前两个作用是一样的,都保持掩码区域内容不变。Inpaint_only+lama 能够生成更干净的图像,luma 在这里有详细介绍:

https://github.com/advimman/lama

它利用傅里叶变换进行inpainting,能够生成更高分辨率的图像。可用于对象清除,比如下面示例:

图片

图片图片

Depth

ControlNet 深度预处理器是用于处理图像中的深度信息的工具。它可以用于计算图像中物体的距离、深度图等。

depth map是跟原图大小一样的存储了深度信息的灰色尺度( gray scale )图像,白色表示图像距离更近,黑色表示距离更远。

举个例子,原图和它的depth map 深度信息图(MIDaS编码):

图片

Depth-to-image (Depth2img)

可以看作是 image-to-image (img2img) 的加强版,是一个在 Stable Diffusion v2 中未受重视的模型。

相比img2img,Depth2img 不仅能够利用 文本prompt,原来的图像,还可以使用原来图像的深度信息来控制图像的生成,也就是说,相比前者,他有3维参考信息。使用Depth-to-image 可以独立地控制合成图像中的物体和背景,从而得到更好的结果图像。但是 使用方式跟 前者一样,深度信息是自动进行的。

为了直观地比较两种模型生成的图像质量,我们以一张原始图,来看两者的输出结果:

图片

现在我们拿这张图做参考图,输入:

photo of two men wrestling

生成两个男人摔跤的图像:

在这里插入图片描述

分别调节去噪强度参数,可以发现,imgimg明显丢失了原图信息,而depth2img较好地保留了原图中的信息。

注:depth2img 也可以用于inpainting。

Segmentation

Segmentation preprocessors 能够识别出图像中的各种对象,比如下例中,能够将图中不同的对象,建筑,行人,天空,树木等用不同的颜色标出:

图片

然后用同样的提示词,可以生成新的图像:

Futuristic city, tree, buildings, cyberpunk

图片

T2I adapter

t2ia_style_clipvision preprocessor 能够将参考图像转换为包含原图中丰富的内容和样式的CLIP vision embedding。

图片图片

而如果没有使用该模型,则产生的新的图像跟原图差距很大,这一模型相比Reference preporocssor 效果更好。感兴趣的读者可以试试。

MLSD

M-LSD (Mobile Line Segment Detection)是一个直线检测器,它很擅长提取直线边缘的轮廓信息,比如建筑,街区,相框等,可以用于室内设计,比如提供这样的参考图:

图片

输入:

award winning living room

可以生成下面的目标图像:

图片

Stable Diffusion 部署与使用ControlNet

接下来,简单过一遍,如何部署和使用Stable Diffusion ControlNet。假设你已经下载并成功启动了AUTOMATIC1111 WebUi,接下来我详细介绍下如何安装ControlNet扩展。

导航到extensions,选择从URL安装,输入下面网址:

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

图片

图片

图片

点击安装,安装完成之后,回到Installed tab,确认勾选了 contrlnet extension,然后重启。

重启之后,如果能够看到 ControlNet tab 说明一切正常。将下面图片上传到图像面板:

图片

就可以使用上面介绍的任意preprocessing来预览提起的特征,比如以OpenPose为例:

图片

图片

输入prompt就可以将原图的姿势迁移到目标图像中:

图片

还可以使用canny 边缘检测:

图片

图片

其他特征提取都可以类似下面勾选不同的方法来预览。

图片

关于ControNet的总体知识,我基本介绍完了,关于ControlNet的知识还有很多,限于篇幅无法一一介绍,最后我再给一个效果案例,感兴趣的可以去测试下能否复现,这里是原图:

图片

效果图如下:

图片

关于AI绘画技术储备

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

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

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

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

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

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

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

四、AIGC视频教程合集

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

在这里插入图片描述

五、实战案例

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

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值