最新公告:

中华视窗是诚信为本,市场在变,我们的诚信永远不变...

中华视窗

咨询热线

400-123-4657

行业资讯

当前位置: 首页 > 新闻动态 > 行业资讯

图像超分辨率重建算法,让模糊图像变清晰(附数据和代码)

添加时间:2024-02-17

/

一. 图像超分辨率重建概述 1. 概念

图像分辨率是一组用于评估图像中蕴含细节信息丰富程度的性能参数,包括时间分辨率、空间分辨率及色阶分辨率等,体现了成像系统实际所能反映物体细节信息的能力。相较于低分辨率图像,高分辨率图像通常包含更大的像素密度、更丰富的纹理细节及更高的可信赖度。但在实际上情况中,受采集设备与环境、网络传输介质与带宽、图像退化模型本身等诸多因素的约束,我们通常并不能直接得到具有边缘锐化、无成块模糊的理想高分辨率图像。提升图像分辨率的最直接的做法是对采集系统中的光学硬件进行改进,但是由于制造工艺难以大幅改进并且制造成本十分高昂,因此物理上解决图像低分辨率问题往往代价太大。由此,从软件和算法的角度着手,实现图像超分辨率重建的技术成为了图像处理和计算机视觉等多个领域的热点研究课题。

图像的超分辨率重建技术指的是将给定的低分辨率图像通过特定的算法恢复成相应的高分辨率图像。具体来说,图像超分辨率重建技术指的是利用数字图像处理、计算机视觉等领域的相关知识,借由特定的算法和处理流程,从给定的低分辨率图像中重建出高分辨率图像的过程。其旨在克服或补偿由于图像采集系统或采集环境本身的限制,导致的成像图像模糊、质量低下、感兴趣区域不显著等问题。

简单来理解超分辨率重建就是将小尺寸图像变为大尺寸图像,使图像更加“清晰”。具体效果如下图所示:

可以看到,通过特定的超分辨率重建算法,使得原本模糊的图像变得清晰了。读者可能会疑惑,直接对低分辨率图像进行“拉伸”不就可以了吗?答案是可以的,但是效果并不好。传统的“拉伸”型算法主要采用近邻搜索等方式,即对低分辨率图像中的每个像素采用近邻查找或近邻插值的方式进行重建,这种手工设定的方式只考虑了局部并不能满足每个像素的特殊情况,难以恢复出低分辨率图像原本的细节信息。因此,一系列有效的超分辨率重建算法开始陆续被研究学者提出,重建能力不断加强,直至今日,依托深度学习技术,图像的超分辨率重建已经取得了非凡的成绩,在效果上愈发真实和清晰。

2. 应用领域

1955年, di 在光学成像领域首次明确定义了超分辨率这一概念,主要是指利用光学相关的知识,恢复出衍射极限以外的数据信息的过程。1964年左右,和则首次提出了图像超分辨率这一概念,主要是指利用外推频谱的方法合成出细节信息更丰富的单帧图像的过程。1984 年,在前人的基础上,Tsai和 Huang 等首次提出使用多帧低分辨率图像重建出高分辨率图像的方法后, 超分辨率重建技术开始受到了学术界和工业界广泛的关注和研究。

图像超分辨率重建技术在多个领域都有着广泛的应用范围和研究意义。主要包括:

(1) 图像压缩领域

在视频会议等实时性要求较高的场合,可以在传输前预先对图片进行压缩,等待传输完毕,再由接收端解码后通过超分辨率重建技术复原出原始图像序列,极大减少存储所需的空间及传输所需的带宽。

(2) 医学成像领域

对医学图像进行超分辨率重建,可以在不增加高分辨率成像技术成本的基础上,降低对成像环境的要求,通过复原出的清晰医学影像,实现对病变细胞的精准探测,有助于医生对患者病情做出更好的诊断。

(3) 遥感成像领域

高分辨率遥感卫星的研制具有耗时长、价格高、流程复杂等特点,由此研究者将图像超分辨率重建技术引入了该领域,试图解决高分辨率的遥感成像难以获取这一挑战,使得能够在不改变探测系统本身的前提下提高观测图像的分辨率。

(4) 公共安防领域

公共场合的监控设备采集到的视频往往受到天气、距离等因素的影响,存在图像模糊、分辨率低等问题。通过对采集到的视频进行超分辨率重建,可以为办案人员恢复出车牌号码、清晰人脸等重要信息,为案件侦破提供必要线索。

