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

news/2024/7/4 1:45:58 标签: 人工智能, AIGC, AI作画, stable diffusion, AI

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

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

Midjourney group girls

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

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

安装

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

安装 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,以上就是本期内容,喜欢的话就点个赞吧。


写在最后

感兴趣的小伙伴,赠送全套AIGC.html" title=AIGC>AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC.html" title=AIGC>AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC.html" title=AIGC>AIGC技术也将不断提高。未来,AIGC.html" title=AIGC>AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC.html" title=AIGC>AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC.html" title=AIGC>AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC.html" title=AIGC>AIGC所有方向的学习路线

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

在这里插入图片描述

在这里插入图片描述

二、AIGC.html" title=AIGC>AIGC必备工具

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

三、最新AIGC.html" title=AIGC>AIGC学习笔记

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

四、AIGC.html" title=AIGC>AIGC视频教程合集

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

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述


http://www.niftyadmin.cn/n/5450053.html

相关文章

Linux学习-线程长度

目录 线程 线程相关的函数接口 线程 1.基本概念: 线程:线程是一个轻量级的进程,位于进程空间内部,一个进程中可以创建多个线程 2.线程创建: 线程独占栈空间,文本段、数据段和堆区与进程共享 3.线程调度: 与进程调度是一样的 宏观并行…

Mysql数据库命令大全

目录 mysql服务器处理客户端请求 Mysql数据库常用命令 三种删除方式: mysql服务器处理客户端请求 首先MySQL是典型的c/s架构,即client/Server架构,不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是&…

Open CASCADE学习|最小二乘法拟合直线

最小二乘法,又称最小平方法,起源于十八世纪的大航海探索时期,发展于天文领域和航海领域。其历史可以追溯到法国科学家马里勒让德于1805年首次提出这一概念,而1809年,高斯在他的著作《天体运动论》中也提出了最小二乘法…

电脑卸载软件怎么清理干净?电脑清理的5种方法

随着我们在电脑上安装和卸载各种软件,很多时候我们会发现,即使软件被卸载,其残留的文件和注册表项仍然存在于电脑中,这不仅占用了宝贵的磁盘空间,还可能影响电脑的性能。那么,如何确保在卸载软件时能够彻底…

算法系列--动态规划--子序列(1)

💕"深思熟虑的结果往往就是说不清楚。"💕 作者:Mylvzi 文章主要内容:算法系列–动态规划–子序列(2) 今天带来的是算法系列--动态规划--子序列(1),是子序列问题的开篇!带大家初识子序列问题 一.什么是子序列问题 我们…

uniapp开发:vue3 中vuex的使用

开发工具HbuilderX3.98 在根目录下创建store目录,并在该目录下创建index.js文件 index.js 文件 /*index.js 文件*/// #ifndef VUE3 import Vue from vue import Vuex from vuex import audio from "/store/modules/audio.js" Vue.use(Vuex) const store…

经验帖!5个技巧,做好项目资源分配管理

在项目管理中,错误分配项目资源会导致成本增加、上市时间推迟、交付成果不合格以及客户满意度降低等负面结果。难怪,资源管理一直被认为是刺激或阻碍业务增长的关键杠杆。它既可以推动项目向前发展,也可以使已取得的成果出现倒退。因此&#…

使用uniapp 的 plus.sqlite 操作本地数据库报错:::table xxx has no column named xxxx

背景: 1、使用uniapp 的 plus.sqlite 进行APP本地数据库操作 2、SQLite 模块用于操作本地数据库文件,可实现数据库文件的创建,执行SQL语句等功能。 遇到:在之前创建的表上进行新增字段的操作时候,出现问题&#xff1a…