点赞再看,养成习惯,微信公众号搜索【JackCui-AI】关注这个爱发技术干货的程序员。本文 GitHub Jack-Cherish/PythonPark 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

一、前言

你们家里,有没有高颜值的长辈老照片?

亦或是黑白、亦或是模糊,甚至是褶皱破损。

老照片承载着生命中的每一份意义,那是一代代人的回忆。

今天,Jack Cui 教大家两个算法,帮你搞定不清晰的、褶皱的老照片,黑白照片变彩照。

模糊照片,一键高清:

褶皱照片,一键复原:

黑白照片,一键上色:

在这个人工智能的时代,算法都能帮你搞定

二、算法

模糊、褶皱照片修复,是微软 2020 年最新的一篇 CVPR 文章:

「Bringing Old Photo Back to Life」

黑白照片上色,是一个经典上色老算法(2018年):

「DeOldify」

1、Bringing Old Photo Back to Life

该文作者来自香港城市大学、微软亚洲研究院、微软云 + AI 、中国科学技术大学。

作者使用变分自动编码机(VAE)将图像变换到隐空间,并在隐空间进行图像恢复操作。

听不懂,说人话!

举个例子,国际象棋大师观察棋盘 5 秒,就能记住所有棋子的位置,而常人是无法办到的。

但棋子的摆放必须是实战中的棋局(也就是棋子存在的内在规则),棋子随机摆放可不行。

象棋大师并不是记忆力优于我们,而是经验丰富,很擅于识别象棋模式,从而高效地记忆棋局。

自动编码机(VAE)就是「象棋大师」,它可以找到图片的内在规则(隐空间),然后通过自己的方式表示出来。

作者使用了两个 VAE:

第一个 VAE 用于将合成的老照片(模糊、磨损)进行编码到隐空间。

第二个 VAE 用于将对应的干净的老照片进行编码。

然后,在隐空间学习从污损的老照片到干净照片的映射。

就这样,实现了一个老照片的修复算法。

这个有点像在学习控制图片清晰、磨损的一个特征表示,通过控制这个特征,可以达到修复破损照片的目的。

论文的修复效果:

算法开源,还有预训练模型,可以直接测试效果。

项目地址:

https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life

项目依赖于「Synchronized-BatchNorm-PyTorch」,按照教程配置即可。

第一步,clone 工程:

git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life

第二步,进入工程目录,clone 依赖项目:

cd Face_Enhancement/models/networks/
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch
cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .
cd ../../../cd Global/detection_models
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch
cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .
cd ../../

第三步,下载预训练模型。

cd Face_Detection/
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
bzip2 -d shape_predictor_68_face_landmarks.dat.bz2
cd ../

然后分别下载 Global 和 Face_Enhancement 的训练好的模型,并解压,放在对应目录下:

Global:

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

Face_Enhancement:

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

下载速度慢,或者嫌麻烦,可以下载我打包好的工程,拿来直接用!

模型、代码、素材,工程下载地址(提取码:jack):

网盘链接:https://pan.baidu.com/s/1jVjd8dS0j0AnWeFI-7l-eA

使用方法:

没有裂痕的图像修复,就是图片不清晰,可以用如下指令:

python run.py --input_folder [test_image_folder_path] --output_folder [output_path] --GPU 0

将你想修复的图片放到 [test_image_folder_path] 目录下(自己指定),生成的图片会放到 [output_path] 目录中。

对于裂痕的图片,需要额外增加一个参数,指令如下:

python run.py --input_folder [test_image_folder_path] --output_folder [output_path] --GPU 0 --with_scratch

这里需要注意的是,指定的路径需要使用绝对路径

运行效果:

知乎视频​www.zhihu.com

2、DeOldify

「DeOldify」是一个图片上色算法。

曾经上过热搜的修复百年前老北京的影像,就是用的这个算法。

一切都是现成的,用起来很简单。

DeOldify 就是一种对抗生成网络的应用。

其原理是使用 NoGAN 技术,它结合了 GAN 训练的优点,比如出色的上色效果,同时也消除了一些副作用,比如画面着色不稳定、闪烁的现象。

算法出了很久,算法原理教程应该很多,这里就不再累述,我们直接看怎么用吧。

项目地址:

https://github.com/jantic/DeOldify

需要配置的上文一样,安装一些库,然后下载模型权重文件。

项目工程页里详细说明了下载哪些文件,需要安装什么。

配置好后,在工程目录编写如下代码:

#NOTE:  This must be the first call in order to work properly!
from deoldify import device
from deoldify.device_id import DeviceId
#choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)import torchif not torch.cuda.is_available():print('GPU not available.')import fastai
from deoldify.visualize import *
import warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")colorizer = get_image_colorizer(artistic=True)colorizer.plot_transformed_image("test_images/1.png", render_factor=10, compare=True)

test_images/1.png 为要上色的图片,运行程序,就可以实现为黑白照片上色。

还是,模型、代码、素材都已打包,工程下载地址(提取码:jack):

网盘链接:https://pan.baidu.com/s/17sma_a1ICJMY07KLnDpiww

打开 Jupyter 直接运行 run.ipynb 文件即可,生成的结果保存在 result_images 文件夹中。

