热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlabe基于残差学习的图像去噪_黄浴:基于深度学习的超分辨率图像技术发展轨迹一览...

作者|黄浴转载自知乎导读:近年来,使用深度学习技术的图像超分辨率(SR)取得了显著进步。本文中,奇点汽车自动驾驶首席科学家黄浴对基于深度学
dc4450aee17db76edd6e2d92400f02ea.png

作者 | 黄浴

转载自知乎

导读:近年来,使用深度学习技术的图像超分辨率(SR)取得了显著进步。本文中,奇点汽车自动驾驶首席科学家黄浴对基于深度学习技术的图像超分辨率技术进行了一次全面的总结,分析了这门技术近年来的发展轨迹。

我们一般可以将现有的 SR 技术研究大致分为三大类:监督 SR ,无监督 SR 和特定领域 SR (人脸)。

监督SR

如今已经有各种深度学习的超分辨率模型。这些模型依赖于有监督的超分辨率,即用LR图像和相应的基础事实( GT )HR 图像训练。 虽然这些模型之间的差异非常大,但它们本质上是一组组件的组合,例如模型框架,上采样方法,网络设计和学习策略等。从这个角度来看,研究人员将这些组件组合起来构建一个用于拟合特定任务的集成 SR 模型。

由于图像超分辨率是一个病态问题,如何进行上采样(即从低分辨率产生高分辨率)是关键问题。基于采用的上采样操作及其在模型中的位置, SR 模型可归因于四种模型框架:预先采样 SR ,后上采样 SR ,渐进上采样 SR 和迭代上下采样 SR ,如图所示。

01d4218e5ce5e7ca576772f5c3a6229d.png
237bd6931dd93026261572446948dd02.png

除了在模型中的位置之外,上采样操作如何实现它们也非常重要。为了克服插值法的缺点,并以端到端的方式学习上采样操作,转置卷积层(Transposed Convolution Layer)和亚像素层(Sub-pixel Layer)可以引入到超分辨率中。

转置卷积层,即反卷积层,基于尺寸类似于卷积层输出的特征图来预测可能的输入。具体地说,它通过插入零值并执行卷积来扩展图像,从而提高了图像分辨率。为了简洁起见,以 3×3 内核执行 2 次上采样为例,如图所示。首先,输入扩展到原始大小的两倍,其中新添加的像素值被设置为 0(b)。然后应用大小为 3×3、步长 1 和填充 1 的内核卷积(c)。这样输入特征图实现因子为2 的上采样,而感受野最多为 2×2 。

156d4726fc5ed59b6d57053fac79f1b1.png

由于转置卷积层可以以端到端的方式放大图像大小,同时保持与 vanilla 卷积兼容的连接模式,因此它被广泛用作 SR 模型的上采样层。然而,它很容易在每个轴上产生“不均匀重叠(uneven overlapping)”,并且在两个轴的乘法进一步产生了特有的不同幅度棋盘状图案,从而损害了 SR 性能。

亚像素层也是端到端学习的上采样层,通过卷积生成多个通道然后重新整形,如图所示。首先卷积产生具有 s2 倍通道的输出,其中 s 是上采样因子(b)。假设输入大小为 h×w×c ,则输出大小为 h×w×s2c。之后,执行整形( shuffle )操作产生大小为 sh×sw×c 的输出(c)。感受野大小可以达到 3×3 。

a4ca79f3c1e55a56c103f3d0e33ba8c4.png

由于端到端的上采样方式,亚像素层也被 SR 模型广泛使用。与转置卷积层相比,亚像素层的最大优势是具有较大的感知场,提供更多的上下文信息,能帮助生成更准确的细节。然而,亚像素层的感受野的分布是不均匀的,块状区域实际上共享相同的感受野,这可能导致在块边界附近的一些畸变。

各种深度学习的模型已经被用于 SR ,如图所示。

18f6b0e7a13a495e27067274da9691db.png

ResNet 学习残差而不是彻底的映射,已被 SR 模型广泛采用,如上图(a)所示。其中,残差学习策略可以大致分为两种类型,即全局和局部残差学习。

由于超分辨率是图像到图像的转换任务,其中输入图像与目标图像高度相关,全局残差学习仅学习两个图像之间的残差。在这种情况下,它避免学习从完整图像到另一个图像的复杂转换,而只需要学习残差图来恢复丢失的高频细节。由于大多数区域残差接近于零,模型的复杂性和学习难度都大大降低。这种方法在预上采样的 SR 框架普遍采用。

局部残差学习类似于 ResNet 的残差学习,用于缓解不断增加的网络深度引起的退化问题并提高学习能力。

实践中,上述方法都是通过快捷连接(通常有小常数因子的缩放)和逐元素加法操作实现的。区别在于,前者直接连接输入图像和输出图像,而后者通常在不同深度的网络中层之间添加多个快捷方式。

• 递归学习

递归学习(以递归方式多次应用相同模块)也被超分辨率采用,如上图 (b)所示。在实践中,递归学习固有地带来了消失(vanishing)或爆涨(exploding)梯度问题,因此残差学习和多信号监督等一些技术通常与递归学习相结合,以减轻这些问题。