(5) 视频感知领域

通过图像超分辨率重建技术,可以起到增强视频画质、改善视频的质量,提升用户的视觉体验的作用。

3. 研究进展

按照时间和效果进行分类,可以将超分辨率重建算法分为传统算法和深度学习算法两类。

3.1 传统超分辨率重建算法

传统的超分辨率重建算法主要依靠基本的数字图像处理技术进行重建,常见的有如下几类:

(1) 基于插值的超分辨率重建

基于插值的方法将图像上每个像素都看做是图像平面上的一个点,那么对超分辨率图像的估计可以看做是利用已知的像素信息为平面上未知的像素信息进行拟合的过程,这通常由一个预定义的变换函数或者插值核来完成。基于插值的方法计算简单、易于理解,但是也存在着一些明显的缺陷。

首先,它假设像素灰度值的变化是一个连续的、平滑的过程,但实际上这种假设并不完全成立。其次,在重建过程中,仅根据一个事先定义的转换函数来计算超分辨率图像,不考虑图像的降质退化模型,往往会导致复原出的图像出现模糊、锯齿等现象。常见的基于插值的方法包括最近邻插值法、双线性插值法和双立方插值法等。

(2) 基于退化模型的超分辨率重建

此类方法从图像的降质退化模型出发,假定高分辨率图像是经过了适当的运动变换、模糊及噪声才得到低分辨率图像。这种方法通过提取低分辨率图像中的关键信息,并结合对未知的超分辨率图像的先验知识来约束超分辨率图像的生成。常见的方法包括迭代反投影法、凸集投影法和最大后验概率法等。

(3) 基于学习的超分辨率重建

基于学习的方法则是利用大量的训练数据,从中学习低分辨率图像和高分辨率图像之间某种对应关系,然后根据学习到的映射关系来预测低分辨率图像所对应的高分辨率图像,从而实现图像的超分辨率重建过程。常见的基于学习的方法包括流形学习、稀疏编码方法。

3.2 基于深度学习的超分辨率重建算法

机器学习是人工智能的一个重要分支,而深度学习则是机器学习中最主要的一个算法,其旨在通过多层非线性变换,提取数据的高层抽象特征,学习数据潜在的分布规律,从而获取对新数据做出合理的判断或者预测的能力。随着人工智能和计算机硬件的不断发展,等人在2006年提出了深度学习这一概念,其旨在利用多层非线性变换提取数据的高层抽象特征。凭借着强大的拟合能力,深度学习开始在各个领域崭露头角,特别是在图像与视觉领域,卷积神经网络大放异,这也使得越来越多的研究者开始尝试将深度学习引入到超分辨率重建领域。

2014年,Dong等人首次将深度学习应用到图像超分辨率重建领域,他们使用一个三层的卷积神经网络学习低分辨率图像与高分辨率图像之间映射关系,自此,在超分辨率重建率领域掀起了深度学习的浪潮,他们的设计的网络模型命名为SRCNN(Super- )。

SRCNN采用了插值的方式先将低分辨率图像进行放大,再通过模型进行复原。Shi等人则认为这种预先采用近邻插值的方式本身已经影响了性能,如果从源头出发,应该从样本中去学习如何进行放大,他们基于这个原理提出了ESPCN (Real-Time Image and Video Super- Using an Sub-Pixel )算法。该算法在将低分辨率图像送入神经网络之前,无需对给定的低分辨率图像进行一个上采样过程,而是引入一个亚像素卷积层(Sub-pixel layer),来间接实现图像的放大过程。这种做法极大降低了SRCNN的计算量,提高了重建效率。

这里需要注意到,不管是SRCNN还是ESPCN,它们均使用了MSE作为目标函数来训练模型。2017年, Ledig等人从照片感知角度出发,通过对抗网络来进行超分重建(论文题目:Photo- Image Super- Using a )。他们认为,大部分深度学习超分算法采用的MSE损失函数会导致重建的图像过于平滑,缺乏感官上的照片真实感。他们改用生成对抗网络( , GAN)来进行重建,并且定义了新的感知目标函数,算法被命名为SRGAN,由一个生成器和一个判别器组成。生成器负责合成高分辨率图像,判别器用于判断给定的图像是来自生成器还是真实样本。通过一个博弈的对抗过程,使得生成器能够将给定的低分辨率图像重建为高分辨率图像。在SRGAN这篇论文中,作者同时提出了一个对比算法,名为。依然采用了MSE作为最终的损失函数,与以往不同的是,采用了足够深的残差卷积网络模型,相比于其它的残差学习重建算法,本身也能够取得较好的效果。

