AI教程:从黑白照片到彩色视频

1,166 阅读6分钟

大家好,我是TF男孩,一个研究传统文化的AI工程师。今天,我将利用AI技术,给大家复原济南的金山寺。济南金山寺在济南战役中被炸毁,现在只留有一个遗址。它的遗址在哪里呢?身在济南的你肯定路过,只是没有留心观察。它的遗址在黑虎泉、白石泉附近,具体在白石桥边上。

让我们把时间线拉回100年前,那时也有一张照片。

这张老照片和第一张其实是一样的,是同样的角度同样地点。两者都有一座城楼,一个小桥。唯一区别就是后一张图有一座小庙,这在前一张变成了“金山寺遗址”的石碑。

好了,我们今天就要将这个小寺庙进行AI还原。

首先,经过多方搜寻,我找到这张古建筑的近景图。这张图非常模糊。

为了防止你跑了,我先上效果吧。后面再说如何实现的。

如果你觉得效果还可以,那么请继续往下看。中间用到的所有技术,我都会一一列举出来。反正我觉得从一张模糊的黑白照片,变成清晰的彩色视频,效果还算可以。

超分辨率处理 Real-ESRGAN

首先,我们要对黑白照片要进行清晰化,因为它的分辨率实在是太糟糕了。这一步操作专业术语叫“超分辨率”。如果你手里的照片相对清晰,可以跳过这一步。

一般情况下,照片的超分辨率和上色,都会用到基于生成对抗网络(GANs)的图像翻译技术。在这里,我给大家介绍一款老牌的开源库Real-ESRGAN

它的定位就是图像以及视频的修复工具。其模型提供两种场景,一个是基础图像修复,另一个就是针对动画片图像的专门修复。以下是输入和输出的效果展示。

使用

如果你仅仅是想看效果,那么有一个便捷的方法,那就是调用它在huggingface空间的演示。这是此开源项目直接搭建的可运行环境。你只需要上传图片,然后选择偏好点击确定,即可完成操作。

如上所示,我们的图片经过超分辨率之后,清晰度如下所示。

很明显,它清晰多了,不存在模糊的颗粒感。

值得一说,它不但能修复图片,而且也能修复视频。很多老动画片的高清版就是用它修复的。

安装和部署

如果你是高级玩家,也可以自己下载并运行这个项目。

它的支持环境如下:

Python >= 3.7
PyTorch >= 1.7

其他的我就不说了,因为你已经是高级玩家了,肯定能看懂它的README_CN.md文档,还是中文版的。它的操作无非就是用gitgithub地址clone项目代码,然后pip依赖库,最后运行.py脚本文件,传递参数执行处理操作。

安装完成后,我对它的运行参数做一个说明,因为只有这段不是中文版的。

-h: 显示帮助信息。
-i, --input: 输入图像或文件夹的路径。默认为inputs文件夹。
-o, --output: 输出文件夹的路径。默认为results文件夹。
-n, --model_name: 模型的名称。默认为RealESRGAN_x4plus。
-s, --outscale: 图像的最终上采样比例。默认为4,表示将图像放大四倍。
--suffix: 恢复图像的后缀。默认为out。
-t, --tile: 切片大小。0表示在测试过程中不进行切片。默认为0。
--face_enhance: 是否使用GFPGAN对人脸进行增强。默认为False。
--fp32: 在推理过程中是否使用半精度。默认为False。
--ext: 图像扩展名。选项包括auto、jpg和png,其中auto表示使用与输入相同的扩展名。默认为auto。

运行命令示例:

python inference_realesrgan.py -n RealESRGAN_x4plus -i infile --outscale 3.5 --face_enhance

这表示使用RealESRGAN_x4plus模型对infile进行处理,最终将图像放大3.5 倍,并对人脸进行增强。

哦,对了,它还支持你进行微调操作。

自动上色 DeOldify

自动上色我们选用DeOldify,虽然它只有5岁,但是却能修复上百年前的照片,不论是风景还是人物,不论是图片还是视频。


DeOldify也是基于生成对抗网络实现的,但它采用了一种叫NoGAN的新方法,这相比较传统的GAN更加高效。

使用

如果你仅仅是想看效果,那么它在replicate上已经可用了:

图片看这里deoldify_image。视频看这里deoldify_video

下面我们来看一个视频上色的例子。

当然,对于我的这个简单图片,它的效果肯定没得说。

DeOldify的图片上色模型分为两种,一种是Artistic艺术风格,另一种是Stable稳定风格。艺术风格Artistic具有更鲜艳的色彩,稳定风格Stable更适合自然风景。

安装和部署

我们去它的github主页看,会发现一个网页项目,名称叫web Stable Diffusion Web UI Plugin-Photos and video。也就是说你可以自己搭建一套Web网页直接实现可视化操作。

如果是部署安装,分为两种,官方推荐简易安装(Easy Install)。其实就是在Anaconda环境下实现安装,步骤如下:

git clone https://github.com/jantic/DeOldify.git DeOldify
cd DeOldify
conda env create -f environment.yml

上一步是打开命令行并导航到要安装的根文件夹,随后执行命令:

source activate deoldify
jupyter lab

更具体的步骤,可以参看文档说明。文档是英文的,需要具备英文阅读能力。

生成视频

彩色照片我们已经有了,下一步就是生成视频。

仅仅根据一张图片生成视频,目前没有太好用的免费开源项目。但是,有一个免费网站效果还可以,那就是stablevideo

此平台可以根据一张图片或者一段文字描述生成视频。

其实,从一张图片来生成视频,不会有太多的内容,大多是一些镜头的转场。我们只需要把图片传上去,做一些配置,就可以生成视频了。你也可以选择一个示例特效,然后替换其中图片,这样也可以实现相同的效果。

我就是看好其中一个特效,然后采用替换图片的方法进行操作的:

来看看生成的效果:

好了,上面就是从一张模糊的黑白照片到一段生动视频的整个过程。

利用这套组合,我也根据老照片,生成了济南老护城河沿岸居民区的视频,发布在短视频平台广受欢迎。

就说这么多吧,希望本文能给大家带来帮助。

我是TF男孩,一个喜欢研究的IT男。