CodeFormer:老照片变清楚以后,还像原来的人吗?

为什么值得关注
把人脸修复的视觉质量与保真度做成可调选择,整理老合照时能保留不同候选,而不把最锐利结果自动当作最好。
适合谁:整理老合照、希望保留人物特征,并愿意逐张比较修复候选的照片爱好者;商业团队需先获许可。
这次有哪些亮点
- 离散人脸码本为退化面孔补充高质量视觉表示
- 0–1 保真权重可调,较大值倾向更贴近输入
- 整图流程可结合 Real-ESRGAN 增强背景
使用前需要知道
S-Lab 限非商业使用;生成细节不等于真实身份,整图融合可能损伤发丝边界,官方合照未提供权重值。
翻出一张模糊老合照,最想看清的通常是人的眼睛和表情。CodeFormer 能从低清人脸生成更清晰的面部结果,也给出一个很有用的选择:你可以在视觉质量与贴近输入之间调节,而不必接受唯一的“高清版”。对整理家庭照片的人来说,认识这个调节比一味追求皮肤更光滑更重要。
合照里,先看脸,再看衣服和背景

这张图来自官方仓库的老照片增强示例。中间竖线将左侧 Old Photo 与右侧 CodeFormer 分开:左边的人脸、头发和衣服较模糊,右边前景人物的眉眼、鼻部和发丝轮廓更明确。它展示的是一张合照的左右对照,不是同一张脸在两种权重下的参数实验;两侧人物位置也不同,不应逐像素拿左右两个人来证明身份保持程度。 查看原尺寸对照图。
这张材料最有价值的地方,是让“更清晰”变成可观察的变化:眼睛出现了边界,头发有了线条,脸部有更具体的明暗层次。但越具体的细节,越需要问它来自哪里。原图已经糊掉的睫毛或皮肤纹理,没有一份隐藏的清晰底片供模型读取;好看的人脸结果不能替代历史照片的原始证据。本文依据官方样图与方法说明解析,没有对这张合照重新推理。
fidelity 权重不是锐度滑块
CodeFormer 的方法先学习一套离散的高质量人脸视觉表示,再根据低清输入预测组合,生成面部图像。它不是只把现有像素边缘拉得更硬,而是借助学到的人脸规律补充缺失的细节。因此它能让低清面孔变得自然,也可能改变原来的人脸特征。
官方把 fidelity weight,也就是保真权重 w,设在 0 到 1 之间:较小的 w 倾向于更高的视觉质量,较大的 w 倾向于更高的保真度。这里的“保真”指更贴近输入,不等于恢复真实身份的概率;w=1 也不是“百分之百还原本人”。这个方向不能写反,否则想保留长相的人反而会被引向更强的生成变化。
如果要为相册制作展示副本,我会以较高保真方向为起点,先比较眼形、嘴角和脸部比例,再决定是否需要更多细节。愿意尝试更低权重时,也应把两个输出并排看:哪一版只是更光滑,哪一版开始改变表情?这是依据参数含义给出的选择方法,并非本文跑出的对比结果。官图没有登记 w,不能替它补上一个看似合理的数值。
对于已经非常模糊、只剩大致轮廓的脸,生成更完整的面孔可能适合做纪念性展示,却不适合据此辨认一个不确定的人。CodeFormer 的意义是给出可调整的修复候选,让使用者保留选择;它不能替你证明候选就是当年的长相。
整张照片还有另一层处理
合照不只有人脸。README 区分裁好并对齐的人脸与整图增强,并提供使用 Real-ESRGAN 增强背景、进一步放大修复人脸的选项。这样可以把更清晰的脸放回整张照片,但衣服、发梢和背景并非因此都由同一套人脸模型恢复。
官方还提醒,整图中的人脸与背景融合可能损伤边界处的头发纹理。这意味着看图不能只放大眼睛:脸颊旁的发丝、耳朵边缘和脖子接缝也值得检查。对于想打印合照的人,一张“脸很清楚、边缘却不协调”的输出仍需要进一步处理,而不是继续加大放大倍率。
从 官方仓库可进入作者维护的 Hugging Face、Replicate 和 OpenXLab 演示;README 特别区分了这些入口与非官方同名网站。在线服务的账户、额度和价格要按实际平台页面确认,本文不承诺免费。选择本地路线则需要 Python、PyTorch、相关权重,官方环境列出 CUDA 依赖,不是下载一张图片就能离线运行。
CodeFormer 采用 NTU S-Lab License 1.0,源码及二进制使用、修改和分发的许可限非商业用途,商业使用需联系作者。对普通读者,它值得尝试的是在相册副本上找一个“清楚但仍像本人”的平衡;对商业修片团队,先解决许可,再讨论批量处理。无论选哪一版,原始扫描件都应作为原始材料保留。
参考资料:
以上为编辑整理,功能、许可与使用条件以官方说明为准。