☰
Stable Diffusion人脸修复:ADetailer局部重绘原理与参数调优指南
2026/10/26 14:28:14 网站建设 项目流程

Stable Diffusion 出图最让人抓狂的瞬间,往往不是构图崩了,也不是风格跑偏,而是整张图氛围、光影、服装全都对,唯独人脸糊成一团——远看是个美人,放大一看五官像被橡皮擦蹭过。尤其是全身照、大场景、多人合影这类构图,脸部占的像素本来就少,基础模型再强也架不住分辨率被摊薄。很多人第一反应是把整张图丢进图生图重绘,结果脸是清楚了,衣服纹理、背景细节、手部姿态全跟着变了,等于为了修一颗牙把整口牙重做了一遍。

ADetailer 就是冲着这个痛点来的。它的思路非常朴素:先让主模型把整张图正常画完,然后自动检测出画面里的人脸(以及手、身体等区域),把这些区域单独裁出来,放大到足够的分辨率,再用一个专门的面部模型做一次局部重绘,最后无缝贴回原图。整个过程只动脸,不动其他任何像素。这篇内容我会把 ADetailer 的检测机制、模型搭配、参数调优、常见翻车场景全部拆开讲,从"为什么整图重绘修不好脸"讲到"怎么让修复后的脸和原图光影完全咬合",适合刚接触 Stable Diffusion 想解决人脸问题的新手,也适合已经用过 ADetailer 但总觉得效果时好时坏、想搞清楚参数背后逻辑的老用户。

1. 为什么整图重绘修不好一张小脸

1.1 分辨率摊薄是根子上的问题

要理解 ADetailer 的价值,得先理解 Stable Diffusion 出图时像素是怎么分配的。假设你出一张 512×768 的竖构图全身像,人物从头到脚占满画面,那么头部区域大概只占整张图高度的八分之一到十分之一,换算成像素差不多是 60×80 左右。这个尺寸下,眼睛可能只有几个像素宽,模型根本没有足够的信息去刻画睫毛、瞳孔高光、唇线这些细节。它只能"猜"一个大概的五官布局,猜得对不对全看运气。

有人会说,那我直接出 1024×1536 不就行了?分辨率提高确实能缓解,但带来两个新问题。第一是显存和速度成本翻倍甚至更多,第二是 SD 1.5 系列模型在超过 768 的尺寸上容易出现构图重复、多头多手的问题,因为它的训练分辨率就摆在那里。SDXL 虽然原生支持 1024,但全身照的脸部像素依然不够看。所以"提高整图分辨率"这条路,性价比并不高。

ADetailer 的做法相当于换了个思路:既然脸小,那就把脸单独抠出来放大。一张 60×80 的脸,裁出来之后用 latent 放大到 512×512 再重绘,等于给模型提供了 40 多倍的像素信息,细节自然就出来了。这跟修图师在 Photoshop 里把脸部选区单独放大精修的思路完全一致,只不过 ADetailer 把这一套流程自动化了。

1.2 局部重绘和整图重绘的本质差异

整图图生图(img2img)的问题在于,重绘幅度(denoising strength)这个参数是全局的。你为了让脸变清晰,把重绘幅度调到 0.4 以上,那么整张图所有区域都会按这个幅度重新生成。衣服的褶皱、背景的纹理、手指的关节,全都会被模型"重新想象"一遍。原本画得好好的部分,反而可能被改坏。而如果你把重绘幅度压低到 0.2,脸又几乎没变化,等于白修。

ADetailer 用的是 inpaint(局部重绘)逻辑,它通过蒙版把重绘范围严格限制在检测框内,框外的像素一个都不碰。这意味着你可以放心地把脸部重绘幅度拉到 0.4 甚至 0.5,让模型大胆地重建五官,而完全不用担心背景和服装被牵连。这个"隔离"特性是它最核心的价值,也是它和整图重绘最本质的区别。

还有一个容易被忽略的点:ADetailer 在重绘前会把裁出来的脸部区域放大,重绘完再缩回原尺寸贴回去。这个"放大-重绘-缩小"的过程本身就带来了一次隐性的超分效果,即使重绘幅度设得很低,贴回去的脸也会比原来更锐利。这就是为什么很多人第一次用 ADetailer 会觉得"怎么什么都没调脸就变清楚了"。

1.3 什么情况下必须上 ADetailer

