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

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

image-20210403000923387

作为一个技术号主,今天给大家介绍一个老照片修复相关的 Github 项目,并手把手教学,带大家将这个项目跑起来,

学会了之后可以把项目应用到自己收集的图片上,有想法的读者也可以借助这个项目帮别人修复照片赚点零花钱,岂不美滋滋~

Github 项目叫 Bringing-Old-Photos-Back-to-Life,是微软公司把去年发表在 CVPR 上的一篇期刊的源码,项目地址 https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life

名称就代表了项目用途:对老照片进行修复,恢复它原有的样貌;下面是官方公布的一些修复前后对比效果图,看上去是不是很赞 ~

image-20210403003019086

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

  • 1,旧照片全景修复;
  • 2,照片折痕识别、修复;
  • 3,照片人脸识别、人脸部分增强;

上面对项目一个简单介绍以后,下面开始正式介绍它的用法,先交代一下本次的测试环境:

  • OS: Windows 10,
  • Python :python 3.7.6,
  • IDE : Pycharm;
  • torch : 1.6.0+cpu
  • torchvision : 0.7.0+cpu

1,下载项目,克隆到本地

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4hcf5lUC-1617634643560)(https://images.zeroingpython.top/img/image-20210403081648547.png)]

项目下载方式有两种,Download Zip 或 git 命令(需借助 Git 工具) ;Download Zip 通过浏览器来下载,得到的是个解压包,下载到本地之后解压即可

解压后的目录如下:

image-20210403093607006

2,配置环境

该项目是基于深度学习训练得到的,但官方已经提供了训练好的权重文件,可以直接下载下来供我们使用(网络当然也可以重新训练,但极其不建议,因为耗时、耗钱并且最终权重精度远不如官方),一共需要配置 3 部分权重文件

2.1 Global 权重配置

该权重是用于图片全局修复,下载地址

https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zip

下载后把文件加压至 ./Global 文件目录下

2.2 Face_Detection 权重

在前面项目介绍中,提到过该项目除了可以照片修复之外,还可以进行人脸增强,简单理解就是把模糊的人脸图像清晰化

人脸增强 首先需要解决的是人脸识别问题,项目中借助的是一个Python库 dlib,关于 dlib 使用可以参考之前我写的一篇文章

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/Synchronized-BatchNorm-PyTorch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k4lwGZ5I-1617634643569)(https://images.zeroingpython.top/img/image-20210403121032169.png)]

将仓库克隆到本地,解压后目录如下:

image-20210403121156745

项目中两处地方用到了 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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u2Ym6MZW-1617634643575)(https://images.zeroingpython.top/img/image-20210403122243629.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMLSqWoM-1617634643578)(https://images.zeroingpython.top/img/image-20210403122934310.png)]

2.5 安装依赖项

在终端输入下面命令,安装项目中所需的第三方程序包

pip install -r requirements.txt

3,运行,修复自己收集的图片

上面环境配置好之后,下面就可以正常使用了;在项目中官方给的有测试图片,存放在 test_images, 分为两类

  • old 老照片,没有折痕的照片;
image-20210403131857917
  • old_w_scratch ,有折痕的照片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZUPxVwtm-1617634643583)(https://images.zeroingpython.top/img/image-20210403131925463.png)]

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

最终的运行结果

image-20210403142509068

官方在 ./test_images/old./test_images/old_w_scratch 文件夹下提供的有测试图片,读者们想要测试自己收集的图片时,有两种方法

  • 1,把自己图片放入默认 --input_folder 文件夹中,运行时无需指定 --input_folder 参数
  • 2,运行命令指定 --input_folder参数,后跟自己存放照片的文件路径;

关于此项目的使用方法,基本就这些了,最后在这里贴几张我运行得到的几张修复图

不带折痕的图像修复

图一

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eP1jRJb8-1617634643589)(https://images.zeroingpython.top/img/image-20210403143657329.png)]

图二

image-20210403143728767

图三

image-20210403143958480

图四

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVq4jqjT-1617634643597)(https://images.zeroingpython.top/img/image-20210403144155738.png)]

上面这张图大致一看没什么变化,是因为原图像本身就很清晰,但如果把图片放大的话就明显看到两者之间的差距

放大后的左图

image-20210403144545563

放大后的右图

image-20210403144557891

带有折痕的图片修复

图一

image-20210403144719774

图二

image-20210403144750227

图三

image-20210403144805095

项目源码获取

为了方便起见,我已经把配置好的项目文件打包成一个解压包,解压后只需安装项目中的所需依赖项即可,无需再配置权重文件;

pip install -r requirements.txt

项目源码获取方式,关注微信公众号:小张Python,后台回复关键字 210404 即可

小结

关于本项目中图像修复技术原理,这里并没有特别介绍,如果只是想用一下这项技术的话,这篇文章已经足够能帮到你了;当然如果有读者想深入了解一下这项技术的背后原理,可以阅读一下原 Paper《Bringing Old Photos Back to Life》

好了,以上就是本篇文章的全部内容了,最后感谢大家的阅读,我们下期见~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容