使用DeOldify对旧图片旧视频进行着色

1. 基本简介

1.1 DeOldify简介

DeOldify 是由 Jason Antic 开发和更新的。这是目前最先进的黑白图像、视频的着色方法,所有的东西都是开源的。

基本原理:它使用了一种名为NoGAN的新型GAN训练方法,该方法是作者自己开发的,用来解决在使用由一个鉴别器和一个生成器组成的正常对抗性网络架构进行训练时出现的主要问题。典型地,GAN训练同时训练鉴别器和生成器,生成器一开始是完全随机的,随着时间的推移,它会欺骗鉴别器,鉴别器试图辨别出图像是生成的还是真实的。

项目地址:https://github.com/jantic/DeOldify

效果演示:

DeOldify旧照片着色

1.2 Google Colab简介

Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果。它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行。

Colaboratory 笔记本存储在 Google 云端硬盘中,并且可以共享,就如同您使用 Google 文档或表格一样,Colaboratory 可免费使用。

利用Colaboratory ,可以方便的使用Keras,TensorFlow,PyTorch,OpenCV等框架进行深度学习应用的开发。

与其它云服务相比,最重要的特点是Colab提供GPU并完全免费,详细介绍及使用方法见 faq page

2. 对旧图片旧视频进行着色

2.1 官方提供的在线服务及API

如果不想折腾的话,可以使用官方提供的 DeOldify Image Colorization on DeepAI,可以直接在这里上传图片对旧照片进行着色,同时该网站还提供了API,供程序中调用,下文可以不用看了。

2.2 DeOldify的预训练模型

预训练模型:DeOldify 是基于深度学习开发的,需要用到预训练权重,这里项目开发者已经把训练好的权重上传了,我们可以直接拿来使用,不需要我们再训练。

  • Artistic 权重,会使图片上色效果更大胆 一些,下载地址:

    1
    https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth
  • Stable 权重,相对于 Artistic 上色效果更保守一些,下载地址:

    1
    https://www.dropbox.com/s/usf7uifrctqw9rl/ColorizeStable_gen.pth
  • Video 权重,此权重文件用来给视频上色,下载地址:

    1
    https://data.deepai.org/deoldify/ColorizeVideo_gen.pth

权重文件下载完毕后,在项目根目录下创建一个 models 文件夹,把下载好的权重文件放入 models 文件夹内即可。

2.3 使用Google Colab进行部署

由于运行深度学习的项目对机器性能要求较高,因此下文使用了官方提供的预训练模型,并白嫖 Google Colab 进行部署。DeOldify对旧照片、旧视频的着色的使用流程基本一致,只不过用到的预训练模型不同而已,以旧照片着色为例。

官方也提供了Google Colab,不过那个是英文版的,我没有尝试了,下面我用的是网上找的一份中文版的,将其保存到自己的Google Drive里,地址:https://drive.google.com/drive/folders/1G6nTfabx10P3nSzL5lN-SEnoM2Y0jeRh?usp=sharing

注:使用Google Colab需要翻墙,这个要保存到自己的云端硬盘里,我的你们是无法执行的。

DeOldify的Google-Colab

打开之后先去执行该代码块(悬浮即可显示执行按钮)

1
2
3
4
5
6
7
8
9
10
11
#点击左侧按钮一键配置环境
!git clone https://github.com/jantic/DeOldify.git DeOldify
%cd /content/DeOldify
!pip install -r /content/DeOldify/requirements.txt
import fastai
from deoldify.visualize import *

torch.backends.cudnn.benchmark = True
!mkdir 'models'
!wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O ./models/ColorizeArtistic_gen.pth
colorizer = get_image_colorizer(artistic=True)

说明:预训练模型的地址如果失效了就自己找个吧,替换掉即可。如果要使用 Stable 权重,需要把下面改成False

1
2
Artistic 权重  -- colorizer = get_image_colorizer(artistic=True)
Stable 权重 -- colorizer = get_image_colorizer(artistic=False)

踩过的坑:第一次执行的时候可能会出现依赖安装失败的问题,不要慌。点击 RESTART RUNTIME 按钮,等一会儿再重新执行代码块,第二次应该就可以安装成功了,成功的话左侧有个绿色箭头。

DeOldify

安装成功环境以后,再在下面的 source_url 里填入旧照片链接(本地图片的话可以先上传到图床),然后点击左侧的执行按钮,等待一会儿即可生成着色后的照片。

DeOldify旧照片着色实践

注:如果你的旧照片里本身就有颜色的话,生成效果可能会不太好。因为它会先把原有颜色替换成黑白的,再根据算法生成新的颜色,会导致与原图的颜色不一致。如果你想要保持一致的话,就需要借助PS的蒙版进行二次处理了。

3. 参考资料

[1] DeOldify黑白旧照片着色神器:基于NoGAN的深度学习来实现旧照着色还原 from 佰阅部落

[2] 人工智能DeOldify修复黑白图片和视频 from Bilibili

[3] 黑白老照片上色,手把手教你用Python怎么玩儿!from 简书

[4] Google Colab免费GPU使用教程 from Rogn

[5] 一个基于深度学习的项目,用于着色和恢复旧图像和视频 from Github

[6] Colaboratory常见问题解答 from Google官方文档