如果我会发光,就不必害怕黑暗; 如果我自己是那么美好,那么一切恐惧就可以烟消云散 当然,如果我可以做到
2017年9月10号
然而今天是9月17号了,不知道上周干嘛去了。。。。
接着看paper了
《Cascade Residual Learning: A Two-stage Convolutional Neural Network for Stereo Matching》
这篇paper在related work里介绍了其他几个相关工作,其实都还是值得一读的:FlowNet1.0,DispNet,GC-Net,Flownet2.0
No.1 flownet1.0——two insights
- 首先将cnn用于光流预测;
设计了新的网络结构;
- 一是对pair image先单独进行特征提取,即针对两张图分别训练两个单独网络;
- 设计了计算disparity的correlation层,而且该层不涉及训练;
增加了refine-net,虽然是简单的unpooling+conv,但同时每层都会输出预测,并将上层的预测结果进行线性插值后和本层的feature map进行concat,同时前几层提取特征的相应尺寸特征图也会和refine-net相应层的特征图进行concat,以获取更多的全局信息。
No.2 Flownet2.0。这篇文章前边的blog有讲过(flownet2.0_blog),和flownet1.0最大的不同就是提出了stacked-network。当然,文中也提出了很多具有一定普适性的训练trick。
No.3 Dispnet。网络结构如下图所示。和flownet的不同之处在于:
- 它在upconv层之间增加了conv层,使得视差预测结果变得更加的平滑。
- 提出了新的correlation layer;
- 每个upconv层输出结果都会求loss,底层网络的梯度更新不再只是输出层的loss梯度,还有本层loss的梯度。
最后,就讲讲开篇paper了。这篇paper的网络结构和flownet很像,最大的区别在于网络的输入变得更加的丰富了。
- Disfullnet——full强调的是hourglass网的输出输入同尺寸大小;
- DisResnet——Res强调的是在Disfullnet的输出结果上进行rectifine;
- 重点四DisResnet的输入包括了左图、右图、利用disfullnet的输出视差图对右图进行warp操作生成一张左图、然后就是原始左图好生成左图的差值图、再就是disfullnet的输出的视差图。一般操作是将上层的输出作为下层的输入,再进一步就是上一网块的中间层输出skip作为下一块的输入。那么这里为什么还会有个误差图和生成图作为输入呢?
- 生成图作为输入比较不好理解,因为它包含的信息原始左图都有,而且生成图就相当于包含噪声的原始左图;
- 最重要的是误差图,这个也是为什么将后一个网叫做resnet的一大原因。而且误差图和生成左图必须有一个。当然,有了误差图,相当于给了后边网络一个很强的先验,要是只给生成左图,网络还需要自己去发现错误,但有了错误图,后续网络的训练就会变得更加的简单了。
- 还有一点值得一提,那就是会将disfullnet的输出做尺寸缩放,和disresnet的各个upconv层输出的对应尺寸加起来,然后参与dieresnet的loss计算。