除了处理图片,为视频上色也不在话下。

三、总结

家中,是否有一些黑白老照片?

为长辈修复下他们的老照片,是惊喜,也是心意。时光一逝永不回,往事只能回味~

长辈如有惊艳到,记得回来转发、点赞哦!

我是 Jack Cui,一个爱发技术干货的程序员,我们下期见~

文章持续更新,可以微信公众号搜索【JackCui-AI】第一时间阅读,本文 GitHub Jack-Cherish/PythonPark 已经收录,有大厂面试完整考点,欢迎Star。

satoshi自动上色算法_再见,老照片!百年老照片修复算法,那些高颜值的父母!...相关推荐

  1. Python_机器学习_算法_第1章_K-近邻算法

    Python_机器学习_算法_第1章_K-近邻算法 文章目录 Python_机器学习_算法_第1章_K-近邻算法 K-近邻算法 学习目标 1.1 K-近邻算法简介 学习目标 1 什么是K-近邻算法 1 ...

  2. 百年老照片修复算法,那些高颜值的父母!

    点赞再看,养成习惯,微信公众号搜索[JackCui-AI]关注这个爱发技术干货的程序员.本文 GitHub Jack-Cherish/PythonPark 已收录,有一线大厂面试完整考点.资料以及我的 ...

  3. 用Python修复百年老照片,那些高颜值的父母!

    前言 你们家里,有没有高颜值的长辈老照片? 亦或是黑白.亦或是模糊,甚至是褶皱破损. 老照片承载着生命中的每一份意义,那是一代代人的回忆. 今天,Jack Cui 教大家两个算法,帮你搞定不清晰的.褶 ...

  4. 错误录入 算法_如何使用验证错误率确定算法输出之间的关系

    错误录入 算法 Monument (www.monument.ai) enables you to quickly apply algorithms to data in a no-code inte ...

  5. java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析

    0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...

  6. 沃舍尔算法_[数据结构拾遗]图的最短路径算法

    前言 本专题旨在快速了解常见的数据结构和算法. 在需要使用到相应算法时,能够帮助你回忆出常用的实现方案并且知晓其优缺点和适用环境.并不涉及十分具体的实现细节描述. 图的最短路径算法 最短路径问题是图论 ...

  7. 利用python语言实现分类算法_使用python实现kNN分类算法

    k-近邻算法是基本的机器学习算法,算法的原理非常简单: 输入样本数据后,计算输入样本和参考样本之间的距离,找出离输入样本距离最近的k个样本,找出这k个样本中出现频率最高的类标签作为输入样本的类标签,很 ...

  8. prim算法_最小生成树(Kruskal和Prim算法)

    文章和资源同步更新至微信公众号:算法工程师之路 8月份会开启每日算法题系列,值得期待哦 上一篇文章,我们讲了图的创建和遍历,其中遍历的算法主要有BFS(广度优先算法)和DFS(深度优先算法)两种,并且 ...

  9. weka java 分类算法_使用Weka快速实践机器学习算法

    [译者注]在当下人工智能火爆发展的局面,每时每刻都有新的技术在诞生,但如果你是一个新手,Weka或许能帮助你直观.快速的感受机器学习带来的解决问题的新思路. Weka使机器学习的应用变得简单.高效并且 ...

最新文章

  1. JetBrains —— JetBrains系列IDE优化配置(提高启动和运行速度)
  2. centos7;windows下安装和使用spice
  3. pytorch:固定部分层参数,固定单个模型
  4. React 性能优化之批量处理 unstable_batchedUpdates
  5. 音乐社交娱乐教育APP Makeapp Wireframe Kit
  6. 【CCCC】L3-010 是否完全二叉搜索树 (30分),完全二叉树判断+层次遍历(奇怪的方法)
  7. rust代练吧_代练也配名正言顺?电竞协会被狂喷,只因颁发游戏代练师证书!...
  8. Lucene倒排索引简述 番外篇
  9. 提示非标准语法;请使用 ““ 来创建指向成员的指针
  10. [哲学部分]马克思主义基本原理概论思维导图
  11. java constants_Java Constants类代码示例
  12. Linux重置root 密码
  13. SQL SERVER 软件和安装步骤
  14. JAVA 输出杨辉三角形
  15. Zigzag 压缩小整数
  16. Python文件和数据格式化(教程)
  17. IE6不能直接打开下载的文件的解决办法
  18. The 2022 ICPC Asia Regionals Online Contest (II) J
  19. 云计算与大数据第16章 分布式内存计算平台Spark习题
  20. 已经删除的微信聊天记录怎么恢复?

热门文章

  1. Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.24.215] failed: connect timed ou
  2. 手机通讯录备份代码实现一
  3. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的办公一体化系统
  4. 苏州大学计算机组成题库11,苏州大学计算机组成题库(范文).doc
  5. Openwrt笔记-1-校园网连接
  6. java中常忽视的小问题
  7. 【转载】通往性能优化的天堂-地狱 JOIN方法说明
  8. 双启利器EasyBCD帮你找回消失了的Windows
  9. 采用HTML5搭建的多个网站尝鲜试用
  10. C++友元函数、友元类与类模板