SRCNN

作者: conson_wm | 来源:发表于2018-08-16 08:36 被阅读0次

    1. Abstract

    Image Super-Resolution Using Deep Convolutional Networks
    Chao Dong et. al. ECCV 2014, CUHK

       谈到SRCNN, 几乎所有人都会用到一个词 - "开山之作", 这篇paper是用CNN来解决SR问题的第一篇
       但是实际上我们在说RAISR/A+/Sc的时候, 这些前DL时代SR的Solution虽然没有用CNN的结构, 但是已经有学习字典/滤波器的过程在, 和DL同属机器学习方法, 我认为本质上没有什么差异

       用CNN的好处之一就是 -> end-end, 就是直接从LR -> HR, 而不用把编码/重建这些过程分割开来

       其实SRCNN虽然用的CNN的结构, 但是在思路上是完全因循了Sc方法, 所以SRCNN的Prior依旧是LR和HR patch在结构上自相似性

       Sc方法通常是学习两组字典, 一组Dl, 一组Dh, 假设字典分别有n1和n2个字典项(atoms).
       当重建图像的时候, 先对图像密集地提取patch, 将patch在Dl字典上编码得到n1维的系数向量, 再将其映射到n2维的编码向量, 依据这个编码向量在Dh字典下重建每个patch
       最后对重叠的patches求平均得到每个像素点的超像素值
       Note: 实际上在Yang Sc的论文中, 我们是看不到先编码αl 再非线性映射αh 这个过程的, 而且字典项的数目n1=n2, 其实在谈到Sc的时候, 有一个重要的基础是认为基于LR和HR两个不同的字典, 我们可以用共同的稀疏表达α来表达LR/HR patch, 因为训练的时候就是joint Training的嘛, 但是在重建的过程中, 明显能看出来作者发现αl 和αh 是不同的

    ScSR

      这个求α的过程实际是在求α_h, 因为认为低分辨率的表达和高分辨率的表达不同, 所以才会加F extract feature以及边界上加之前已经进行HR字典编码的部分提高兼容性这些trick来进行补偿, 所以这个编码器的输出实际上是HR字典的编码α_h
      The sparse coding solver will then iteratively process the n1 coefficients. The outputs of this solver are n2 coefficients, and usually n2 = n1 in the case of sparse coding
      所以其实是存在一个从αl 到αh 的映射过程, 只不过在Sc的算法中, 没有显式地体现, 而是在这个sparse coding solver中直接解出了αh

      所以整个ScSR重建的过程可以归纳为下面三个step

    • Step 1. 密集采样patches, 分别映射到一组基(Dl)上得到低分辨率的编码向量αl
    • Step 2. 编码向量的(非线性)映射 αl→αh
    • Step 3. 在另一组基(Dh)上重建patches并在overlap处求平均来得到每个点的像素值

    2. Algorithm

    下面这张图就是CNN的网络结构

    SRCNN achitecture

      输入是一张cheap upscale(bicubic interpolation)的LR图像, 使输入和输出是同一尺寸
      经过了三层Conv层

    • Conv1 3x9x9x64 + ReLu
    • Conv2 64x1x1x35 + ReLu
    • Conv3 35x5x5x1
        Conv1和Conv3就是编码和重建的过程, 而Conv2就是从 αl→αh 的映射过程, 但是Conv2也不一定就是1x1卷积, 我们也可以在这个映射过程中加入周围feature点的影响, 变成3x3/5x5

    下面这幅图表明了SRCNN和Sc的继承关系

      第一个Conv承担了Patch extraction & Sparse Coding -> α_l的功能, 深度上的64就是n1, Conv1之后的feature map的每个点都代表了附近一片区域的LR字典编码
      第二个Conv承担了Non-linear Mapping的功能, 将低分辨率特征映射为高分辨率特征
      第三个Conv承担了Reconstruction的功能, 根据一片区域上的高分辨率特征用一个高分辨率字典还原到原始HR图像, ,同时5x5 的卷积还承担了在相邻patch之间平均的功能

      当然Sc和SRCNN是有区别的, 从训练的优化目标就不一样

    SRCNN loss function

      这是以全局的MSE最小化为目标的, 而Sc主要是以patch的差异最小化为目标来训练字典的, 最后在Reconstruction的加了个Global constraint来补救在全局上的不足

      细节:https://blog.csdn.net/u011692048/article/details/77496861
      单通道SR, 在Y通道上做, CbCr通道只做bicubic interpolation, 因为在颜色通道上做SR的提高很有限, paper中提到了在RGB上训练, 然后RGB三通道进, 三通道出这种方式的效果是最好的, 但是PSNR的提升只有0.07dB
      并且只用单通道不容易陷入局部最优解, 最后一层的学习率要非常小才能收敛
      It is also worth noting that the improvement compared with the single-channel network is not that significant (i.e., 0.07 dB). This indicates that the Cb, Cr channels barely help in improving the performance


    3. Discussion

    优势

    Comparison

      从这张图看, SRCNN的的速度并不差, 9-3-5比A+效果更好, 速度差不多, 9-1-5与A+效果差不多, 速度更快
      而且我们有别的手段可以压缩神经网络, 所以要比A+有更大的实践价值
      就是说它效果很好(跟前DL时代的solution比起来), 并且速度也不慢
      并且相比前DL时代的solution, 还有一个明显的好处就是end-end, 结构清晰简单, 并且还有很大的优化空间

    劣势

      其实谈不上劣势, 应该说是优化空间

    • 输入是cheap upscale的LR图, 这样实际上有冗余的计算, 如果可以直接输入LR图, cost会进一步降低
    • 没有利用到全局特征, 因为在整个过程中分辨率都保持一致, 这样就只有局部的feature在参与, 而更大尺度上的结构没有参与到, 我认为这样有structure deformation的风险, 其实这个问题就是因为虽然用了CNN, 但是思维还在前DL时代, 利用了CNN的特征共享, 但是没有利用CNN的感受野逐级放大(这个后面的DL Solution会补上)

    相关文章

      网友评论

          本文标题:SRCNN

          本文链接:https://www.haomeiwen.com/subject/oeowbftx.html