sfMLearning自动驾驶项目算法思想

从自动驾驶应用的角度来看这篇论文,首先是无监督的方法使大规模的训练成为可能

1.主旨思想

今天分享的这篇论文,采用了无监督的方法针对视频数据进行训练,从而对单张图片的深度以及连续帧之间的车辆运动进行估计,可以对大量已知相机内参的视频数据进行训练,为 CNN 在自动驾驶领域的应用带来的新的启发。

2.网络构建(端到端的卷积神经网络)

两个网络的互溶:
用视频连续帧的不同视角的几何信息作为监督信号训练了一种端到端的单目图像深度估计和车辆运动估计的 framework
1)Depth CNN(输入是单目视角的视频某帧)
2)Pose CNN(视频连续帧的不同视角)
3)Loss (将当前帧图像结合预测的深度图以及帧间转移投影到临近帧上,计算像素误差作为训练的 loss,对两个网络进行联合训练)
4)参考的算法:ground-truth pose && depth

3.算法依赖的思想:

1)无监督卷积神经网络,兼容多场景训练
2)optical-flow的pipeline算法:保证网络必须同时学到深度估计和帧间转移估计才能使 loss 最小,联合训练
3)卷积与反卷积的网络结构:这种卷积再反卷积的网络结构比较经典,广泛应用于深度预测(Flow-net 等)
4)multi-scale和smoothness loss机制解决局部梯度最优解的问题
5)explainability mask的算法,用于解决图像中的运动物体以及随视角变化的遮挡情况。

4. 网络构建的具体过程:

depth CNN:网络结构是在 DispNet 的基础上加上了 multi-scale 的输出。
pose CNN:Pose/explainability network:网络结构为两个网络共享前几层卷积,预测出 6-DoF 的帧间转移 pose 之后,再进行反卷积,输出不同 scale的 explainability mask,这种结构有利于梯度传播以及得到全局 smooth 的深度图
explainability mask:将 mask 乘在对应尺度的像素误差上,即得到最后的误差。这也会引入另一个问题,即该 mask 为全零时 loss 为 0, 为了解决该问题,通过计算该 mask 与 1 的交叉熵,加入了一个正则项。

只有在 single-view depth network 输出正确的深度,Pose network 输出了正确的帧间转移,同时 explainability mask 正确的覆盖了运动物体及遮挡区域以及算法无法解释的区域时,网络的 loss 才为最小。

5.研究结论:

A:这种无监督的方法的输出是尺度模糊的, 所以并不能得到真实的 depth,我在 SLAM 的相关实验中加入了一个 scale factor。关于网络的训练,code 已经开源
B:网络的 performance 对那几个参数比较敏感,尤其是对最后一个 mask 的参数特别敏感。对不同的数据集,要在 validation 集上进行手动的参数调整。explainability mask 对结果的影响取决于训练的数据集,比如在 KITTI 数据集上,去掉 mask 对结果影响不大
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考方法:
https://baijiahao.baidu.com/s?id=1574056854078517&wfr=spider&for=pc

猜你喜欢

转载自blog.csdn.net/zjguilai/article/details/90200285