AIREITER

GFPGAN 与 CodeFormer 人脸修复:参数设置与 API

最后更新: 2026-09-01 01:46:27

人脸修复模型确实能让受损照片变得更清晰,但也可能在不知不觉中改变照片里的人。作为实用起点,GFPGAN 更适合做简单、自然的清理;如果更在意人物身份,CodeFormer 提供了更明确的控制选项。2026 年的新论文开始转向参考图引导、扩散模型和边缘设备友好的修复器,但目前还不能直接替代这两个成熟实现。

先看损坏类型,再决定用哪个模型

人脸修复不等于普通放大。超分辨率模型主要负责放大图像,并估计整张画面中缺失的纹理;盲人脸修复模型还会借助学习到的人脸先验,重建原图中可能已经不存在的眼睛、皮肤、头发等特征。这样做能让结果更像一张真实照片,但也带来了身份偏移的风险。

输入或目标建议先用原因重点检查
轻微发糊、五官仍清晰可辨的肖像GFPGAN官方对比称 v1.3 更自然,适合相对高质量的输入皮肤是否更干净,同时没有丢失痣、斑点或头发纹理?
尺寸很小或严重损坏的人脸CodeFormer它的 w 参数可以控制接受多少重建内容新生成的眼睛和嘴巴,是否仍然属于照片中的这个人?
真人照片,且相似度优先使用较高 w 的 CodeFormer较高的 w 通常更偏向保留输入中的身份特征保留部分模糊,是否比生成一张“新脸”更好?
人脸和背景都受到损坏启用背景增强的 CodeFormer,或单独使用整图放大器CodeFormer 可以把非人脸区域交给 Real-ESRGAN 处理脸部与背景的边缘、头发是否仍然自然?
整张图需要放大,而不是专门修复人脸Real-ESRGAN它主要是通用图像修复与放大工具,也支持可选的人脸增强人脸增强是否覆盖了原本有用的纹理?
移动端或嵌入式实时推理关注 CFRNet作者的目标平台是 256×256 消费级 NPU是否已经有正式发布且仍受支持的模型权重?

更稳妥的流程是保留未经处理的原图,只对副本进行修复,并在 100% 原尺寸下先检查人脸,再判断放大后的效果。

这张速查表并不能解决所有情况

如果只是轻微模糊,或者 AI 生成的人脸存在少量瑕疵,而你的目标是清理而非大幅重建,可以先试 GFPGAN。面对变形、尺寸过小或严重损坏的人脸,CodeFormer 更适合作为第一轮实验,因为它的保真度参数能把这场取舍直接呈现出来。

整张扫描件上的划痕和褪色是另一类问题。GFPGAN 和 CodeFormer 主要处理人脸,最好把脸部和背景分开考虑,最后重点查看发际线、眼镜以及合成后的颗粒感。如果图中有多张脸或不常见的配饰,可以在封装工具提供相应选项时,启用对齐人脸或仅处理中心人脸的模式。

不要把更清晰的结果称作“恢复了证据”。当原图已经丢失像素时,修复器做的是估计一张合理的人脸。这一点对于家庭档案尤其重要,在法律、新闻或身份识别相关场景中更不能忽视。

GFPGAN、CodeFormer 与 2026 年研究,成熟度并不在同一层级

GFPGAN 和 CodeFormer 都是正式发布的开源研究实现。官方 GFPGAN 仓库说明了 Python 3.7+、PyTorch 1.7+、预训练权重和命令行推理方式。CodeFormer 仓库则提供了本地推理、整图与视频模式,以及从 0 到 1 的保真度权重。

下面提到的 2026 年项目更适合看作研究方向,而不是可以等价替换的托管产品。相关论文记录并没有同时提供可下载的完整工作流、生产级 API、清晰的许可证说明和可预测的计费方式。

