codeformer 中文文档 下载 App

JPEG 压缩伪影修复:重压缩照片用什么参数

什么是 JPEG 压缩伪影

JPEG 是有损压缩,反复保存会累积 artifact:

老照片扫描件、微信转发的照片、反复导出的设计文件都常中招。

CodeFormer 处理 JPEG artifact 的原理

CodeFormer 的 Codebook 里存的是高质量人脸纹理原子,它会把原图中被 JPEG artifact 破坏的纹理替换成 Codebook 里"干净的"版本。本质上是"重建"而不是"消除"。

推荐参数

python inference_codeformer.py \
    -w 0.6 --input_path jpeg_artifact_photo.jpg
参数推荐理由
-w0.5 ~ 0.7居中——既让 Codebook 帮忙去 artifact,又保留原图的色彩基调
--bg_upsamplerrealesrganReal-ESRGAN 也擅长去背景 JPEG artifact
--face_upsample可选看成品效果

和 GFPGAN 对比

GFPGAN 的 GAN 判别器对 JPEG artifact 更激进——它会直接"画"掉 artifact,效果通常比 CodeFormer 更干净。但代价是身份漂的风险更大(GAN 倾向于把脸拉向"理想人脸")。

维度CodeFormer w=0.6GFPGANv1.4
artifact 去除率~80%~90%
身份保持✅ 好⚠️ 可能漂
色彩保真✅ 好⚠️ 可能偏色
计算速度慢快

结论:重压缩但身份重要的照片 → CodeFormer;重压缩 + 已经看不出是谁 → GFPGAN。

严重 artifact 的特殊处理

如果 artifact 非常严重(块大到影响人脸结构):

两步法:先去 artifact 再做人脸修复

# 第一步:Real-ESRGAN 单独去整图 artifact
python inference_realesrgan.py -n RealESRGAN_x4plus -i jpeg_heavy.jpg -o artifact_removed.jpg

# 第二步:CodeFormer 修脸
python inference_codeformer.py -w 0.6 artifact_removed.jpg

Real-ESRGAN 去背景和整体 artifact,CodeFormer 处理人脸细节。

为什么不能一步到位

直接跑 --bg_upsampler realesrgan 理论上是同一效果,但显式分两步有两个好处:

  1. 显存压力小(可以分两次跑,每次显存占一半)
  2. 可以在 Real-ESRGAN 那步先看到整体效果,再决定 CodeFormer 的 w 值

避免产生新 artifact 的技巧

修复完成后保存输出图时:

JPEG vs WebP vs PNG

格式CodeFormer 输入CodeFormer 输出
JPEG可以(artifact 会被处理)尽量不要
PNG✅ 最佳✅ 无损
WebP✅ 可以✅ 近无损

小结