multi task训练torch_Multi-Task Multi-Sensor Object Detection(Uber’19)

08cfce8fb793e7debad77463e65885df.png
更多相关博客请猛戳:AutoVision
如需转载,请附上本文链接,谢谢!

这篇MMF(Multi-Task Multi-Sensor Fusion for 3D Object Detection[1])是Uber跟Toronto大学联合发布在CVPR2019的一篇关于利用多传感器(lidar+camera)融合进行物体识别的文章。

LiDAR跟Camera是自动驾驶车上非常常见的传感器,它们各自有自己的优缺点,例如:

  1. Camera 能够提供非常丰富的语义信息,而且能够看到很远的物体(例如200m),但是没有办法提供精确的3d位置信息(尤其是单目相机);
  2. LiDAR 能够得到非常精确的3d位置信息,但是点云随着距离的变大会变得越来越稀疏(Velodyne64 60m,Pandar64 100m点就开始变少);而且LiDAR的点云通常只包含 x,y,z,intensity,很难有像图像一样丰富的语义信息(一个经典问题就是行人跟树木的误识别);

在自动驾驶领域,现在越来越多的公司开始尝试将这两种传感器进行融合,从而提升物体检测的精度。

1a855c91ab5956a76bc4891bb50595f9.png

从上图可以很直观的看出,MMF同时利用了2个传感器(LiDAR+Camera),同时进行4个任务(2D detection, Ground estimation, Depth Completion, 3D detection)最终得到3D物体检测结果。文章认为,通过同时进行多个task联合学习,该算法能够得到更加好的特征表示,从而进一步提升算法精度。

9a0832d030f983f9b66da360a45b55e7.png

从上图可以看出这是一个能够同时输出2D跟3D检测结果的多任务、多传感器融合的检测框架。整体的架构还是比较复杂的,我们可以把它抽象成两个阶段:

  1. First stage:有一个single-shot detector能够提供少量的高质量的3D检测结果;
  2. Second stage:利用ROI-wise的特征融合得到更精细的2D跟3D box regression;
  3. 另外,还有两个辅助任务能够进一步提供一些额外有用的信息:
    1. Ground estimation:能够拟合道路的几何结构信息,为点云提供一些先验(地面高度);
    2. Depth completion:能够学到更好的多传感器特征并且实现dense point-wise的特征融合;

整个模型是可以通过end-to-end的学习得到的。接下来我就分成两个部分来介绍一下:

  1. 如何通过point-wise以及ROI-wise的特征融合去做2D跟3D的物体检测;
  2. 如何利用另外的两个辅助任务去进一步提升3D的检测精度;

LiDAR+Camera Fusion(Point-wise+ROI-wise fusion)

这个阶段的任务主要包括:

  1. 有两个backbone的分支,分别提取image跟LiDAR BEV的feature maps
  2. 将不同scale下的image feature跟LiDAR BEV feature分别进行Point-wise的特征层融合;
  3. 融合后的BEV feature map通过2d conv能够对每个BEV voxel预测很多3D检测结果;
  4. 经过NMS跟分值过滤之后,能够得到少量(KITTI测试集上少于20个)的高质量的3D检测框以及相应的2D检测框;
  5. 再利用ROI-wise fusion,将image ROIs跟BEV oriented ROIs进行特征融合,得到更精确的2D跟3D检测框;

Input representation

点云:作者并不是直接处理点云,而是将点云转换成BEV来处理。由于点云的稀疏性,转换的时候需要将点云进行插值体素化(voxelization)。具体的做法是引用作者之前的一篇文章Deep continous fusion [2]这也是第一篇将RGB feature跟LiDAR BEV feature融合的工作

图像:图像这边比较简单,就是直接利用RGB image作为输入进行特征提取;另外,由于后面还增加了一个Depth completion的任务,所以这边还需要增加一个Sparse depth image 作为输入,具体的做法也比较简单:就是把LiDAR投影到图像坐标系下。

