论文学习系列: 耦合深度自动编码器实现单图像超分辨率

  • 前言
  • 摘要
  • 简介
  • 单超分辨率图片遇到的核心问题
  • 处理SR图片的方法分为一下三类:
  • 1)基于插值的SR(Interpolation-based SR)
  • 2)基于重构的SR(Reconstruction-based SR)
  • 3)基于学习的SR(Learning-based SR)
  • 现状
  • CDA模型
  • 前置准备,一些假设
  • CDA
  • 通过CDA实现超分辨率
  • 训练CDA模型
  • 目的
  • 初始化
  • 微调
  • 论文连接


前言

笔者此时正值大一,由于此前并未学过信息奥赛,对于计算机知识的掌握微乎其微,这篇文章只是作为在完成导师所给项目,可以理解为学习笔记一类,如有专有名词翻译错误,请多多指教。侵权行为,请告知,会删除并退还全部可能收益。

摘要

稀疏编码(sparse coding)被广泛应用于基于学习的单图片超分辨率(single image super-resolution, SG)并且已经被验证通过联合学习(joint learning)有效表示低分辨率(low-resolution, LR)、高分辨率图像对(HR),能获得有保证的效果。

然而结果产生的图片容易出现震荡(ringing)、锯齿(jaggy)、模糊(blurring)的假象(artifacts),这些问题都是由于一个强大而特别的假设(strong yet ad hoc assumption)。

假设:
低分辨率图片集的表示与相关的高分辨率图片集的表示是等同的、线性相关的、流形相似的、具有相同支撑集(support set, 支撑集)。

受到深度学习的启发,我们提出了一种数据驱动模型组合了深度自耦合自编码器(coupled deep autoencoder, CDA)用于实现单图片超分辨率(SR)。深度自耦合自编码器(CDA)是一种基于全新的深度架构并且具有很强大的表征能力,CDA同时学习低分辨率图像(LR)和超高分辨率图像(HR)的本质特征并且大数据驱动函数能够精确地映射出LR图像到SR图像。这种方式的效果比目前先进水平都要好。

简介

单超分辨率图片遇到的核心问题

1)关于高频率丢失的细节(个人认为应该是代指那些丢失的像素点)的先验知识难以获取。
2)LR图片与HR图片如何相互建立关系这一点目前依然模棱两可或者说甚至是随意的。

处理SR图片的方法分为一下三类:

1)基于插值的SR(Interpolation-based SR)

这些方法的核心是采用一些传统的插值算法,通过从该像素点周围的像素点进行估计,将LR图像还原一幅HR图像(high-resolution image)。方法例如:双线性插值、三线性插值。

该方法比较简单,会产生一些模糊的边界,由此会产生一些令人能看出来的问题(artifact)。

2)基于重构的SR(Reconstruction-based SR)

这一类方法包含特定高分辨率图片细节的先验知识。许多先验知识已经被用于HR图片的修复,例如图像边缘知识、图像梯度概况、非局部平均知识。

这一方法能够很好的修复边界问题,但在高精度下,不能很好地重构那些照片中似乎是正确的地方。

3)基于学习的SR(Learning-based SR)

该模型假定那些图片在降低分辨率时丢失的高频的细节是可以被SR模型预测,该模型需要通过学习额外的LR-HR数据集。该类模型试图构建一个由LR图像到对应的HR图像的关系,这类关系被其当做先验知识。这类关系的学习通过对数据集中图像对的分析获得。

目前这类方法在SR图像修复中取得了良好的效果。

现状

目前,稀疏编码(SC, 一种基于学习的SR方法)被验证能取得有保障的效果。在设计SC方案的过程中所产生的传统假设是LR图像在其字典中的稀疏编码于HR图像在其字典中的稀疏编码完全相同。因为这条假设在实际应用中过于限制且不实用,该方法可能未能产生良好的效果。

为了克服假设的限制,引入了SC噪音,该概念表示为LR稀疏编码作为HR稀疏编码的损坏形式(论文连接)通过应用非局部平均,HR编码可以以LR编码集很好地估计出来。赋予LR/HR图像对的稀疏编码一个线性关系,使HR图像编码的表示可以从LR图像的编码线性转换。

resnet50作为Unet编码器_稀疏编码

考虑到许多图像组的非线性性,提出的流形假设(论文连接)强调了LR图像与HR图像在其各自的特征空间中是局部一致的,受到局部线性降维(embedding)(LLE)的启发,临近降维有利于HR图片组的预测作为HR临近所对应的LR临近的线性组合。

巴拉巴拉,这一部分在回顾前人的研究,这里暂时省略。

在这篇论文中,我们提出了一种对SR的数据驱动策略,具体来说,我们设计了一种新的深度模型称作对深度自编码器(coupled deep autoencoder, CDA)用于实现单图片SR。CDA包含两个自编码器用于提取在LR/HR图片对中的隐藏表征,也就是我们术语中的“intrinsic representations”(内在表征)。我们知道,自编码器的编码与解码过程只涉及乘法、加法、激活运算,因此在这个基础上的
内在表征的形成和HR片段的重构将非常迅速。通过学习图片之间的映射函数,我们可以组合一个单层神经网络同于将LR片段的内在表征映射到所对应的HR片段。

这个方法一个显著的特点是神经网络可以拟合LR与HR片段内在表征之间这种模棱两可的关系,无论在线性的情况亦或是非线性的情况。由此这种方法比现存的基于SC(稀疏编码)的方法更加灵活。

不仅如此,CDA是监督的并且具有任务特异性,由此它可以同时探索LR/HR数据的内在表征和他们之间正确的对应关系。

