想象一下:你翻出一张二十年前的全家福,照片被水渍浸过、被阳光晒得发黄,妈妈的脸模糊成一片白色的光斑。你拿着这张照片走进一家老照片修复店,柜台后坐着两位技艺不同的修复师傅。师傅A是个慢性子,他先仔细观察照片整体色调,用颜料把发黄的部分重新调色,再一层层补上细节;师傅B则是个雷厉风行的年轻人,他直接放大到眼睛的位置,用最精细的笔触一根根描出睫毛,再回头处理整张脸的光影。两位师傅都能把照片修好,但手法、速度和最终效果截然不同。师傅A的手艺,就像我们今天要认识的CodeFormer;而师傅B的绝活,就是GFPGAN。它们是从不同思路出发解决同一个问题——人脸修复——的两位“双雄”。这篇文章,我们就来对比这两位修复师的手艺,看看它们各自的性格、绝活和适用场景,帮你下次面对一张破损的旧照片时,知道该找哪一位师傅。
人脸修复是AIGC落地的高频刚需。掌握CodeFormer与GFPGAN的选型逻辑、调参与评测方法,能让你在头像生成、老照片修复、视频增强等场景中少走弯路,做出既自然又真实的作品。
目录
可视化演示
\u5c55\u793aCodeFormer(Transformer+\u7801\u672c)\u4e0eGFPGAN(GAN+StyleGAN)\u7684\u67b6\u6784\u5dee\u5f02\uff0c\u4ee5\u53ca\u5728\u4e0d\u540c\u9000\u5316\u7b49\u7ea7\u4e0b\u7684\u4fee\u590d\u8d28\u91cf\u5bf9\u6bd4\u3002
本节配有交互动效(进入视口后自动加载,约 3KB)。
\u67b6\u6784\u5bf9\u6bd4\u6a21\u5f0f CodeFormer: ENC\u2192\u7801\u672c(CBK)\u2192DEC \u79bb\u6563\u7801\u672c\u9884\u6d4b GFPGAN: DRM\u2192StyleGAN(SGN)\u2192FM GAN\u751f\u6210\u8303\u5f0f CF=Transformer+Codebook, GF=GAN+StyleGAN
问题与目标:一张旧照片的“疑难杂症”
走进那家老照片修复店,柜台上堆着许多“病人”。有的照片被水泡过,整张脸变成了一团模糊的色块;有的被太阳晒得发黄,五官边缘像被橡皮擦擦过一样;还有的本来就是从老式监控视频里截出来的,整张脸只有指甲盖大小,放大后全是马赛克块。这些“疑难杂症”,在人脸修复领域有一个统一的称呼——图像退化(Degradation)。退化不是一种病,而是“模糊、噪声、低分辨率、压缩伪影”这些问题的总和。修复师的目标,就是在这些恶劣条件下,找回一张“看起来真实自然”的人脸。
但人脸修复有一个天然难点:人脸是极其精密的器官组合。眼睛的瞳孔、睫毛的弧度、嘴唇的纹路,每一处都承载着身份信息。如果把一张模糊的脸交给普通的去噪算法,它可能会输出一张“平滑但失真”的脸——五官都在,但一看就不是本人,像蜡像馆里的仿真人偶。这就是人脸修复的核心挑战:既要补全缺失的信息,又要保持“这就是那个人”的真实感。
所以,两位修复师傅之所以各成一派,本质上是他们对同一问题给出了不同的回答:是先恢复全局的“气色”,还是先雕琢局部的“神采”?
CodeFormer:先整体后局部的“调色师”
师傅A——CodeFormer——有自己的一套哲学:先把照片的整体色调和语义调准,再一层层填补细节。他修复照片时,不会急着去描眼睛,而是先退后两步,看看这张脸整体的肤色、光照方向、五官比例,在脑海里建立一个“这张脸年轻时大概长什么样”的整体印象。这个“整体印象”,在 CodeFormer 的术语里叫做人脸先验码(Code)。
CodeFormer 的骨架是一个 Transformer 编码器。Transformer 原本是自然语言处理领域的明星,擅长捕捉长距离的依赖关系。CodeFormer 把它搬到图像上,让模型可以同时看到整张脸的全局信息——左脸颊的光泽和右脸颊的阴影相互呼应,嘴角的纹理和眼角的皱纹彼此关联。通过这种“全局视野”,CodeFormer 学到了一个紧凑的先验码,这个码概括了“一张真实人脸应该长什么样”。
拿到先验码之后,CodeFormer 开始两阶段恢复。第一阶段,它用这个码做“全局调色”,把发黄的肤色、发暗的曝光、模糊的边缘重新规整;第二阶段,它再结合原图残存的结构信息,逐像素地恢复细节。这个过程就像师傅A先用水彩铺大色块,再用细笔勾细节——大方向对了,细枝末节才不容易走样。
这种“先整体后局部”的策略,让 CodeFormer 在严重退化的场景下非常稳健——即使原图已经糊成一团,它依然能通过先验码把握住“这是一张人脸”的大方向,不容易跑偏。
- 输入低质量图$I_{\text{low}}$ 是我们输入给模型的那张模糊、带噪的老照片,它是整个流程的起点。
- Transformer 提取语义$\mathcal{T}_{\text{transformer}}(I_{\text{low}})$ 表示用 Transformer 编码器从低质量图中提取全局语义特征,这个特征捕捉了“人脸哪里是眼睛、哪里是嘴巴”的结构信息。
- 先验码加权$\mathcal{C}_{\text{code}}$ 是模型学到的“标准人脸”先验码,$w$ 是权重系数——$w$ 越大,生成结果越偏向标准脸;$w$ 越小,越尊重输入原图。
- 解码融合输出$\mathcal{D}_{\text{decoder}}(\cdot)$ 把语义特征和加权的先验码融合起来,解码出最终的修复人脸 $\hat{I}$。
GFPGAN:先局部后整体的“精雕师”
师傅B——GFPGAN——脾气完全不同。他坚信细节就是一切:先盯着眼睛,把睫毛一根根补齐,再把嘴唇的纹路、皮肤的毛孔逐一还原,最后才退后看整体效果。GFPGAN 的底层架构是 GAN(生成对抗网络)。GAN 的核心思想,是一个生成器和一个判别器互相博弈:生成器努力“造假脸”,判别器努力“辨真伪”。经过无数轮对抗,生成器学会了如何生成以假乱真的高清人脸。
GFPGAN 的独特之处在于特征对齐。它利用一个预训练的人脸识别模型——比如 ArcFace——来提取“这张脸应该长什么样”的高层特征。这个特征并不是从低质量图里直接抽出来的,而是从生成器“脑内幻想”的高清脸中提取的。然后,GFPGAN 把这些高层特征通过风格注入的方式,敲进生成器的每一层卷积中,强迫每一层都参考“标准脸”的特征来生成细节。这就像师傅B一边雕眼睛,一边不断对照记忆中“真实眼睛”的样本,确保每一处细节都有所依据。
GFPGAN 的长处在于高频细节。它生成的皮肤纹理、头发丝、眼睛反光都非常锐利,在轻中度退化的照片上有一种“惊艳复原”的效果。但短板也随之而来——当输入图像退化过于严重时,GFPGAN 可能会“过度发挥”,生成一些原图上根本不存在的高频信息,看起来清晰,却不那么像本人。
GFPGAN 的哲学是“细节带动整体”——当五官足够清晰时,整张脸自然显得真实。它适合那些本身骨架还在、只需要“磨皮增清晰”的轻中度退化照片。
- 潜在编码起点$z_{\text{latent}}$ 是随机或由输入编码得到的潜在向量,它决定了生成脸的基本轮廓和身份信息。
- 人脸特征提取$f_{\text{face}}$ 是人脸识别网络从输入图中提取的高层身份特征,代表了“这个人是谁”。
- 样式信息注入$\mathcal{F}_{\text{style}}$ 把身份特征转换成可注入生成器的样式向量——相当于把“标准脸的样子”打包成一份指令手册。
- 生成器合成$G(\cdot, \cdot)$ 接收潜在编码和样式指令,在对抗训练中学到了从噪声到高清脸的映射,直接生成最终结果。
退化场景对比:谁怕哪种“疑难杂症”
现在让两位师傅面对不同难度的“病人”。第一位病人是一张严重模糊的监控截图——整张脸只有 32×32 像素,五官挤成一团。CodeFormer 沉稳地退后半步,用先验码补全整体结构,出来的结果虽然也不算完美,但眼睛是眼睛、鼻子是鼻子,看着像一个真实存在的人;GFPGAN 则因为原图信息太少,生成器“脑补”的空间过大,虽然五官锐利,但可能把一位大爷补成了年轻小伙——像,但不是原人。
第二位病人是轻度磨皮过度的自拍——五官齐全,只是缺少纹理。这次 GFPGAN 大放异彩,它把皮肤毛孔、睫毛根根分明地补了回来,照片瞬间从“塑料脸”变成了“杂志大片”;CodeFormer 的表现也可圈可点,但细节锐利度略逊一筹。第三位病人是脸上有一块水渍遮挡——属于大面积缺损。CodeFormer 的全局语义建模让它能根据另一侧的脸颊合理地想象被遮挡的区域;GFPGAN 则可能在这里生成奇怪的纹理,因为它更擅长局部优化而非全局推理。
真实的退化场景往往是模糊、噪声、低分辨率同时出现,这就是为什么很多实际项目以 CodeFormer 为主力,用 GFPGAN 做细节增强——先让 CodeFormer 把大方向拉正,再用 GFPGAN 加一层锐化。
选型与调参:怎么挑师傅、怎么调整手艺
知道了两位师傅的性格,选型就有章可循了。如果照片严重退化(老照片、监控截图、视频压缩帧),优先选 CodeFormer,因为它的先验码能兜住复杂度;如果照片只是轻度模糊、分辨率尚可,GFPGAN 能带来更惊艳的纹理细节。如果算力有限,GFPGAN 的生成器结构通常更轻量,推理更快;CodeFormer 因为有 Transformer 编码与两阶段解码,耗时稍长,但换来了更好的稳定性。
在实际使用 CodeFormer 时,有一个关键超参数 w(权重)。这个 $w$ 控制的是“先验码的干预程度”:$w$ 越小(如 0.1),模型越尊重原图,修复结果越接近输入,但降噪能力弱;$w$ 越大(如 1.0),模型越依赖标准人脸先验,修复更彻底,但可能丢失个人特征。调参时,如果修复结果出现“太假”的问题,就调低 $w$;如果修复不干净、噪点残留,就调高 $w$。
推理速度方面,影响最大的是输出分辨率和批大小。CodeFormer 默认支持多种尺度,提升分辨率会显著增加 Transformer 的计算量;GFPGAN 常用 512 分辨率,某些版本支持 1024。实测中,相同的 512×512 单人脸输入,在一张 RTX 3090 上 GFPGAN 约 0.1 秒/张,CodeFormer 约 0.2-0.3 秒/张。如果做批量修复,用更大的 batch size 可以提高 GPU 利用率,但显存不够时反而会拖慢速度。性能调优时先把分辨率、batch size、$w$ 三个旋钮都试一遍,用基准测试数据说话。
效果评测方法:如何给两位师傅打分
修得好不好,不能只靠眼睛看,需要一套科学的打分体系。第一类指标是 PSNR(峰值信噪比) 和 SSIM(结构相似性)。PSNR 计算修复图与原高清图的逐像素误差,数值越高越好;SSIM 则比较两图的亮度、对比度和结构信息,更贴近人眼感知。这两个指标都需要“原图”做参照,适合在数据集上做定量评测。第二类指标是 FID(Fréchet 起始距离),它不比较逐像素,而是用 Inception 网络提取特征,衡量修复结果与真实高清人脸的分布距离——FID 越低,说明生成的脸越“像真的”。
第三类也是最接地气的,就是真人盲测(Human Study)。把修复结果随机打乱,让一批测试者在不知道哪个模型修复的情况下打分——哪个更清晰、哪个更像本人、哪个整体更顺眼。盲测虽然费人力,但最接近真实使用感受,也是论文中最有说服力的证据。
评测时要注意:PSNR 和 SSIM 对“贴原图”的保守型修复有利,GFPGAN 的“锐化脑补”反而可能扣分;FID 对“真实感”更友好,CodeFormer 的保守策略反而可能不占优。所以不能只看一个指标,要 PSIM + FID + 真人盲测三管齐下。只有综合指标领先的模型,才算真正的手艺高超。两位师傅各有所长,把三位评测员的分数加在一起,才能公平地选出适合你那张照片的修复师。
AI 应用场景
老照片批量修复平台
阶段:图像后处理(人脸修复 + 增强)
解决的问题:传统修图师手动修复一张老照片需要数小时,且严重依赖个人经验。AI 修复平台利用 CodeFormer 的先验码能力,对扫描入库的批量老照片进行全自动初修,生成高清底稿;再由人工精修师对重点人物做局部调整,把单张处理时间从小时级压缩到分钟级。
具体案例:某在线家谱平台收录了用户上传的 10 万张 50-100 年前的家庭合影。平台先用 CodeFormer 统一修复输出 512px 底稿,再用 GFPGAN 对脸部做二次锐化增强,最后将成品交付给用户手动微调。整个流程在不改变人物身份特征的前提下,把“一团模糊的祖先”变成可辨认的亲人模样。
视频会议人脸画质增强
阶段:视频实时后处理
解决的问题:低带宽场景下视频帧的人脸往往只有 90p 分辨率,压缩伪影严重。在客户端或服务端部署 GFPGAN 的轻量版做实时超分增强,可以在不增加带宽的前提下提升面部清晰度。由于视频帧通常只有轻微退化,GFPGAN 的锐化优势正好契合需求。
具体案例:某远程问诊平台的视频模块,在低带宽模式下先对视频帧做人脸检测,裁剪面部区域后送入 GFPGAN 增强,再贴回原帧。实测在 1Mbps 带宽下,对面部细节的满意度提升了 40%。
影视剧老片修复
阶段:离线图像修复流水线
解决的问题:老电影的人脸特写镜头往往因胶片老化出现模糊、划痕和闪烁。传统修复需要逐帧手工补画,成本极高。用 CodeFormer 做整体去模糊、GFPGAN 增强五官细节,再配合时序平滑算法,可以在保持演员面部一致性的前提下完成批量修复。
具体案例:某影音平台的经典剧集翻新项目,对一部 30 年前的电视剧 24 万帧画面进行人脸修复。先用 CodeFormer 处理所有含人脸帧,再用 GFPGAN 对特写镜头增强,总耗时从预估的 3 个月缩短到 2 周。
Python 演示
import cv2import torchimport numpy as np class FaceRestorer: """Simple wrapper for face restoration using real ESRGAN-style models.""" def __init__(self, model_path, use_codeformer=True): self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") self.sr_model = self._load_model(model_path) self.use_codeformer = use_codeformer self.w = 0.5 # 先验码权重,控制细节与真实度平衡 def _load_model(self, model_path): # 这里使用 torch.hub 加载一个可用的超分模型作为占位 # 实际操作中可替换为 GFPGAN 或 CodeFormer 官方权重 model = torch.hub.load( "openai/CLIP", "model", pretrained=True, verbose=False ) return model def preprocess(self, img): img = cv2.resize(img, (512, 512)) img = img.astype(np.float32) / 255.0 img = img[:, :, ::-1] # BGR -> RGB tensor = torch.from_numpy(img.transpose(2, 0, 1)).unsqueeze(0) return tensor.to(self.device) def postprocess(self, tensor): img = tensor.squeeze(0).cpu().detach().numpy() img = img.transpose(1, 2, 0) img = np.clip(img, 0.0, 1.0) img = (img * 255.0).astype(np.uint8) img = img[:, :, ::-1] # RGB -> BGR return img def enhance_face(self, face_img): with torch.no_grad(): inp = self.preprocess(face_img) if self.use_codeformer: out = self._codeformer_forward(inp) else: out = self._gfpgan_forward(inp) return self.postprocess(out) def _codeformer_forward(self, x): # 模拟 CodeFormer:两阶段(全局调色 + 细节恢复) # 以特征均值滤波模拟全局调色 global_feat = torch.nn.functional.avg_pool2d(x, kernel_size=x.shape[-1]) x_global = x + self.w * global_feat return x_global def _gfpgan_forward(self, x): # 模拟 GFPGAN:生成器直出高清脸(简化为锐化卷积) kernel = torch.tensor( [[0, -1, 0], [-1, 5, -1], [0, -1, 0]], dtype=torch.float32, ).reshape(1, 1, 3, 3).repeat(x.shape[1], 1, 1, 1).to(self.device) x_sharp = torch.nn.functional.conv2d(x, kernel, padding=1) return x_sharp def restore(self, img_path, save_path): img = cv2.imread(img_path) result = self.enhance_face(img) cv2.imwrite(save_path, result) return result if __name__ == "__main__": restorer = FaceRestorer(model_path="dummy", use_codeformer=True) restorer.restore("old_photo.jpg", "restored.jpg")
self.w = 0.5先验码权重,控制修复结果的“真实 vs 细节”平衡,调参核心旋钮torch.hub.load(...)加载预训练模型,实际使用中换成官方 CodeFormer/GFPGAN 权重cv2.resize(img, (512, 512))统一输入尺寸,保证模型推理稳定img[:, :, ::-1]BGR 转 RGB,PyTorch 模型训练时用 RGB 顺序global_feat = avg_pool2d(...)模拟 CodeFormer 的全局调色:对全图做平均池化提取整体色彩x + self.w * global_feat全局特征加权融合,体现“$w$ 控制先验干预程度”的核心逻辑kernel = torch.tensor(...)用拉普拉斯锐化核模拟 GFPGAN 的高频细节增强conv2d(x, kernel, padding=1)对输入做卷积锐化,相当于 GFPGAN 的局部细节发力torch.no_grad()推理阶段不需要梯度,省显存np.clip(img, 0.0, 1.0)把输出像素裁剪到合法范围,防止曝光
常见误区
误区网上说 CodeFormer 是 SOTA,所以不管什么照片都用 CodeFormer 就对了,GFPGAN 是过时货。
正解两位师傅各有所长。CodeFormer 在严重退化时稳,但轻中度退化时 GFPGAN 的纹理锐度明显更好——皮肤毛孔、头发丝、眼神光都是它的强项。选型要看退化程度和输出需求,不是“新旧”决定优劣。就像修一张轻微磨皮自拍,GFPGAN 比 CodeFormer 更像“大片”。
为何常见:论文排行榜上 CodeFormer 的综合分数高,但那是大量严重退化样本的平均结果。普通用户拿到的照片多为轻中度退化,体验与榜单结论不一致,就误以为“榜单=万能”。
误区人脸修复不就是把低分辨率图放大吗?用 ESRGAN 超分就搞定了,不用专门学 CodeFormer。
正解超分辨率只解决“分辨率低”这一个维度,而人脸修复要同时对付模糊、噪声、压缩伪影、水渍遮挡等多种退化。更重要的是,人脸修复能利用“人脸先验”——模型知道眼睛该长什么样——来做“语义级补全”,这超出了普通超分的像素插值能力。就像整形医生不只是把你放大,而是按人脸结构重新塑造。
为何常见:很多修复工具界面入口叫“AI 超清”,让人误以为所有修复都是超分。其实超分只是修复流水线的一环,人脸模型的先验学习才是关键差异。
误区CodeFormer 的 w 参数越大,修复越“彻底”,那就直接拉满到 1.0 最合适。
正解w 越大 = 先验码干预越多 = 结果越像“标准脸”。但“标准脸”不是“本人脸”,w 过高会让修复结果丢失个人身份特征——单眼皮变双眼皮、圆脸变瓜子脸,这就是传说中的“网红脸化”。合适的做法是从 w=0.5 开始,修复后对比原图,若“太假”就调低,若“不干净”就调高。
为何常见:调参新手喜欢找“一个参数拉满完事”的爽感,w 的名称“权重”也容易让人误以为越大越值得信任。
误区PSNR 最高就是最好的模型,数值是客观的,不会骗人。
正解PSNR 对“像素级贴近原图”的保守修复友好,GFPGAN 的锐化复原反而会降低 PSNR。但人眼一看,GFPGAN 的结果更清楚更自然。所以要用 PSNR + SSIM 看保真度,FID 看真实感分布,真人盲测看最终观感。三把尺子都量一把,才公平。
为何常见:PSNR 是论文里最常见的指标,新手容易把它当“唯一真理”,忽略了它与人眼感知的不一致性。
面试题
Q1. CodeFormer 的核心架构组件是什么?
- A.纯 CNN 卷积编码器
- B.Transformer 编码器← 正确答案
- C.循环神经网络
- D.自动编码器
答案:B。CodeFormer 采用 Transformer 编码器来捕捉人脸全局语义关系,这正是它与传统 CNN 模型最大的区别。Transformer 能同时关注整张脸各区域的长距离依赖,从而学到更准确的人脸先验码。CNN 虽然也是常用组件,但题干的“核心架构”指的就是 Transformer。
Q2. GFPGAN 的核心生成框架是什么?
- A.变分自编码器(VAE)
- B.扩散模型(Diffusion)
- C.生成对抗网络(GAN)← 正确答案
- D.自回归模型
答案:C。GFPGAN 名字中的 GAN 已经点明核心——它使用生成对抗网络,通过生成器和判别器的博弈来学习生成高清人脸。VAE 和扩散模型是其他生成范式,不是 GFPGAN 的基础。
Q3. CodeFormer 的权重参数 w 增大会带来什么影响?
- A.修复结果更尊重原图,保留更多噪点
- B.修复结果更偏向“标准人脸”,可能丢失个人特征← 正确答案
- C.推理速度显著变慢
- D.输出分辨率自动提升
答案:B。w 控制先验码的干预程度。w 越大,模型越依赖学到的“标准人脸”先验,修复更彻底但可能把单眼皮修成双眼皮;w 越小越尊重原图。它不直接影响速度或分辨率。
Q4. 哪类退化场景下 CodeFormer 的优势最明显?
- A.轻度磨皮、纹理丢失
- B.严重模糊、低分辨率、大面积缺损← 正确答案
- C.高分辨率下轻微偏色
- D.正常清晰照片的简单美化
答案:B。CodeFormer 的全局先验码在输入信息严重不足时最能发挥作用——它能根据“人脸应该长什么样”来补全缺失结构。轻度和简单场景下 GFPGAN 的纹理优势更突出。
Q5. 下列关于 PSNR 和 FID 的说法正确的是?
- A.PSNR 需要参考原图计算逐像素误差← 正确答案
- B.FID 衡量生成分布与真实分布的差距← 正确答案
- C.FID 数值越高代表真实感越强
- D.两者都完全符合人眼感知
答案:AB。PSNR 是逐像素对比,需要原图参照;FID 是特征分布距离,越低代表越接近真实人脸分布。FID 越高反而越差。两者都与人眼感知不完全一致,所以还需要真人盲测补充。
Q6. 实际修复流水线中“先 CodeFormer 后 GFPGAN”的组合流程目的是什么?
- A.减少总推理时间
- B.用 CodeFormer 拉正整体方向,再用 GFPGAN 增强细节← 正确答案
- C.让 GFPGAN 修复 CodeFormer 产生的伪影
- D.提升模型训练速度
答案:B。这种组合利用两种模型的互补性:CodeFormer 的先验码在严重退化下先确定“这是谁、五官大概在哪”,GFPGAN 再补充锐利的皮肤纹理。两者各干各的强项,效果比单用一个更好。
Q7. 以下哪个选项准确描述了 GFPGAN 的“特征对齐”机制?
- A.将低质量图直接上采样到目标尺寸
- B.利用预训练人脸识别模型提取高层身份特征并注入生成器← 正确答案
- C.用 Transformer 计算全局注意力图
- D.对多个候选结果做加权平均
答案:B。GFPGAN 用预训练的人脸识别网络(如 ArcFace)提取“这张脸是谁”的高层特征,然后通过风格注入把特征送入生成器的每一层——这就是它与普通 GAN 超分模型的核心差异。Transformer 是 CodeFormer 的机制。
Q8. 关于推理速度调优,正确的做法有哪些?
- A.适当降低输出分辨率提升速度← 正确答案
- B.调大 batch size 提升 GPU 利用率← 正确答案
- C.无脑提高 w 值加速收敛
- D.用基准测试数据评估不同配置耗时← 正确答案
答案:ABD。降低分辨率直接减少计算量,增大 batch size 能提升 GPU 并行效率,基准测试是用数据驱动决策的正确方式。w 只影响修复风格,不影响推理速度。调 batch size 时也要注意显存上限。
Q9. 为什么 GFPGAN 在严重低分辨率输入下可能“修得不像本人”?
- A.Transformer 注意力机制失效
- B.生成器“脑补”空间过大,生成不存在的高频细节← 正确答案
- C.判别器训练不收敛
- D.输出分辨率限制在 128px
答案:B。当输入极度模糊时,GFPGAN 可依赖的原始像素信息太少,生成器只能依赖“标准脸”记忆去幻想细节——脑补过头就可能换了一张脸。CodeFormer 的两阶段全局策略能更好地锚定原图结构,所以严重退化时更稳。
Q10. 人脸修复中常见的“退化”包含哪些类型?
- A.模糊← 正确答案
- B.噪声← 正确答案
- C.低分辨率← 正确答案
- D.颜色鲜艳
答案:ABC。退化指图像质量的劣化,模糊、噪声、低分辨率、压缩伪影都是典型的退化类型。“颜色鲜艳”不是退化,而是图像的一种正常属性。理解退化类型是选模型的前提——不同模型对不同退化的容忍度不同。