社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【计算摄影】图像与视频超分辨,深度学习核心技术与展望

有三AI • 3 年前 • 446 次点击  

大家好,这是专栏《计算摄影》的第七篇文章,这一个专栏来自于计算机科学与摄影艺术的交叉学科。


                                            作者&编辑 | 言有三

图像超分,就是要将低分辨率的图像恢复为高分辨率的图像,它在日常的图像和视频存储与浏览中都有广泛的应用,本次我们介绍基于深度学习的图像超分辨核心技术。

1 什么是图像超分辨 

1.1 图片超分辨


我们常说的图像分辨率指的是图像长边像素数与图像短边像素数的乘积,比如iPhoneX手机拍摄照片的分辨率为4032px×3024px,为1200万像素。


显然,越高的分辨率能获得更清晰的成像。与之同时,分辨率越高也意味着更大的存储空间,对于空间非常有限的移动设备来说,需要考虑分辨率与存储空间的平衡。


图像超分,就是要从低分辨率的图像恢复为高分辨率的图像,它在日常的图像和视频存储与浏览中都有广泛的应用。


10年前手机中320px×240px分辨率的图像是主流,其视觉美感相对如今随处可见的4K分辨率来说是无法比拟的。我们可以使用超分技术来恢复当年拍摄的低分辨率图像,如下图是一个典型案例。

手机图片浏览中也有超分算法的努力,即同一张图片在不同手机上的显示效果不一样,是因为显示分辨率越高的手机可以使用更清晰的分辨率进行展示。


1.2 视频超分辨


人们在观看视频节目时总会更倾向于分辨率更高的配置,以腾讯视频为例,它包含了多种分辨率配置,标清为270P,高清为480P,超清为720P,蓝光为1080P。其中1080P的分辨率大小为1920×1080,相比于常见摄影图像的分辨率仍有不小的差距。但是受到网络带宽的影响,往往蓝光分辨率都不是所有人能够流畅播放,而超分技术可以实现在网络传输的时候使用低分辨率传播,而播放端进行实时分辨率提升,即实现视频超分。这在网络直播,视频播放与下载应用中非常有价值。

1.3 图片预处理


除了作为一个单独的任务,图像超分还可以作为其他工作的预处理或者其中一个独立的小模块,在提高目标检测任务中小目标的分辨率用于改善监控系统,提高医学图像中的模糊目标辨识度等很多应用领域中都有实际意义。

如今图像超分技术被用于许多珍贵的历史照片和视频的修复,这具有很大的人文价值和纪念意义。

2 图片超分辨关键技术

近年来CNN等深度学习模型在图像超分任务中取得了非常大的进展,使得超分算法得以真正在产品中落地,下面我们基于深度学习模型中的上采样位置,优化目标,模型结构特点来进行总结。


2.1 不同的采样结构


根据上采样(upsampling)在网络结构中的位置和使用方式不同,可以把超分网络结构设计主要分为三大类[1]:


(1) 前上采样(pre-upsampling),即在网络一开始的时候就完成上采样过程。Chao Dong等人提出的SRCNN方法[2]是最早期的尝试。

SRCNN框架首先使用双线性插值等上采样方法进行初始化,得到想要恢复的分辨率,这一步也可以使用反卷积来完成。


接下来就是对高分辨率图细节的改良,如下:

首先使用卷积层对输入的局部图像块进行特征提取,得到一系列特征图,这相当于完成了稀疏编码中重叠的图像块的构建,这一步骤可以表达如下:

其中W和B分别表示卷积核和偏置,*表示卷积操作,W1的尺寸为c×n1×f1×f1,其中c就是输入图的通道数量,n1是输出特征通道数,f1×f1是卷积核大小。


接着,使用1×1卷积进行维度变换,即将n1个特征通道转换为n2个特征通道,这就是相当于稀疏编码中低分辨率字典到高分辨率字典的映射,这一步骤可以表达如下,其中f2=1:

最后就是将高分辨率的图像块重新拼接成完整的图像,这一步骤可以表达如下:

当f2=1时,对于输出图像中的每一个像素,它在原图中的感受野大小为(f3+f1-1)×(f3+f1-1),一个典型的设定是f1=9,f3=5,此时输出像素与输出的13×13=169个像素有关,相比于传统方法具有较大的感受野,因此SRCNN具有较大的优势。


SRCNN框架可以适用于任意分辨率的提升,因为在输入网络之前,上采样过程已经对输出分辨率做了初始化,所以CNN模型要学习的是由粗到精的改进,学习过程比较简单。不过由于整个网络在高分辨率空间进行计算,因此计算量大,而且噪声容易被放大。


(2) 后上采样(post-upsampling),即在网络的最后才开始进行上采样。


在前上采样框架中首先使用反卷积来完成上采样是一种很自然的操作,但是它计算复杂度较大,因此SRCNN的作者后来将该上采样过程放置在网络最后端,通过一个反卷积来学习该上采样过程,将其命名为FSRCNN框架[3]。


而Twitter图片与视频压缩研究组则采用了与反卷积完全不同的上采样思路,提出了ESPCN模型[4],其中核心思想是亚像素卷积(sub-pixel convolution),完整流程示意图如下:

对于维度为H×W×C的图像,标准反卷积操作输出的特征图维度为rH×rW×C,其中r就是需要放大的倍数,而从图6.6可以看出,亚像素卷积层的输出特征图维度为H×W×C×r×r,即特征图与输入图片的尺寸保持一致,但是通道数被扩充为原来的r×r倍,然后再进行重新排列得到高分辨率的结果。


整个流程因为使用了更小的图像输入,从而可以使用更小的卷积核获取较大的感受野,这既使得输入图片中邻域像素点的信息得到有效利用,还避免了计算复杂度的增加,是一种将空间上采样问题转换为通道上采样问题的思路。相比于前上采样中在开始就进行单一的一次上采样,后采样策略能更好地利用模型的表达能力,学习更加复杂的低分辩率到高分辨率的转换,因此ESPCN模型被验证为更加有效,后续的超分模型基本沿用了该思路。


(3) 逐步式上采样(progressive upsampling),即逐渐进行上采样。


为了解决后采样方法无法对高倍率因子进行很好的超分辨,LapSRN(Laplacian Pyramid Super-Resolution Network)[5]等渐进的上采样方法被提出,其模型结构如下图:

在上图中包含了两个分支,一个是特征提取分支(Feature Extraction Branch),它包括多个不同分辨率层级,每一个层级利用多个卷积层获取非线性特征映射,最后加上反卷积来提升图像的分辨率得到特征(feature)。


另一个是图像重建分支(Image Reconstruction Branch),它将输入图进行上采样后与相同分辨率大小的特征提取分支相加得到下一级分辨率的输出图像,直到得到最终的高分辨率结果图。


LapSRN模型中由于各个分辨率层级的结构相似,所以其中的部分网络层会进行参数共享,这让每一个学习过程更加简单。而且逐步式上采样的方法利用了在很多计算机视觉任务中都使用的跳层连接多尺度技术,通过学习残差简化了学习过程。有的研究者使用了类似于LapSRN模型的渐进式模型[6],实现了对人脸图像8倍的上采样。

除了以上3种常见的结构,还有一种结构为升降采样迭代式(iterative up-and-downsampling)[7]结构,它采用上采样和下采样过程交替进行。这一类模型试图通过上采样图像到下采样图像的反馈来更好地捕捉它们之间的关系,结构非常复杂,训练难度较高。

2.2 感知损失与对抗损失


早期的基于CNN模型的超分框架如SRCNN,ESPCN都使用图像像素空间的欧式距离(即L2 loss,或者MSE损失)作为优化目标,结果能取得较高的PSNR和SSIM指标,但是存在结果过于平滑的问题。


人眼对重建结果质量的感知并不完全与这些指标相符,比如MSE指标较小并不能保证局部细节的清晰度,而较大的MSE指标也并不等价于较差的结果,比如原图偏移一个像素后与原图的MSE值可能较大,但是视觉感知效果很接近。


CNN网络的高层特征空间相比于原始的像素空间,具有较高的抽象层级,它使得原始图像的特征与目标图像的特征差异可以反应在语义级别,这非常符合人眼的主观评估感受,研究者基于此提出了感知损失。


基于特征空间计算的欧式距离被称为感知损失(perceptual loss),令φ来表示网络,j表示网络的第j层,表示第j层的特征图的大小,感知损失的定义如下;

研究者[8]将SRCNN模型的像素损失改为感知损失后,显著提高了视觉效果,如下图中的最后一幅图就是使用感知损失的结果,因此感知损失也被后续的很多模型采用。

随着生成对抗网络GAN的发展,生成器和判别器的对抗学习机制在图像生成任务中展现出很强大的学习能力。Twitter的研究者们使用ResNet作为生成器结构,使用VGG作为判别器结构,提出了SRGAN[9]模型,模型结构如下。

生成器结构包含了若干个不改变特征分辨率的残差模块和多个基于亚像素卷积的后上采样模块。判别器结构则包含了若干个通道数不断增加的卷积层,每次特征通道数增加一倍时,特征分辨率降低为原来的一半。


SRGAN模型优化目标包含两部分,一部分是基于VGG网络特征构建内容损失函数(content loss),代替了之前的MSE损失函数,另一部分是对抗损失。

通过生成器和判别器的对抗学习取得了视觉感知上更好的重建结果,如下图对比。

基于GAN的模型虽然可以取得好的超分结果,但是它往往会放大噪声。在SRGAN的基础上,有研究者通过优化生成器的结构,GAN的损失函数,感知损失计算特征的选择提出了增强版的SRGAN,即ESRGAN[10],相比SRGAN取得了更好的超分结果。


当然除此之外,任务相关的损失也常被添加进优化目标,比如人脸超分辨常使用人脸关键点任务作为辅助,需要添加关键点损失[11]。


2.3 无监督模型


由于大部分有监督的超分辨模型都是基于成对的低分辨率和高分辨率图进行训练,研究者常通过固定的图像算法对高分辨率图进行采样获得低分辨率图,这与真实的图像蜕化过程并不一致,真实的图像蜕化往往包括各类模糊和噪声,缺陷等。


