边界声明:本篇只讲开源选型与本地部署
先把范围说清楚。这篇文章不评测任何在线 App,也不比较云服务的效果。我们只做一件事:把三款在 GitHub 上星数过万、可以免费下载权重、能在自己电脑上跑的开源老照片修复模型讲透,帮你判断该装哪一个、怎么装、装完能不能商用。在线小程序(腾讯、字节、支付宝那一类)只在文末用一句话当作"不想本地跑"的出口,不做展开。理由很直接:开源模型最大的优势是数据不出本机、参数可控、可以批量处理,而在线服务往往要上传原图、按张收费、且你看不到背后到底做了什么。如果你在意隐私,或者要修一整箱家族老照片,本地部署才是正解。
三款模型与仓库地址
下面三个仓库都用"链接加明文地址"两种形式给出,方便你直接复制。
CodeFormer
sczhou/CodeFormer 仓库链接,明文地址:https://github.com/sczhou/CodeFormer
截至实测,CodeFormer 在 GitHub 上约有 18,202 个 star。它的许可证在 GitHub API 字段里返回的是 NOASSERTION,也就是没有被标准许可证识别器归一化;项目 README 标注的许可证是 NTU S-Lab License 1.0,属于非商业性许可,预训练权重按作者声明仅限研究与非商用场景。它最核心的能力是"盲人脸修复"——不需要你标出人脸位置,模型靠 Codebook Lookup Transformer 自己把模糊、破损、低清的人脸补全得自然。它的强项就是人脸,尤其是那种严重退化、看不清五官的老照片,补出来既像人又不至于过度"换脸"。
GFPGAN
TencentARC/GFPGAN 仓库链接,明文地址:https://github.com/TencentARC/GFPGAN
GFPGAN 约有 37,697 个 star,是三者里人气最高的一款。它的代码以 Apache-2.0 发布,但请特别注意:它捆绑的预训练模型权重里,DFDNet 部分是 CC BY-NC-SA 4.0(非商用),StyleGAN2 部分受 NVIDIA 许可证约束,所以权重本身带有非商业限制,商用要谨慎。GFPGAN 由腾讯 ARC Lab 提出,靠"生成式人脸先验"做盲人脸修复与增强,提亮、去噪、补五官很利落,适合快速把一张灰扑扑的人脸照片变精神,是三者里上手最快的人脸增强工具。
Real-ESRGAN
xinntao/Real-ESRGAN 仓库链接,明文地址:https://github.com/xinntao/Real-ESRGAN
Real-ESRGAN 约有 37,299 个 star,许可证是 BSD-3-Clause,最干净、最友好。它定位为"通用图像盲超分",擅长去模糊、去除 JPEG 压缩伪影、把小图放大,并不是专攻人脸的模型。它提供的 realesrgan-x4plus、realesrnet-x4plus、realesr-animevideov3、realesr-general-x4v3 等都是通用超分模型,并非人脸专属。人脸增强是它用 --face_enhance 选项在内部调用 GFPGAN 实现的,自己并不独立做人脸重建,这一点后面会再强调。
一个常被写错的关系
很多文章把 GFPGAN 说成 CodeFormer 的组件,这是错的。GFPGAN 与 CodeFormer 是两家团队各自独立的并列项目:CodeFormer 出自 NTU S-Lab(南洋理工大学),GFPGAN 出自腾讯 ARC。CodeFormer 在整图修复时接入的是 Real-ESRGAN 来做背景与脸部的超分增强,而不是 GFPGAN。换句话说,真正被 CodeFormer 当作"背景增强插件"用的是 Real-ESRGAN;realesrgan-x4plus 这类模型是通用超分模型,人脸增强那一环才轮到 GFPGAN 出场。把三者关系理顺,你才不会在部署时装错依赖、串错流程,也不会误以为装了 CodeFormer 就自动带了 GFPGAN。
三款速查表
为了不让你在三个仓库之间反复横跳,先用一张表把关键差异摆清楚:
| 模型 | GitHub 星数 | 许可证(代码 / 权重) | 核心强项 | 硬件门槛 |
|---|---|---|---|---|
| CodeFormer | 18,202 | NOASSERTION / NTU S-Lab 1.0(权重非商用) | 盲人脸修复、保真度可调 | 推荐 CUDA GPU |
| GFPGAN | 37,697 | Apache-2.0 / 权重含非商用约束 | 人脸增强、快速提亮 | 有 clean 版可纯 CPU |
| Real-ESRGAN | 37,299 | BSD-3-Clause | 通用超分、去模糊去伪影 | ncnn 版最省心 |
这张表解决的是"第一眼怎么挑"的问题:看星数你会被 GFPGAN 与 Real-ESRGAN 的体量吸引,但星数高不等于适合你的照片;看许可证你会立刻发现 CodeFormer 与 GFPGAN 的权重都有非商用这条线,只有 Real-ESRGAN 的通用模型最干净;看硬件门槛则能直接决定你今晚能不能跑起来。三列合起来,才是一个负责任的选型起点。
怎么选:先看照片再说
选型不用纠结,按照片类型对号入座即可。
人脸为主的老照片,优先 CodeFormer。它带一个保真度滑块 w(取值 0 到 1),w 越小出图越"美化"、质量越高,w 越大越忠于原图。如果你要修的是爷爷奶奶年轻时的合影,想既看清脸又保留原貌,CodeFormer 的灵活度最高;严重破损、五官模糊的极 old 照片,把 w 调高接近 1 也更稳。
整体模糊、扫描件、泛化清晰度问题,优先 Real-ESRGAN。老档案扫描、泛黄文件、被反复压缩过的 JPEG,交给它的去模糊与去伪影最划算,而且 ncnn 便携版不用装 CUDA,CPU 也能跑,是最省硬件的选择。
只想快速把人脸提亮、去噪,优先 GFPGAN。它是三者里"开箱即用、上手最快"的人脸增强,命令简单,clean 版还能在纯 CPU 的 Windows 上跑,适合不想折腾环境的人。
怎么本地跑
三款都需要 Python 环境,但门槛差别明显,下面分别说。
CodeFormer 本地部署
需要先用 conda 建一个 python=3.8 的环境,随后 pip install -r requirements.txt,再执行 python basicsr/setup.py develop。它依赖 PyTorch 与 CUDA,GPU 强烈推荐,CPU 能跑但速度很慢。主推理脚本是 inference_codeformer.py;官方在仓库内维护了基于 Gradio 的封装,社区还有 dfcode 等第三方 WebUI,不习惯命令行的人可以走图形界面,拖图进去就能出结果。
GFPGAN 本地部署
先 pip install basicsr facexlib,再 pip install -r requirements.txt 并 python setup.py develop。主脚本是 inference_gfpgan.py,例如:
python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2它提供"clean 版"无需 CUDA 扩展,可以在 CPU 与 Windows 上直接跑,对新手最友好;版本参数 -v 可选 1.2 到 1.4,其中 1.3 更自然、对各种画质更稳,1.2 更锐利且带轻微美颜,按需切换即可。
Real-ESRGAN 本地部署
最轻量。你可以用 Python 脚本方式:
python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance也可以直接下载 realesrgan-ncnn-vulkan 这个便携可执行文件,不需要 CUDA、不需要 PyTorch,Intel、AMD、Nvidia 的显卡或纯 CPU 都能带动,是三者里最省心的一个;加上 --face_enhance 后它会自动调用 GFPGAN 做人脸增强,一条命令同时拿到清晰背景与干净人脸。
许可与商用边界
这一节必须说清楚,因为三款都不"完全自由",只看代码协议会踩坑。
CodeFormer:GitHub API 许可字段是 NOASSERTION,README 标注 NTU S-Lab License 1.0,预训练权重按声明仅限研究与非商用,商用需要额外授权,不能想当然当免费商用。
GFPGAN:代码 Apache-2.0 可商用,但模型权重捆绑了 DFDNet(CC BY-NC-SA 4.0)与 StyleGAN2(NVIDIA 许可证),因此权重本身带非商业限制,把模型用在商业产品里要格外谨慎,最好取得明确授权再上。
Real-ESRGAN:BSD-3-Clause,代码与通用模型权重都相对宽松,是三者里商用风险最低的一个;不过它的 --face_enhance 会调用 GFPGAN,所以一旦启用人脸增强,那条非商业约束就跟着回来了,别以为用了它就万事大吉。
结论:做个人家族照片、研究、非营利展示,三款都安心;要做付费修复服务或商业产品,优先 Real-ESRGAN 的通用超分,人脸增强部分另寻合规授权,把边界留个白纸黑字。
需要提醒的是,许可证是会变的。GitHub 上项目的 LICENSE 文件、README 的声明、模型权重下载页的条款,三处都可能出现不一致;以实测为准的做法是:下载权重前先读仓库根目录的 LICENSE 与模型卡(model card),把"代码协议"和"权重协议"分开看,别被代码那一行 Apache-2.0 或 BSD 误导就以为整包可商用。一旦你要把修复结果拿去售卖、印成商品或集成进 SaaS,最稳妥的是给作者或权利方发一封授权询问邮件,留好书面记录。开源不等于无条件的自由,分清"能跑"和"能商用"是两件事。
实用建议
如果你第一次接触这类工具,建议从 Real-ESRGAN 的 ncnn 便携版入手,零环境、零显卡门槛,先把"清晰度"这一层跑通;确认效果方向对了,再上 GFPGAN 做人脸提亮,最后用 CodeFormer 做高保真精修。这样由轻到重、由通用到人脸,既不浪费时间装错环境,也能直观对比三款的差别。另外,老照片扫描请用尽量高的 DPI,原图越清楚,模型补全的脸部细节越可信,别拿手机翻拍的糊图指望模型起死回生。
还有一条工程上的经验:修图前务必保留原图副本,所有输出单独建目录,别覆盖原始扫描件。老照片往往只有一张,一旦被低质量参数覆盖就再无回头路。建议目录结构按"原始 / 中间 / 成品"三层摆放,每跑一轮就标注用了哪款模型、什么参数(尤其是 CodeFormer 的 w 值、GFPGAN 的版本号、Real-ESRGAN 的模型名),这样下次要复刻同一效果时不用重新试错。批量处理时也更方便写个简单的脚本循环调用推理命令,把一整箱照片一次性过完,比一张张手动点高效得多。
什么时候开源未必最优
说完优势,也要泼一点冷水。开源模型不是万能,下面几种情况它未必是最优解。第一,如果你完全没有命令行基础、也不愿意装 Python 环境,那么哪怕 ncnn 便携版也需要你下载、解压、敲命令,门槛依然高于"打开小程序上传"。第二,如果照片破损到人脸结构彻底缺失,模型再强也只能凭先验"想象"一张脸,结果可能与本人相去甚远,这种极端情况不如找专业修复师手工补绘。第三,如果你需要的是批量、稳定、可对外交付的商业服务,既要效果一致又要合规授权,那么自建这套工具链的人力与法务成本,可能反而高于采购成熟方案。开源给你的是控制权与可玩性,代价是你要自己成为那个"运维",这一点想清楚再动手。
在线替代,一句话带过
如果你连环境都不想装,腾讯、字节、支付宝都有老照片修复小程序,上传即出图,零部署成本,只是原图要上传到对方服务器、且按他们的规则来处理,隐私与批量都做不到本地那么自由。
常见问题
Q1:哪款修人脸最好?
严重退化、看不清五官的老照片,CodeFormer 的盲人脸修复最稳,且能用 w 滑块平衡"还原"与"美化";只想快速提亮去噪,GFPGAN 更快更省事。两者在人脸环节都强于 Real-ESRGAN,后者的人脸增强本质是借 GFPGAN 之力。
Q2:要不要显卡?
CodeFormer 与 GFPGAN 推荐有 NVIDIA 显卡(CUDA),跑得舒服;GFPGAN 有 clean 版可纯 CPU,CodeFormer 也能 CPU 慢跑。Real-ESRGAN 的 ncnn 便携版最不挑硬件,CPU 即可。没有独显也能跑,只是速度差别明显,修一张图可能从几秒变成几分钟。
Q3:怎么本地跑?
先装好 Python 与对应依赖:CodeFormer 走 inference_codeformer.py,GFPGAN 走 inference_gfpgan.py,Real-ESRGAN 走 inference_realesrgan.py 或下载 ncnn 便携版。怕命令行的,CodeFormer 与部分社区项目提供 WebUI,点点鼠标就行,不用记参数。
Q4:商用行不行?
Real-ESRGAN(BSD-3-Clause)通用超分最安全;CodeFormer 权重仅限研究非商用,需额外授权;GFPGAN 代码可商用但权重带非商业限制。做付费修复务必先厘清每条模型的许可证,别只看代码协议就以为能商用。
Q5:和在线小程序比如何?
在线小程序零部署、上手快,但原图要上传、按对方规则处理、难以批量与自定义;本地开源模型数据不出本机、参数可控、可批量,代价是要自己装环境、吃硬件。隐私敏感或要修一整箱照片,本地更合适。