codeformer 中文文档 下载 App

边缘融合头发损伤:整图处理时头发下颌线接缝伪影修复

症状

整图处理(不带 --has_aligned)时:

根本原因

CodeFormer 整图处理的流程是:

整图 → 检测人脸 → 裁脸 → 修脸(512×512) → 粘贴回原图

粘贴时用了 back projection 融合算法,但以下情况容易伪影:

  1. 头发边缘不是清晰边缘(碎发、卷发、头发和背景颜色接近)
  2. 人脸检测框不准确(框到了部分头发或漏掉了部分脸型)
  3. 原图 JPEG artifact 严重(artifact 干扰融合算法)
  4. 修复脸和背景的分辨率差太大(不开 Real-ESRGAN 背景增强时)

修复方案一:开 --bg_upsampler realesrgan(最推荐)

python inference_codeformer.py -w 0.7 \
    --bg_upsampler realesrgan --face_upsample \
    photo.jpg

Real-ESRGAN 会同时增强背景区域,让修复脸和背景的分辨率差变小,融合自然。这是最根本的解决方案——消除了两阶段融合的"分辨率差"根因。

修复方案二:增大 w 值

python inference_codeformer.py -w 0.9 photo.jpg

w 大时 CodeFormer 保留更多原图特征——包括头发细节、下颌线轮廓等——这些特征和原图背景更一致,融合更自然。

代价:清晰度可能稍降(但比伪影好)。

修复方案三:手动裁脸 + 自己贴回

如果 CodeFormer 的自动融合怎么都不满意,可以:

第一步:只用 --has_aligned 修脸

python scripts/crop_align_face.py -i photo.jpg -o face.png
python inference_codeformer.py -w 0.8 --has_aligned face.png
# 得到干净的修复脸

第二步:手动合成

用 Photoshop / GIMP:

  1. 打开原图和修复脸
  2. 把修复脸图层放到原图上
  3. 用柔化边缘的橡皮擦擦修复脸的边缘
  4. 头发区域可以用仿制图章工具从原图里"借"头发细节
  5. 调色 / 模糊让接缝消失

这是最精细的方法,但需要手动操作。

修复方案四:用专门的融合工具

如果你有很多图需要处理、又不想手动,可以试试:

泊松融合代码示例(OpenCV):

import cv2
import numpy as np

# 原图和修复脸
src = cv2.imread('result_codeformer.jpg')       # 整图(修复后)
dst = cv2.imread('original.jpg')                 # 原图
mask = cv2.imread('face_mask.png', cv2.IMREAD_GRAYSCALE)  # 人脸 mask(白色区域)

# 找 mask 中心
center = (mask.shape[1]//2, mask.shape[0]//2)

# 泊松融合
result = cv2.seamlessClone(src, dst, mask, center, cv2.NORMAL_CLONE)
cv2.imwrite('result_seamless.jpg', result)

不同部位的伪影对策

部位常见伪影对策
头发边缘碎发缺失、毛躁开 Real-ESRGAN 背景 + 手动修;或用 inpainting 只修头发区域
下颌线贴图感增大 w 值 + 开 Real-ESRGAN
耳朵耳朵边缘多出或缺失增大 w 值(耳朵保留原图特征)
颈部颈部颜色和脸不一致开 Real-ESRGAN 整图增强
背景有文字文字被 Real-ESRGAN 修坏不开背景增强;或手动 mask 住文字区域

什么时候换对齐模式

如果你的照片只需要修脸(不在乎背景),直接用 --has_aligned 模式:

python scripts/crop_align_face.py -i photo.jpg -o face.png
python inference_codeformer.py -w 0.8 --has_aligned face.png
# 输出只有人脸,没有融合问题

这对于:

是最干净的解决方案——根本没有融合问题,因为你压根没把脸贴回去。

一句话总结

边缘融合伪影的根因是"两阶段方法的分辨率差和特征差"。解决优先级:

  1. 开 Real-ESRGAN 背景增强(消除分辨率差)
  2. 增大 w 值(保留更多原图特征让融合自然)
  3. 只修脸不整图(根本不融合)
  4. 手动合成(最精细但费时间)