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

各位读者们,大家好啊,上个月初写了一篇关于老照片修复的教程,有读者看完不过瘾,表示想让我再安排一篇黑白照片上色教程,于是就有了这篇文章的由来

image-20210424192054643

DeOldify 介绍

开始之前先对这个项目做个简单介绍,DeOldify 是一个关于给黑白照片上色的项目,是基于深度学习技术开发的,源码在 Github 上已经开源,目前收获了 13.4 k Star;去年有一个 B 站 Up主 制作了一个有关修复 100 年前老北京的视频

image-20210424195915091

其中用到的上色就用到了DeOldify 框架,DeOldify 创建的目的是为了给黑白照片上色,但让人惊艳的是它除了能处理图片外,也可以处理视频;

image-20210424200405209

DeOldify 的核心网络框架是 GAN ,对比以前上色技术有以下几个特点:

  • 1,老照片中的伪影在上色过程中会被消除;
  • 2,老照片的人脸部位来说,处理后皮肤会变得更光滑;
  • 3,呈现更详细、真实的渲染效果;

简单介绍后,下面开始正式介绍一下它的用法,本次的测试环境如下

  • OS: Windows 10;
  • Python : Python 3.7.6;
  • IDE : Pycharm;
  • pytorch : 1.7.0 ;
2,环境配置

2.1,项目克隆到本地

有两种方法可供选择

1, Git 命令

git@github.com:jantic/DeOldify.git

2,在Github 项目页面点击 Download ZIP 选项,将项目手动下载到到本地,Github 地址贴在下方

https://github.com/jantic/DeOldify

2.2,下载权重文件

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

本项目中用到的权重文件比较多,一共三个:

  • 1,Artistic 权重,会使图片上色效果 更 大胆 一些,下载地址:
https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth
  • 2,Stable 权重,相对于 Artistic 上色效果更保守一些,下载地址:
https://www.dropbox.com/s/usf7uifrctqw9rl/ColorizeStable_gen.pth
  • 3 ,Video 权重,此权重文件用来给视频上色,下载地址
https://data.deepai.org/deoldify/ColorizeVideo_gen.pth

权重文件下载完毕后,在项目根目录下创建一个 models 文件夹,把下载好的三个权重文件放入 models 文件夹内,项目根目录排列如下

image-20210424214700383

2.3,安装依赖项

在终端中输入如下命令,安装项目所需要的第三方扩展库;

pip install -r requirements.txt

第三方扩展库安装完毕之后,需要提醒一下,本项目是基于 Pytorch 进行开发的,在 requirements.txt 中作者并没有加入这 torch 依赖库,所以在启动项目之前请确保 torch 、torchvision 等库已经安装到你的运行环境中;

Tip : 如果后面你想用到 GPU 加速效果,CUDA 和 Cudnn 等 GPU 加速包也需要提前配好

3 启动项目

环境配置好之后,下面的步骤就比较简单了,在主项目下创建一个脚本作为程序运行入口

3.1,照片上色

给照片上色的话,在主脚本内填入下面代码块

from deoldify import device
from deoldify.device_id import DeviceId
#choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)
from deoldify.visualize import *

plt.style.use('dark_background')
torch.backends.cudnn.benchmark=True

import warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")

colorizer = get_image_colorizer(artistic=True)

render_factor=35

source_path = 'test_images/image.png'

result_path = None

colorizer.plot_transformed_image(path=source_path, render_factor=render_factor, compare=True)

代码中有几个参数简单介绍一下:

  • device 指定inference 时用到的 GPU 型号,根据自己情况从下面选项中选择一个即可
from enum import IntEnum

class DeviceId(IntEnum):
    GPU0 = 0,
    GPU1 = 1,
    GPU2 = 2,
    GPU3 = 3,
    GPU4 = 4,
    GPU5 = 5,
    GPU6 = 6,
    GPU7 = 7,
    CPU = 99
device.set(device=DeviceId.GPU0)
  • Artistic 为布尔值, True 表示启用 Artistic 模式 ( False 启用 Stable 模式);
colorizer = get_image_colorizer(artistic=True)

前面提到过 Artistic 与 Stable 是有区别的(因为用到的权重文件是不一样的), Artistic 上色效果会更加激进一些,例如给下面这张荷叶照片上色,不同模式下得到的图片是不一样的

image-20210430221407338

Artistic 模式

image-20210430221435152

Stable 模式

image-20210430221423325

  • render_factor 表示渲染因子,值越效果越好,但同时需要更大的显存;
  • source_path 表示输入图片路径;

上色后的图片会存放在根目录下的 result_images 文件夹中,从网上下载了几张黑白图片,用这个框架自己也测试了一下,看起来效果还不错~

图一

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mM7vfSEW-1622219475075)(C:\Users\zeroing\Desktop\image-20210430221510838.png)]

图二

image-20210430221543902

图三

image-20210430221618418

3.2,视频上色

视频上色,需要用下面的代码块

from deoldify import device
from deoldify.device_id import DeviceId
#choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)

from deoldify.visualize import *
plt.style.use('dark_background')
import warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")

colorizer = get_video_colorizer()

#NOTE:  Max is 44 with 11GB video cards.  21 is a good default
render_factor=21


file_name_ext = file_name + '.mp4'
result_path = None

colorizer.colorize_from_file_name(file_name_ext, render_factor=render_factor)

代码中参数用法参考 3.1,相对给照片上色来说,处理视频时除了耗时之外还需要考虑帧与帧之间的相关性,要复杂一些;

这里我借助 You-get 命令,从B 站下载了1972年《教父》一小部分片段(因为平台上传视频比较麻烦,这里只截取了其中一帧图片,请原谅我的懒,,,)

image-20210529002743136

经过上色处理后,效果如下,

image-20210529002913852

上色后的视频仔细看的话的确还有一定的瑕疵,但整体看起来效果已经相当不错了

4,项目源码获取

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

pip install -r requirements.txt

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

5,小结

项目上色原理这里并没有太多介绍,感兴趣的读者可以通过阅读源码深入了解一下;如果只是想把这个项目应用到自己数据上,我想这篇文章已经讲的很明白了,之前写过一篇老照片修复文章,其实两者可以结合一下,届时会有很棒的效果~

如果本篇内容对你有所帮助的话,点个赞是对我最大的鼓励~

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

  • 30
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论
黑白照片上色是使用Python中的深度学习技术来将黑白照片转换为彩色照片的过程。这个过程主要是使用生成对抗网络(GAN)模型来实现的。具体步骤如下: 1. 数据收集:首先需要收集已有的历史照片或者自己收集的黑白照片作为训练数据。 2. 数据准备:使用Python将收集到的照片转换为计算机可以识别的数据形式,比如将图像转换为像素矩阵。 3. 建立模型:建立生成器和判别器两个模型。生成器负责将黑白照片转换为彩色图像,而判别器则判断生成的彩色图像是否逼真。 4. 训练模型:使用训练数据对模型进行训练,并不断调整参数,提高模型的性能。这个过程中,生成器和判别器相互竞争,不断学习和优化。 5. 使用模型进行上色:训练好的模型可以用来对黑白图片进行上色,生成逼真的彩色图像。 Python提供了强大的深度学习框架,如TensorFlow和PyTorch,可以用来实现黑白照片上色的过程。通过使用这些框架,结合适当的算法和训练数据,可以实现高质量的黑白照片上色效果。这种技术可以让我们更加深入地了解历史,让过往的黑白照片以更真实的方式呈现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [chatgpt赋能pythonPython黑白图片上色:让历史重现生机](https://blog.csdn.net/xuhss_com/article/details/131485979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大飞1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值