不是所有图都需要 ADetailer。半身像、特写、脸部占比超过画面五分之一的构图,基础模型直接出的脸通常已经够用,强行上 ADetailer 反而可能因为检测框裁得太紧导致脸部边缘出现接缝。但以下几类场景,基本是 ADetailer 的刚需区:

  • 全身照、大场景人像:脸部像素严重不足,必上。
  • 多人合影:每个人脸都小,而且基础模型经常把多张脸画得互相污染,ADetailer 可以逐张脸独立修复。
  • 远景、俯拍、广角构图:人物在画面中占比小,脸部细节全靠 ADetailer 补。
  • 需要放大出图的商业稿:即使原图脸还行,放大后也会暴露细节不足,提前用 ADetailer 修一遍能省掉后期很多事。

反过来,如果你出的是头像、半身特写,或者风格化很强的插画(比如厚涂、像素风),ADetailer 的检测模型可能识别不准,或者重绘后风格和原图对不上,这时候要谨慎使用,或者换用专门针对该风格的检测模型。

2. ADetailer 的检测机制与模型体系拆解

2.1 它到底是怎么"找到脸"的

ADetailer 本身不是一个生成模型,它更像一个调度器。它的工作流程可以拆成四步:检测、裁剪、重绘、回贴。其中"检测"这一步依赖的是外部的目标检测模型,最常见的是 YOLO 系列的人脸检测器。这些检测器是在大量标注数据上训练出来的,专门负责在图像中框出人脸的位置和范围,输出一组边界框坐标。

这里有个关键认知:ADetailer 的检测精度直接决定了修复质量的上限。如果检测框没框住整张脸(比如只框到了眼睛区域),那么重绘时就只有眼睛附近被处理,下巴、额头还是糊的;如果框得太大,把头发、背景也框进去了,重绘时模型可能会在框内重新生成一些莫名其妙的东西。所以选对检测模型、调好检测阈值,比调重绘参数更重要。

检测阈值(confidence threshold)这个参数值得单独说。它控制的是"检测器有多确信才认为这是一个脸"。阈值设高了,检测器只框它非常有把握的脸,漏检率上升,多人图里可能只修了一部分人;阈值设低了,误检率上升,可能把背景里某个圆形图案当成脸去修。默认值通常在 0.3 到 0.5 之间,多人图建议往低调到 0.3 左右保证不漏,单人图可以适当调高避免误检。

2.2 常用检测模型怎么选

ADetailer 生态里流通的检测模型有好几种,各自定位不同,选错了会出现"检测不到"或"框不准"的问题。下面这张表是我实际用下来总结的对照,参数和适用场景都来自反复测试:

检测模型主要用途适用场景注意事项
face_yolov8n人脸检测,轻量版单人、常规人像速度快,多人远景可能漏检
face_yolov8s人脸检测,标准版多人合影、全身照精度比 n 版高,速度略慢
hand_yolov8s手部检测手部崩坏修复手部姿态复杂时框不准
person_yolov8s全身人物检测整体人物重绘框很大,重绘成本高
mediapipe_face人脸关键点检测需要精确五官对齐对侧脸、遮挡较敏感

新手最容易犯的错是拿 person 模型去修脸。person 模型框的是整个人,重绘时等于把整个人重新画一遍,脸是清楚了,但衣服、姿态全变了,完全违背了"只修脸"的初衷。修脸就用 face 系列,这是铁律。至于 n 版和 s 版的选择,单人图用 n 版足够,多人图或者人物在画面中占比很小的情况,建议直接上 s 版,多花的那点时间换来的是不漏检。

2.3 重绘模型(checkpoint)的搭配逻辑

检测模型负责找脸,重绘模型负责画脸,这两个是分开配置的。ADetailer 允许你为面部重绘单独指定一个 checkpoint,这一点非常关键。很多人修脸效果不好,问题就出在重绘模型和主模型不匹配上。

基本原则是:面部重绘模型应该和主模型同源或同风格。如果你主图用的是写实系模型,面部重绘却挂了一个二次元模型,修出来的脸会像贴上去的,风格完全割裂。反过来,主图是二次元插画,面部重绘用写实模型,脸会变得诡异。最稳妥的做法是面部重绘直接用主模型本身,这样风格天然一致。如果主模型的脸部表现力一般,可以换一个同风格但脸部更强的模型,比如写实系里专门优化过人脸的那些。

还有一个进阶技巧:面部重绘的提示词可以和主提示词不同。主提示词里可能有一堆场景、服装、光影的描述,这些对面部重绘没用甚至有害。面部重绘的提示词应该聚焦在五官、肤质、表情上,比如"detailed eyes, sharp focus, smooth skin, natural lighting",把场景词全部去掉。这样模型在重绘脸部时注意力更集中,不会被无关信息干扰。

