关注公众号:【小张Python】,为你准备了 50+ 本Python 精品电子书籍 与 50G + 优质视频学习资料,后台回复关键字:1024 即可获取;如果对博文内容有什么疑问,后台添加作者【个人微信】,可与作者直接进行交流

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

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

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

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

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

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

  • 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 通过浏览器来下载,得到的是个解压包,下载到本地之后解压即可

解压后的目录如下:

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

]

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

项目中两处地方用到了 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参数,后跟自己存放照片的文件路径;

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

不带折痕的图像修复

图一

]

图二

图三

图四

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

放大后的左图

放大后的右图

带有折痕的图片修复

图一

图二

图三

项目源码获取

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

pip install -r requirements.txt

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

小结

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

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

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

  1. 还在找怎么修复老照片?火爆全网的老照片修复技术方法其实很简单

    火爆全网的老照片修复技术,今天终于被我找到了!试了一下,模糊照片秒变清晰,头发丝都能看得见,真的太神奇了! 相信每个小伙伴的家中,或多或少会有一些年代久远的老照片.这些照片承载着的是老一辈人过去的回忆 ...

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

    大家好,我是辰哥~ 点击下方名片关注和星标『Python研究者』!

  3. CVPR 2020丨图像超清化+老照片修复技术,拯救你所有的模糊、破损照片

    编者按:也许你曾从橱柜里翻出家人们压箱底的老照片,而它们已经泛黄发脆,甚至有些褪色:也许你在拍照时不慎手抖,只好把糊成一片的照片都丢进"最近删除".而微软亚洲研究院在计算机视觉顶会 ...

  4. 图像超清化+老照片修复技术,拯救所有模糊和黑白的照片

    也许你曾从柜子里翻出家人们压箱底的老照片,它们已经变黄.变脆,甚至褪色:科技的进步AI智能图像修复技术--基于领先的深度学习技术,将使这些照片奇迹般地回归. 从古老的胶片相机到今天的数字时代,人类捕捉 ...

  5. 黑白老照片上色,手把手教你用Python怎么玩 DeOldify!

    各位读者们,大家好啊,上个月初写了一篇关于老照片修复的教程,有读者看完不过瘾,表示想让我再安排一篇黑白照片上色教程,于是就有了这篇文章的由来 DeOldify 介绍 开始之前先对这个项目做个简单介绍, ...

  6. win10系统崩溃怎么修复_手把手教你“无损”修复win10系统

    平时在电脑的使用中,大家偶都遇到一些软件故障或者系统的某些功能出问题. 比如我前段时间就遇到USB驱动的故障,导致USB鼠标键盘无法使用.但是在BIOS下,键盘鼠标都是正常的,这样就确定是系统的故障. ...

  7. 电脑win7蓝屏没有修复计算机,手把手教你win7蓝屏如何修复

    电脑用久了,难免会出现这样那样的问题.比如说蓝屏故障,该如何解决呢?相信许多朋友在遇到蓝屏故障时都是不知道要如何执行修复的,针对这个问题接下来小编就将整理好的win7电脑蓝屏修复教程分享给大家. wi ...

  8. coreos 安装 mysql_技术|手把手教你在 CoreOS 上构建你的第一个应用

    [编者的话]作者以自己的Mac笔记本为例,介绍了如何在CoreOS上安装WordPress应用,没有过多的理论解释,全部是实战类教程,推荐想快速了解CoreOS的同学阅读. 我相信你一定听说过Core ...

  9. mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构

    1 什么是MySQL的复制 MySQL的主从复制可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave)上,进而可以保证数据有多份冗余. 默认情况下,属于异步复制,所 ...

最新文章

  1. PHP的str_split分割字符串成数组
  2. 项目管理工具篇(一、Maven)
  3. wait()和sleep()
  4. 小网站asp好还是php好,网站程序是asp好还是php好,哪个更利于优化?
  5. redis——redis事务相关处理
  6. 数据库及对应数据文件使用查询
  7. python使用matplotlib超全画图
  8. 爬虫抓图全网最新方法,这一次终于是4k高清美图,只因为我不下载JPG图片!
  9. linux文件名补全,Linux中10个关于命令行自动补全的技巧
  10. 从零开始javaweb项目——毕业设计参考指南
  11. 我爱淘二次冲刺阶段2
  12. 二分法求中点最佳code写法
  13. 实现简单的三D立方体自动旋转
  14. Linux Socket编程入门——浅显易懂
  15. 从PCB的结构与工艺理解阻焊(Solder mask)与助焊(Paster Mask)
  16. 【深度学习笔记】常见的图像增强方法:scaling、rotating、flipping、random cropping
  17. python模拟登录qq账号密码_QQ邮箱模拟登录(密码、头像、QQ邮箱爬取)
  18. 【0151】gdb调试libpq与postgres之间通信的技巧
  19. 计算机里一些没有用的文件,电脑C盘有哪些文件可以删除的没用的
  20. 重装机兵可以看经验值的计算机,自己整理的MMR地球救济中心所有可以查看的电脑中的话...

热门文章

  1. 布尔表达式、条件判断
  2. ae需要安装哪些插件?——AE常用插件脚本预设整理合集(不定期更新)
  3. 2021年嵌入式面试题汇总(最新经典)
  4. 什么是哈希冲突?怎样解决哈希冲突?
  5. 油品调和计算软件_油品调和计算
  6. Windows的任务调度机制
  7. Python爬取视频(m3u8格式)
  8. Apache-Apollo-MQTT最新地址
  9. cf935d(概率dp+逆元)
  10. java生成二维码,读取(解析)二维码图片