3000字干货!Stable Diffusion插件After Detailer丨轻松一键修复脸部变形
相信很多小伙伴在使用SD绘制人物图像时,经常会出现脸部扭曲变形或没有生效等问题,但往往又不知道该如何解决。今天我给大家推荐一款非常好用的SD插件— After Detailer(后面简称ADetailer),它可以轻松修复我们上述的脸部问题,下面跟我一起来看看吧~
在正式介绍ADetailer插件前,先给大家科普下之所以出现脸部变形的原因,以及在没有插件时遇到变形问题时我们常见的修复方法。
首先我们要知道出现脸部扭曲的实际场景,大多是在绘制小尺寸图片或人物在画面中占比较小时出现。比如下面我们绘制一张最常见的512尺寸的图片,可以明显发现画面中的人物脸部不够精致,出现了一定程度的变形,看上去就很奇怪。
在之前的SD教程中,我给大家介绍了SD绘图是通过降噪的方式逐步将图像清晰化,基于这个特性,当画面中想绘制的部分占比很小时,模型往往就很难处理好该部分细节画面。由于人脸在画面中只占据了很小一部分区域,因此在降噪过程中模型用来展示面部细节的条件就不够充分,很难还原出具体的脸部五官,从而出现变形的情况。
再举个例子,同样是512小尺寸的图片,如果我们通过提示词增大脸部在画面中的占比,可以发现绘制结果也会稳定许多。归根结底,导致扭曲变形的原因是画面中人脸部分尺寸过小,模型没有足够的细节来理解并绘制脸部结构。
因此如果想保证画面中每个部分都能被完美呈现,最简单的方法就是直接增加绘制图像的尺寸,比如我们在不改变其他参数和关键词的情况下,只将图像尺寸放大2倍至1024再重新绘制,可以发现该尺寸下基本就不会再出现脸部变形等问题,而且画面精细度明显比512的提升了一个档次。
直出大图的方法虽然简单粗暴,但并非所有人的电脑硬件都能支持,一旦图像尺寸过大,显卡算力跟不上,很容易就会出现爆显存的情况。因此我们更常见的处理方式是将有问题的图像发送到SD的图生图模块中,通过局部重绘的方法来单独绘制脸部区域。
这里局部重绘的原理是当模型检测到脸部蒙版时,它会先使用更高分辨率来绘制脸部区域,再将其缩小到原始分辨率,通过这样的方法就能轻松修复画面中我们想调整的特定区域。
需要注意的是,在进行重绘时,重绘幅度参数要设置在0.6以下,否则重绘的结果将和原图产生较大的变形,融合结果会差许多。
以上就是我们平时遇到脸部扭曲的原因和常见的处理方式,但明显不够便捷,有没有一键解决脸部扭曲的方法呢?这时候就不得不提ADetailer插件了。
简单来说,ADetailer将脸部修复的过程进行了自动化处理:它会先用检测模型定位脸部区域并自动添加蒙版,在绘制过程中模型就会对脸部的蒙版区域自动进行重绘,从而轻松修复脸部变形问题。
下面我们来看看如何安装这款插件,如果你是秋叶整合包,应该默认就已经安装好对应的插件,在文生图或图生图页面下方可以找到。
而如果你的WebUI没有对应插件,你也可以通过以下方法进行安装。
1、插件安装
方法一:官方市场安装
打开扩展-可下载-加载扩展列表,在其中搜索After Detailer即可找到对应插件点击下载即可。
方法二:URL 地址安装
将选项卡切换到从网址安装选项页,将下面的插件地址粘贴到输入框中,即可自动下载和安装好 After Detailer 插件。
GitHub 下载地址:https://github.com/Bing-su/adetailer
方法三:本地安装
在公众号后台回复【SD资源】,即可找到对应的插件安装包,只需下载解压后将其粘贴至【\extensions】文件夹,再重载 WebUI 界面即可正常使用。
2、模型安装
和我们在ControlNet中学习的Openpose模型类似,ADetailer也有针对不同类型脸部检测的模型可供选择,由于模型文件不大,通常插件中会为我们直接内置好。但ADetailer也支持下载其他检测模型来进行使用,模型安装也很简单:只需将下载好的模型(后缀为.pt或.pth )放置在WebUI根目录下的models/adetailer文件夹中并刷新WebUI即可。
下面是ADetailer模型下载地址,大家可以自行下载 。同样我也为大家提前整理好了对应的模型资源,在文章结尾同样可以获取SD资源下载链接。
ADetailer模型下载地址:https://huggingface.co/Bingsu/adetailer
安装好ADetailer插件和相关模型后,我们来看看是如何使用的。
在文生图板块下方找到ADetailer插件栏,并勾选启用插件,在下方的模型框中选择face_yolo8n.pt模型。
接着保持之前的提示词和设置参数不变,在512尺寸下点击生成按钮,即可发现绘制的人物脸部都非常完美,不会再出现脸部扭曲或模型失效等问题。
如此便是ADetailer最基础的使用方法,平时使用时只需启用插件即可,是不是非常简单?强烈建议大家在绘制包含人脸的图像时都开启ADetailer插件,可以尽可能避免脸部扭曲的坏图情况。
当然如果想修复之前的坏图也很简单,将之前图像的种子值复用,并维持模型、提示词和绘图参数不变,在启用ADetailer插件情况下重新点击生成即可。
这时候可能大家会问:为什么不用WebUI原生自带的面部修复功能呢?具体原因大家看下面这张图就知道了,实际上大多数情况下开启面部修复的效果微乎其微,虽然有轻微的改善,但对整体脸部细节的刻画依旧没办法满足。
此外需要注意的是,默认设置下插件只会生成最终绘制的图像,如果大家想得到蒙版预览图需要在设置中勾选【保存蒙版预览】选项,接着在生成图像后到【无边图像浏览】页签中就能看到对应的检测图了。
ADetailer也同样支持一次开启多个检测模型,默认情况下只支持2个,大家可以在设置中修改【最大模型数量】。
下面我们来详细看下ADetailer插件提供的各项设置参数,首先是几种不同的检测模型。
检测模型
在插件里,一开始就提供了模型选择的选项。
这些模型经过训练后分别用于检测不同的人物结构 ,目前支持的模型大致可以分为以下几种类型:
简单介绍下各种模型之间的区别,名称中带yolo的表示由Ultralytics团队研发的YOLO模型,该模型可以实现对画面中物体检测跟踪、语义分割、姿势检测等不同功能。
v8表示目前是第8代模型,后面的n、s、m则表示不同的参数量级,具体数值大家无需了解,只需知道参数量级方面n
通常建议大家选择最基础的8n模型即可,如果效果不佳再切换尝试其他的模型。
虽然ADetailer可以检测手部区域进行重绘,但大家都知道目前市面上的模型还是无法完美理解手部变形的问题,所以这里hand类模型大家看看即可,即使检测出来也难以修复。当然还有person人物检测模型,可以检测并识别画面中的人物主体,但我实测使用起来检测效果很差,远远不如脸部是被精确。
ADetailer插件目前主要还是用于脸部检测,我个人平时使用最多的就是face系列模型。
在插件下方还有很多丰富的设置参数。
提示词模块
ADetailer也支持输入提示词,不同的是这里只需输入需要修改部分的提示词即可,比如人物表情,并且也支持添加LoRA模型。默认情况下我们保持留空即可,如果需要修改提示词建议大家还是在原提示词输入框中进行调整,方便管理。
检测模块
检测模块用于设置模型在检测人脸时的区域范围,通常保持默认即可。这里需要注意的是检测模型置信阈值,如果你检测模型并没有很好的识别画面信息,可以将这里的数值调小以增强检测的精确度。官方文档里建议到,如果想减少检测区域对背景其他区域的影响,可以将蒙版区域最小比率设置为0.01.
蒙版处理模块
蒙版处理模块也很好理解,用于设置蒙版的覆盖范围,平时基本不用调整,保持默认即可。
蒙版偏移表示在横向或纵向方向上移动蒙版位置,而后面的腐蚀和膨胀则表示向内或向外扩展蒙版区域。
蒙版合并模式中,【无】表示针对每个蒙版单独绘制,而【融合】即将蒙版融合后进行绘制,【合并且反相】类似区域反选,选择对蒙版外的区域进行重绘。
重绘模块
重绘模块的功能大家都很熟悉了,这里可设置的参数都和图生图中的设置项基本相同,大家如果有不理解的可以返回去看看之前SD教程系列的图生图篇,里面有非常详细的参数解析,这里就不重复介绍了。
由于ADetailer省去了绘制蒙版的过程所以相比局部重绘操作更加便捷,通过修改重绘模型和参数可快速调整图像内容。下面抛砖引玉给大家举个例子,通过更换插件重绘时使用的主模型,可快速实现不同风格的脸部绘制,而且毫无违和感。
ControlNet模块
ADetailer插件也提供了ControlNet模型增加控图效果,仅支持 inpaint、scribble、lineart、openpose、tile五种模型。
当选择模型后对应的预处理器会自动启用,如果要使用的话通常会选择inpaint模型,因为启用ControlNet的情况下即使重绘幅度很高,设置为1.最终的绘图结果依旧不会产生太过夸张的变形。
? 结束撒花 ?
以上就是After Detailer插件的全部介绍了,最后总结一下今天的内容:修复画面中脸部扭曲问题的关键在于放大局部区域进行重绘,而ADetailer插件可以轻松帮我们实现这个过程中脸部检测、添加蒙版和局部重绘的三个步骤。
近期文章
更多