由于SRGAN这篇论文同时提出了两种当前主流模式的深度学习超分重建算法,因此,接下来将以SRGAN这篇论文为主线,依次讲解和SRGAN算法实现原理,并采用深度学习框架完成上述两个算法的复现。

二. 算法原理和实现 1. 超分重建基本处理流程

画质画质_环境画质_画质方面

最早的采用深度学习进行超分重建的算法是SRCNN算法,其原理很简单,对于输入的一张低分辨率图像,SRCNN首先使用双立方插值将其放大至目标尺寸,然后利用一个三层的卷积神经网络去拟合低分辨率图像与高分辨率图像之间的非线性映射,最后将网络输出的结果作为重建后的高分辨率图像。尽管原理简单,但是依托深度学习模型以及大样本数据的学习,在性能上超过了当时一众传统的图像处理算法,开启了深度学习在超分辨率领域的研究征程。SRCNN的网络结构如图2所示。

SRCNN作为早期开创性的研究论文,也为后面的工作奠定了处理超分问题的基本流程:

(1) 寻找大量真实场景下图像样本;

(2) 对每张图像进行下采样处理降低图像分辨率,一般有2倍下采样、3倍下采样、4倍下采样等。如果是2倍下采样,则图像长宽均变成原来的1/2.。下采样前的图像作为高分辨率图像H,下采样后的图像作为低分辨率图像L,L和H构成一个有效的图像对用于后期模型训练;

(3) 训练模型时,对低分辨率图像L进行放大还原为高分辨率图像SR,然后与原始的高分辨率图像H进行比较,其差异用来调整模型的参数,通过迭代训练,使得差异最小。实际情况下,研究学者提出了多种损失函数用来定义这种差异,不同的定义方式也会直接影响最终的重建效果;

(4) 训练完的模型可以用来对新的低分辨率图像进行重建,得到高分辨率图像。

从实际操作上来看,整个超分重建分为两步:图像放大和修复。所谓放大就是采用某种方式(SRCNN采用了插值上采样)将图像放大到指定倍数,然后再根据图像修复原理,将放大后的图像映射为目标图像。超分辨率重建不仅能够放大图像尺寸,在某种意义上具备了图像修复的作用,可以在一定程度上削弱图像中的噪声、模糊等。因此,超分辨率重建的很多算法也被学者迁移到图像修复领域中,完成一些诸如jpep压缩去燥、去模糊等任务。

简化版的超分重建处理流程如图3所示,当然,图像放大和修复两个步骤的顺序可以任意互换。

2. 构建深度网络模型提高超分重建性能

SRCNN只采用了3个卷积层来实现超分重建,有文献指出如果采用更深的网络结构模型,那么可以重建出更高质量的图像,因为更深的网络模型可以抽取出更高级的图像特征,这种深层模型对图像可以更好的进行表达。在SRCNN之后,有不少研究人员尝试加深网络结构以期取得更佳的重建性能,但是越深的模型越不能很好的收敛,无法得到期望的结果。部分研究学者通过迁移学习来逐步的增加模型深度,但这种方式加深程度有限。因此,亟需一种有效的模型,使得构建深层网络模型变得容易并且有效。这个问题直到2015年由何凯明团队提出网络才得以有效解决。

中文名字叫作深度残差网络,主要作用是图像分类。现在在图像分割、目标检测等领域都有很广泛的运用。在传统卷积神经网络中加入了残差学习( ),解决了深层网络中梯度弥散和精度下降(训练集)的问题,使网络能够越来越深,既保证了精度,又控制了速度。

可以直观的来理解其背后的意义。以往的神经网络模型每一层学习的是一个 y = f(x) 的映射,可以想象的到,随着层数不断加深,每个函数映射出来的y误差逐渐累计,误差越来越大,梯度在反向传播的过程中越来越发散。这时候,如果改变一下每层的映射关系,改为 y = f(x) + x,也就是在每层的结束加上原始输入,此时输入是x,输出是f(x)+x,那么自然的f(x)趋向于0,或者说f(x)是一个相对较小的值,这样,即便层数不断加大,这个误差f(x)依然控制在一个较小值,整个模型训练时不容易发散。

