当前位置: 首页 > 科技观察

超实用图像超分辨率重建技术原理与应用

时间:2023-03-20 21:41:04 科技观察

【.com原创稿件】不知道大家有没有遇到过这样的烦恼:在电脑上看到一个有趣的地方,想拍一张屏幕截图,但分辨率太高。小,放大后看不清楚?保存了有趣的图片/表情,想用却变模糊了?每次出现这种情况,就像一个800度近视的人,一摘下眼镜,他就慌了。不用担心!今天就让我们帮你解决这个问题,还你一个高清无码的世界!一、什么是图像超分辨率重建技术简单来说,就是将一幅(或多幅)分辨率较低的图像,通过一定的技术手段,生成一幅高分辨率的图像。比如这样一张表情图:(图1)分辨率为125x75,图片的细节,包括***线,从远处很容易看出来。如果你想看清楚,我们想到的*第一种方式就是放大图片。我们把这张图按像素放大:如果我们在画图软件/word/浏览器中调整显示比例,看到这张图,每个像素都会放大到400%大小,但是像素个数不会增加(也就是比如说,将一个像素从原来的1x1宽高显示为4x4宽高),显示一张图片的效果如下:(图2)如果我们截取放大400%的图片,一张宽的新图片高值为x4,对应里面的4x4=16个像素点,代表原小图的一个像素点,图2由图1生成(图分辨率的宽高改为4倍),即是超分辨率重建。但是,效果极差!其实我们期望图片放大后,图片的细节(图形的边缘轮廓,字体等)能够清晰,比如如下:(图3)如果图3可以生成从图1(图像分辨率宽高改为4倍),这是一个非常理想的超分辨率重建。二是图像超分辨率重建技术的应用。我们在上面提到了一个例子。一张低分辨率的表情图片经过处理后,变成一张新的图片,宽高是原来的4倍。这里没有意义,但是在实践中,图像超分辨率重建技术非常有用。在监控领域,我们经常会看到在一些影视作品中,警察将监控画面拉大拉远,就能看到嫌疑人的脸。这个放大过程其实并没有那么简单。许多相机没有光学变焦功能。即使摄像机具备光学变焦功能,但很多时候监控画面是看之前的视频,所以光学变焦是没有用的。这时候通过超分辨率重建技术将有限区域内的像素点放大,形成清晰的图像就非常有意义了。在卫星影像等遥感领域,卫星一般会在距离地面数百公里的地面上采集各种影像。图像上的两个像素点在地球上的实际距离可能是1km(已经算比较高分辨率)到几百公里(低分辨率),卫星图像的超分辨率重建将大大提高后续处理精度医学图像领域的医学图像分辨率受限于X光机、核磁共振扫描仪等设备的物理能力。利用超分辨率重建技术提高医学图像的分辨率,将为医生的诊断提供更大的帮助。其他一般图像处理领域(低分辨率)老照片、低分辨率重建老图像)视频重建低分辨率视频用于图像压缩和传输,显示时通过超分辨率重建显示原始分辨率。基于插值技术的传统图像超分辨率重建技术介绍什么是插值?为了解释白色版本,我们用一张很小的图来说明:一张图像的分辨率是3x2,我们想把它变成6x4。原始图像中每个像素的亮度值是:我们创建一个6x4的图像,将6个已知点放在新图像中应该在的位置:6x4新图像中的6个已知点(绿色)是已知的,剩下的18个点需要在下面找到Point(蓝色)值。通过某个点周围的几个已知点的值,以及周围的点与这个点的位置关系,根据一定的公式,计算出这个点的值,这就是插值法。如何在新图像中放置原图像的点(确定具体坐标);需要多少周围点参与未知点的计算,公式是什么。不同的方案选择是不同的插值算法。在图像处理中,常用的插值算法有:最近邻法、双线性插值法、三次插值法等。但实际上,通过这些插值算法,增强的图像细节是有限的,所以用的比较少。通常,通过多幅图像之间的插值算法重建是一种手段。此外,在视频超分辨率重建中,通过在相邻两帧之间进行插值,增加新的帧,可以提高视频帧率,减少画面顿挫感。基于重构的方法以下是一些传统的基于重构的超分辨率算法,涉及概率论、集合论等相关领域,这里只列出来,不做介绍:IBP)***PosteriorProbabilisticMethodsRegularizationMethodsHybridMethodsReconstruction-based方法通常基于多帧图像,需要结合先验知识(通常是平滑度)。Learning-basedmethods(non-deeplearning)下面是传统的learning-basedsuper-resolutionmethods,这里只列出来不做介绍:Example-basedmethodNeighborhoodembeddingmethodSupportvectorregressionmethodUnrealfacesparserepresentation这些方法,属于机器学习领域,但是没有用到深度学习的方法。四、基于深度学习的图像超分辨率重建技术深度学习介绍深度学习是机器学习的一个分支,所以先介绍一下机器学习:我们给机器(计算机上的程序)已知的输入和输出,让它去寻找law(knowledgediscovery),然后让它根据找到的规律用新的输入计算出一个新的输出,并对输出结果进行评估。如果合适,我们会积极鼓励。如果结果不合适,我们会告诉机器。这不对,让它重新找规律。这个过程实际上是在模拟或实现人类的学习行为,以获取新的知识或技能,重组已有的知识结构,不断提高自身的性能。机器学习的本质是让机器根据已有的数据分析出一个模型来表示隐藏在数据背后的规律(函数)。深度学习是一种使用人工神经网络模型进行机器学习的方法。人工神经网络是人工构造一些处理节点(模拟大脑神经元),每个节点都有一个功能,处理若干个输入,产生若干个输出,每个节点与其他节点组合形成一个模型(函数)。从左到右分别是输出层、隐藏层和输出层。输入层负责接收输入,输出层负责输出结果,隐藏层负责中间计算过程。隐藏层中的每个节点都是一个处理函数。隐藏层的结构,即层数、节点数以及每个节点的功能,将决定整个神经网络的处理结果。深度学习图像超分辨率重建原理既然深度学习可以通过数据加训练找到一个模型来描述其背后的规律,那么我们就将其应用到图像超分辨率重建领域。过程如下:首先,我们找到一组原始图像P1;将这组图片的分辨率降低为一组图片P2;通过人工神经网络,通过PSNR等将P2超分辨率重构为P3(P3与P1具有相同的分辨率)。该方法对比P1和P3,验证超分辨率重构的效果,调整节点模型和参数人工神经网络根据效果,反复执行,直到第四步比较结果满意为止。其过程如下:针对神经网络模型选择和参数选择形成了不同的方案,下面简单介绍一下。目前有很多基于深度学习的图像超分辨率重建方案。以下是其中的一些,以及对第一个和最后一个的简要介绍。有兴趣的同学可以自行搜索详情。介绍、代码、相关训练集、自己生成的训练集也可以使用。SRCNN(LearningaDeepConvolutionalNetworkforImageSuper-Resolution,ECCV2014)SRCNN是深度学习超分辨率重建的开山之作。SRCNN的网络结构非常简单,只用了三个卷积层,网络结构如下图所示。SRCNN首先使用双三次插值将低分辨率图像放大到目标尺寸,然后通过三层卷积网络拟合非线性映射,最后输出高分辨率图像结果。作者将三层卷积的结构解释为三个步骤:图像块提取和特征表示、特征非线性映射和最终重建。三个卷积层使用的卷积核大小分别为9x9、1x1和5x5,前两者的输出特征分别为64和32。使用Timofte数据集(包含91张图像)和ImageNet大型数据集进行训练。使用均方误差(MeanSquaredError,MSE)作为损失函数有利于获得更高的PSNR。FSRCNN(AcceleratingtheSuper-ResolutionConvolutionalNeuralNetwork,ECCV2016)ESPCN(Real-TimeSingleImageandVideoSuper-ResolutionUsinganEfficientSub-PixelConvolutionalNeuralNetwork,CVPR2016)VDSR(AccurateImageSuper-ResolutionUsingVeryDeepConvolutionalNetworks,CVPR2016)DRCN(Deeply-RecursiveConvolutionalNetworkforImageSuper-Resolution,CVPR2016)RED(ImageRestorationUsingConvolutionalAuto-encoderswithSymmetricSkipConnections,NIPS2016)DRRN(ImageSuper-ResolutionviaDeepRecursiveResidualNetwork,CVPR2017)LapSRN(DeepLaplacianPyramidNetworksforFastandAccurateSuper-Resolution,CVPR2017)SRDenseNet(ImageSuper-ResolutionUsingDenseSkipConnections,ICCV2017)DenseNet是CVPR2017的最佳论文获奖论文SRGAN(SRResNet)(Photo-RealisticSingleImageSuper-ResolutionUsingaGenerativeAdversarialNetwork,CVPR2017)在这篇文章中,将生成对抗网络(GenerativeAdversarialNetwork,GAN)用于解决超分化问题上EDSR(EnhancedDeepResidualNetworksforSingleImageSuper-Resolution,CVPRW2017)EDSR是NTIRE2017超分辨率挑战赛的获胜方案。论文中提到,EDSR最有意义的模型性能提升是去除了SRResNet的冗余模块,从而可以扩展模型的尺寸来提高结果的质量。EDSR的网络结构如下图所示。可以看出,与SRResNet相比,EDSR在结构上去掉了batchnormalization(BN)操作。文章称,最初提出ResNet最初是为了解决高级计算机视觉问题,例如分类和检测。将ResNet的结构直接应用到超分辨率等低级计算机视觉问题上显然不是完美的。.由于batchnormalization层消耗的内存大小与其前面的卷积层相同,去掉这一步后,EDSR可以在相同的计算资源下堆叠更多的网络层或者从每一层提取更多的特征。从而获得更好的性能。EDSR使用L1规范式损失函数优化网络模型。训练时,先训练低倍数上采样模型,然后用训练低倍数上采样模型得到的参数初始化高倍数上采样模型,可以减少高倍数上采样模型的训练时间,并且训练效果也更好。.【作者简介】曾晓伟,现任PP云科技副总监,图像编解码、高性能计算背景,辅修AI(NLP方向)。拥有超过10年的流媒体服务器开发和架构设计经验。【原创稿件,合作网站转载请注明原作者和出处为.com】