老照片作为时光记忆的载体,不只是过去美好时光的传承者,同时也是每个人的情结和怀念的寄托。
随着时间的流逝,许多老照片都因为自然或人为原因,受到了侵蚀损坏,画面模糊、褪色、照片磨损严重等现象,甚至还有的因为保管不好导致照片面目全非。
今天的这个Python模块叫GFPGAN,它能够让这些老照片恢复原有的光泽,使用了GAN算法对照片进行修复,效果比其他同类模型都有更好的表现。本模块支持Python3.7+版本。
【注】文末提供技术交流群
1.准备
# 克隆项目
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_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
模型微调的难度比较大,可能会遇到不少问题,需要大家善于利用搜索引擎解决问题。实在有不会的可以加群询问。
我们的文章到此就结束啦
技术交流
目前已开通了技术交流群,群友已超过1000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、发送如下图片至微信,长按识别,后台回复:加群;
- 方式②、微信搜索公众号:机器学习社区,后台回复:加群;
- 方式③、可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。