Windows 环境实战开源项目GFPGAN 教程

40 阅读3分钟

GFPGAN

GFPGAN(Generative Facial Prior-GAN)是由腾讯ARC(Applied Research Center)开发的一种实用的真实世界人脸修复算法。它专门设计用于人脸图像的生成和优化,尤其在低质量人脸图像的超分辨率恢复方面表现出色。以下是GFPGAN的一些主要特点和功能:

  1. 高分辨率生成:GFPGAN能够生成高分辨率的人脸图像,在生成过程中能够保持细节和真实感。

  2. 人脸美化:GFPGAN可以对输入的人脸图像进行美化和优化,去除皱纹、瑕疵,增强肤色等。

  3. 多样性控制:用户可以通过调整参数来控制生成图像的风格和特征,例如改变年龄、性别、肤色等。

  4. 利用预训练人脸GAN的先验知识:GFPGAN利用预训练人脸GAN(如StyleGAN2)中蕴含的丰富和多样化的先验知识来指导人脸修复过程。

  5. 盲修复:GFPGAN不需要对输入图像有任何先验假设,可以实现真正的盲修复。

  6. 生成结果自然,身份一致性好:GFPGAN生成的结果更加自然,身份一致性好。

  7. 处理非常低质量的输入图像:GFPGAN可以处理非常低质量的输入图像。

  8. 支持对非人脸区域(背景)进行增强:GFPGAN还支持对非人脸区域(背景)进行增强。

  9. 易于部署:提供了无需CUDA扩展的“干净”版本,易于部署。

GFPGAN通过结合生成对抗网络(GAN)和门控频率先验技术,巧妙地结合了高频细节恢复与低频结构保持,旨在精确恢复图像的细节,同时保持人像的整体结构,从而实现更加自然、真实的结果。它的工作原理主要包括输入一张需要修复的人脸图像,利用预训练的人脸GAN提取丰富的人脸先验知识,设计一个GAN网络,生成器负责修复图像,判别器负责区分真实和生成的图像,在训练过程中,生成器学习如何利用人脸先验知识来修复输入图像。

过程

  1. 源码下载:github.com/TencentARC/…

  2. 安装basicsr:pip install basicsr 在这里插入图片描述

  3. 安装facexlib:pip install facexlib 在这里插入图片描述

  4. 下载预训练模型:也可以直接下载放到本地项目对应位置

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环境~~】 在这里插入图片描述
  1. 继续推理: python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2 在这里插入图片描述

  2. 下载下来的模型权重:detection_Resnet50_Final.pth、parsing_parsenet.pth 在这里插入图片描述

  3. 结果:cmp、cropped_faces、restored_faces、restored_imgs四个文件夹 在这里插入图片描述

  4. cmp文件夹:测试图像的人脸修复前后对比图,效果还是非常不错的。

  5. cropped_faces 文件夹:从测试图像集中裁剪出人脸部分原图 在这里插入图片描述

  6. restored_faces 文件夹:存储修复增强后人脸图像 在这里插入图片描述

  7. restored_imgs 文件夹:存储人脸修复增强后的完整图片。 在这里插入图片描述

  8. 修复前后完整图片对比:修复增强后 🆚修复增强后 在这里插入图片描述 在这里插入图片描述

后续

  • 后续有时间根据源码训练自己的模型。