查看原文
其他

AI绘画:ControlNet助力,AI解决画手难题!

穿行者2049 今说新语 2024-04-15

我的专栏《AI绘画与AIGC实践之路!

已经开通,欢迎加入!

近期除了ControlNet模型比较火热以外,生成逼真人像的Chilloutmix模型也是另一个热点,叠加训练的各种Lora人像模型,社交媒体上刮起了数字网红的热潮。不过观众的口味也在逐渐提高,在各种视频下都会看到利用AI不会画手的Bug识别真假美女秘笈。

其实在ControlNet出来没几天,就有开发者提供了一种画手的思路,也就是使用《ControlNet多重控制功能推出,AI绘画进入导演时代!》多重模型,人体使用OpenPose模型,叠加手部使用深度模型,比较完美的实现了手部绘制。下面看我简单利用已有的手部深度图,生成的几张。

使用这个方法简单步骤就是先找到你需要的人物的手部照片、或自己拍一张类似姿势的手部照片,然后在Stable Diffusion中生成手部深度图,再叠加人体姿势,合成最后的效果图。其实使用过程非常简单,最麻烦的反而是找手部深度图,还好,近日有网友开发了手部深度图插件,这篇文章就介绍一下利用这个插件生成完美手势图的关键。

插件地址:https://github.com/jexom/sd-webui-depth-lib

一、安装

1、打开“扩展”选项卡,点击“从URL安装”,在“扩展的git存储库的URL”中输入此扩展,https://github.com/jexom/sd-webui-depth-lib.git

2、点击“安装”,完成后重新启动WebUI

重启后会看到多了一个Depth Library选项卡,到这里就说明安装成功了。

二、手部深度图添加

1、加载背景图:首先我们需要生成一张基础图,找到一张合适的挑选出来。下面是我随意复制了一段提示语生成的一个样图,注意手的状态很残缺。

提示:

这时一定要把这张图片的Seed记录下来,我们后面还会用到。

然后点击Add Background Image将这张图作为背景加载进来,我们将在此图基础上摆放手部姿势。

2、加载手部图

从左下方选择一个合适的手部姿势,点击Add按钮,增加到右侧画布上。这时你可以通过拖动手周围的蓝线来更改大小,并通过拖动蓝色圆圈来旋转它。如果你的画面中需要两只手,可以再选一只添加到画面中并调整大小和位置。现在的状态如下图。

Save PNG会将单独的手部姿势图保存为一个黑背景的PNG格式文件,以后有需要可以重复使用。

3、使用手部深度图重新生成

这里我们点击右下方Send to ControlNet,发送到ControlNet模型面板。这里的几个重要参数见下图:

Seed:使用前面记录下的种子数。

Preprocessor:设为none

Model:control_depth

设置好后重新生成,效果如下。

仔细看一下,比原始图要好多了,这里比例有些大,可以返回刚才的界面调小一些,这步我们不再细调整。

这里需要说明的是,这种使用深度图控制手部姿势,最好的是五指张开的效果,但如果你用的是其他效果,就很难一步调整完美,很多时候还需要调整下面的参数。

4、调整Guidance Start参数

如果你仔细观察,在生成过程中,手部的深度图提早就形成了,这在生成复杂手部时,会导致效果不完美。我们换一个手部姿势,再测试一遍。

我们换了一只右手,看一下生成效果。可以看到虽然姿势差不多,但右手效果比较差。

这时我们可以修改一下Guidance Start参数,这个参数控制的是程序从什么时候开始从深度度扩散生成手部姿势,默认为0,也就意味着从一开始就计算。这里我们调整一下,设为0.2,也就是从总步数的20%处,才开始生成手,重新生成一遍。

好了一些,但还不完美,这里有两个原因,很大程度上取决于你用的手的姿势有多复杂,越复杂的手势,越需要仔细的调整Guidance Start参数,以控制扩散的时间段,这没有固定值,完全靠你实践。

另一个重要原因是这个扩展插件提供的手部深度图细节不够多,所以如果想要更好的结果,你可以自己生成一个手部深度图,后面我们会介绍如何使用自己的外部深度图。

调整到这里先不继续测试了,以上方法其实都是一种打补丁的方法,也就是在已有效果图基础上补充修改手部图。

二、使用多模型控制手部和身体部分的生成

前面介绍的是使用文本生成图像叠加手部深度图,生成人像的方法,我们可以看到影响最终效果的因素很多,最主要的是手指的复杂程度,如果我们想生成更完美的图像,还有一种方法是使用人体姿势图叠加手部深度图。这种方法需要用到Openpose Edit插件,具体安装不再详细介绍。

插件地址:https://github.com/fkunn1326/openpose-editor

使用这个插件,你既可以自己充头开始编辑修改一个骨架图,也可以可以导入一张已有图片让程序分析出Pose图,然后再修改;还可以导入一张已有图片作为背景,编辑一个骨架姿势哪种方法都可以。修改完后的Pose图如下:

编辑好后发送到ControlNet面板。注意,我们除了发送到ControlNet外,还要保存一张PNG格式的图,以便在手势编辑器里使用。

在手势编辑器里设置好手部姿势,这里不再详细介绍。

基础参数设置:

首先看一下控制身体的Openpose模型的参数设置:

下面是控制手部深度模型的参数设置:

注意:这两个模型都不要在ControlNet中为预处理器选择任何东西,也就是Preprocessor设为none。

这里面最主要就是调整手部深度图的两个参数Weight和Guidance Start,实际生成几张图后,你有没有觉得有些气馁,貌似无论怎么调整,最后的效果都不够完美,但文章最开始的图为何显示效果还不错呢?这就是另一个重要的建议,这种方法在手的比例比较大的时候,效果更好,也就是手部近景表现会好一些,如果手只占画面的很小一部分,这样生成的效果都不够好。因为在小尺寸下,深度图的很多细节已经丢失了,无法提供足够的参考。
三、添加自己的手部深度图
前面已经提过此扩展目前提供的深度图有些效果不够精细,目前此插件里仅提供了少量的手部深度图,但也提供了自己上传深度图的功能呢。你可以生成自己的深度图,然后直接将它们放在extensions/sd_webui-depth-lib/maps文件夹中即可使用。
下面是用我自己制作的一张手部深度图,再看看效果。
看一下效果。

请忽略左右手错误的问题,稍微还有些暇疵,集中在手指尖和边缘,主要原因是我做的深度图扣去背景时不仔细,如果认真制作深度图,效果会更好些,但比前面程序自带的深度图要好很多,最后总结一下AI画出完美的手的关键点:
1、高清精细制作的手部深度图。
2、画面中手部占比较大。
3、控制手部开始扩散的时间和强度,也就是Guidance Start和Weight。
这篇文章就到这里,后面有时间会再研究一下深度图的制作,这个直接关系到手部生成的最终效果。


《2023 AIGC从入门到精通专栏》

欢迎您的加入!


根据你的喜好,推荐阅读以下AI绘画内容:




喜欢请把这篇文章转发到朋友圈支持一下!


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存