CDA模型

前置准备,一些假设

我们设一组样例构成的集合resnet50作为Unet编码器_resnet50作为Unet编码器_02。其中resnet50作为Unet编码器_sed_03

训练的目标是最小化重构损失(reconstruction error):resnet50作为Unet编码器_编码器_04
其中resnet50作为Unet编码器_sed_05分别代表输入数据和重构之后的输入。隐藏层象征着一个编码过程和一个解码过程:resnet50作为Unet编码器_sed_06
其中resnet50作为Unet编码器_编码器_07是紧凑表示(compact representation, 这里个人感觉有应该是将原始图片进行处理,提取出的特征)。resnet50作为Unet编码器_稀疏编码_08分别表示权重矩阵,各自属于编码层和解码层。resnet50作为Unet编码器_稀疏编码_09表示偏置。resnet50作为Unet编码器_resnet50作为Unet编码器_10是激活函数,本文中设定为sigmond函数:resnet50作为Unet编码器_稀疏编码_11

自动编码器可以给出输入图像一些非常有用的表征。然而自动编码器只能处理单样例,而且并不能模拟样例对之间的关系。在图像SR的过程中,我们感兴趣发掘图像对合适表征的提取和编码其关系。我们认为一个更好的表征不应当只依赖于输入图像,也应当依赖HR/LR图像之间的关系。出于这种想法,我们开发了CDA。

CDA

resnet50作为Unet编码器_编码器_12


注:本文中参数的角标与step一致,这里与图中的角标不符,请谅解

CDA是一个三阶段的架构,如上图所示。第一和第二阶段,使用了两个自动编码器,分别用于学习LR和HR图像的表征。第三阶段合并单层神经网络用于进行从LR表征到HR表征的转换。

给定输入的LR图像为resnet50作为Unet编码器_sed_13,与之对应的输入HR图像为resnet50作为Unet编码器_resnet50作为Unet编码器_14,那么其对应的内在表征为:resnet50作为Unet编码器_稀疏编码_15
对于重构过程:resnet50作为Unet编码器_sed_16
其中的参数大意可以自己理解一下。比如偏置、权重矩阵的概念前文有所描述。

在获得LR/HR图像的内在表征之后,神经网络工具用于构建从LR表征到HR表征的映射(mapping)。即resnet50作为Unet编码器_编码器_17
为了便于数学描述,我们引入resnet50作为Unet编码器_稀疏编码_18分别作为权重矩阵和偏置,来构建映射函数:resnet50作为Unet编码器_sed_19

resnet50作为Unet编码器_sed_20


CDA模型的构建过程中可以看出,这个模型本身十分简单,也具有很强的灵活性。我们可以将自动编码器替换为堆形自动编码器或去噪自编码器,以获取更好的效果。

通过CDA实现超分辨率

对于实现单图片的超分辨率来说,CDA是一个三层的神经网络。
先将LR图像通过双三次插值转换为想要的尺寸,转换后的图像设为resnet50作为Unet编码器_resnet50作为Unet编码器_21。于是上文的图像集resnet50作为Unet编码器_sed_22可以通过下述公式复原:resnet50作为Unet编码器_稀疏编码_23
其中resnet50作为Unet编码器_稀疏编码_24表示将第i张照片转换回来的参数。

实现过程通过上述公式resnet50作为Unet编码器_resnet50作为Unet编码器_25实现,然后再合并为一张:resnet50作为Unet编码器_resnet50作为Unet编码器_26

训练CDA模型

目的

找到LR/HR图像的内在表征、学习估计从LR表征到HR表征的映射函数。因此我们将训练过程分为两部分:第一部分是初始化、第二部分为微调。

初始化

如前文公式:resnet50作为Unet编码器_sed_27
以上两个公式为优化步骤(1)和(2)的公式,从而使得自动编码器能够很好地提取LR\HR图像表征。

基于前文提出的resnet50作为Unet编码器_resnet50作为Unet编码器_28,我们可以以此来优化我们的阶段三中从resnet50作为Unet编码器_稀疏编码_29的映射函数,即最小化下述公式:resnet50作为Unet编码器_稀疏编码_30
我们将(11)~(13)组合,于是在初始化阶段最终的目标函数为:resnet50作为Unet编码器_编码器_31
在训练的过程中,我们先优化step1和step2的自动编码器,在此之后,再基于提取的内在表征优化step3中的映射函数。注意到LRAE和HRAE并不需要转换数据,因此优化参数resnet50作为Unet编码器_稀疏编码_32可以同时进行。在优化过程中,基于梯度的方法十分有效,由于我们设定的损失函数具有凸性。

到目前为止,我们需要明确,resnet50作为Unet编码器_稀疏编码_32只是各自分别编码和解码对应的图像,resnet50作为Unet编码器_resnet50作为Unet编码器_34对应着映射的过程,为了实现CDA下一节我们讨论如何耦合这些参数。

微调

上述过程(初始化)并不能保证能够训练出一定能实现单图片SR,因为上述主要为分别训练,这种分裂的训练方式可能会在我们将其组合起来后产生很大的重构误差,因此所有参数需要组合训练。resnet50作为Unet编码器_resnet50作为Unet编码器_35因为CDA的输出结果是resnet50作为Unet编码器_稀疏编码_36,所以其损失函数类似:resnet50作为Unet编码器_resnet50作为Unet编码器_37

和其他深度学习的方法类似,我们也使用反向传播。

算法如下:

resnet50作为Unet编码器_sed_38

论文连接

Coupled Deep Autoencoder for Single Image Super-Resolution