codeformer 中文文档 下载 App

w 值工作原理:为什么小 w 更漂亮、大 w 更像本人

先回顾模型结构

CodeFormer 推理时的三条信息流:

低清人脸 → Encoder → 特征 → Transformer → 预测 Codebook token → Decoder → 输出
                                    ↓                         ↑
                                    │                         │
                                    └── 残差连接(权重 w) ────┘

w = 0:纯 Codebook 重建

python inference_codeformer.py -w 0 --input_path face.jpg

视觉特征

什么时候用

w = 1:最大身份保真

python inference_codeformer.py -w 1 --input_path face.jpg

视觉特征

什么时候用

w = 0.5(默认)

两个路径等权融合。解码器一半看 Codebook,一半看原图。通常是"两边都过得去但两边都不极端"的结果。

0 到 1 的变化是线性的

w 是标量(不是函数),从 0 到 1 的变化是线性插值——中间值就是两条路径的加权平均。

这意味着:

所以调参是连续可调的,不是只有几个档位。

实际观察:w 值在不同部位的敏感程度

CodeFormer 把脸分成几个区域,不同区域对 w 值的敏感度不同:

区域w 敏感度w 小w 大
瞳孔 / 虹膜⭐⭐⭐ 最敏感颜色、反光点可能被改写保住原图反光点
皮肤纹理⭐⭐⭐皮肤变成理想光滑纹理保留毛孔、小痣
嘴唇⭐⭐唇色变鲜艳保留原图偏色
脸型轮廓⭐⭐脸型可能微调(对称化)保持原图脸型
头发⭐Codebook 对头发建模较弱,w 大时更接近原图几乎一样

调 w 值的核心问题

"这张图里,'好看'和'像本人'哪个更重要?"

想清楚这个问题,选 w 值就有方向了。

注意:w 不是万能的

原图没信息,w 再大也没用

如果原图的眼睛区域完全糊了(像素块),w=1 只能保留"糊的像素块",它不会凭空变出眼球纹理。CodeFormer 的上限是"原图能看到什么就保真什么"——原图没的,Codebook 里也没有完美对应,就只能瞎编。

w 是整张脸的同一个值

你不能指定"眼睛区域用 w=0.8、皮肤区域用 w=0.3"。如果需要区域差异化处理,要么分区域分别修、要么用其他 mask 工具配合。

快速选择表

场景推荐 w
老照片(父母长辈)0.6 ~ 0.8
老照片(年代久远、褪色严重)0.5 ~ 0.6
AI 生图后处理0.2 ~ 0.4
人像美颜增强0.3 ~ 0.5
警方档案 / 身份证0.8 ~ 1.0
视频逐帧处理1.0
JPEG 重压缩 artifact0.5 ~ 0.7