3. 参数调优:让修复后的脸和原图严丝合缝

3.1 重绘幅度(denoising strength)的取舍

重绘幅度是 ADetailer 里最需要拿捏的参数,没有之一。它决定了模型在多大程度上"重新画"这张脸。设得太低(0.2 以下),脸几乎没变化,等于没修;设得太高(0.6 以上),模型会完全抛弃原图的脸部信息,重新生成一张脸,结果就是"换脸"而不是"修脸",五官可能和原图对不上,甚至表情都变了。

我的经验区间是0.35 到 0.45。这个区间内,模型会保留原图的脸型、五官大致位置和表情,同时补足细节。具体怎么定,看原图脸部的崩坏程度:如果只是糊、缺细节,0.35 就够;如果五官已经明显变形、眼睛不对称,可以上到 0.45 让它多改一点。超过 0.5 就要非常小心,尤其是多人图,很容易出现"每个人都换了张脸"的情况。

这里有个反直觉的点:重绘幅度不是越高越清晰。很多人以为调高就能让脸更锐,实际上超过某个点之后,模型开始自由发挥,反而可能生成一张和原图光影不匹配的脸,贴回去之后脸上像打了不一样的光,特别假。清晰度主要靠"放大-重绘-缩小"这个流程本身来保证,重绘幅度负责的是"改多少",不是"多清晰"。

3.2 蒙版羽化与接缝处理

ADetailer 把修好的脸贴回原图时,如果蒙版边缘是硬切的,就会出现一条明显的接缝——脸和脖子、脸和头发的交界处有一条不自然的线。这个问题在浅色背景或者脸部边缘有复杂发丝的时候特别明显。

解决办法是开蒙版羽化(mask blur)。羽化会让蒙版的边缘产生一个渐变过渡,贴回时脸部和周围像素是柔和融合的,接缝就消失了。羽化值一般设 4 到 8 像素,太小起不到作用,太大会让修复区域边缘变模糊,反而损失细节。这个参数在 ADetailer 的设置里通常叫 mask blur,不同版本位置略有差异,但逻辑是一样的。

还有一个相关参数是蒙版扩张(mask dilation / inpaint padding),它控制检测框向外扩多少像素。适当扩张可以让重绘区域覆盖到脸和脖子、脸和头发的过渡带,避免修复区域边缘出现"断层"。一般扩张 4 到 16 像素比较合适,具体看脸在画面中的大小,脸越小扩张值相对可以大一点。

3.3 放大倍数与重绘分辨率的匹配

ADetailer 在重绘前会把检测到的脸部区域放大到一个目标分辨率。这个目标分辨率设多少,直接影响重绘质量和显存占用。设得太小(比如 256),模型拿到的信息还是不够,修出来提升有限;设得太大(比如 1024),显存吃紧,而且对于一张原本只有 60×80 的脸,放大到 1024 属于过度插值,模型可能生成一些原图没有的"想象细节",导致和原图对不上。

比较稳妥的做法是让重绘分辨率落在512 到 768之间。这个区间既能给模型足够的像素去刻画五官,又不会过度放大引入失真。如果原图脸部本身就比较大(比如半身像),重绘分辨率可以适当降低到 512,避免无谓的算力浪费。另外要注意,重绘分辨率最好和重绘模型的原生训练分辨率接近,SD 1.5 系用 512,SDXL 系用 1024,这样模型发挥最稳定。

4. 实战流程:从出图到修复的完整链路

4.1 主图生成阶段的预留意识

很多人是等图出完了、发现脸糊了,才想起来开 ADetailer 补救。其实更高效的做法是在出图阶段就为修复留好余地。具体来说,主图生成时不要把重绘幅度、CFG 这些参数压得太死,给后续修复留一点空间。更重要的是,主图的构图要尽量让人脸有足够的像素——哪怕最终要上 ADetailer,一张脸部像素稍多的原图,修复效果也明显好于脸部只有几十像素的原图。

实际操作中,我会在主图生成时就把 ADetailer 挂上,让它和主图一次性出完。这样省去了"出图-发现糊-再修"的来回,效率高很多。ADetailer 作为脚本挂在文生图流程里,主图生成完自动触发面部检测和重绘,整个链路是串起来的。第一次配置好之后,后续出图基本不用再管,除非遇到特殊构图需要临时调参。

4.2 一次完整的参数配置示例

下面给一套我常用的、适配 SD 1.5 写实系全身像的配置,可以直接抄作业,再根据实际效果微调:

ADetailer 配置(第一单元,面部): - 检测模型:face_yolov8s - 检测置信度阈值:0.3 - 重绘模型:与主模型相同(或同风格写实模型) - 重绘提示词:detailed face, sharp eyes, smooth skin, natural lighting, high quality - 负面提示词:blurry, deformed, asymmetric eyes, extra fingers - 重绘幅度(denoising):0.4 - 重绘分辨率(inpaint width/height):512 - 蒙版羽化(mask blur):6 - 蒙版扩张(inpaint padding):12 - 最大检测数量:0(不限制,多人图全部修)

这套配置的逻辑是:检测阈值放低保证不漏脸,重绘幅度取中间值兼顾保真和细节,羽化和扩张保证接缝自然,重绘分辨率对齐 SD 1.5 的原生 512。多人图把最大检测数量设为 0 表示不限制,让每一张脸都被处理;如果只想修主角,可以设成 1 或 2。

4.3 多人图的特殊处理

多人合影是 ADetailer 最能体现价值的场景,也是最容易翻车的场景。翻车点主要有两个:一是检测漏人,二是多张脸重绘后风格不统一。

检测漏人的问题,前面说过,把置信度阈值降到 0.3 甚至 0.25,换用 s 版检测模型,基本能解决。如果还是漏,可以开第二个 ADetailer 单元,用不同的检测模型再扫一遍,两个单元的检测结果会合并。风格不统一的问题更隐蔽——同一个重绘模型,对不同的脸可能生成不同的肤质、不同的光照方向,修完之后几个人像来自不同的图。解决办法是确保所有脸用同一个重绘模型、同一套提示词、同一个重绘幅度,不要给不同的人设不同参数。另外,如果原图光照方向明确(比如侧光),在重绘提示词里加上对应的光照描述,能帮助模型保持光照一致。

还有一个多人图特有的坑:脸挨得近的时候,检测框可能重叠,重绘时两张脸会互相干扰。这种情况可以适当减小蒙版扩张值,让每个框尽量只覆盖自己的脸,减少重叠区域的冲突。

5. 那些年踩过的坑与排查思路

5.1 修完脸变"塑料"了

这是最常见的抱怨:ADetailer 修完,脸是清楚了,但透着一股假,像磨皮磨过头的美颜相机。根本原因通常是重绘幅度偏高加上重绘提示词里堆了太多"high quality, masterpiece, best quality"这类词,模型被引导去生成一张"完美但失真"的脸。

排查顺序是这样的:先看重绘幅度是不是超过 0.5,超了就往下调;再看重绘提示词是不是堆了太多质量词,把提示词精简到只保留五官和肤质描述;最后看重绘模型是不是和主模型风格不一致,不一致就换成主模型本身。这三步走完,塑料感基本能消掉大半。还有一个容易被忽略的点:如果主图本身的光影比较柔和、有颗粒感,而重绘模型生成的脸过于干净锐利,也会显得假,这时候可以在重绘提示词里加上"film grain, soft lighting"之类的词,让质感往原图靠。

5.2 检测不到脸,或者框歪了

检测不到脸的情况,先确认检测模型选对了没有——拿 person 模型修脸、拿 face 模型修手,都是低级但常见的错误。确认模型没错之后,看置信度阈值是不是设太高,往低调。如果还是不行,看原图的脸是不是被遮挡、侧脸角度太大、或者分辨率太低,这些情况 YOLO 检测器确实容易失效。

框歪了的表现是修复区域偏移,脸的一部分被修了、另一部分没修,或者把头发、背景也修了。这通常是检测框本身不准,可以尝试换一个检测模型(n 版换 s 版,或者换 mediapipe),或者调整蒙版扩张值让覆盖范围更合理。还有一种情况是原图的脸部有强烈风格化(比如厚涂、油画),检测器按写实人脸的特征去框,自然框不准,这种图建议手动圈定区域用普通 inpaint 修,别硬套 ADetailer。

5.3 修复后脸和身体光影对不上

这个问题在多光源、强侧光、逆光的图里特别突出。ADetailer 重绘脸部时,模型是根据重绘提示词和它自己的理解去打光的,如果提示词里没提光照,它可能默认给一个正面平光,贴回原图后脸是亮的、身体是暗的,割裂感极强。

解决办法是在重绘提示词里明确描述光照,比如"side lighting from left, warm light, shadow on right side of face",让模型按原图的光照方向去画。更彻底的办法是把原图的光照信息通过 ControlNet 传给重绘过程,但这需要额外的配置,对新手来说先用提示词控制就够了。另外,重绘幅度越低,光影越容易和原图保持一致,所以光影对不上的时候,优先考虑降重绘幅度,而不是加提示词。

