CodeFormer 实战:3 步跑通人脸修复,w 值怎么选一篇讲清
【免费下载链接】CodeFormer[NeurIPS 2022] Towards Robust Blind Face Restoration with Codebook Lookup Transformer项目地址: https://gitcode.com/gh_mirrors/co/CodeFormer
效果速览 ✨
CodeFormer 是南洋理工大学 S-Lab 提出的人脸修复工具,基于 NeurIPS 2022 论文的 Codebook Lookup Transformer,可把模糊、退化的人脸重建为高质量图像。它也支持黑白照片上色与遮挡区域补全。
从零到出图:最短路径 🚀
官方要求 Python 3.8、PyTorch >= 1.7.1、CUDA >= 10.1。最短链路分四步:
- 用 conda 创建
python=3.8环境并激活 - 安装依赖并编译
basicsr - 下载 facelib 人脸检测模型与 CodeFormer 主模型
- 跑第一条修复命令
git clone https://gitcode.com/gh_mirrors/co/CodeFormer cd 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 python inference_codeformer.py -w 0.5 --input_path inputs/whole_imgs输出默认写入results/<输入文件夹名>_<w>:final_results是人脸贴回后的整图,restored_faces是单独修复的人脸。-w取值 0 到 1,0.5是安全的起步值。
原理 60 秒 ⚡
低质量人脸先经检测、裁剪、对齐成 512×512 再进入网络。编码器把图像压缩成特征序列,Transformer 解码器不直接逐像素预测,而是从一个 1024 项的码本中检索组合——类似查词典找固定搭配,先找到最优的“视觉词组”,再由解码器按w参数加权拼出高清纹理,最后贴回原图坐标。w取小值偏向高质量重建,取大值更贴近原图特征。
保真度权重 w 值怎么选
选参的核心就是w:小w质量高但保真度低,大w保真度高。几个高频场景:
- 整图修复、背景也模糊:
-w 0.7 --bg_upsampler realesrgan。背景用 Real-ESRGAN 一并放大,人脸与背景观感一致,整图更协调。 - 已裁剪人脸的评测或论文对比:
-w 0.5 --has_aligned。跳过整图融合流程,避免发丝边缘被破坏,结果可复现。 - AI 生成图面部崩坏:
-w 0.3到0.5。原始缺陷大时,小w给模型更多重建自由度,修复上限更高。 - 视频修复:
-w 1.0 --face_upsample。保真优先,配合背景超分能压住帧间闪烁。
命令可以直接复制:
python inference_codeformer.py -w 0.7 --bg_upsampler realesrgan --input_path inputs/whole_imgs python inference_codeformer.py -w 0.5 --has_aligned --input_path inputs/cropped_faces python inference_codeformer.py -w 0.3 --has_aligned --input_path inputs/cropped_faces python inference_codeformer.py -w 1.0 --bg_upsampler realesrgan --face_upsample --input_path your_video.mp4大图显存紧张时可用--bg_tile调小分块尺寸,--upscale控制最终放大倍数(默认 2 倍)。
真实使用场景
1. 遮挡区域补全:给旧照片换背景后,脸上残留一块白色擦除痕迹。把白色涂抹区域作为 mask 放进inputs/masked_faces,运行python inference_inpainting.py --input_path inputs/masked_faces,被遮的眼部和鼻梁会根据周围皮肤与结构推断补出。
2. 黑白老照片上色:从相册扫描出来的老照片是黑白且发灰的。运行python inference_colorization.py --input_path inputs/gray_faces,肤色、发色和衣物颜色基于面部光照与纹理推断,逐张手调颜色的工作量可以省掉。
3. 摄像设备画面修复:剪辑家庭录像时,早期摄像头的画面噪点多、人脸发糊。用-w 1.0加--bg_upsampler realesrgan --face_upsample处理后,results/下直接输出可用的 mp4。
踩坑与排错
- 日志里显示 0 faces detected:默认 RetinaFace 对低质量或大角度侧脸容易失效。换
--detection_model dlib(需先装 dlib),或加--only_center_face只处理主脸。 - 大图配
--bg_upsampler realesrgan时显存溢出:Real-ESRGAN 需要整图参与计算。把--bg_tile 400降到--bg_tile 200,或先去掉--face_upsample。 - CPU 上跑得很慢且有警告:Real-ESRGAN 在 CPU 上未做优化。去掉
--bg_upsampler和--face_upsample,人脸修复部分不受影响。 - 模型下载失败:网络访问不到 GitHub Releases 时,手动下载
codeformer.pth放入weights/CodeFormer/,facelib 模型放入weights/facelib/,推理脚本会直接使用本地权重。 - 修复结果发丝边缘不自然:整图流程含人脸与背景融合,边界可能被损伤。若在意对比的严谨性,先用
scripts/crop_align_face.py裁出人脸,再走--has_aligned。
仓库导览 & 下一步
几个对使用者有用的路径:
inference_codeformer.py:主入口,修复、上色、补全都由它的命令行参数驱动inputs/whole_imgs、inputs/cropped_faces:示例输入,可直接运行options/CodeFormer_stage3.yml:第三阶段训练配置,自定义训练的起点docs/train_CN.md:中文训练文档scripts/crop_align_face.py:把整图里的人脸裁剪对齐成 512×512
生态侧,Hugging Face Spaces 有官方在线 Demo 可直接试玩,Replicate 提供 API 服务方便接入自己的应用,Stable Diffusion WebUI 与 ComfyUI 也能调用 CodeFormer 节点。
建议先用默认参数跑一遍inputs/whole_imgs,在results/里对比几个w值的输出再定值;如果打算在自己的数据集上微调,顺着docs/train_CN.md走即可。
【免费下载链接】CodeFormer[NeurIPS 2022] Towards Robust Blind Face Restoration with Codebook Lookup Transformer项目地址: https://gitcode.com/gh_mirrors/co/CodeFormer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考