GFPGAN
GFPGAN(Generative Facial Prior-GAN)是由腾讯ARC(Applied Research Center)开发的一种实用的真实世界人脸修复算法。它专门设计用于人脸图像的生成和优化,尤其在低质量人脸图像的超分辨率恢复方面表现出色。以下是GFPGAN的一些主要特点和功能:
-
高分辨率生成:GFPGAN能够生成高分辨率的人脸图像,在生成过程中能够保持细节和真实感。
-
人脸美化:GFPGAN可以对输入的人脸图像进行美化和优化,去除皱纹、瑕疵,增强肤色等。
-
多样性控制:用户可以通过调整参数来控制生成图像的风格和特征,例如改变年龄、性别、肤色等。
-
利用预训练人脸GAN的先验知识:GFPGAN利用预训练人脸GAN(如StyleGAN2)中蕴含的丰富和多样化的先验知识来指导人脸修复过程。
-
盲修复:GFPGAN不需要对输入图像有任何先验假设,可以实现真正的盲修复。
-
生成结果自然,身份一致性好:GFPGAN生成的结果更加自然,身份一致性好。
-
处理非常低质量的输入图像:GFPGAN可以处理非常低质量的输入图像。
-
支持对非人脸区域(背景)进行增强:GFPGAN还支持对非人脸区域(背景)进行增强。
-
易于部署:提供了无需CUDA扩展的“干净”版本,易于部署。
GFPGAN通过结合生成对抗网络(GAN)和门控频率先验技术,巧妙地结合了高频细节恢复与低频结构保持,旨在精确恢复图像的细节,同时保持人像的整体结构,从而实现更加自然、真实的结果。它的工作原理主要包括输入一张需要修复的人脸图像,利用预训练的人脸GAN提取丰富的人脸先验知识,设计一个GAN网络,生成器负责修复图像,判别器负责区分真实和生成的图像,在训练过程中,生成器学习如何利用人脸先验知识来修复输入图像。
过程
-
源码下载:https://github.com/TencentARC/GFPGAN
-
安装basicsr:
pip install basicsr
-
安装facexlib:
pip install facexlib
-
下载预训练模型:也可以直接下载放到本地项目对应位置
wget https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth -P experiments/pretrained_models
5. 直接推理: python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2
;报错如下;
- 根据报错查了下原因,因为这个问题通常是由于在 PyTorch 2.0 以上的版本中,
torchvision.transforms.functional_tensor
模块的命名发生了变化。在新版本中,该模块名前增加了一个下划线,正确的模块名应该是torchvision.transforms._functional_tensor
。因此,修改上面👆下载的basicsr源码中degradations.py文件中的导入库functional_tensor
改成_functional_tensor
。 【所以最好还是重新配置一个纯净的pytorch虚拟环境最省事😄,别依赖已有的pytorch环境~~】
-
继续推理:
python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2
-
下载下来的模型权重:detection_Resnet50_Final.pth、parsing_parsenet.pth
-
结果:cmp、cropped_faces、restored_faces、restored_imgs四个文件夹
-
cmp文件夹:测试图像的人脸修复前后对比图,效果还是非常不错的。
-
cropped_faces 文件夹:从测试图像集中裁剪出人脸部分原图
-
restored_faces 文件夹:存储修复增强后人脸图像
-
restored_imgs 文件夹:存储人脸修复增强后的完整图片。
-
修复前后完整图片对比:修复增强后 🆚修复增强后
后续
- 后续有时间根据源码训练自己的模型。