作者丨张延祥
责编丨王艺
日复一日的人像临摹练习使得画家能够仅凭几个关键特征画出完整的人脸。同样地,我们希望机器能够通过低清图像有限的图像信息,推断出图像对应的高清细节,这就需要算法能够像画家一样“理解”图像内容。至此,传统的规则算法不堪重负,新兴的深度学习照耀着图像超清化的星空。
图1 最新的Pixel递归网络在图像超清化上的应用
(
左图为低清图像,右图为其对应的高清图像,中间为算法生成结果。
这是4倍超清问题,即将边长扩大为原来的4倍。
)
得益于硬件的迅猛发展,短短几年间,手机已更新了数代,老手机拍下的照片在大分辨率的屏幕上变得模糊起来。同样地,图像分辨率的提升使得网络带宽的压力骤增。如此,图像超清化算法就有了用武之地。
对于存放多年的老照片,我们使用超清算法令其细节栩栩如生;面对网络传输的带宽压力,我们先将图像压缩传输,再用超清化算法复原,这样可以大大减少传输数据量。
传统的几何手段如三次插值,传统的匹配手段如碎片匹配,在应对这样的需求上皆有心无力。
深度学习的出现使得算法对图像的语义级操作成为可能。本文即是介绍深度学习技术在图像超清化问题上的最新研究进展。
深度学习最早兴起于图像,其主要处理图像的技术是卷积神经网络,关于卷积神经网络的起源,业界公认是Alex在2012年的ImageNet比赛中的煌煌表现。虽方五年,却已是老生常谈。因此卷积神经网络的基础细节本文不再赘述。在下文中,使用CNN(Convolutional Neural Network)来指代卷积神经网络。
CNN出现以来,催生了很多研究热点,其中最令人印象深刻的五个热点是:
-
深广探索:VGG网络的出现标志着CNN在搜索的深度和广度上有了初步的突破。
-
结构探索:Inception及其变种的出现进一步增加了模型的深度。而ResNet的出现则使得深度学习的深度变得“名副其实”起来,可以达到上百层甚至上千层。
-
内容损失:图像风格转换是CNN在应用层面的一个小高峰,涌现了一批以Prisma为首的小型创业公司。但图像风格转换在技术上的真正贡献却是通过一个预训练好的模型上的特征图,在语义层面生成图像。
-
对抗神经网络(GAN):虽然GAN是针对机器学习领域的架构创新,但其最初的应用却是在CNN上。通过对抗训练,使得生成模型能够借用监督学习的东风进行提升,将生成模型的质量提升了一个级别。
-
Pixel CNN:将依赖关系引入到像素之间,是CNN模型结构方法的一次比较大的创新,用于生成图像,效果最佳,但有失效率。
这五个热点,在图像超清这个问题上都有所体现。下面会一一为大家道来。
图2 首个应用于图像超清问题的CNN网络结构
(
输入为低清图像,输出为高清图像.该结构分为三个步骤:
低清图像的特征抽取、低清特征到高清特征的映射、高清图像的重建。
)
图像超清问题的特点在于,低清图像和高清图像中很大部分的信息是共享的,基于这个前提,在CNN出现之前,业界的解决方案是使用一些特定的方法,如PCA、Sparse Coding等将低分辨率和高分辨率图像变为特征表示,然后将特征表示做映射。
基于传统的方法结构,CNN也将模型划分为三个部分,即特征抽取、非线性映射和特征重建。由于CNN的特性,三个部分的操作均可使用卷积完成。因而,虽然针对模型结构的解释与传统方法类似,但CNN却是可以同时联合训练的统一体,在数学上拥有更加简单的表达。
不仅在模型解释上可以看到传统方法的影子,在具体的操作上也可以看到。在上述模型中,需要对数据进行预处理,抽取出很多patch,这些patch可能互有重叠,将这些Patch取合集便是整张图像。上述的CNN结构是被应用在这些Patch而不是整张图像上,得到所有图像的patch后,将这些patch组合起来得到最后的高清图像,重叠部分取均值。
图3 基于残差的深度CNN结构
(
该结构使用残差连接将低清图像与CNN的输出相加得到高清图像,
即仅用CNN结构学习低清图像中缺乏的高清细节部分。
)
图2中的方法虽然效果远高于传统方法,但是却有若干问题:
-
训练层数少,没有足够的视野域;
-
训练太慢,导致没有在深层网络上得到好的效果;
-
不能支持多种倍数的高清化。
针对上述问题,图3算法提出了采用更深的网络模型。并用三种技术解决了图2算法的问题。
第一种技术是残差学习,CNN是端到端的学习,如果像图2方法那样直接学习,那么CNN需要保存图像的所有信息,需要在恢复高清细节的同时记住所有的低分辨率图像的信息。如此,网络中的每一层都需要存储所有的图像信息,这就导致了信息过载,使得网络对梯度十分敏感,容易造成梯度消失或梯度爆炸等现象。而图像超清问题中,CNN的输入图像和输出图像中的信息很大一部分是共享的。残差学习是只针对图像高清细节信息进行学习的算法。如上图所示,CNN的输出加上原始的低分辨率图像得到高分辨率图像,即CNN学习到的是高分辨率图像和低分辨率图像的差。如此,CNN承载的信息量小,更容易收敛的同时还可以达到比非残差网络更好的效果。
高清图像之所以能够和低清图像做加减法,是因为,在数据预处理时,将低清图像使用插值法缩放到与高清图像同等大小。于是虽然图像被称之为低清,但其实图像大小与高清图像是一致的。
第二种技术是高学习率,在CNN中设置高学习率通常会导致梯度爆炸,因而在使用高学习率的同时还使用了自适应梯度截断。截断区间为[-θ/γ, θ/γ],其中γ为当前学习率,θ是常数。
第三种技术是数据混合,最理想化的算法是为每一种倍数分别训练一个模型,但这样极为消耗资源。因而,同之前的算法不同,本技术将不同倍数的数据集混合在一起训练得到一个模型,从而支持多种倍数的高清化。
在此之前,使用CNN来解决高清问题时,对图像高清化的评价方式是将CNN生成模型产生的图像和实际图像以像素为单位计算损失函数(一般为欧式距离)。此损失函数得到的模型捕捉到的只是像素级别的规律,其泛化能力相对较弱。
而感知损失,则是指将CNN生成模型和实际图像都输入到某个训练好的网络中,得到这两张图像在该训练好的网络上某几层的激活值,在激活值上计算损失函数。
由于CNN能够提取高级特征,那么基于感知损失的模型能够学习到更鲁棒更令人信服的结果。
图4 基于感知损失的图像风格转换网络
(
该网络也可用于图像超清问题。
左侧是一个待训练的转换网络,用于对图像进行操作;
右侧是一个已训练好的网络,将使用其中的几层计算损失。
)