Point-wise feature fusion

97ec914db33dbd2094066478cc4bb027.png

这步就是将不同scale下的image feature跟LiDAR BEV feature分别进行Point-wise的特征层融合。这就需要我们能够得到LiDAR BEV跟Image之间pixel-wise的相关关系,这里的对应关系就是参考作者之前的一个工作[2],不同点在于本文只使用了最近点而不是用KNN去找多个点。大体的流程是这样的:

  1. 对于BEV feature map上的每一个pixel,找到跟它最近的LiDAR point;
  2. 将这个LiDAR point投影到图像坐标系下,得到相应的image feature;
  3. 计算BEV pixel 跟LiDAR point的距离,作为geometric feature;
  4. 将image feature+geometric feature输入到MLP中,得到output;
  5. 将output与BEV feature map进行element-wise的相加;

这里要注意:虽然这里是point-wise fusion,但是其实还是sparse的,这是因为LiDAR points本身就是sparse的。之后的篇幅会解释,如何使用pseudo LiDAR points,提供dense的point-wise fusion。

ROI-wise feature fusion

c859ded6f3db417156426295fa5eed5a.png

ROI-wise fusion 的目的就是要进一步优化box的regression,得到高质量的2d跟3d的detection结果。通过将3D detection分别投影到image跟BEV feature maps上,我们能够得到axis-aligned image ROI以及oriented BEV ROI。

关于image ROI特征提取:我们可以通过ROIAlign[3]来得到相应的image feature。

关于BEV ROI特征提取:这边会存在两个问题:

  1. 在边界容易导致ROI特征出现180度反转的问题。解决的方法就是给oriented ROI分配一个orientation anchor (0或者90度),每一种anchor都会有固定的特征提取顺序;
  2. 当ROI是有角度的时候,它的中心点其实也会有offset。解决的方法就是得到旋转之后的ROI,并且将它分成n*n的grid,grid中的每个点都采用双线性插值得到特征;

Multi-Tasks Learning

这篇文章跟ContFuse[2]相比,最大的特点就是加入了两个辅助的任务:Ground estimation跟Depth completion.

Ground estimation

Mapping 是自动驾驶非常重要的一个任务,hdmap的构建由于算法复杂度搞,通常来说都是offline的任务。这里之所以online mapping,主要是想减少对offline map的依赖(通常hdmap的数据量非常大),同时也是可以提高系统的鲁棒性。

hdmap涉及的任务非常多,这里只关注道路几何结构信息。作者把这个问题转换成一个回归问题去直接回归地面的高度。这会比plane based parametrization的精度要搞,因为实际的道路很多都是有起伏的,尤其是当我们看比较远的范围的时候。

作者采用的U-Net在LiDAR BEV上预测voxel-wise的地面高度值。得到voxel-wise高度之后,voxel内的point高度都能够确定,接下来就可以生成一个新的LiDAR BEV(z减去ground height)。

关于这部分,我个人认为如果你的hdmap包含了ground height,可能不太需要这一步。

Depth completion

LiDAR 能够提供精准的3D位置信息,但是随着距离扩大,点云会越来越稀疏。Depth completion的目的就是想让LiDAR变得更加dense,具体来讲就是让image上面的每个点都能够有对应的LiDAR point或者pseudo LiDAR point.

这个模块的输出除了RGB image之后,还有sparse depth map(将LiDAR投影到image坐标系,如果没有LiDAR point,值设为0)。RGB跟sparse depth map concate之后一起输入到网络中进行depth的预测。

具体的网络其实也比较简单:image feature map 接两层bilinear up-sampling layer,输出跟图像大小一致的depth map。

有了depth map之后,在point-wise fusion的过程中,能够保证image feature map中的每一个pixel都至少能够在pseudo LiDAR points中找到相应的point。实际中,当存在真实LiDAR point的时候,会跟pseudo LiDAR point特征一起进行融合;当没有真实LiDAR point的时候,则利用pseudo LiDAR point。

