CodeFormer 实测:老照片修复神器,NeurIPS 2022 的成果落地了
CodeFormer 是 NeurIPS 2022 上发表的人脸盲修复算法,能把模糊、低分辨率、有损伤的老照片还原得相当自然。我跑了一批真实样本,看看它到底多能打。
广告
家里翻出几本老相册,照片糊的糊、裂的裂,人脸基本都看不清。我试过几种在线修复工具,效果要么过于塑料感、要么修复完不像本人。后来找到 CodeFormer,这是 NeurIPS 2022 上发表的盲人脸修复工作,GitHub 上快 1.8 万 star 了。跑了一圈下来,它确实是我试过最自然的人脸修复方案。
它到底解决了什么问题
传统的人脸修复分两种路线:一种是基于参考图的,需要找一张同一个人的高清照片做引导;另一种是盲修复(blind restoration),只给一张烂图,算法自己猜怎么修。CodeFormer 走的是第二条路,难度更大,但实用价值也更高——老照片哪来参考图?
它的核心创新是 Codebook Lookup Transformer:先学习一个高质量人脸的离散码本(codebook),修复时不是直接生成像素,而是从码本中查找最合适的人脸特征组合,再组装成完整图像。这样做的好处是生成结果更稳定,不容易出现奇怪的伪影。
安装和运行
环境要求不高,有张带 CUDA 的显卡就行。我用的 RTX 3060,12GB 显存绰绰有余。
# 克隆仓库
git clone https://github.com/sczhou/CodeFormer.git
cd CodeFormer
# 创建环境
conda create -n codeformer python=3.9
conda activate codeformer
# 安装依赖
pip install -r requirements.txt
python basicsr/setup.py develop
预处理模型权重:
python scripts/download_pretrained_models.py CodeFormer
然后就可以跑了:
# 修复单张图片
python inference_codeformer.py -w 0.7 --input_path path/to/your/image.jpg --output_path result/
# 批量修复文件夹
python inference_codeformer.py -w 0.7 --input_path path/to/folder/ --output_path result/
-w 参数控制修复强度,0 到 1 之间。值越大修复得越”狠”,但也越容易丢失个人特征。我试下来 0.7 是个不错的平衡点。
实际修复效果
我测了三类样本:
轻度模糊的老照片——头发纹理、眉毛走向、皮肤质感都能还原得不错。最惊喜的是眼神,很多修复算法会把眼睛搞成死鱼眼,CodeFormer 能保持眼神的灵动。
重度压缩的 JPEG——那种 blocks 很明显的图,CodeFormer 能把块状伪影平滑掉,同时恢复合理的细节。不是简单磨皮,是真的在”猜”原始细节。
局部破损的照片——有划痕、缺角的情况。它可以配合其他 inpainting 工具先用,再用 CodeFormer 做人脸增强,流程虽然多一步,但结果比单工具处理好很多。
优点很明显
学术级质量,工业级可用。 NeurIPS 2022 oral 论文背书,不是那种 GitHub 上随便搓的 demo。代码完整、文档清楚、预训练模型直接可用。
修复自然度高。 不像有些工具修完像韩式整容脸,CodeFormer 的结果保留了人物原本的特征和年龄感。老人修完还是老人,不会变成小鲜肉。
可控的修复强度。 -w 参数让你自己把握”修多少”,根据图片质量灵活调整。
支持视频。 除了单张图片,它还能逐帧修复视频里的人脸,对老录像带数字化很有价值。
但问题也有
只擅长人脸。 背景、衣物、场景的修复不是它的强项。如果整张老照片都很烂,只修人脸可能会显得突兀。
对极端低分辨率效果有限。 如果原图人脸只有十几个像素,神仙也救不了。它擅长的是”有信息但质量差”,不是”几乎没有信息”。
肤色处理偶尔偏白。 某些光照条件下,修复后的肤色会比真实偏亮一些,需要后期微调。
依赖人脸检测。 如果照片里人脸角度太偏、或者被遮挡太多,检测不到就不会修复。
适合谁用
如果你有老照片修复的需求——无论是家庭相册数字化、历史档案修复、还是影视老素材翻新——CodeFormer 是目前开源方案里的第一梯队。它不需要你懂深度学习,装好环境、跑命令行就能出结果。
但如果你是做专业摄影后期、要求像素级精准控制,可能还是商业软件(如 Topaz Gigapixel AI)配合手动调整更靠谱。
总结
CodeFormer 把一篇顶会论文做成了真正可用的工具,这在学术界并不多见。1.8 万 star 说明它的质量和易用性得到了广泛认可。对于普通人来说,它是修复老照片人脸的最佳免费方案;对于研究者来说,它的代码实现和预训练模型也是人脸复原领域的重要基准。值得一试。
GitHub: https://github.com/sczhou/CodeFormer 论文: https://arxiv.org/abs/2206.11253
关于作者
柳钉鱼,全栈开发者,GitHub 重度用户。过去 3 年 Star 了 900+ 仓库,这里只写我真正用过或深度调研过的工具。
📧 发现好工具想推荐?发邮件到 [email protected]
广告