CodeFormer
基于 Codebook Transformer 的人脸盲修复模型,NeurIPS 2022 论文,支
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 Codebook Transformer 的人脸盲修复模型,NeurIPS 2022 论文,支
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你手里有一张 20 世纪 80 年代泛黄的家人照片——那是你父亲年轻时最清晰的影像,但岁月侵蚀了画面,脸部细节早已模糊成一团光斑。这是一个真实而普遍的情感需求:让失真的面孔重新清晰起来。这正是 CodeFormer 要解决的问题。
CodeFormer 全称「Towards Robust Blind Face Restoration with Codebook Lookup Transformer」,由新加坡南洋理工大学 S-Lab 团队在 NeurIPS 2022(人工智能顶级会议)发表。项目在 GitHub 收获超过 17,000 颗星,成为人脸修复领域最具影响力的开源模型之一。
传统的人脸超分辨率方法通常面临一个两难困境:要么过度平滑(生成质量高但丢失身份细节),要么过于锐利(保留细节但产生伪影)。CodeFormer 的核心创新在于引入了**量化码本(Quantized Codebook)**机制。
通俗类比:把高质量人脸图像的细节特征想象成一个大型图书馆里的「标准词汇表」。当给模型一张模糊照片时,它不需要「凭空创作」细节,而是从词汇表中「查找」最匹配的高质量补丁,然后拼接组合。这个词汇表(Codebook)通过 VQGAN(Vector Quantized GAN)训练获得,包含了丰富的人脸细节模式。
技术架构:CodeFormer 采用 Transformer 结构处理模糊人脸图像。给定一张低质量输入,编码器提取潜在特征表示,然后通过码本查找模块将离散码字匹配回来,最后解码器重建高质量人脸。关键在于,通过控制「保真度权重 w(0~1)」,用户可以在输出质量(更平滑)和保真度(更接近原图)之间权衡。
CodeFormer 支持多种人脸修复任务,覆盖了绝大多数实际场景:
盲修复(Blind Restoration) 是最核心功能——用户只需提供任意模糊、低分辨率或轻度损坏的人脸图像,模型自动输出修复结果。不需要知道图像是如何变差的,模型自己「猜」出应该恢复成什么样。这对于老照片修复、监控截图增强、低照度照片处理等场景非常有用。
人脸补全(Face Inpainting) 支持对人脸特定区域进行修复。用户可以指定遮挡区域(如文字、水印、划痕),模型会基于周围信息智能填充缺失部分。2023 年 4 月的更新还加入了**人脸着色(Colorization)**功能,可将黑白老照片转为彩色。
视频增强 从 2022 年 10 月开始支持视频输入,可对视频中连续帧的人脸进行增强,适用于老电影修复、VHS 录像数字增强等场景。
对于不想配置本地环境的用户,项目提供了多个免费在线演示平台:
本地部署后,核心使用方式是通过 Python 脚本推理:
# 基础推理示例
python inference_codeformer.py --input_path [IMAGE_PATH] --output_path [OUTPUT_PATH] --w 0.5
--w 参数控制保真度权重,0 为最平滑,1 为最高保真度。预处理阶段需要先用 scripts/crop_align_face.py 检测并裁剪对齐人脸区域,这对最终效果至关重要。
CodeFormer 是一个基于 PyTorch 的深度学习模型,包含 VQGAN 编解码器和 Transformer 查找模块。模型推理涉及大量矩阵运算,GPU 加速是必需的——在 CPU 上运行一张图片可能需要几分钟,而在中端 NVIDIA GPU(如 RTX 2070)上仅需几秒。
官方推荐的 VRAM 为 6GB 以上,实测 RTX 3060 级别的显卡可以流畅处理单张图片批量任务。
本地部署主要挑战在于依赖管理:
torch >= 1.7.1,但建议安装与 CUDA 11.3+ 兼容的版本。不同 PyTorch 版本之间的 CUDA 兼容性差异是常见的配置坑。basicsr/setup.py 会自动调用 torch.utils.cpp_extension 编译 C++/CUDA 扩展,首次安装可能需要较长时间。scripts/download_pretrained_models.py 或 gdown 从 Google Drive 下载,国内用户可能需要特殊网络条件。值得注意的是,2023 年 4 月团队公开了训练代码和配置文件,学者和开发者可以基于此训练自己的 Codebook 或微调下游任务。训练同样需要多卡 GPU 环境和大规模高质量人脸数据集(如 FFHQ、WebFace42M)。
CodeFormer 的最大优势在于鲁棒性——即使输入图像严重退化,模型依然能生成自然的高质量人脸,不像许多方法会在极端模糊时产生明显伪影。Transformer 的全局注意力机制帮助模型理解整体人脸结构,避免了局部修复导致的五官不协调问题。
项目文档详尽,包含中文 README、详细的环境配置指南和 FAQ,代码结构清晰(basicsr/ 封装了通用的 CV 训练流程,inference_codes/ 包含各任务的推理入口),这对研究和二次开发都很友好。
需要客观指出的是,CodeFormer 不适合所有场景。对于严重遮挡(非人脸区域大面积缺失)、极端角度侧脸、或训练数据分布外的人种/年龄,修复效果可能不理想。此外,模型在保真度和质量之间的权衡(w 参数)需要用户有一定经验,调参不当容易产生「过度美化」或「细节丢失」问题。
技术层面,项目未提供 Dockerfile 或 docker-compose,本地部署对新手有一定门槛。云端演示虽然降低了使用成本,但存在隐私顾虑——用户上传的照片会上传到第三方服务器。
CodeFormer 代表了 2022 年前后「生成式人脸修复」领域的最高水平之一。它的码本查找机制启发了后续大量工作,如替换不同的 Codebook 训练任务特定模型、将量化表示应用于其他图像修复任务等。
从实际影响看,该项目已被广泛应用于:
从 Star 增长曲线看,该项目在 2022-2023 年经历了快速爆发期,目前进入稳定维护阶段。近期更新频率降低(最后重大更新为 2023 年 7 月),说明核心算法已相对成熟。
CodeFormer 是一款面向研究者和开发者的专业级人脸修复工具,核心价值在于将学术前沿的 Codebook Transformer 机制工程化落地。它不是一款「一键美化」App,而是一个需要一定技术背景才能驾驭的底层框架。对于有 PyTorch 基础的开发者,它提供了完整的训练/推理 pipeline;对于普通用户,HuggingFace 等云端演示是更低门槛的选择。
推荐指数:⭐⭐⭐⭐(扣一星主要因为部署复杂度较高,缺乏开箱即用的容器化方案)