再也不用担心 AI 图片脸崩手崩了

1,834 阅读11分钟

如果你经常用 Stable Diffusion 画人物,相信你一定画出过脸崩的图片。这也是目前文生图 AI 工具普遍存在的问题。连 Midjourney V6 也不例外!当它画一个人的时候表现还好,当画面里的人一多,局面就难以控制了。

看,这就是 Midjourney V6 生成的图片。放大瞧瞧, 各种扭曲变形,是不是令人大跌眼镜?

Midjourney group girls

单人肖像在 Stable Diffusion 中可以局部重绘一下,要是人数多呢?值得我们为修复一张图片花费几个小时的时间吗?幸运的是,我将为你介绍一个非常强大的插件。它就是为一次性快速修复这样的问题准备的。绝对是 Stable Diffusion 必装的一款插件。

很多人没有用过 Stable Diffusion 的原因是显卡不给力。其实可以租用云平台来跑 SD,按小时收费也很划算。感兴趣的话,可以看看我的这篇文章:

👉 玩 Stable Diffusion 没有好显卡?试试秋叶大佬推荐的云平台

ADetailer 值得我花很多时间,与你们分享。本文包含的内容非常丰富,从插件的安装,到各种参数的详细介绍。耐心看完的话,一定能成为高级玩家。OK,让我们开始吧。

本文对应的B站视频讲解链接:

👉 www.bilibili.com/video/BV1fK…

安装

首先我们来看如何安装这个插件。

安装 ADetailer 的方法和安装其他插件一样。首先来到插件的标签页,然后点击“可用”标签页。接着在 “Search” 文本框内输入 “adetailer”。通常情况下,它会出现在下方的列表里,然后点击安装即可。

如果没有出现的话,还有第二种方法,那就是利用“可用”标签页右边的标签页“从网址安装”。这个网址可以从这个项目的 Github 网页获得。我们可以在搜索引擎上输入关键词 “adetailer stable diffusion”,通常这个网页在搜索结果中排名第一。或者直接在浏览器地址栏输入网址。

到了 Github 网页(github.com/Bing-su/ade…)以后,点击 “Code” 按钮,在弹出的窗口中点击 “复制url到剪贴板”按钮。这时候网址就被复制到了剪贴板上。

ADetailer 的 GitHub 页面里详细介绍了安装过程和解决问题的方案。大家也可以仔细去看一下。某些模型可能需要单独下载并移动到 "webui/models/adetailer "文件夹。

复制网址后,让我们回到 WebUI,把网址粘贴进来,然后点击“安装”按钮。

切换到“已安装”的标签页,点击“应用并重启用户界面”。

extension list

接着回到 WebUI 文生图或图生图的界面,就可以看见 ADetailer 出现在列表中啦。

adetailer in webui

演示操作

安装完成以后,我们就可以体验它神奇的效果啦。

首先,我在不用这个插件的情况下,生成一张图。这里使用的是文生图,当然,ADetailer 也可以在图生图中发挥作用。

这里我使用的是真实系模型 MajicmixRealistic 。大家可以根据自己的喜好选择相应的模型。其中的很多参数我遵循了模型作者的推荐,比如 Clip skip 我设置的是 “2”,采样器我选择的是 “Euler a”。

不出意外的话,生成的照片是有很多问题的。

00000-222357305-原图

最前面的女孩还好,但后排女生的脸就开始出问题了。画面中越远或者越小的人脸越容易出问题。这么多脸要是用局部重绘一个个去修复的话,肯定得累死。

感谢 ADetailer 的作者为我们提供解决方案。

接下来我们固定一下随机种子。然后展开下方的插件 ADetailer 。我们发现这里有好多模型可供选择,令人眼花缭乱。我们就先来一个默认的,其他的模型我稍后会做讲解。勾选这个插件以后,然后重新生成。

adetailer interface

我们通过预览窗口会发现,生成图像的过程变得不一样了。几乎每张脸的周围都多了一个红色的方框,上面还有数字。

adetailer processing

