老照片作为时光记忆的载体,不只是过去美好时光的传承者,同时也是每个人的情结和怀念的寄托。
随着时间的流逝,许多老照片都因为自然或人为原因,受到了侵蚀损坏,画面模糊、褪色、照片磨损严重等现象,甚至还有的因为保管不好导致照片面目全非。
今天的这个Python模块叫GFPGAN,它能够让这些老照片恢复原有的光泽,使用了GAN算法对照片进行修复,效果比其他同类模型都有更好的表现。本模块支持Python3.7+版本。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器来编写小型Python项目:Python 编程的最好搭档—VSCode 详细指南
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:
# 克隆项目 git clone https://github.com/TencentARC/GFPGAN.git # 进入项目 cd GFPGAN # 安装依赖 pip install basicsr pip install facexlib pip install -r requirements.txt pip install realesrgan # 安装程序 python setup.py develop
2.使用GFPGAN进行老照片面部恢复
GFPGAN模型需要通过数据集训练得到,由于训练需要使用的数据量和算力非常大,作者团队提供了许多预处理好的模型给普通用户下载,这样我们就能绕过训练这个步骤直接使用模型,下载地址如下:
https://github.com/TencentARC/GFPGAN/releases/download/v0.2.0/GFPGANCleanv1-NoCE-C2.pth
如果你无法访问GitHub,也可以在Python实用宝典后台回复:GFPGAN 下载。包含了本项目源代码及许多其他预训练好的模型,包括:
- GFPGANCleanv1-NoCE-C2.pth:无法染色;不需要 CUDA 扩展。
- GFPGANv1.pth:论文使用的模型,能够对旧照片进行染色。
将想要使用的预训练模型放入 experiments/pretrained_models 文件夹下就可以开始使用了。
使用方法非常简单,进入项目目录后输入以下命令:
python inference_gfpgan.py --model_path experiments/pretrained_models/GFPGANv1.pth --test_path inputs/cropped_faces --save_root results
其中,各个参数的意义如下:
model_path: 使用的模型的位置。
test_path: 需要转换的老照片的路径。
save_root: 转换结果存放的路径。
效果如下:
可见其修复效果是非常优秀的,如果你们也有需要修复的老照片,可以尝试使用手机的照片扫描仪软件扫描后使用此模块修复。
3.微调模型
如果你对模型的输出结果不是很满意,你还可以基于作者团队给出的模型做微调。微调能实现以下目的:
1.如果你有更高质量的人脸数据,可以提高修复效果。
2.你可能需要对数据做一些微处理,比如美妆等。
微调流程如下:
1.准备好训练数据集:https://github.com/NVlabs/ffhq-dataset
2.下载预训练模型和其他你自己的数据,把它们放在 experiments/pretrained_models
文件夹里。我们公众号后台提供以下预训练模型:
- 预训练的 StyleGAN2 模型:StyleGAN2_512_Cmul1_FFHQ_B12G4_scratch_800k.pth
- FFHQ 位置:FFHQ_eye_mouth_landmarks_512.pth
- 一个简单的 ArcFace 模型:arcface_resnet18.pth
3.根据自身需求,相应地修改配置文件 options/train_gfpgan_v1.yml。
4.输入命令训练:
python -m torch.distributed.launch --nproc_per_node=4 --master_port=22021 gfpgan/train.py -opt options/train_gfpgan_v1.yml --launcher pytorch
模型微调的难度比较大,可能会遇到不少问题,大家要善于利用搜索引擎解决问题。
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典