DRCN 利用了recursive layer(up to 16 recursions)。如果增加了recursion depth,但是没有增加parameters的数量,而之前说过网路越深,效果一般越好。但实际上,这种网络不好训练,所以原文提出了recursive-supervision 和 skip-connection缓解训练难的问题。
原文沿用了SRCNN的思想,把network拆分了sub-network:embedding network, inference network, reconstruction netowork。
Embedding network
简单来说就说特征提取层,不管input是grayscale 还是rgb,进来之后提取出多维的feature maps。
inference network
推断层,这一层是作者的trick点,借鉴rnn的感觉,让d个conv层串联,并且很重要的一点,他们权值共享。这样有什么好处那?
第一,网络深度增加,主要是感受野比较大,每经过recursion 一次,卷积视野就增加一次;
第二,权值共享具体点是 w和bias共享,每次conv一次,经过一次relu,这样重复提取特征,相当于不管重复多少次(深度增加多少),参数不变!
第三,recursive-supervision 对于每一层提取的特征进行了梯度反传,DRCN将每一层的卷积结果都通过同一个Reconstruction Net得到一个重建结果,从而共得到D个重建结果,再把它们加权平均得到最终的输出,充分利用网络intermediate的feature maps。
第四,back propagation的时候,回传到各个intermediate layers,使结果比较smooth。
reconstruction net
这个相当于embedding net的逆过程,又把他恢复了grayscale 或者rgb。channel层次。
关于loss
文章依然用的是MSE类似的loss
1. 除去skip conection的,还有中间D个 recursion出来的outputs,所以就把这D+1个结果分成了两部分
N是一个batch的sample数量。
result
作者发现recursion d越大,psnr越高
并且发现如果不是recursion的unit全部连到final output,而是单一的某一层,效果会变差,证明了recursion ensemble的效果