zoukankan      html  css  js  c++  java
  • 论文笔记:SRCNN

    1.这篇论文的主要假设是什么?(在什么情况下是有效的),这假设在现实中有多容易成立

      LR图像是HR图像经过模糊(低通滤波器),下采样,加噪处理后的图像。

    2.在这些假设下,这篇论文有什么好处
    3.这些好处主要表现在哪些公式的哪些项目的简化上。
    4.这一派的主要缺点有哪些

      

    1.神经网络的计算速度却决于输入图像的尺寸。由于卷积层是在HR空间中,计算复杂度大
    2.插值法仅仅是将尺寸放大,并没有带来解决不适定的重建问题的额外信息。(ESPCN,3)

    3.非线性映射层计算复杂度高

    4.依赖于小图像区域的上下文(VDSR,1)

    5.一个网络只能对应一个scale(VDSR,1)

     

    1.intro

      图像超分辨率问题是在CV领域一个经典的问题。目前(2014)最先进的方法大多是基于实例的,主要包括利用图片的内部相似性,或者学习低分辨率高分辨率样本对的映射函数。后者往往需要大量的数据,但是目前有效性不足以令人满意并且无法精简模型。其中典型的是基于稀疏编码的方法,包括以下几步:先从图像中密集地抽取patch并进行预处理,然后使用low-resolution dict对patch进行编码,得到稀疏的coefficients,被换成high-resolution dict用于重建高分辨率patch,对这些patch进行合成或平均以得到高分辨率图像。这些方法将注意力都集中在对dict的学习和优化或者其他建模方法,其余步骤很少得到优化和考虑。

      本篇文章我们提出,上述步骤作用相当于一个卷积神经网络。我们考虑直接在高低分辨率图像中建立一个端到端映射的CNN,用隐藏层取代对dict的学习。在这个过程中,patch的抽取和聚合也能够得到应有的优化。这就是SRCNN,其有以下优点:1.模型简单,精度高。2.速度快。3.随着数据集的增大,重建质量还可以增强。但是在以往方法中,数据集增大会带来很多挑战。

      本文主要工作:

      1.针对超分辨问题提出一个基于端到端映射的卷积神经网络,图像预处理后处理更少。

      2.基于深度学习的SR方法和传统的基于稀疏编码方法的比较。

      3.论证了深度学习在SR问题中可以被应用,且可以获得较好的质量和速度。

    2.related work

    2.1 图像超分辨

      一类图像超分辨方法时学习高低分辨率patch间的映射,这些工作的主要区别在于学习一些将高低分辨率patch关联起来的dict和manifold space方面,和如何在此空间内进行方案表示方面。

      Freeman的工作:dict里的元素直接代表高低分辨率的patch对,在低分辨率空间中找到input patch的最近邻居(NN),对应到相应的高分辨率patch。

      Chang的工作:使用manifold embedding technique代替NN策略

      Yang的工作:NN对应进展到更为先进的稀疏编码方式。这种稀疏编码方式及其改进是目前最先进的SR方法。

    2.2 CNN

      CNN最近因其在图像分类领域的成功而变得火热。

    2.3 图像复原领域的深度学习

      已经有一些使用深度学习技术在图像复原领域应用的例子:多层感知机用于自然图像去噪和post-deblurring去噪,CNN用于自然图像去噪和消除噪声图案。图像超分领域还并未得到应用。

    3.SRCNN

    3.1 构思

      将原始图像通过插值,扩展到插值图像Y,我们的目标就是将Y经过F(Y)变换,尽可能地接近高分辨图像X。方便起见,我们将Y成为低分图像,尽管其尺寸与X相等。

      1.patch(图像块)抽取与表示。将Y中的每一图像块抽取出来并表示为高维向量,这些高维向量包括一系列特征图,特征图的个数等于高维向量的维度。

      2.非线性映射。将上一步得到的每一高维向量进行非线性映射,得到另一个高维向量。得到的高维向量代表高分辨图像的patch,这些高维向量也包括一系列特征图。

      3.重建。聚合上步得到的高分辨图像patch,得到最终的高分图像

    patch(图像块)抽取与表示

      深度学习之前的常用策略是密集抽取patch并用一组基来表示(如PCA,DCT,Haer)。这个过程等价于使用一组filter(每一个filter相当于一个基)对图像进行卷积。这在此网络中表示为进行卷积操作$$F_{1}left ( Y ight )=maxleft ( 0,W_{1}*Y+B_{1} ight )$$

      其中$W_{1}$的尺寸是$c imes f_{1} imes f_{1} imes n_{1}$,$B_{1}$是$n_{1}$维向量。在这之后应用一个RELU单元(RELU相当于非线性映射,而patch的提取和表示是纯线性操作)

    非线性映射

      上一步得到的得到的每一个$n_{1}$维向量对应于原始图像中的一个patch,将得到的$n_{1}$维向量映射到$n_{2}$维向量,这在此网络中表示为进行卷积操作$$F_{2}left ( Y ight )=maxleft ( 0,W_{2}*F_{1}left ( Y ight )+B_{2} ight )$$

      其中$W_{2}$的尺寸是$n_{1} imes 1 imes1 imes n_{2}$,$B_{2}$是$n_{2}$维向量

      注:可以增加额外的卷积层来增加网络的非线性,但也需要考虑因此带来的问题。

    重建

      在传统方法中,往往将高分patch进行average以产生最终图像。这一平均操作可以替换为:使一系列特征图通过我们预定义好的滤波器。

      

      这在此网络中表示为进行卷积操作$$Fleft ( Y ight )=W_{3}*F_{2}left ( Y ight )+B_{3} $$

      其中$W_{3}$的尺寸是$n_{2} imes f_{3} imesf_{3} imes c$,$B_{3}$是$c$维向量

      如果代表HR patch的$n_{2}$维向量是在图像域,则直接把第三次的filter看成一个averaging filter;如果是在其他域,则可以理解为第三层先将系数转换到了图像域继而进行average。

    3.2 和稀疏编码方法的关系

      在稀疏编码中,考虑从原始图像中抽取$f_{1} imes f_{1}$的LR图像块,这一图像块减掉其均值后被投影到LR字典中。若LR字典大小为$n_{1}$,则这正相当于$n_{1}$个$f_{1} imes f_{1}$线性filter。(减均值操作包括在线性操作中)

      the sparse coding solver对$n_{1}$个系数进行非线性映射操作,输出是$n_{2}$个系数,这$n_{2}$个系数代表HR patch。但是这一步骤并不是feed-forward,而是iterative。然而在CNN中的操作却是feed-forward,而且便于计算,此操作可以看做是像素层面的全连接网络。

    (针对这里的pixel-wise fully-connected layer, 个人理解:应该说的是前后两组feature maps中对应patch的特征进行全连接,而不是对patch进行全连接。在这里的“像素”应该指的是代表patch的高维向量的每一个维度)

      之后,$n_{2}$个系数通过HR字典投影到HR图像块,之后进行average操作。这等效于在$n_{2}$特征图上进行线性卷积。如果用来重建的patch尺寸为$f_{3} imes f_{3}$, 则卷积操作的filter也是$f_{3} imes f_{3}$

      以上这些说明了,我们可以用CNN代替传统的稀疏编码,而且CNN能够对所有步骤进行优化。

      我们设置的超参数是f1 = 9, f3 = 5, n1 = 64, and n2 = 32

      若设置最后一层filter<第一层,则我们更多地依赖于HR patch的中心部分; 为了达到稀疏的目的,也可以设置n2 < n1。

      相比于传统方法更精确的原因之一是,此模型中HR像素的感受野大。(每一像素利用了$left ( 9+5-1 ight )^{2}=169$个原始像素的信息)

    3.3 训练

    3.3.1 LOSS函数

      MSE损失$$Lleft ( Theta  ight )=frac{1}{n}sum_{i=1}^{n}left | Fleft ( Y_{i};Theta  ight )-X_{i} ight |^{2}$$

      使用MSE偏好于PSNR,(PSNR是定量评估重建质量的重要指标,与感知质量也相关)。

      也可在训练过程中使用更合适的LOSS函数,这点在传统SC方法是不可想象的。

    3.3.2 momentun梯度下降

      

      训练的输入是原始图像经过加噪、下采样,上采样。

    4. 实验

      数据集:训练集:91images

          Set5用于2,3,4倍上采样, Set14用于4倍上采样

      超参数:f1 = 9, f3 = 5, n1 = 64, and n2 = 32

      ground truth尺寸:32*32pixel

      将HR图片根据14stride切割成32×32子图,这样一来,91张图片共产生约24800张训练图片。

      我们的图片是在YCrCb空间下,且只考虑亮度通道。因此c=1,两个色度空间不会被训练。当然,也可以设置c=3,我们设置c=1只是为了和其他方法竞争公平。

      训练阶段,为了避免边缘效应,我们的卷积操作无Padding,这会导致输出尺寸是20*20,我们取ground truth中心的20*20进行LOSS函数的计算。而测试阶段有Padding,可以输入任意尺寸图片,输入尺寸不变,为了解决边界效应,在每个卷积层中,每个像素的输出(在ReLU之前)都通过有效输入像素的数量进行标准化。

      filter参数被随机初始化,标准差0.001。前两层LR=10−4,最后一次LR=10-5。根据经验,最后一层LR小对于收敛很重要。

    5. 分析

      5.1 分析filter

      训练出的不同filter对应不同功能

      5.2 使用不同数据集会产生不同效果

      5.3 filter数量

      可以改变层数和filter的数量,来产生不同效果,然而效果的提升意味着牺牲速度的代价

      5.4 filter尺寸。同5.3

    5.总结

      添加更多的layer或者filter可以得到不同效果

      也可以探索一种网络来应对不同的上采样倍数。

  • 相关阅读:
    React元素渲染
    初识JSX
    微信小程序复制文本到剪切板
    微信小程序报错request:fail url not in domain list
    小程序,通过自定义编译条件,模拟推荐人功能
    积分抵扣逻辑
    微信小程序 switch 样式
    tomcat 配置开启 APR 模式
    tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
    c++数组初始化误区
  • 原文地址:https://www.cnblogs.com/cs-zzc/p/11484552.html
Copyright © 2011-2022 走看看