深度学习在图像超分辨率重建中的应用
eape3860
8年前
<p>超分辨率技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。SR可分为两类:从多张低分辨率图像重建出高分辨率图像和从单张低分辨率图像重建出高分辨率图像。基于深度学习的SR,主要是基于单张低分辨率的重建方法,即Single Image Super-Resolution (SISR)。</p> <p>SISR是一个逆问题,对于一个低分辨率图像,可能存在许多不同的高分辨率图像与之对应,因此通常在求解高分辨率图像时会加一个先验信息进行规范化约束。在传统的方法中,这个先验信息可以通过若干成对出现的低-高分辨率图像的实例中学到。而基于深度学习的SR通过神经网络直接学习分辨率图像到高分辨率图像的端到端的映射函数。</p> <p>本文介绍几个较新的基于深度学习的SR方法,包括SRCNN,DRCN, ESPCN,VESPCN和SRGAN等。</p> <h2>1,SRCNN</h2> <p>Super-Resolution Convolutional Neural Network (SRCNN, PAMI 2016, 代码 )是较早地提出的做SR的卷积神经网络。该网络结构十分简单,仅仅用了三个卷积层。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/4a7a192e0572c70064c574d64e38a83c.png"></p> <p>该方法对于一个低分辨率图像,先使用双三次(bicubic)插值将其放大到目标大小,再通过三层卷积网络做非线性映射,得到的结果作为高分辨率图像输出。作者将三层卷积的结构解释成与传统SR方法对应的三个步骤:图像块的提取和特征表示,特征非线性映射和最终的重建。</p> <p>三个卷积层使用的卷积核的大小分为为9x9, 1x1和5x5,前两个的输出特征个数分别为64和32. 该文章分别用Timofte数据集(包含91幅图像)和ImageNet大数据集进行训练。相比于双三次插值和传统的稀疏编码方法,SRCNN得到的高分辨率图像更加清晰,下图是一个放大倍数为3的例子。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/89fe9253d26ba251702971d714280592.png"></p> <p>对SR的质量进行定量评价常用的两个指标是PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structure Similarity Index)。这两个值越高代表重建结果的像素值和金标准越接近,下图表明,在不同的放大倍数下,SRCNN都取得比传统方法好的效果。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/85feacf38bfa92d8fbfa7062cf370069.png"></p> <h2>2, DRCN</h2> <p>SRCNN的层数较少,同时感受野也较小(13x13)。DRCN (Deeply-Recursive Convolutional Network for Image Super-Resolution, CVPR 2016, <a href="/misc/goto?guid=4959742423992748161" rel="nofollow,noindex"> 代码 </a> )提出使用更多的卷积层增加网络感受野(41x41),同时为了避免过多网络参数,该文章提出使用递归神经网络(RNN)。网络的基本结构如下:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/85ee7d1672ae64c5dbac8d300634d735.png"></p> <p>与SRCNN类似,该网络分为三个模块,第一个是Embedding network,相当于特征提取,第二个是Inference network, 相当于特征的非线性变换,第三个是Reconstruction network,即从特征图像得到最后的重建结果。其中的Inference network是一个递归网络,即数据循环地通过该层多次。将这个循环进行展开,就等效于使用同一组参数的多个串联的卷积层,如下图所示:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/2b3cafba246a5bab708e878586e77320.png"></p> <p>其中的 <img src="https://simg.open-open.com/show/daaeb444d20ae187c63e4904da96a748.png"> 到 <img src="https://simg.open-open.com/show/354dfbc6df67700c71785a3736cab985.png"> 是D个共享参数的卷积层。DRCN将每一层的卷积结果都通过同一个Reconstruction Net得到一个重建结果,从而共得到D个重建结果,再把它们加权平均得到最终的输出。另外,受到ResNet的启发,DRCN通过skip connection将输入图像与 <img src="https://simg.open-open.com/show/01ac94a11c86d7fcf982fdf531093198.png"> 的输出相加后再作为Reconstruction Net的输入,相当于使Inference Net去学习高分辨率图像与低分辨率图像的差,即恢复图像的高频部分。</p> <p>实验部分,DRCN也使用了包含91张图像的Timofte数据集进行训练。得到的效果比SRCNN有了较大提高。</p> <h2 style="text-align: center;"><img src="https://simg.open-open.com/show/cd9f74c87d7df611b13cd8761aedc412.png"></h2> <h2>3, ESPCN</h2> <p>在SRCNN和DRCN中,低分辨率图像都是先通过上采样插值得到与高分辨率图像同样的大小,再作为网络输入,意味着卷积操作在较高的分辨率上进行,相比于在低分辨率的图像上计算卷积,会降低效率。 ESPCN(Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network,CVPR 2016, <a href="/misc/goto?guid=4959742424085314096" rel="nofollow,noindex"> 代码 </a> )提出一种在低分辨率图像上直接计算卷积得到高分辨率图像的高效率方法。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/6a4050b425fc4c9a79400ba66826a5ce.png"></p> <p>ESPCN的核心概念是亚像素卷积层(sub-pixel convolutional layer)。如上图所示,网络的输入是原始低分辨率图像,通过两个卷积层以后,得到的特征图像大小与输入图像一样,但是特征通道为 <img src="https://simg.open-open.com/show/803a922b38400dd33106c12f6c2e3754.png"> ( 是图像的目标放大倍数)。将每个像素的 <img src="https://simg.open-open.com/show/9583cc9023b18e19b6dbb374e2374fcc.png" alt="深度学习在图像超分辨率重建中的应用" width="14" height="14"> 个通道重新排列成一个r x r的区域,对应于高分辨率图像中的一个r x r大小的子块,从而大小为 <img src="https://simg.open-open.com/show/9583cc9023b18e19b6dbb374e2374fcc.png" alt="深度学习在图像超分辨率重建中的应用" width="14" height="14"> x H x W的特征图像被重新排列成1 x rH x rW大小的高分辨率图像。这个变换虽然被称作sub-pixel convolution, 但实际上并没有卷积操作。</p> <p>通过使用sub-pixel convolution, 图像从低分辨率到高分辨率放大的过程,插值函数被隐含地包含在前面的卷积层中,可以自动学习到。只在最后一层对图像大小做变换,前面的卷积运算由于在低分辨率图像上进行,因此效率会较高。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/2050a50bbe8dbfcdbb29323e3b3f4392.png"></p> <p>重建效果上,用PSNR指标看来ESPCN比SRCNN要好一些。对于1080HD的视频图像,做放大四倍的高分辨率重建,SRCNN需要0.434s而</p> <p>ESPCN只需要0.029s。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/0e5f03d25c81d53c4fe03fb8ee663920.png"></p> <h2>4, VESPCN</h2> <p>在视频图像的SR问题中,相邻几帧具有很强的关联性,上述几种方法都只在单幅图像上进行处理,而VESPCN( Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation, arxiv 2016)提出使用视频中的时间序列图像进行高分辨率重建,并且能达到实时处理的效率要求。其方法示意图如下,主要包括三个方面:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/4702e530a22525beb8ff55310453c81f.png"></p> <p>一是纠正相邻帧的位移偏差,即先通过Motion estimation估计出位移,然后利用位移参数对相邻帧进行空间变换,将二者对齐。二是把对齐后的相邻若干帧叠放在一起,当做一个三维数据,在低分辨率的三维数据上使用三维卷积,得到的结果大小为 <img src="https://simg.open-open.com/show/2ed71a5a60959c589830378a5b219204.png"> 。三是利用ESPCN的思想将该卷积结果重新排列得到大小为 <img src="https://simg.open-open.com/show/f94ea79d0a08dcd5f2998a21a71015ce.png"> 的高分辨率图像。</p> <p>Motion estimation这个过程可以通过传统的光流算法来计算,DeepMind 提出了一个Spatial Transformer Networks, 通过CNN来估计空间变换参数。VESPCN使用了这个方法,并且使用多尺度的Motion estimation:先在比输入图像低的分辨率上得到一个初始变换,再在与输入图像相同的分辨率上得到更精确的结果,如下图所示:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/53fbb9460724e0ae30644bde5bcc3fd8.png"></p> <p>由于SR重建和相邻帧之间的位移估计都通过神经网路来实现,它们可以融合在一起进行端到端的联合训练。为此,VESPCN使用的损失函数如下:</p> <p><img src="https://simg.open-open.com/show/e813be524429a8ccbb4b590cf8ded838.png"></p> <p>第一项是衡量重建结果和金标准之间的差异,第二项是衡量相邻输入帧在空间对齐后的差异,第三项是平滑化空间位移场。下图展示了使用Motion Compensation 后,相邻帧之间对得很整齐,它们的差值图像几乎为0.</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/b9256587b75c4b147a62a33e1f7b58fe.png"></p> <p style="text-align: center;">从下图可以看出,使用了Motion Compensation,重建出的高分辨率视频图像更加清晰。 <img src="https://simg.open-open.com/show/52701d65b1c471c976564c72bc0fe773.png"></p> <h2>5, SRGAN</h2> <p>SRGAN (Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network, <a href="/misc/goto?guid=4959742424176704060" rel="nofollow,noindex"> arxiv </a> , 21 Nov, 2016)将生成式对抗网络(GAN)用于SR问题。其出发点是传统的方法一般处理的是较小的放大倍数,当图像的放大倍数在4以上时,很容易使得到的结果显得过于平滑,而缺少一些细节上的真实感。因此SRGAN使用GAN来生成图像中的细节。</p> <p>传统的方法使用的代价函数一般是最小均方差(MSE),即</p> <p><img src="https://simg.open-open.com/show/c23c4b65d222b6972047d0eb32814136.png"></p> <p>该代价函数使重建结果有较高的信噪比,但是缺少了高频信息,出现过度平滑的纹理。SRGAN认为,应当使重建的高分辨率图像与真实的高分辨率图像无论是低层次的像素值上,还是高层次的抽象特征上,和整体概念和风格上,都应当接近。整体概念和风格如何来评估呢?可以使用一个判别器,判断一副高分辨率图像是由算法生成的还是真实的。如果一个判别器无法区分出来,那么由算法生成的图像就达到了以假乱真的效果。</p> <p>因此,该文章将代价函数改进为 <img src="https://simg.open-open.com/show/dd40d5e6f9ba0f78167566a16bf4ad64.png"> 第一部分是基于内容的代价函数,第二部分是基于对抗学习的代价函数。基于内容的代价函数除了上述像素空间的最小均方差以外,又包含了一个基于特征空间的最小均方差,该特征是利用VGG网络提取的图像高层次特征: <img src="https://simg.open-open.com/show/cc7a3b49f2162b7ca43b3ae8861c5ecc.png"> 对抗学习的代价函数是基于判别器输出的概率: <img src="https://simg.open-open.com/show/604f10feb3166b89ccbaa05382d01ed0.png"> 其中 <img src="https://simg.open-open.com/show/3736d4352e06e963d2cdf8792cf6a6e6.png"> 是一个图像属于真实的高分辨率图像的概率。 <img src="https://simg.open-open.com/show/c4c6868e6abad26ad53d227940a446c4.png"> 是重建的高分辨率图像。SRGAN使用的生成式网络和判别式网络分别如下:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/73b2daf3ee6c1f4ea4dea4a6134c5cbd.png"></p> <p>该方法的实验结果如下</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/5ff7adaddeba1c0016b4b46f1ed46525.png"></p> <p>从定量评价结果上来看,PSNR和SSIM这两个指标评价的是重建结果和金标准在像素值空间的差异。SRGAN得到的评价值不是最高。但是对于MOS(mean opinion score)的评价显示,SRGAN生成的高分辨率图像看起来更真实。</p> <p><img src="https://simg.open-open.com/show/548274e67fd8404e521423574fb29cbb.png"></p> <h3>参考资料</h3> <p>1, Dong, Chao, et al. "Image super-resolution using deep convolutional networks." <em>IEEE transactions on pattern analysis and machine intelligence</em> 38.2 (2016): 295-307.</p> <p>2, Kim, Jiwon, Jung Kwon Lee, and Kyoung Mu Lee. "Deeply-recursive convolutional network for image super-resolution." <em>Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition</em> . 2016.</p> <p>3, Shi, Wenzhe, et al. "Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network." <em>Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition</em> . 2016.</p> <p>4, Caballero, Jose, et al. "Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation." <em>arXiv preprint arXiv:1611.05250</em> (2016).</p> <p>5, Jaderberg, Max, Karen Simonyan, and Andrew Zisserman. "Spatial transformer networks." <em>Advances in Neural Information Processing Systems</em> . 2015.</p> <p>6, Ledig, Christian, et al. "Photo-realistic single image super-resolution using a generative adversarial network." <em>arXiv preprint arXiv:1609.04802</em> (2016).</p> <p>7, <a href="/misc/goto?guid=4959742424257122568" rel="nofollow,noindex">深度对抗学习在图像分割和超分辨率中的应用 - 知乎专栏</a></p> <p> </p> <p>来自:https://zhuanlan.zhihu.com/p/25532538</p> <p> </p>