• 通道关注

考虑到不同通道之间特征表征的相互依赖和作用,一种“挤压-激发(SAE,squeeze-and-excitation)”模块明确对通道相互依赖性建模,来提高表示能力,如上图(c)所示。其中用全局平均池化将每个输入通道压缩到通道描述子(即一个常数)中,然后将这些描述子馈送到两个全连接层产生通道尺度因子。基于通道乘法,用尺度因子重新缩放输入通道得到最终输出。

• 致密连接

致密连接在视觉任务中变得越来越流行。在致密块的每个层,所有前层的特征图用作输入,并且其自身特征图用作所有后续层的输入,在一个有 l 层致密块中带来 l·(l - 1)/ 2 个连接。致密连接,不仅有助于缓解梯度消失问题、增强信号的传播并促进特征重用,而且在连接之后采用小增长率(即致密块的通道数)和通道缩减来大大减少参数量。

为了融合低级和高级特征以提供更丰富的信息来重建高质量的细节,致密连接被引入 SR 领域,如上图(d)所示。

• 多路径学习

多路径学习指模型存在多个路径传递特征,这些路径执行不同的操作以提供更好的建模功能。具体而言,它可以分为三种类型:全局法、局部法和特定尺度法。

全局多路径学习是指用多个路径提取图像不同方面的特征。这些路径可以在传播中相互交叉,从而大大增强了特征提取的能力。

本地多路径学习用新块进行多尺度特征提取,如上图(e)所示。该块采用不同内核大小的卷积同时提取特征,然后将输出连接起来并再次进行相同的操作。快捷方式通过逐元素添加来连接该块的输出和输入。通过这种局部多路径学习,SR 模型可以更好地从多个尺度提取图像特征,进一步提高性能。

特定尺度多路径学习共享模型的主要部分(即特征提取的中间部分),并分别在网络的开头和结尾附加特定尺度的预处理路径和上采样路径,如上图(f)所示。在训练期间,仅启用和更新与所选尺度对应的路径。这样大多数参数在不同尺度上共享。

• 高级卷积

卷积运算是深度神经网络的基础,改进卷积运算可获得更好的性能或更快的速度。这里给出两个方法:扩张卷积( Dilated Convolution )和群卷积( Group Convolution )。 众所周知,上下文信息有助于在图像超分辨率生成逼真的细节。扩张卷积能将感受野增加两倍,最终实现更好的性能。群卷积以很少的性能损失可减少大量的参数和操作,如上图( g )所示。

• 像素递归学习

大多数 SR 模型认为这是一个与像素无关的任务,因此无法正确地确定生成像素之间的相互依赖性。在人注意力转移机制推动下,一种递推网络可依次发现参与的补丁并进行局部增强。以这种方式,模型能够根据每个图像自身特性自适应地个性化最佳搜索路径,从而充分利用图像全局的内依赖性( intra-dependence )。不过,需要长传播路径的递归过程,特别对超分辨率的 HR 图像,大大增加了计算成本和训练难度。

• 金字塔池化

金字塔池化模块更好地利用全局和局部的上下文信息,如上图( h )所示。 具体地,对于尺寸为 h×w×c 的特征图,每个特征图被划分为 M×M 个区间,并经历全局平均池化产生 M×M×c 个输出。 然后,执行 1×1 卷积输出压缩到一个单信道。 之后,通过双线性插值将低维特征图上采样到与原始特征图相同的大小。 使用不同的 M,该模块可以有效地整合全局和局部的上下文信息。

• 小波变换

众所周知,小波变换( WT )是一种高效的图像表示,将图像信号分解为表示纹理细节的高频小波和包含全局拓扑信息的低频小波。将 WT 与基于深度学习的 SR 模型相结合,这样插值 LR 小波的子带作为输入,并预测相应 HR 子带的残差。 WT 和逆 WT 分别用于分解LR输入和重建 HR 输出。

另外学习策略问题,涉及损失函数的设计(包括像素损失,内容损失,纹理损失,对抗损失和周期连续损失)、批处理归一化(BN)、课程学习(Curriculum Learning)和多信号监督( Multi-supervision )等等。

无监督SR

现有的超分辨率工作主要集中在监督学习上,然而难以收集不同分辨率的相同场景的图像,因此通常通过对 HR 图像预定义退化来获得 SR 数据集中的 LR 图像。为了防止预定义退化带来的不利影响,无监督的超分辨率成为选择。在这种情况下,只提供非配对图像( HR 或 LR )用于训练,实际上得到的模型更可能应对实际场景中的 SR 问题。

• 零击(zero shot)超分辨率

单个图像内部的统计数据足以提供超分辨率所需的信息,所以零击超分辨率(ZSSR)在测试时训练小图像特定的 SR 网络进行无监督 SR ,而不是在大数据集上训练通用模型。具体来说,核估计方法直接从单个测试图像估计退化内核,并在测试图像上执行不同尺度因子的退化来构建小数据集。然后在该数据集上训练超分辨率的小 CNN 模型用于最终预测。

