A Two-Streamed Network for Estimating Fine-Scaled Depth Maps from Single RGB Images

来源:互联网 发布:选择旅行社的软件 编辑:程序博客网 时间:2024/06/07 20:49

该网络也是注重深度和深度的梯度,将其融合成一个很棒的深度映射。加上一些约束,网络更加不易过拟合,性能更好。

该算法很强调结果细节处理,再注意一下regularizer的实现。

算法框架如下:


3.1网络结构介绍

可见对于梯度并非如常规算法当中仅在loss部分添加一个约束项,而是另开辟一个分支,单独去学习梯度的特征,单独去对它进行上采样,最后梯度与深度信息进行融合。

这两个分支有着同样的形式,一个是图像解析块,接着是特征融合块最后是修正块。

图像解析块是由VGG和两个全连接网络构成。第二个全连接层的输出reshaped成55×75×D的特征块。接着传入特征融合层。

D=1的时候是深度分支,D为2时为梯度分支。其他的预训练网络也可以代替此处的VGG-16,比如说VGG-19和ResNet。(此处的D看似这么方便表示,但是caffe实现的时候必须还得分成两个部分,因为即使是3D卷积也没法满足这样的功能,它需要的是多特征之间乘积相加而做不到完全的独立)

对于特征融合块,是先由一个9×9卷积和池化层,后面接着八个连续的5×5卷积,无池化构成。它的输入有三个:1,图像原图,2,VGG输出,3,图像解析输出。

该层有很多的skip connection,VGG的pool3特征在第二个卷积fused,VGG的pool4的特征在第四个卷积fused,图像解析层的输出在第六个卷积层fused。skip connection 可以共享阶段性的信息,可以发现这个网络训练起来更加容易收敛。(以前总是在反卷积上采样的时候可能想结合着之前特征层的特征,而该文在特征融合块的时候就已经开始结合了之前层的多种特征了。不知道效果如何~网络设计挺有新意~)

修正块,与特征融合块是类似的,由一个9×9卷积池化和五个5×5不带池化的卷积层构成。输入是:1,图像RGB输入。2,特征融合块的双线性上采样输出,3,以及与第三个卷积层的skip connection。这个块的工作映射尺寸大小是111×150.

再后面的深度和梯度混合块将两个不同的分支变成一个单独融合的深度估计。我们提出两种操作可能性,一个是一个端到端网络,还有一个是通过数值优化。

网络结构介绍完毕。

3.2 设置图像损失

就是l2loss,除此之外呢,还有一个约束项,该约束项是

约束的是训练集中的两张整图,因为它认为一张图片会在数据增益的时候进行色彩,对比度等变换,那这些变化之后的理论上跟之前的输出有着对应的关系。这个约束项就是将变化后的输出经过反变化成之前的进行约束。它是整图约束,感觉很慢且代码不好实现。

3.3 深度和深度梯度估计


首先呢,深度梯度的损失函数如上所示,x和y代表着p点的横轴和纵轴的方向

在端到端网络中进行融合

就是loss是深度的loss加上深度梯度的loss。

其次就是基于优化的融合,

直接通过

不知道从代码实现上这个式子与上文的端到端有什么不同

3.4训练策略

除了VGG,其它层都是随机初始化。

两个分支分别独自训练,每个都有两步,首先,图像解析和特征融合块由一个深度和深度梯度的loss来训练。这些层的权重在第二步的优化块训练的时候被固定。

优化的方法训练到此为止,于是就开始根据上文的公式进行求D。而对于端到端网络,则固定前面所有层,混合层进行combine loss的训练。最后几个部分再基于combine loss进行最终的finetune。

网络训练很快,2~3个epoch就收敛了。

4.数据增益

转换和旋转对于训练无益,因此数据增益部分忽视了它们,只用了翻转和色彩变化


最终的训练曲线如下:

可以发现batchsize设置成1比较好,因为它式子中的约束是整张图片的约束,batchsize不设置成1,物理意义都不对了。

而且文中说,该算法用到大量的skipconnection。因此,训练效率挺高。


总结:

1.个人感觉它的约束不可取

2.分段训练网络真的挺好,先训练,固定,再训练,再固定,最后finetune。这个挺好~可以尝试~

3.且结构中过多的skipconnection,可以在网络中加更多的skipconnection。

无源码,可惜。









阅读全文
0 0
原创粉丝点击