项目新在哪里论文中的证据当前应如何理解
CFRNet一种 2.0M 参数、ResNet 风格的修复器,以不动点算子方式训练在 HiSilicon Hi3402 NPU 上,INT8 每轮耗时 23 ms;测试集包含 300 张图像提交日期为 2026 年 6 月 5 日;尚不能证明可以替代 GFPGAN
HDRFace从受损输入和中间修复结果中提取高维表示基于 SD V2.1-base 和 Qwen-Image 实现提交日期为 2026 年 5 月 14 日;原文没有提供托管 API 或价格
IConFace可选用最多三张同一身份的参考图进行条件引导报告了领先的参考图兼容性,以及经过人工审核的身份基准测试修订日期为 2026 年 8 月 5 日;参考图工作流很有潜力,但不是即插即用的基线方案

GFPGAN 的优势,以及它为什么会改变人脸

GFPGAN 使用预训练的生成式人脸先验,包括论文方法中采用的基于 StyleGAN2 的先验,来修复受损人脸。官方 README 表示,v1.3 的结果更自然,对极低质量输入的处理更好;但同时也提醒,v1.3 并不总是优于 v1.2,而且可能轻微改变人物身份。GFPGAN 采用 Apache License 2.0 发布。

官方版本对比是定性描述,并不是数值基准测试。文档称 v1.2 更锐利,但偶尔会显得不自然;v1.3 更自然,却不太锐利。因此,当原始人脸整体结构仍然正确时,GFPGAN 很适合作为第一轮处理,但它没有 CodeFormer 那种明确的身份与重建取舍旋钮。

GFPGAN 官方版本对比

CodeFormer 的保真度权重到底在取舍什么

CodeFormer 使用基于码本查找的 Transformer 进行盲人脸修复。它的核心控制项是保真度权重 w,文档规定的范围为 [0, 1]。作者表示,较小的 w 通常会带来观感质量更高的结果,而较大的 w 则更偏向保留输入中的身份和内容。

w 是取舍参数,不是单纯的画质滑杆:较低的数值可能通过编造细节让人脸更干净;较高的数值则更忠实于源图,同时也会保留模糊、压缩痕迹或其他损坏。CodeFormer 的整图处理路径还会把修复后的人脸融合回原场景,README 特别提醒,这一步可能损伤人脸与背景交界处的头发纹理。

CodeFormer 使用 NTU S-Lab License 1.0。进行再分发或商业集成前,请先阅读许可证,不要想当然地认为托管端点和代码仓库适用完全相同的条款。

已发表基准测试的边界

目前确实有有价值的公开证据,但还没有一份覆盖所有模型和损坏类型的 2026 年统一横向排行榜。2023 年 ICCV 的迭代扩散修复论文在 CelebA-HQ 上评估了 GFPGAN、CodeFormer 以及其他基线模型。

在其中一张合成损坏测试表中,论文报告了以下数据:

模型PSNRArcFace 身份分数
GFPGAN26.950.59
CodeFormer25.700.75
IDM,论文提出的方法27.420.87

这些是特定测试协议下的结果,并不是 2026 年适用于所有场景的通用排名。同一篇论文使用了自己的数据集、损坏流程、实现和评估方法。它们可以帮助我们理解为什么新一代修复器越来越关注真实性,但不能据此判断某张家庭照片一定会由哪个模型处理得最好。

如何调参数,避免修出“塑料脸”

“塑料脸”通常不是单一参数造成的,而是把修复强度、身份保真度和合成方式混成了一个问题。实际上,它们是三个独立的决定。

一组实用的 CodeFormer 起始参数

先不要改图或换模型,用同一张输入分别跑下面三个设置:

w 范围预期效果适用场景
0.3–0.5重建更激进,也会产生更多虚构细节眼睛或嘴巴已经严重损坏,身份本身也难以确认
0.5–0.7在可见的清理效果与输入保真度之间取得折中需要进行通用的第一轮比较
0.8–1.0更接近源图,但会留下更多原始损坏相似度比极致锐度更重要