因此无监督的模型研究是非常重要的,典型的思路是首先学习降采样,再使用获得的成对数据集进行训练,这是一个无监督的学习过程。


如下就是一个典型框架[12],整个流程包括一个High-to-Low GAN和一个Low-to-High GAN。

High-to-low GAN模型:这一个模型的作用是从高分辨率数据集中生成低分辨率的图,高分辨率图像数据集可以是人脸质量较高的Celeb-A、AFLW、LS3D-W和VGGFace2等,低分辨率图像数据集可以是人脸质量较低的Wider face等,它们构成了未配对的高分辨率-低分辨率数据集。High-to-low GAN中的降采样网络(High-to-low)是一个编解码结构,它的输入是由随机噪声z和高分辨率图拼接而成,生成低分辨率图LR image。


Low-to-High GAN模型:从High-to-low GAN模型的输出结果可以得到成对的低分辨率和高分辨率训练数据,因此就可以训练一个正常的超分网络,即Low-to-High GAN模型,它是一个基于跳层连接的结构。


除了以上的无监督模型方案,还有两个常见的思路供读者进行延伸学习。


第一个是将高分辨率图像和低分辨率图像看作是两个域,然后使用了CycleGAN的循环结构来解决该问题,代表性框架是CinCGAN[13]。


第二个是zero-shot super-resolution (ZSSR)[14],它只使用图片本身的信息,对每一张图都训练一个CNN模型用于恢复分辨率,不过计算量也较大。


2.4  展望


虽然研究者提出了数十个超分模型,但是目前大多数超分模型对于真实的图像超分效果还不完美,主要存在以下几个问题。


(1) 训练数据难以获取,目前大部分模型采用了仿真的数据,这个过程难以模仿真实的图像蜕化过程,真实图像退化不仅仅是分辨率降低,更是在这个过程中会引入各类图像噪声,所以基于采样训练出来的模型容易过拟合,泛化能力不好。

(2) 模型难以通用,对于特定类型的图像,比如人脸超分则需要专门训练人脸相关的模型,通用的超分模型往往难以获得很好的效果。

3 参考资料

[1] Wang Z ,  J  Chen,  Hoi S C H . Deep Learning for Image Super-resolution: A Survey[J].  2019.

[2] Dong C, Loy C C, He K, et al. Image super-resolution using deep convolutional networks[J]. IEEE transactions on pattern analysis and machine intelligence, 2015, 38(2): 295-307.

[3] C. Dong, C. C. Loy, and X. Tang, “Accelerating the super-resolution convolutional neural network,” in ECCV, 2016.

[4] Shi W , Caballero J , Ferenc Huszár, et al. Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network[J]. 2016.

[5] Lai W S, Huang J B, Ahuja N, et al. Fast and accurate image super-resolution with deep laplacian pyramid networks[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 41(11): 2599-2613. 

[6] Kim D, Kim M, Kwon G, et al. Progressive Face Super-Resolution via Attention to Facial Landmark[J]. arXiv preprint arXiv:1908.08239, 2019. 

[7] Haris M, Shakhnarovich G, Ukita N. Deep back-projection networks for super-resolution[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 1664-1673.

[8] Johnson J, Alahi A, Fei-Fei L. Perceptual losses for real-time style transfer and super-resolution[C]//European conference on computer vision. Springer, Cham, 2016: 694-711.

[9] Ledig C, Theis L, Huszár F, et al. Photo-realistic single image super-resolution using a generative adversarial network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4681-4690.

[10] Wang X, Yu K, Wu S, et al. Esrgan: Enhanced super-resolution generative adversarial networks[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 0-0.

[11] Bulat A, Tzimiropoulos G. Super-fan: Integrated facial landmark localization and super-resolution of real-world low resolution faces in arbitrary poses with gans[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 109-117.

[12] Bulat A, Yang J, Tzimiropoulos G. To learn image super-resolution, use a gan to learn how to do image degradation first[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 185-200.

[13] Y. Yuan, S. Liu, J. Zhang, Y. Zhang, C. Dong, and L. Lin, “Unsupervised image super-resolution using cycle-in-cycle generative adversarial networks,” in CVPRW, 2018.

[14] Shocher A, Cohen N, Irani M. “zero-shot” super-resolution using deep internal learning[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 3118-3126.


更多内容与实践细节,请参考我最近出版的新书,《深度学习之摄影图像处理》,介绍如下:


言有三新书来袭,业界首本深度学习计算摄影书籍,科技与艺术的结合

总结


本文介绍了基于深度学习模型的图像超分辨关键技术,这是一个相对比较成熟,应用价值较大的领域,值得对视觉技术感兴趣的朋友了解学习。

有三AI秋季划-图像质量组

图像质量小组需要掌握与图像质量相关的内容,学习的东西包括8大方向:图像质量评价,图像构图分析,图像降噪,图像对比度增强,图像去模糊与超分辨,图像风格化,图像深度估计,图像修复。了解详细请阅读以下文章:


【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?


转载文章请后台联系

侵权必究

往期精选


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/114020
 
446 次点击