大家好,我是向阳
你是否遇到过SD生成的人物脸部扭曲、甚至令人恶心的情况?也曾感到束手无策?别担心,这份教程专为你而来。
在使用SD生成人物全身照时,你可能经常发现人物的脸部会出现扭曲问题。这是因为人物面部像素占比过少,导致无法充分还原面部信息。
解决这个问题的常见方法是使用局部重绘(inpaint)工具,通过设置适当的参数,往往可以取得很不错的效果。
不过,如果要大批量的生成人物全身图的话,每张图都要自己画蒙版再调参数,这就显得很繁琐,即使是单张图片进行这样的操作,有时候都会觉得心烦,那么有没有一种能够自动将扭曲的人脸修复的插件呢?答案是:有的!
After detailer(简称Adetailer)就是最佳的解决方法,该插件可以自动检测生成图片的人脸,针对人脸自动上蒙版,自动进行重绘,整个流程一气呵成,因此可以避免许多重复的操作。除此之外,Adetailer还可以检测整个人物的手部、眼睛甚至全身,并针对这些部分进行重绘。能够搭配ControlNet使用,也是Adetailer的功能之一。
我敢肯定,当使用了ADetailer之后,你绝对不会再使用inpaint(局部重绘)来修复脸部扭曲了!但我们还是可以使用inpaint来处理其它情况。
下面将介绍使用局部重绘(inpaint)和Adetailer修复人脸的方法步骤。
1、ADetailer的安装
正式开始之前,请按照下面的步骤将插件安装好。
① 浏览器打开网址:https://github.com/Bing-su/adetailer
注意:该方法需要科学上网,如无法下载,请看文末扫描免费获取ADetailer插件安装包哦
③ 将下载的压缩包解压,并将文件夹移动到 \AI-stable-diffusion-webui\extensions路径下
④ 安装好后,第一次启动webui可能会卡在如下界面,此时你打开任务管理器,如果看到网络有在接收数据,那就是没有问题的,等待下载完成即可。
⑤ 打开webui后,可在如下位置找到该插件
2、脸部修复方法
本教程所有修复方法所使用的输入图片如下,可以发现人脸的扭曲是比较严重的。
1、局部重绘(inpaint)
1)使用方法
① 将文生图界面生成的图片发送到局部重绘。如果是外部图片,则先将图片上传到图像信息(PNG info)页面,再发送到局部重绘。
② 将人物的脸部使用画笔涂抹完全,如下图所示
③ 绘制区域(inpaint area)一定要选择仅蒙版(only mask),这样模型才会使用全图分辨率(我这张图是512x768)去生成蒙版区域,生成一个高分辨率的脸部图片,然后再缩放为原始分辨率,这样就可以生成正常的人脸了。
④ 重绘幅度设置为0.6以下,否则无法生成正常的人脸。种子可以设置为随机,并将生成数量调高。
⑤ 点击生成
⑥ 可以发现已经完美修复。同样的方法还可以用来修复手部、背景以及服饰细节等等
⑦ 你会发现上图中的人脸变化不是很大,如果你想要更近一步获得更多不同的脸部表现,则需要配合controlnet的inpaint使用,方法如下
⑧ 打开controlnet面板,不需要上传图片,其它设置如下
⑨ 重绘幅度设置为1,也可以更低一点,取决于你想要的变化有多大,其它参数保持不变
⑩ 点击生成
最后将生成的图片发送到后期处理(Extra)页面,4x放大并开启脸部修复,就可以获得很不错的效果了
2)参数详情
局部重绘最重要的参数就是重绘幅度(denosing strength),不要将此值设置过高即可,大于0.6都很容易导致脸部崩溃。
2、Adetailer
Adetailer的效果和局部重绘差不多,只不过Adetailer帮我们省去了绘制蒙版以及设置参数的步骤,实现一键脸部修复的功能。Adetailer model(模型)可以识别图片中人物的脸部,并自动绘制一个蒙版,然后使用默认的参数来处理,最终获得修复后的效果。
1)使用方法
ADtailer既可以在文生图界面使用,也可以在图生图界面配合更加复杂的参数设置来获取更丰富的生成效果。
文生图界面:
① 按平常进行文生图的操作进行其它设置
② 打开Adetailer,选择启用(enable),模型默认即可
③ 点击生成
④ 与原图的效果对比
图生图界面:
① 将文生图界面生成的图片发送到图生图,这样提示词和其它设置就会自动填充
② 将重绘幅度设置为0.1或更低
③ 打开Adetailer,选择启用(enable),模型默认即可
④ 点击生成,如果重绘幅度很低,那么效果与文生图界面使用ADetailer基本相同,这里就不做展示了
2)参数详情
Detection model(检测模型)
检测模型可以分为以下几类
-
Face_xxxx: 检测和重绘人脸
-
Hand_xxxx: 检测和重绘手
-
Person_xxxx: 检测和重绘整个人
-
Mediapipe_face_xxxxx: 检测和重绘人脸
face_yolo和person_yolo模型是最有用的两个模型,默认选项下即为face_yolo模型,上面已经演示了face_yolo模型的效果,不再示例,而person_yolo模型的效果如下,整个人物都会发生一定的变化。
Hands model可以检测和重绘手部,但是对此功能别抱太大希望,SD模型目前很难画出完好的手部,所以不管你重绘多少次,可能效果都不会很完美,但总归可以获得相对来说够看的图片。
另外,模型名称的后缀8s和8n有什么意义呢?对比可看下图:
简单来说8s的参数量是8n的三倍多,意味着8s处理时间还会比8n长,但效果更好。8n模型修复脸部的效果已经很不错了,所以通常情况下选择8n即可,修复不佳再切换为8s模型。
最后你可能注意到Adetailer的以下选项
Adetailer最多允许你设置两个检测和重绘模型,设置好后会逐一进行修复。如果想要一次性进行更多检测,则需要在设置(settings)>> ADetailer中将选项的数值2调高。
Adetailer还有专门的提示词框来指导生成重绘区域,因此可以根据需要来设置额外的提示词。此提示词框可以使用Lora!因此你可以将你想要的面部lora输入提示词框内来获得想要的结果。
Detection(检测)
一般保持默认设置即可,如果你发现要修复的地方没有变化,则适当降低Detection model confidence threshold的值再重新生成
Mask Preprocessing(蒙版前处理)
该选项下的设置保持默认即可
Inpainting(局部重绘)
重绘幅度(denosing strength)是最重要的参数,这可能是唯一有必要调整的参数,如果需要更大的变化则提升重绘幅度,反之亦然,它与局部重绘的重绘幅度所起的效果完全相同。下图来自ADetailer官方,指明了插件的inpainting页面下的所有参数与局部重绘页面参数的对应关系。
其它选项你也可以自行设置,但一般不需要更改也能获得很好的效果。
Controlnet
Adetailer还可以与controlnet一起使用。
你可以在Controlnet model选项下选择不同的模型,仅支持 inpaint, scribble, lineart, openpose, tile五种模型。选择模型后,预处理会自动选择,不需要额外设置。
下面对各个ControlNet模型的作用做一简单介绍。
Inpaint:
ControlNet的Inpaint与普通inpaint最大的区别在于能够在很高的重绘幅度下仍然保持整体画面的统一。
举个例子,如果我将ADetailer的重绘幅度设置为1,不使用inpaint和使用inpaint的区别可以在下图中明显看出来:
Scribble:
在较高的重绘幅度下,可以保持人物的身形或面部曲线。
Lineart:
与scribble所起到的作用类似
Openpose:
在较高的重绘幅度下,可以保持人物的姿势,适合与person_yolo模型一起使用,可以在人物姿势不发生变化的情况下,更改人物的服饰和身材等。
Tile:
给人物更改或添加更多细节,当你需要重新生成或添加更多细节时开启tile。
3、ADetailer和脸部修复的区别
ADetailer和face restoration两者都可以用于修复扭曲的脸部。ADetailer生成更高分辨率的图像,然后缩小图像尺寸来修复脸部。而face restoration则使用另一个AI模型,例如CodeFormer和GFPGAN,来修复脸部。
我更推荐使用ADetailer进行修复(例如局部重绘),理由如下:
① 面部修复模型产生的风格可能与你的模型不一致
② 你可以通过修改提示和ControlNet来进一步指导局部重绘的结果
③ 通过Adetailer你可以获得更加丰富的脸部特征
4、何时使用ADetailer
在ADetailer中,你可以自动完成所有需要手动操作的工作,无需额外的手动步骤。ADetailer相当于实现了以下过程的自动化:
① 将图像发送至inpainting(图像修复)。
② 创建蒙版(inpaint mask)。
③ 设置ControlNet(可选设置)。
④ 生成修复后的图像。
因此使用这个插件的最大价值在于自动化,使你可以使用相同的设置修复多张图像。如果使用手动流程,这样的操作将会很繁琐。
所以如果你需要使用inpaint工具来修复人脸、手部或者全身的时候就可以使用ADetailer。
Tips: 当ADetailer与img2img一起使用时,有两个重绘幅度需要设置。img2img的重绘幅度设置适用于整个图像,而ADetailer中的inpainting重绘幅度设置仅适用于蒙版部分。
另外,你还可以选择在“设置” > “ADetailer”中开启保存检测模型结果的功能。这将保存另一张图像,其中包含检测到的区域和置信度分数,如下图所示。
标签:Diffusion,插件,修复,AI,模型,Adetailer,设置,重绘,ADetailer From: https://blog.csdn.net/qq_44624290/article/details/140227873