这些范围体现的是文档中描述的取舍,并不能保证适用于每个封装工具。CodeFormer README 在对齐人脸修复示例中使用 w=0.5,整图增强使用 w=0.7,示例视频命令则使用 w=1.0。

如果结果看起来像蜡制面具,先尝试提高 w;如果托管服务提供人脸可见度或混合比例,也可以降低这些参数,并使用包含更多原始上下文的裁剪图。即使修复后的人脸裁剪图很锐利,混回一部分原始纹理仍有助于减轻“贴上去”的感觉。

每一轮处理之间应该检查什么

  1. 身份特征:眼睛间距、鼻子宽度、嘴型、脸部轮廓以及明显的痣或斑点。
  2. 纹理:毛孔、雀斑、胡茬、发丝和胶片颗粒。
  3. 配饰:眼镜、耳环、帽子,以及穿过脸部的头发。
  4. 融合效果:光照、颜色、颗粒感,以及人脸与背景的边缘。
  5. 可重复性:再次处理后,人脸是否又发生了变化。

GFPGAN 没有同样的 w 旋钮。使用它的模型版本和可见度/混合控制时要保守一些。官方仓库表示 v1.3 可以连续运行两次,但重复修复仍应视为实验;如果第二轮改变了身份或纹理,就保留第一轮结果。

本地部署:控制更多,但依赖版本偏旧

本地推理可以让图片留在自己的设备上,但 Python、PyTorch、模型权重、CUDA、检测器依赖和文件权限,也都需要自己处理。

GFPGAN 本地部署路径

官方仓库提供了一套不需要自定义 CUDA 扩展的简洁安装方式:

git clone https://github.com/TencentARC/GFPGAN.git
cd GFPGAN
pip install basicsr
pip install facexlib
pip install -r requirements.txt
python setup.py develop
wget https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth \
  -P experiments/pretrained_models
python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2

README 列出的要求是 Python >=3.7 和 PyTorch >=1.7;在文档所述安装方式中,NVIDIA GPU 和 CUDA 都是可选路径。该命令支持文件夹输入、最终缩放倍率、背景放大、仅处理中心人脸、对齐人脸以及自动处理文件扩展名。

CodeFormer 本地部署路径

CodeFormer 的官方环境配置更复杂一些:

git clone https://github.com/sczhou/CodeFormer
cd CodeFormer
conda create -n codeformer python=3.8 -y
conda activate codeformer
pip3 install -r requirements.txt
python basicsr/setup.py develop
python scripts/download_pretrained_models.py facelib
python scripts/download_pretrained_models.py CodeFormer

仓库列出的要求是 PyTorch >=1.7.1 和 CUDA >=10.1。dlib 对检测器和人脸裁剪流程来说是可选依赖;如果按照文档在 Windows 或 Mac 上处理视频,还需要 FFmpeg。

对于 512×512 的对齐人脸,官方示例命令是:

python inference_codeformer.py -w 0.5 --has_aligned \
  --input_path inputs/cropped_faces

进行整图增强时,README 使用 -w 0.7,并可选添加 --bg_upsampler realesrgan 和 --face_upsample。该仓库没有公布可靠的显存、吞吐量或延迟要求,因此最好在目标环境中实测,不要直接承诺某个最低硬件配置。

API 成本与集成方式

托管推理更适合快速原型,但价格和许可证是两件需要分别考虑的事。

截至特定日期的托管成本

官方 GFPGAN Replicate 页面、CodeFormer Replicate 页面和 Real-ESRGAN Replicate 页面列出了大致成本。价格核对日期为 2026 年 9 月 1 日。两个脸部模型都表示,在 Nvidia L40S 上通常可在 3 秒内完成;实际估算会随输入变化。

托管模型列出价格每 1 美元的大致运行次数
tencentarc/gfpgan$0.0020/次500
sczhou/codeformer$0.0028/次357
nightmareai/real-esrgan$0.0020/张输出图像500
托管人脸修复的单次成本