Joint Training

训练的过程中,需要有detection labels跟dense depth labels,注意ground estimation没有专门的labels,而是通过3D localization loss来隐式优化的。损失函数的设计也比较直观:

Experiments

贴一下在KITTI上的performance:

2e0c98927499993bbbb6805f0f4e54d1.png

作者还通过一些对比试验,表明辅助任务的学习对于整体性能确实有较大的提升:

f41599cb135910cf9ad2e0053f265f3c.png

最后再贴一些KITTI上的效果图:

9c519a924c53d8a643cc04477bef7b16.png

Conclusion

文章是在ContFuse[2]基础上的一个延展:加了两个额外的任务(ground estimation and depth completion)。个人感觉depth completion还是比较有用的模块,让point-wise fusion变得更加dense,但是实际中,可能比较难的是怎么获取dense depth map labels。另外,个人感觉ground estimation可能不是一个必须的任务,如果hdmap涵盖了这个信息,也许直接用会更简单也更准确。

总体来说,这篇文章不管是最终的结果还是多任务的网络结构设计,对我的启发还是非常大的,之后有机会的话可能会尝试复现这篇文章。

对ContFuse感兴趣的可以移步我的另一篇博客:

仙道菜:Deep Continuous Fusion (Uber'18)​zhuanlan.zhihu.com
578c636799b5cefae51c2b162f11e8a8.png

参考

  1. ^http://www.cs.toronto.edu/~byang/papers/mmf.pdf
  2. ^abcdMingLiang. Deep continuous fusion for multi-sensor 3d object detection. In ECCV,2018.
  3. ^Kaiming He, Georgia Gkioxari, Piotr Dolla ́r, and Ross Gir- shick. Mask r-cnn. In ICCV, 2017
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
几篇CVPR关于multi-task的论文笔记整理,包括 一、 多任务课程学习Curriculum Learning of Multiple Tasks 1 --------------^CVPR2015/CVPR2016v--------------- 5 二、 词典对分类器驱动卷积神经网络进行对象检测Dictionary Pair Classifier Driven Convolutional Neural Networks for Object Detection 5 三、 用于同时检测和分割的多尺度贴片聚合(MPA)* Multi-scale Patch Aggregation (MPA) for Simultaneous Detection and Segmentation ∗ 7 四、 通过多任务网络级联实现感知语义分割Instance-aware Semantic Segmentation via Multi-task Network Cascades 10 五、 十字绣网络多任务学习Cross-stitch Networks for Multi-task Learning 15 --------------^CVPR2016/CVPR2017v--------------- 23 六、 多任务相关粒子滤波器用于鲁棒物体跟踪Multi-Task Correlation Particle Filter for Robust Object Tracking 23 七、 多任务网络中的全自适应特征共享与人物属性分类中的应用Fully-Adaptive Feature Sharing in Multi-Task Networks With Applications in Person Attribute Classification 28 八、 超越triplet loss:一个深层次的四重网络,用于人员重新识别Beyond triplet loss: a deep quadruplet network for person re-identification 33 九、 弱监督级联卷积网络Weakly Supervised Cascaded Convolutional Networks 38 十、 从单一图像深度联合雨水检测和去除Deep Joint Rain Detection and Removal from a Single Image 43 十一、 什么可以帮助行人检测?What Can Help Pedestrian Detection? (将额外的特征聚合到基于CNN的行人检测框架) 46 十二、 人员搜索的联合检测和识别特征学习Joint Detection and Identification Feature Learning for Person Search 50 十三、 UberNet:使用多种数据集和有限内存训练用于低,中,高级视觉的通用卷积神经网络UberNet: Training a Universal Convolutional Neural Network for Low-, Mid-, and High-Level Vision using Diverse Datasets and Limited Memory 62 一共13篇,希望能够帮助到大家
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值