还能在预览窗口中看到每张脸的特写。这实际上是 ADetailer 插件正在处理一个个人脸。

处理完成之后,图片就出来了。仔细看看,这些人脸是不是改善很多呢。

face-v8n

让我们回过头来看看原图。这是原图。

00000-222357305-原图

如果看不出来区别的话,我为你做了一张放大后的对比图。仔细看的话,远处的人脸也被一一修复了呢。

comparison 1

模型解释和对比

为了生成刚才的图片,我们无脑选择了默认的模型,也就是 face yolo v8n。实际上,ADetailer 为我们提供了相当多的模型。我数了一下,目前竟然有 14 个之多。

adetailer models

看到这么多模型,是不是会犯选择困难症呢?没关系,让我来为大家讲解它们的区别。然后再展示它们生成的对比图。理性加感性,这样就没问题啦。

从处理图像的区域来划分,这些模型分为三类。模型名称里包含 face 的就是用来处理面部的。包含 hand 就是处理手的。包含 person 就是处理身体的。deepfashion 比较特殊,我们先不讲。

从处理图像使用的模型划分,这些模型分为两类。模型名称里包含 YOLO 的就是使用了 YOLO 算法。包含 MediaPipe 就是使用了 MediaPipe 算法。

目前 ADetailer 所有的 MediaPipe 模型都是用来处理面部的,尽管 MediaPipe 本身还可以处理手。

MediaPipe 提供专门的人脸检测模型,并对性能和准确性进行了优化。YOLO 算法则更具有通用性,它可以检测各种物体。在 ADetailer 中,它还可以检测身体,还适用于二次元的模型。MediaPipe 则适用于写实模型。

yolo vs mediapipe

和YOLO相比,它可能会对人脸特征提供更高的准确性,而 YOLO 的准确性取决于其训练和版本。

图中的方框就是它们处理的区域。从图片里也可以看出来,MediaPipe 处理的区域更小,但更精确。它在处理过程中对面部多个特征都做了标注。

但它也有缺点。如果是侧脸,或者脸部在画面占比小的话,MediaPipe 就无法处理。因此它能处理的面部是非常有限的。YOLO 则能一次处理大量的人脸。从图片里也可以看出,YOLO 处理的区域更大,甚至能处理头发和背景。

为了便于大家记忆,我做了一张表格。

yolo vs mediapipe 表格

接下来我们分开来解释 YOLO 和 MediaPipe。

目前基于 YOLO 的模型有 10 个。基本都以".pt" 结尾,这个是文件类型,不用管它。

文件名中的数字代表版本。目前是第 8 个版本。版本号后面跟着的字母"s"、"n"和"m" 代表模型的大小。"s"代表小型 small,"n"代表纳米 nano,比小型更小。"m"代表中型 medium。模型越小,处理速度越快,代价就是精度更低。大家可以考虑速度和精度来选择相应的型号。

根据我的解释,"v8n"和"v8m"应该是YOLO系里面差异最大的两个模型。让我们看看它们的对比图。

yolo v8n vs yolo v8m

细看之下,差异也挺明显的。"v8m"比"v8n"看上去细节更好。

接下来我们聊一下 MediaPipe,分为 4 个版本,分别是"full"、"short"、"mesh"和"mesh_eyes_only"。

mediapipe models

为了让大家更直观地理解,我把 MediaPipe 这几个模型出图的过程放在一起,做了一张对比图。

mediapipe models comparison

先来看上半部份,full和short的区别。顾名思义,full就是完整的意思,而short就是短小精悍。full 模型对面部的检测更全面。蓝色的点就是模型检测到的面部特征,full 对最右边女生的面部检测点比 short 要多。同时,full 检测到了 3 张人脸,而 short 只检测到了最右边女生的脸。

mesh 就是网的意思,顾名思义,它会把面部标记为一个网,因此对面部的检测更全面和立体。它更善于分析面部表情。mesh_eyes 则只检测眼睛的部分,适合对眼睛做更精细的修复。

大家对比下,mesh 处理后的面部是不是比 full 更有立体感,更精细呢。