ZSSR 利用图像内部特定信息的跨尺度复现这一特点,对非理想条件下(非 bi-cubic 退化核获得的图像,受模糊、噪声和压缩畸变等影响)更接近现实世界场景的图像,比以前的方法性能提高一大截,同时在理想条件下( bi-cubic 插值构建的图像),和以前方法结果差不多。尽管这样,由于需要在测试期间为每个图像训练单个网络,使得其测试时间远比其他 SR 模型长。

• 弱监督 SR

为了在超分辨率中不引入预退化,弱监督学习的 SR 模型,即使用不成对的 LR-HR 图像,是一种方案。一些方法学习 HR-LR 退化模型并用于构建训练 SR 模型的数据集,而另外一些方法设计周期循环( cycle-in-cycle )网络同时学习 LR-HR 和 HR-LR 映射。

由于预退化是次优的,从未配对的 LR-HR 数据集中学习退化是可行的。一种方法称为“两步法”:

  • 1)训练 HR-LR 的 GAN 模型,用不成对的 LR-HR 图像学习退化;
  • 2)基于第一个 GAN 模型,使用成对的 LR-HR 图像训练 LR- HR 的 GAN 模型执行 SR 。

对于 HR 到 LR 的 GAN 模型,HR 图像被馈送到生成器产生 LR 输出,不仅需要匹配 HR 图像缩小(平均池化)获得的 LR 图像,而且还要匹配真实LR图像的分布。训练之后,生成器作为退化模型生成 LR-HR 图像对。

对于 LR 到 HR 的 GAN 模型,生成器(即 SR 模型)将生成的 LR 图像作为输入并预测 HR 输出,不仅需要匹配相应的 HR 图像而且还匹配 HR 图像的分布 。

在“两步法”中,无监督模型有效地提高了超分辨率真实世界LR图像的质量,比以前方法性能获得了很大改进。

无监督 SR 的另一种方法是将 LR 空间和 HR 空间视为两个域,并使用周期循环结构学习彼此之间的映射。这种情况下,训练目的包括推送映射结果去匹配目标的域分布,并通过来回( round trip )映射使图像恢复。

• 深度图像先验知识

CNN 结构在逆问题之前捕获大量的低级图像统计量,所以在执行 SR 之前可使用随机初始化的 CNN 作为手工先验知识。具体地讲,定义生成器网络,将随机向量 z 作为输入并尝试生成目标 HR 图像 I 。训练目标是网络找到一个 Iˆ y,其下采样 Iˆy 与 LR 图像 Ix 相同。 因为网络随机初始化,从未在数据集上进行过训练,所以唯一的先验知识是 CNN 结构本身。 虽然这种方法的性能仍然比监督方法差很多,但远远超过传统的 bicubic 上采样。此外,表现出的 CNN 架构本身合理性,促使将深度学习方法与 CNN 结构或自相似性等先验知识相结合来提高超分辨率。

特定SR

特定 SR 领域主要包括深度图、人脸图像、高光谱图像和视频等内容的 SR 应用。

面部图像超分辨率,即面部幻觉( FH, face hallucination ),通常可以帮助其他与面部相关的任务。与通用图像相比,面部图像具有更多与面部相关的结构化信息,因此将面部先验知识(例如,关键点,结构解析图和身份)结合到 FH 中是非常流行且有希望的方法。利用面部先验知识的最直接的方式是约束所生成的HR图像具有与基础事实(GT)的 HR 图像相同的面部相关信息。

全色图像( PAN,panchromatic images ),即具有 3 个波段的 RGB 图像相比,有数百个波段的高光谱图像( HSI,hyperspectral images )提供了丰富的光谱特征并有助于各种视觉任务。 然而,由于硬件限制,收集高质量的 HSI 比收集 PAN 更困难,收集的 HSI 分辨率要低得多。 因此,超分辨率被引入该领域,研究人员倾向于将 HR PAN 和 LR HSI 结合起来预测 HR HSI 。

视频超分辨率而言,多个帧提供更多的场景信息,不仅有帧内空间依赖性而且有帧间时间依赖性(例如,运动、亮度和颜色变化)。 大多数方法主要集中在更好地利用时空依赖性,包括显式运动补偿(例如,光流算法、基于学习的方法)和递归方法等。

参考文献

  1. Z Wang, J Chen, S Hoi,“Deep Learning for Image Super-resolution: A Survey”, Arxiv 1902.06068,2019
  2. W Yang et al.,“Deep Learning for Single Image Super-Resolution: A Brief Review”, Archiv 1808.03344, 2018
  3. Z Li et al.,“Feedback Network for Image Super-Resolution”, CVPR 2019
  4. C Chen et al.,“Camera Lens Super-Resolution”, CVPR 2019
  5. K Zhang et al.,“Deep Plug-and-Play Super-Resolution for Arbitrary Blur Kernels”, CVPR 2019

原文链接:

https://zhuanlan.zhihu.com/p/76820438

(*本文为 AI科技大本营转载文章,转载请联系原作者)



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
魏承辉符合_821
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有