1. 提出问题: 短期记忆
传统CNN基本都是单向传播, 在靠后的层, 接收到的信号十分微弱, 这种单向传播的网络, 比如VDSR/DRCN等, 称为短期记忆网络
而有些网络结构中, 网络中的神经元不仅受到直接前驱的影响, 另外还受到额外指定的前驱神经元的影响, 这种被称为限制的长期记忆网络
这里的长短期记忆和LTSM有什么关系, 看一下Andrew那章没看的课程http://mooc.study.163.com/learn/2001280005?tid=2001391038#/learn/content?type=detail&id=2001771051
受到人类思想持续性的激励(Abstract, Motivated by the fact that human thoughts have persistency, 具体怎么激励的就不用管了), 一个深度持续记忆网络(deep persistent memory network, MemNet)被提出来了
MemNet引入了一个包含递归单元(recursive unit)和门控单元(gate unit)的内存块(Memory block), 以期通过自适应学习过程明确地挖掘持续记忆, 递归单元学习当前状态在不同接收域(receptive field)下的多层表征(multi-level representation, Fig 1(c)中哪些蓝色的圈), 这些表征就可以视为由当前Memory block产生的short-term memory, 而long-term memory是由之前的Memory block产生的表征(就是Fig 1(c)的绿色箭头, 它表示long-term memory从之前的Memory block来), 这些short-term memory和long-term memory被合并输送到gate unit, gate unit自适应控制应保留多少先前的状态, 并决定应存储多少当前状态, 如文中所说的, is a non-linear function to maintain persistent memory
作者自己总结的本文主要的三大贡献
- 构建了一个Memory block用gate unit建立长期记忆, 在每个Memory block, gate unit自适应的控制不同的block在最终输出中所占的权重, 控制保留哪些单元, 存储哪些信息
- 很深的网络(80层), 密集的连接结构, 信号补偿机制(靠后的神经元被靠前的神经元直接连接), 最大限度地让信息在不同记忆单元之间流动
- 该结构被证明有很强的学习能力, 一个model处理多个任务(Denoise, SR, JPEG deblocking)
2. 结构分析
基本结构分为三个部分
FENet, 提取特征的卷积层(bn+relu+conv)
Memory block, 重复单元, 每个Memory block里一堆Recursive unit和一个Gate Unit, 根据代码
https://github.com/ly-atdawn/MemNet-Tensorflow/blob/master/model/MemNet_M6R6.py
我并没有看出来Recursive unit用了Recurrent结构, 这点和这篇文章承袭的DRCN不太一样. 在代码中, 一个Memory block里有6个Recursive unit和一个Gate unit. 每个Recursive block都是bn+relu+conv & bn+relu+conv + skip connection这种结构. Gate unit就是将之前的Recursive block的结果concat在一起, 在经过一个卷积层(bn+relu+conv)
ReconvNet, 就是1x1卷积层 + 3x3卷积层(都是bn+relu+conv), 将前面输出的结果维度变换到y的维度
整个网络的strides都是[1,1], 所以从开始到结束图像的分辨率都没有变化, 这点MemNet里没明说, 但是有一句在Experiments里
For SISR, by following the experimental setting in [20]
这个20是VDSR, 和DRCN都是CVPR 2016同一团队(首尔国立大学计算机视觉实验室)的工作, VDSR和DRCN分别是将skip connection和rnn引入了SR task中, MemNet实际上就是承袭自它们的工作, 个人觉得, Memory block的创新并不大, 在网络中使用稠密连接(Dense connection)这点与VDSR/DRCN稍有不同, 什么长时记忆的就是在讲故事了
和VDSR/DRCN, 包括再往前推的SRCNN一样, MemNet也要保证网络的输入输出是同一尺寸, 所以input x是经过插值之后image size和y一样的LR图像, 至于怎么插值, 就看SRCNN是怎么做的了
Multi-Supervised MemNet
这个结构就和DRCN非常相似了, 实际上就是每一个Memory block预测的feature我都作为一个预测值, 然后给这些预测值乘以不同的权重得到最后的x^, 这些权重也是经过学习得到的
The optimal weights {w_m }_(m=1)^M are automatically learned during training and the final output from the ensemble is also supervised.
3. 讨论
基本结构分为三个部分
一条是VDSR/DRCN, 就是首尔国立在CVPR2016的那两个工作, 还有一个就是DenseNet, 感觉就是在DRCN的基础上加了DenseNet, 效果应该会好, 因为用到的不同phase的feature更多了, 但是cost必然提高了
讲的意义不太大, 因为理论没有开创性, 前面有VDSR/DRCN, 后面有SRDenseNet, 基本上就把它包完了
尝试的意义也不太大, 因为一方面用interpolation过的LR做输入, 另一方面6x6层的conv层, cost肯定不低, 所以尝试的价值不太大, 但是它应用的广泛性还是值得关注, 可以同时解决SR和NR的问题