codeformer 中文文档 下载 App

--bg_upsampler realesrgan 背景增强:什么时候该开

CodeFormer 只修人脸

这是理解 --bg_upsampler 的前提:CodeFormer 的推理模型只处理人脸区域,整图里除了脸的其他部分(头发边缘、肩膀、背景、衣服、文字)CodeFormer 完全不管。

所以如果你只跑:

python inference_codeformer.py -w 0.7 --input_path photo.jpg

结果是:

Real-ESRGAN 是背景增强的标准方案

Real-ESRGAN 是腾讯 ARC Lab 开源的通用图像超分辨率模型,擅长非人脸区域(风景、建筑、衣物、纹理)的 2-4 倍放大增强。CodeFormer 作者选择它作为默认的背景增强器,因为:

开启背景增强

python inference_codeformer.py \
    -w 0.7 --input_path photo.jpg \
    --bg_upsampler realesrgan    # 加上这个

处理流程变化

原来:
整图 → 检测人脸 → 人脸修复 → 融合回整图 → 输出

加了 --bg_upsampler 后:
整图 → 检测人脸 → 人脸修复
    ↓
整图 → Real-ESRGAN 背景增强(整张图都放大,但人脸区域的增强结果会被 CodeFormer 的修复结果覆盖)
    ↓
融合(CodeFormer 修复的人脸贴到 Real-ESRGAN 增强的背景上)
    ↓
输出

注意:不是"只增强非人脸区域"——Real-ESRGAN 会增强整张图,然后 CodeFormer 的修复脸会覆盖到 Real-ESRGAN 的脸上。这样脸上的头发边缘是 Real-ESRGAN 修的,人脸内部是 CodeFormer 修的,接缝处用 back projection 融合。

为什么背景增强重要

不开开了
人脸清晰、背景模糊人脸和背景都清晰
边界有明显分辨率差边界过渡自然
看起来像"PS 贴图"看起来像"整图修过"
节省显存 ~4GB多 30% 时间

显存和时间代价

显卡整图 + 人脸修复加 Real-ESRGAN 后
RTX 30601.5s / 8GB2.1s / 12GB
RTX 30800.8s / 10GB1.2s / 14GB
T4 云2.0s / 8GB2.8s / 12GB

显存增量约 +3.5GB,时间增量约 +35%。显存紧张(< 12GB)时只能放弃背景增强。

什么时候不该开

1. 显存不够

8GB 卡 + 1080p 整图 → 加背景增强可能 OOM。

2. 快速预览

调 w 值、试参数阶段,先不开背景增强。确定满意了再开。

3. 背景不重要的场景

4. 背景有文字或敏感区域

Real-ESRGAN 可能对文字区域"瞎猜"——低分辨率文字可能被增强成乱码。如果照片里有重要文字(证件照、文件扫描件),不要开。

和 --face_upsample 的关系

python inference_codeformer.py \
    -w 0.7 --input_path photo.jpg \
    --bg_upsampler realesrgan \
    --face_upsample       # 两个一起开

--face_upsample 是在 CodeFormer 修复完人脸后,再用 Real-ESRGAN 单独上采样一次。而 --bg_upsampler 是用 Real-ESRGAN 处理整张图(包括背景)。

通常两个一起开效果最好:

其他背景增强器

CodeFormer 框架通过 --bg_upsampler 支持插拔不同的增强器。目前官方只内置了 realesrgan,但 BasicSR 训练框架的灵活性意味着未来可能支持更多选项(如 SwinIR、HAT)。