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 是不同的
这个求α的过程实际是在求α_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的网络结构
输入是一张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是有区别的, 从训练的优化目标就不一样
这是以全局的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
优势
从这张图看, 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会补上)