CodeFormer 的 Replicate 页面明确表示,其 API 版本不能用于商业用途。这一说明针对的是该托管部署;如果选择其他服务商,请单独核实对方的条款。

fal CodeFormer API 文档将其端点标注为可用于商业场景,并提供 fidelity 参数,默认值为 0.5;upscale_factor 默认值为 2,同时支持可选的人脸放大、对齐、中心人脸选择和随机种子。文档没有公布价格,因此不要根据 Replicate 的估算推断 fal 的成本。

最小化托管工作流

fal 文档展示了一套 JavaScript 客户端调用流程:

import { fal } from "@fal-ai/client";

const result = await fal.subscribe("fal-ai/codeformer", {
  input: {
    image_url: "https://example.com/input.jpg",
    fidelity: 0.7,
    upscale_factor: 2,
    face_upscale: true
  },
  logs: true
});

console.log(result.data);

对于耗时更长的任务,同一份文档还提供了队列提交、状态轮询、结果获取和 webhook 回调。请把 FAL_KEY 或其他服务商的密钥保存在服务器端,不要写进浏览器或移动端代码。

GFPGAN Replicate 模型页面 CodeFormer Replicate 模型页面

真实用户仍然会遇到哪些问题

在收集到的用户讨论、安装报告和放大错误报告中,用户反复提到两类情况:人脸看起来变好了,却已经不像原来那个人;以及本地集成时出现各种环境错误。这些属于工作流反馈,不是受控基准测试。

“我觉得 CodeFormer 往往是在‘编’一张脸,而不是修复原来的脸。”——u/TheMemo,r/StableDiffusion

实际操作上的结论很简单:用有代表性的照片进行对比测试,并为批处理流程锁定运行环境。

FAQ:GFPGAN 与 CodeFormer 人脸修复

修复老照片,GFPGAN 和 CodeFormer 哪个更好?

可以先按这个经验规则选择:人脸仍然清晰可辨、希望自然清理时先用 GFPGAN;如果损坏严重,或者更需要控制人物相似度,则使用 CodeFormer。

CodeFormer 使用什么保真度值才能保留身份?

更高的 w 值更偏向保留输入信息;更低的值通常会得到更干净、但也更可能是虚构出来的结果。可以比较 0.5、0.7 和 0.9,最后保留能维持明显特征的版本,而不是眼睛最锐利的版本。

应该先修复,还是先放大?

从实用流程看,建议先对副本中的人脸进行修复,再放大处理完成的图像。Real-ESRGAN 搭配人脸增强属于一种例外,但仍然需要检查人物身份以及人脸与背景的融合边缘。

这些模型能恢复已经完全模糊掉的细节吗?

不能。任何模型都无法可靠恢复从未被拍摄下来的信息。GFPGAN 和 CodeFormer 可以生成看起来合理的人脸细节,因此更清晰的眼睛或嘴巴并不证明原始细节真的被恢复了。

2026 年的新模型已经可以替代 GFPGAN 或 CodeFormer 了吗?

相关论文展示了几个重要方向,包括边缘设备部署、高维条件引导和同一身份参考图,但目前还没有出现一个能在本地和托管工作流文档方面同样完善、且广泛可用的替代方案。

CodeFormer 的 Replicate API 可以用于商业项目吗?

CodeFormer Replicate 页面表示,其 API 版本不能用于商业用途。底层代码仓库使用自己的 NTU S-Lab License 1.0,其他服务商可能公布不同的使用条款。

实际选择,本质上是在“编造”与“控制”之间取舍

准备三张有代表性的裁剪图:轻微模糊、严重模糊,以及一张有划痕的低分辨率肖像。运行 GFPGAN,并分别用 w=0.5、0.7 和 0.9 的 CodeFormer 进行对比;每张输出都与原图并排保留,凡是改变身份关键特征的结果一律淘汰。如果背景也需要修复,就把整图放大交给单独的放大器处理。

想继续尝试,可以查看 Real-ESRGAN 下载与 GUI 指南,以及免费 AI 视频放大器指南。