上图为残差网络的原理图,可以看到一根线直接跨越两层网络(跳链),将原始数据x带入到了输出中,此时F(x)预测的是一个差值。有了残差学习这种强大的网络结构,就可以按照SRCNN的思路构建用于超分重建的深度神经网络。算法主干部分就采用了这种网络结构,如下图所示:

上述模型采用了多个深度残差模块进行图像的特征抽取,多次运用跳链技术将输入连接到网络输出,这种结构能够保证整个网络的稳定性。由于采用了深度模型,相比浅层模型能够更有效的挖掘图像特征,在性能上可以超越浅层模型算法(使用了16个残差模块)。注意到,上述模型每层仅仅改变了图像的通道数,并没有改变图像的尺寸大小,从这个意义上来说这个网络可以认为是前面提到的修复模型。下面会介绍如何在这个模型基础上再增加一个子模块用来放大图像,从而构建一个完整的超分重建模型。

3. 基于子像素卷积放大图像尺寸

子像素卷积(Sub-pixel )是一种巧妙的图像及特征图放大方法,又叫做pixel (像素清洗)。在深度学习超分辨率重建中,常见的扩尺度方法有直接上采样,双线性插值,反卷积等等。ESPCN算法中提出了一种超分辨率扩尺度方法,即为子像素卷积方法,该方法后续也被应用在了和SRGAN算法中。因此,这里需要先介绍子像素卷积的原理及实现方式。

采用CNN对特征图进行放大一般会采用等方法,这种方法通常会带入过多人工因素,而子像素卷积会大大降低这个风险。因为子像素卷积放大使用的参数是需要学习的,相比那些手工设定的方式,这种通过样本学习的方式其放大性能更加准确。

具体实现原理如下图所示:

上图很直观得表达了子像素卷积的流程。假设,如果想对原图放大3倍,那么需要生成出3^2=9个同等大小的特征图,也就是通道数扩充了9倍(这个通过普通的卷积操作即可实现)。然后将九个同等大小的特征图拼成一个放大3倍的大图,这就是子像素卷积操作了。

实现时先将原始特征图通过卷积扩展其通道数,如果是想放大4倍,那么就需要将通道数扩展为原来的16倍。特征图做完卷积后再按照特定的格式进行排列,即可得到一张大图,这就是所谓的像素清洗。通过像素清洗,特征的通道数重新恢复为原来输入时的大小,但是每个特征图的尺寸变大了。这里注意到每个像素的扩展方式由对应的卷积来决定,此时卷积的参数是需要学习的,因此,相比于手工设计的放大方式,这种基于学习的放大方式能够更好的去拟合像素之间的关系。

模型也利用子像素卷积来放大图像,具体的,在图5所示模型后面添加两个子像素卷积模块,每个子像素卷积模块使得输入图像放大2倍,因此这个模型最终可以将图像放大4倍,如下图所示:

4. 结构剖析

使用深度残差网络来构建超分重建模型,主要包含两部分:深度残差模型、子像素卷积模型。深度残差模型用来进行高效的特征提取,可以在一定程度上削弱图像噪点。子像素卷积模型主要用来放大图像尺寸。完整的网络结果如下图所示:

上图中,k表示卷积核大小,n表示输出通道数,s表示步长。除了深度残差模块和子像素卷积模块以外,在整个模型输入和输出部分均添加了一个卷积模块用于数据调整和增强。

需要注意的是,模型使用MSE作为目标函数,也就是通过模型还原出来的高分辨率图像与原始高分辨率图像的均方误差,公式如下:

MSE也是目前大部分超分重建算法采用的目标函数。后面我们会看到,使用该目标函数重建的超分图像并不能很好的符合人眼主观感受,SRGAN算法正是基于此进行的改进。

5. 实现

本节将从源码出发,完成算法的建模、训练和推理。本文基于深度学习框架来完成所有的编码工作,读者在阅读本文代码前需要熟悉基本操作命令。

代码,模型,数据集获取方式

联系我们

电话:400-123-4657

传真:+86-123-4567

地址:浙江 温州市 温州大道欧江大厦26188号

邮箱:admin@kakqq.cn

电话:400-123-4657 传真:+86-123-4567 地址:浙江 温州市 温州大道欧江大厦26188号
版权所有:Copyright © 2002-2024 中华视窗 版权所有 非商用版本 ICP备案编号:粤IP**********    网站地图