火爆全网的老照片修复技术,今天手把手教你用怎么玩

小伙伴们应该在别的自媒体平台上看到过,关于老照片修复的文章或短视频,而这项技术目前在用户群体中很受欢迎,目前作为服务早早已经在各大电商平台售卖了
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

作为一个技术号主,今天给大家介绍一个老照片修复相关的 Github 项目,并手把手教学,带大家将这个项目起来,
学会了之后可以把项目应用到自己收集的图片上,有想法的读者也可以借助这个项目帮别人修复照片赚点零花钱,岂不美滋滋~
Github 项目叫Bringing-Old-Photos-Back-to-Life,是微软公司把去年发表在 CVPR 上的一篇期刊的源码,项目地址 https://github.com/microsoft/...
名称就代表了项目用途:对老照片进行修复,恢复它原有的样貌;下面是官方公布的一些修复前后对比效果图,看上去是不是很赞 ~
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

根据上面给定的样例,如果对项目的功能细分的话可分为以下三类

  • 1,旧照片全景修复;
  • 2,照片折痕识别、修复;
  • 3,照片人脸识别、人脸部分增强;
上面对项目一个简单介绍以后,下面开始正式介绍它的用法,先交代一下本次的测试环境:
  • OS: Windows 10,
  • Python :python 3.7.6,
  • IDE : Pycharm;
  • torch : 1.6.0+cpu
  • torchvision :0.7.0+cpu
1,下载项目,克隆到本地 火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

项目下载方式有两种,Download Zip 或 git 命令(需借助 Git 工具) ;Download Zip 通过浏览器来下载,得到的是个解压包,下载到本地之后解压即可
解压后的目录如下:
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

2,配置环境 该项目是基于深度学习训练得到的,但官方已经提供了训练好的权重文件,可以直接下载下来供我们使用(网络当然也可以重新训练,但极其不建议,因为耗时、耗钱并且最终权重精度远不如官方),一共需要配置 3 部分权重文件
2.1 Global 权重配置 该权重是用于图片全局修复,下载地址
https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zip

下载后把文件加压至 ./Global 文件目录下
2.2Face_Detection 权重 在前面项目介绍中,提到过该项目除了可以照片修复之外,还可以进行人脸增强,简单理解就是把模糊的人脸图像清晰化
人脸增强 首先需要解决的是人脸识别问题,项目中借助的是一个Python库 dlib,关于 dlib 使用可以参考之前我写的一篇文章 实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!
dlib 库安装也可以通过 pip 工具,但需要注意两个点 :
  • 1, pip 安装 dlib 之前,需提前安装好 Cmake,pip install Cmake,否则会安装失败;
  • 2,用 dlib 进行人脸识别需要下载一个权重文件
dlib 权重文件下载地址如下,下载完之后将权重文件解压至 文件夹 ./Face_Detection/
http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

2.3 Face_Enhancement 权重 Face_Enhancement 权重用于人脸部位增强,下载后权重文件解压至 ./Face_Enhancement ,下载地址如下
https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Face_Enhancement/checkpoints.zip

2.4 Synchronized-BatchNorm-PyTorch 这是 Pytorch 框架的一个 同步BatchNorm 一个分支仓库,此项目中用到了这个模块;仓库地址
https://github.com/vacancy/Sy...
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

将仓库克隆到本地,解压后目录如下:
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

项目中两处地方用到了 sync_batchnorm 文件夹,这里需要注意下一下
1,将 sync_batchnorm 复制到 Face_Enhancement/models/network 文件夹下,还需要改动一点项目中的代码部分,找到 Face_Enhancement/models/network/normalize.py 脚本,更改第 8 行代码,将
from models.networks.sync_batchnorm import SynchronizedBatchNorm2d

改为
from models.networks.sync_batchnorm.batchnorm import SynchronizedBatchNorm2d

火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

2,将 sync_batchnorm 复制到 Global/detection_models ,找到 Global/detection_models/network.py 脚本,更改第7 行代码,将
from detection_models.sync_batchnorm import DataParallelWithCallback

改为
from detection_models.sync_batchnorm.replicate import DataParallelWithCallback

火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

2.5 安装依赖项 在终端输入下面命令,安装项目中所需的第三方程序包
pip install -r requirements.txt

3,运行,修复自己收集的图片 上面环境配置好之后,下面就可以正常使用了;在项目中官方给的有测试图片,存放在 test_images, 分为两类
  • old 老照片,没有折痕的照片;
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

  • old_w_scratch ,有折痕的照片
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

3.1 修复不带折痕的照片 对于不带折痕的照片,终端输入时需要三个参数,
  • --input_folder ,存放需要修复图片的文件路径,不指定时默认为 ./test_images/old;
  • --output_folder,存放修复后图片的文件路径,不指定时默认为 ./output/
  • --GPU,指定用到的 GPU 编号,可设定为 00,10,1,2,没有 GPU 配置时 设为 -1 表示运行时只用 CPU ;设定 GPU 时需要确保配置的 Pytorch 是 GPU 版本,相对 CPU 的话,GPU 测试时间会更短;
测试时,启动命令如下,这里 --input_folder、--output_folder参数都为默认,所以命令中加这两个参数,电脑比较渣没有 GPU所以设为 -1;
python run.py --GPU -1

3.2 修复带折痕的照片 与不带折痕相比,修复带折痕照片要多加入一个参数 --with_scratch,还有一点不同的是存放原照片默认路径更改为为 ./test_images/old_w_scratch ,其它参数设置见 3.1
终端中输入的测试命令如下:
python run.py --GPU -1 --with_scratch

最终的运行结果
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

官方在 ./test_images/old./test_images/old_w_scratch 文件夹下提供的有测试图片,读者们想要测试自己收集的图片时,有两种方法
  • 1,把自己图片放入默认 --input_folder 文件夹中,运行时无需指定 --input_folder 参数
  • 2,运行命令指定 --input_folder参数,后跟自己存放照片的文件路径;
关于此项目的使用方法,基本就这些了,最后在这里贴几张我运行得到的几张修复图
不带折痕的
图一
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

图二
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

图三
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

图四
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

上面这张图大致一看没什么变化,是因为原图像本身就很清晰,但如果把图片放大的话就明显看到两者之间的差距
放大后的左图
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

放大后的右图
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

带有折痕的图片修复
图一
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

图二
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

图三
火爆全网的老照片修复技术,今天手把手教你用怎么玩
文章图片

小结 关于本项目中图像修复技术原理,这里并没有特别介绍,如果只是想用一下这项技术的话,这篇文章已经足够能帮到你了。
【火爆全网的老照片修复技术,今天手把手教你用怎么玩】以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料。或是前往编程学习网,了解更多编程技术知识。

    推荐阅读