mediapipe full vs mesh

大家可能会想,我之前用来对比的显示方框和数字的图是如何生成的。让我回到WebUI为你揭晓。

点击设置。

webui settings button

在左边一系列选项中找到 ADetailer 并点击,就来到了 ADetailer 的设置界面。

勾选”Save mask previews“就可以让 ADetailer 为你保存一张显示处理过程的边界框的图片。

勾选”Save images before ADetailer“则会生成一张没有用 ADetailer 处理过的图片。

在生成图片的文件夹里就可以看到这两张图。文件名里包含"ad-before"就是处理前的图片,包含"ad-preview"的就是显示处理过程的边界框的图片。

adetailer preview image in folder

Max models 控制的是 ADetailer 可以同时运行的模型数。比如要同时修复脸和手,可以分别选择一个修脸和一个修手的模型。

我这里选择了3个模型,来给大家演示下效果。要使得刚才更改的所有设置生效,得先点击”应用设置“,然后点击”重新加载WebUI“。

adetailer max models

这时候当我们回到文生图的界面,找到 ADtailer 插件的界面,就可以看见3个标签页,”1st“,”2nd“,”3nd“。在这3个标签页中,我们可以分别选择模型,并进行相应的设置。

model switch tabs

其他参数效果

讲完了各种模型,相信你应该明白了在何种情况下应该选择使用哪个模型。然而,光了解各个模型还不够,ADetailer 还提供了各种设置选项和参数,让我们一起研究下,成为高级玩家吧。

回顾一下刚才用 ADetailer 生图的过程,会发现其实 ADetailer 里面竟然还可以填写提示词。

prompt in adetailer

那么这里的提示词有什么作用呢。

比如我生成了这样一张图片。

1girl

接着,让我们往 Adetailer 里面添加提示词。

add prompt in adetailer

正向提示词是 glasses 眼镜,反向提示词是 smile 微笑。来看看图像发生了怎样的变化。

00213-1573918144-prompt-after

多了一幅眼睛,少了一脸笑容。你是不是瞬间明白了 Adetailer 里面的提示词是干嘛的了呢?

好的,接下来让我们继续看另外一个参数,Detection model confidence threshold 检测模型置信度阈值。这是什么意思呢?比方说,我把它调到了 0.85,让我们来看看会发生什么。

adetailer confidence 0.85

看到了吗,只有高于 0.85 的脸被检测到了。这就是阈值的作用。

adetailer confidence score 0.86

我们再来看一个比较常用的参数,Inpaint denoising strength 重绘去噪强度。把它调到 0.8,看看会发生什么。

inpainting denoising strength 0.8

结果变成了恐怖片。重绘去噪强度说白了就是对重绘区域的改动幅度。0.8 这个数值太大,一般设置为 0.6 以下。

inpaint denoising strength 0.8

再看一个参数。让我们把xxx调回默认值 0.4,然后把 "Inpaint mask blur (重绘遮罩模糊)" 调到 0 会发生什么。

inpaint mask blur

这是生成的图片。

adetailer inpaint mask blur 0

如果不仔细看的话,可能看不出什么区别。

让我们把图片转为黑白,再调整一下对比度。如果你仔细看得话,会发现这里有明显的接缝。

visible seam

因为 ADtailer 是对矩形边界框内的人脸进行修复,如果模糊度设置的太低,那么边框内和边框外的像素就无法很好的融合,导出出现比较生硬的接缝。

如果把重绘遮罩模糊调整为 50 的话,图片是这样的。放大来看,会发现这个女生的脸实际上并没有被修复。

inpaint mask blur 50

这是因为如果数值过高的话,实际上矩形边界框就消失了。ADtailer 将无法检测到人脸。

OK,以上就是本期内容,喜欢的话就点个赞吧。

对AI绘图感兴趣的,欢迎加我微信vito_chat入群交流。

欢迎访问我的免费学习AI网站:

myaiforce.com.cn/

原文地址:

myaiforce.com.cn/stable-diff…