5.4 手部修复的额外注意事项

虽然这篇主要讲面部,但 ADetailer 修手也是高频需求,顺带说几个坑。手部检测模型(hand_yolov8s)对姿态很敏感,手指交叠、握拳、手部被遮挡的情况经常框不准或者框不全。修手时重绘幅度要比修脸更低,0.3 左右比较稳,太高容易把手指数量改错。而且手部修复最好配合负面提示词里加强"extra fingers, fused fingers, bad hands",双管齐下。手部修复失败率天然比面部高,如果修了两三次还是不理想,别死磕,回主图重新生成一张手部姿态更简单的图,往往比反复修更省时间。

6. 进阶玩法:把 ADetailer 用出花来

6.1 多单元串联:脸、手、身体分而治之

ADetailer 支持挂多个单元,每个单元独立配置检测模型和重绘参数。这意味着你可以一个单元修脸、一个单元修手、一个单元修身体,各用各的模型和参数,互不干扰。这个玩法在出全身商业稿的时候特别有用——脸用高精度 face 模型配 0.4 重绘幅度,手用 hand 模型配 0.3 重绘幅度,身体用 person 模型配 0.25 重绘幅度做整体锐化,三层叠加下来,整张图的细节水平能上一个台阶。

多单元串联的注意点是顺序和算力。单元是按顺序执行的,脸先修、手后修,如果手的位置和脸有重叠(比如托腮),后修的手可能会覆盖先修的脸的一部分,需要留意。算力方面,每多一个单元就多一次检测和重绘,出图时间线性增加,配置不高的机器建议一次最多挂两个单元。

6.2 配合 ControlNet 做精准约束

ADetailer 的重绘过程本身可以挂 ControlNet,用来约束修复后的脸和原图保持结构一致。最常用的是在面部重绘时挂一个 soft edge 或者 lineart 的 ControlNet,把原图脸部的轮廓线提取出来作为约束,这样重绘出来的五官位置、脸型走向会和原图高度吻合,避免"换脸"。这个技巧在修那些"脸糊但轮廓还在"的图时效果拔群,等于告诉模型"细节你随便补,但形状得按原图来"。

配置上,在 ADetailer 单元里启用 ControlNet,选择对应的预处理器和模型,控制权重设 0.5 到 0.7 之间。权重太低约束不住,太高又会限制模型补细节的自由度。这个玩法对显存有一定要求,因为相当于在重绘时多跑一个 ControlNet 前向,显存紧张的机器要权衡一下。

6.3 用 ADetailer 做批量出图的稳定性保障

批量出图的时候,最怕的就是几十张图里混进几张脸崩的,事后一张张挑出来重修非常耗神。把 ADetailer 固定挂在批量流程里,等于给每一张图都上了一道面部保险,出图合格率能明显提升。尤其是做角色设定图、表情包、连续分镜这类需要大量出图的场景,ADetailer 的自动化修复能省掉大量后期筛选和返工的时间。

批量场景下建议把参数调得保守一点,重绘幅度 0.35 左右,宁可修得轻一点也不要修过头,因为批量出图你没法逐张检查,修过头的图混在里面反而更难发现。检测阈值也建议设低一点,保证不漏检,误检的脸大不了多修一次,漏检的脸就是硬伤。

7. 关于效果预期的一点个人体会

ADetailer 不是万能的,它的能力边界很清晰:它能解决"脸小导致细节不足"的问题,能解决"多人图脸部互相污染"的问题,但它解决不了"主模型根本不会画某种脸"的问题。如果主模型对某种人种、某种年龄、某种表情的脸本身就画不好,ADetailer 用同一个模型去修,修出来还是那个水平,只是更清晰而已。这种情况下换主模型比调 ADetailer 参数有用得多。

我在实际使用中最深的一个体会是:ADetailer 的参数没有一套放之四海皆准的最优解,它高度依赖你的主模型、你的构图、你的出图分辨率。网上抄来的参数只能作为起点,真正好用的参数是你自己在自己的常用工作流里反复试出来的。我的建议是固定一套基础配置,然后每次只改一个参数,观察变化,慢慢建立起对每个参数手感的直觉。这个过程急不得,但一旦建立起来,你看到一张图就知道该调哪个参数,效率会有质的提升。

另外一个容易被忽视的点是,ADetailer 修完的脸,最好还是放大到 100% 检查一遍再交付。缩略图上看不出问题的接缝、光影错位、五官轻微不对称,放大后一目了然。养成这个习惯,能避免很多返工。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询