图3. 基于残差的深度CNN结构。该结构使用残差连接将低清图像与CNN的输出相加得到高清图像。即仅用CNN结构学习低清图像中缺乏的高清细节部分。
图2中的方法虽然效果远高于传统方法,但是却有若干问题:
训练层数少,没有足够的视野域;
训练太慢,导致没有在深层网络上得到好的效果;
不能支持多种倍数的高清化。
针对上述问题,图3算法提出了采用更深的网络模型。并用三种技术解决了图2算法的问题。
第一种技术是残差学习,CNN是端到端的学习,如果像图2方法那样直接学习,那么CNN需要保存图像的所有信息,需要在恢复高清细节的同时记住所有的低分辨率图像的信息。如此,网络中的每一层都需要存储所有的图像信息,这就导致了信息过载,使得网络对梯度十分敏感,容易造成梯度消失或梯度爆炸等现象。而图像超清问题中,CNN的输入图像和输出图像中的信息很大一部分是共享的。残差学习是只针对图像高清细节信息进行学习的算法。如上图所示,CNN的输出加上原始的低分辨率图像得到高分辨率图像,即CNN学习到的是高分辨率图像和低分辨率图像的差。如此,CNN承载的信息量小,更容易收敛的同时还可以达到比非残差网络更好的效果。
高清图像之所以能够和低清图像做加减法,是因为,在数据预处理时,将低清图像使用插值法缩放到与高清图像同等大小。于是虽然图像被称之为低清,但其实图像大小与高清图像是一致的。
第二种技术是高学习率,在CNN中设置高学习率通常会导致梯度爆炸,因而在使用高学习率的同时还使用了自适应梯度截断。截断区间为[-θ/γ, θ/γ],其中γ为当前学习率,θ是常数。
第三种技术是数据混合,最理想化的算法是为每一种倍数分别训练一个模型,但这样极为消耗资源。因而,同之前的算法不同,本技术将不同倍数的数据集混合在一起训练得到一个模型,从而支持多种倍数的高清化。
感知损失
在此之前,使用CNN来解决高清问题时,对图像高清化的评价方式是将CNN生成模型产生的图像和实际图像以像素为单位计算损失函数(一般为欧式距离)。此损失函数得到的模型捕捉到的只是像素级别的规律,其泛化能力相对较弱。
而感知损失,则是指将CNN生成模型和实际图像都输入到某个训练好的网络中,得到这两张图像在该训练好的网络上某几层的激活值,在激活值上计算损失函数。
由于CNN能够提取高级特征,那么基于感知损失的模型能够学习到更鲁棒更令人信服的结果。
图4. 基于感知损失的图像风格转换网络。该网络也可用于图像超清问题。左侧是一个待训练的转换网络,用于对图像进行操作;右侧是一个已训练好的网络,将使用其中的几层计算损失。
图4即为感知损失网络,该网络本是用于快速图像风格转换。在这个结构中,需要训练左侧的Transform网络来生成图像,将生成的图像Y和内容图像与风格图像共同输入进右侧已经训练好的VGG网络中得到损失值。如果去掉风格图像,将内容图像变为高清图像,将输入改为低清图像,那么这个网络就可以用于解决图像超清问题了。
对抗神经网络(GAN)
图5. 对抗训练的生成网络G和判别网络结构D。上半部分是生成网络G,层次很深且使用了residual block和skip-connection结构;下半部分是判别网络D。
对抗神经网络称得上是近期机器学习领域最大的变革成果。其主要思想是训练两个模型G和D。G是生成网络而D是分类网络,G和D都用D的分类准确率来进行训练。G用于某种生成任务,比如图像超清化或图像修复等。G生成图像后,将生成图像和真实图像放到D中进行分类。使用对抗神经网络训练模型是一个追求平衡的过程:保持G不变,训练D使分类准确率提升;保持D不变,训练G使分类准确率下降,直到平衡。GAN框架使得无监督的生成任务能够利用到监督学习的优势来进行提升。