溪亭日暮,AI|科普|这里有花间一壶酒,给我你闪送地址。 阅读原文 近几年,AI 在视频的数字化修复方面成果还是挺显著的。像《红楼梦》《三国演义》《开国大典》和《红岩》这些经典的老电影,因为年代久远,在今天的影视播放工具上放映时,清晰度太低,有时根本没法看。 怎么办呢? 过去,如果要复原经典的老电影,得要技师手工逐帧修复、合成,用非常传统方式来进行图像处理,需要耗费大量的物力和时间,旧影片的修复工作也进展得很缓慢(一部时长 2h 的影片的修复,可能就要一个十几人的修复师团队连续工作 20 天左右)。 而利用 AI 对人像和场景进行修复,效率就完全不同了。AI 技术可以先通过机器学习和模型训练来填充细节提高老电影的画质,再利用深层神经网络为老电影「上色」,最后进行转录和人脸识别,从而完成对整部影片的修复,这个过程大概只需要 12 个小时左右。 AI 助力《开国大典》修复重映 一、「超清」是如何产生的? 在 100 年前北京影像的介绍中,提到一个词:「帧数修复」。 那么,照片「高糊」和「超清」是如何产生的呢? 我们现在在网上看到的照片,大多都是由相机、扫描仪等设备捕捉画面生成的数字图像。因为照片对色彩丰富程度的要求很高,所以通常会以位图的形式进行储存和传播。 这类图片显示的基本单位就是我们通常所说的像素,每个像素都有对应的颜色值。这种显示方式可以使图像看上去更加还原、逼真。 将原图放大后看到的一个个「马赛克」就是组成图像的像素。 因此,一张图像含有的像素数量的多少直接决定了图像的精细程度,也就是我们常说的分辨率,分辨率越高,图像中显示的像素越多,画面也更加清晰。 最新的 Pixel 递归网络在图像超清化上的应用。左图为低清图像,右图为其对应的高清图像,中间为算法生成结果。这是 4 倍超清问题,即将边长扩大为原来的 4 倍。图源:https://blog.csdn.net/stdcoutzyx/article/details/70313878 老的影像作品,受到当时冲印技术的限制,加之在保存过程中会有褪色、霉变和磨损等一系列问题,导致照片中的高光或暗部细节消失,扫描成数字图像时又会产生一部分的损失,多种原因造成了我们在网上看到的老照片清晰度不够。 AI 对图像的处理和修复,主要包括人像特征补全和黑白照片上色。 这项功能是如何得到实现的呢?传统图像修复的技术基础是扩散方法,利用这种方法构建缺失部位的像素时,会尽量保持重建部分和周围像素点的一致性,利用待修补区域的边缘信息对缺失的像素进行估测。 这张 GIF 则展示了整个训练过程的变化, 左边的图是由神经网络生成的, 中间的是原始的高精度的图片, 右边的是输入到神经网络的低分辨率图片, 可以看到在 100 次 epoch 迭代之后,性能已经非常不错。图源:https://www.jianshu.com/p/00ecb26c70ed 不过,如果遇到图像待补全的缺失部分很大的情况,传统的方法就会失效,此时就需要 AI 发挥自己合理的“想象力”来对照片进行补全了。比如,100 年前北京影像补帧使用的是 DAIN,分辨率倍增部分使用了 ESRGAN,上色应用了 DeOldify,此外用 VirtualDub 做了一些老电影降噪处理。 二、AI 是如何修复旧片的? 那么,AI 又是如何获得这份「想象力」的呢?这还要归功于它强大的学习能力。 基于生成对抗网络(GAN)的深度学习(DL)算法已经证明了计算机视觉任务在图像恢复方面的巨大潜力。GAN 现在受到工业界广泛的关注。有许多做人工智能研究的公司正在投入大量的精力来发展和推广 GAN 模型。 GAN 算法原理[1]: 以生成图片为例进行说明: 假设有两个网络,分别为 G(Generator)和 D(Discriminator),它们的功能分别是: 1)G 是一个生成图片的网络,它接收一个随机的噪声 z,通过这个噪声生成图片,记做 G(z)。 2)D 是一个判别网络,判别一张图片是不是「真实的」。它的输入参数是 x,x 代表一张图片,输出 D(x)代表 x 为真实图片的概率,如果为 1,就代表 100%是真实的图片,而输出为 0,就代表不可能是真实的图片。 3)在最理想的状态下,G 可以生成足以「以假乱真」的图片 G(z)。对于 D 来说,它难以判定 G 生成的图片究竟是不是真实的,因此 D(G(z)) = 0.5。 4)这样目的就达成了:得到了一个生成式的模型 G,它可以用来生成图片。 在训练过程中,生成网络 G 的目标就是尽量生成真实的图片去欺骗判别网络 D。而判别网络 D 的目标就是尽量把 G 生成的图片和真实的图片分别开来。这样,G 和 D 构成了一个动态的「博弈过程」。 图(a)中黑色大点虚线 P(x)是真实的数据分布,绿线 G(z)是通过生成模型产生的数据分布(输入是均匀分布变量 z,输出是绿色的曲线)。蓝色的小点虚线 D(x)代表判别函数。图源:https://www.cnblogs.com/DicksonJYL/p/9617443.html GAN 的应用范围较广,扩展性也强,可应用于图像生成、数据增强和图像处理等领域。 国外网友 Denis Shiryaev 还曾利用一种增强程序(Gigapixel AI),将 1896 年的古董电影《火车进站》,转变成了 4K 60fps 高清“大电影”。[2] 什么?你说没太大感觉? 好吧,下面是原片: 原始《火车进站》的效果,低清、卡顿,还有大量的噪点。 这位网友采用的是一种叫做 Gigapixel AI 的商业图像编辑软件(付费)。这款软件由 Topaz 实验室创造,可以让图像的质量提升 600%[2]。 如果用足球运动来进行比喻 GAN 的原理:在 GAN 框架中,将生成模型 G 比喻球员的“假摔”,他们的目标是使用各种手段迷惑裁判,使得自己进攻或者防守战术动作是合规的。 比如球门前的假摔看上去像真的对方犯规一样,判别模型则相当于裁判,他们目标是将球员各种混杂在合规战术里的违规动作找出来。 在球员和裁判的不断对抗中,球员的「假摔」水平越来越高,裁判识别「假摔」水平也越来越高。随着两方水平的不断提高,最终谁都无法区分出哪个动作是真正的「假摔」,也就是 AI 的水平已经实现以假乱真[3]。 简单地说,首先,我们可以向程序中输入大量的低分辨率图像。 然后再输入这些图像的高分辨率原始照片,算法会通过对两者进行比较,寻找其中的差异,并通过不断地对照、修复,来对图片进行纠错。 最终获得精确增加图像分辨率的技巧。 生成模型要将模糊的低分辨率图像作为输入,并输出一个高分辨率的清晰图像。而判别模型,就要判断所输入的图像究竟是「真实高分辨率图像」还是由低分辨率图像「转化来的高分辨率图像」。而这就大大简化了图像超分辨率模型的学习过程。因为传统上做一个图像超分辨率,都要去对一些高频细节进行建模,而这里生成模型训练目的就简化为迷惑判别模型。 为了使得整个 GAN 能够取得比较好的结果,我们常常要求生成模型和判别模型都要有很强的学习能力,所以在实际应用中,我们常常用一个多层的神经网络来参数化生成模型或者判别模型。图源:https://www.cnblogs.com/DicksonJYL/p/9617443.html 像人类一样,AI 在掌握了这门技巧之后,不需要原始照片对照也能准确地修复、重建低分辨率图像。 把黑白旧照片变成彩色照片也不是一项简单的工作,同样需要 AI 事先对大量含有常见场景和人物的图片进行学习和记忆。 在「上色」前,AI 会首先对照片进行图像分割,区分出标志性物体,比如人脸、衣服、建筑物和天空等,再结合这些事物通常所对应的色彩信息,将黑白照片里的内容进行彩色化。 其实,AI 修复照片的原理其实类似于训练一段程序,让它对质量很差的图像进行「脑补」,但并不是说完全能 100% 恢复图像原来的样子。如同 GAN 的缺点之一——它的可解释性非常差,因为我们最后所学到的一个数据分布 Pg(G),没有显示的表达式。它只是一个黑盒子一样的映射函数:输入是一个随机变量,输出是我们想要的一个数据分布。 阅读原文