前言
这一篇文章主要介绍一篇发表在ECCV20上的采用多模态融合的3D目标检测的文章,并总结一下目前多多模态的方法。所谓多模态融合,即采取多种传感器数据作为深度学习网络的输入,多模态融合的好处多种传感器获取到的信息存在互补的地方,但是缺点是融合的方法比较难,需要做多方面的考虑,比如在传感器获取的信息的时序上,图像传感器像素点和点云信息的对应,以及图像存在远近导致的scale问题,在点云上并不存在同一物体在scale上的差别。 今天介绍的文章是:3D-CVF: Generating Joint Camera and LiDAR Features Using Cross-View Spatial Feature Fusion for 3D Object Detection。 文章链接:https://arxiv.org/pdf/2004.12636.pdf 发表在ECCV20,作者是汉阳大学团队
1. 之前的多模态融合方法
为什么要采用多模态融合
就信息论来看,多传感器具有更多的互补的信息,多模态信息融合可以提供物体dense and rich information。采用多模态信息可以更加鲁棒和提高检测准确率。如下图所示,在lidar模态中,如果物体比较小或者比较远,传感器并不能扫描到很多的表面点,所以这会导致不能分别出行人和杆状物,但是在dense的表达的图像中,就能很明显的区别出lidar和camera。
前人研究
就多模态的工作就较近的研究有AAAI20的PIRCNN和CVPR20的point-Painting。两篇文章都是利用二维语义分割网络对图像信息特取语义信息,然后通过pix2point检索将分割特征映射给点云。实验表明能够提升一定的实验精度。在笔者前面的综述文章中也有细致的介绍到。
1. camera信息和Lidar信息融合需要考虑的问题
主要解决问题 view差异导致fusion工作很难
文中的描述是:
One of the challenges presented by the fusion of cameras and LiDAR is that the spatial feature maps obtained from each modality are represented by significantly different views in the camera and world coordinates.
也就是说,camera获取到的信息是“小孔成像”原理,是从一个视锥出发获取到的信息,而lidar是在真实的3D世界中获取到的信息。如下图表示的含义:
这个问题是所用想要在特征层面做fusion研究工作的难点,也是必须要解决的问题,就信息多少而言,lidar image的方法肯定是信息输入更多的,但是效果并不能赶上Lidar-only的方法,很大的原因就是没有做好view的问题。
解决办法
上文描述的问题是在前面到的问题都是采用的pixel2point的方法将在二维中语义分割后的特征附在点上,也就是说没有直接的解决视角不同的问题,各个模态的特征提取依旧是在各自的模态下做到特征提取。 本文提出的3D-CVF,使用跨视点空间特征融合策略结合相机和激光雷达特征。和前面的研究工作不同的是,本文并对Image信息做二维的特征提取后,并不是采用索引的方式将特征信息转为点的特征信息,而是将图像信息通过作者设计的auto-calibrated projection模块投影到点云场景的BEV视图上,可以大体理解为降视锥的前视图转化到点云的BEV上,如下图所示,(a)图表示不采用auto-calibrated projection模块投影到BEV上的可视化效果,(b)表示的是通过作者设计的auto-calibrated projection模块后的平滑对其特征。但是(b)并不能定位物体的局部特征。(c)表示的是应用了adaptive gated fusion network后,可以看出在feature -map上可以定位特征信息。
作者这里的可视化信息可以清晰的看出通过作者的auto-calibrated projection模块后可以使得前视图视锥信息到BEV特征更加的平滑,然后通过adaptive gated fusion network模块后可以看出网络在特征图上大致定位了哪些物体。
2 本文网络结构
文中的网络整体结构如下所示。可以看出上下两层分别是对lidar的点云信息的特征提取(voxel-backbone)和对多张image信息特征提取、模态转换。这里需要提及的是因为Image信息仅仅只有一个方向的视野,但是多个摄像头的图像存在视野的重叠,所以多张图像的信息融合是能保证整个环视点云场景的特征都被涉及到。
2.1 Lidar backbone
这里利用的点云特征提取网络是笔者在3D目标检测深度学习方法中voxel-represetnation内容综述(一)中提到过个voxel-backbone。笔者这里做了一个简洁的示意如下:
点云首先做一些数据增广,然后体素化分到voxel中,再经过稀疏卷积和子流型卷积搭建的稀疏backbone转化为二维feature-map,最后采用一个简单的“下采样-上采样”结构得到最后的feature-map。但是在本文中再提proposals之前仅仅使用了RPN网络之前的voxel点云特征信息提取。
2.2 RGB Pipeline
图像信息特征提取网络作者采用的是代用FPN特征金字塔的ResNet18 预训练网络,最后得到的206维的特征信息。
2.3 Cross-View Feature Mapping
即CVF模块,将图像信息在前视图视锥信息融合到点云BEV视角,主要设计到 auto-calibrated projection 模块将特征特征视角转化和平滑,随后采用附加的卷积层enchance特征。
2.4 Gated Camera-LiDAR Feature Fusion
对点云网络feature-map和图像特征feature-map的融合采用空间attntion的融合方式,即对每一个对应的pixel做加权,加权融合后的特征称为camera-LiDAR feature map,将被送入RoI fusion-based refinement block。
2.5 3D RoI Fusion-based Refinement
proposals产生于上述融合得到的camera-LiDAR feature map,接下来就是做来两阶段的refine工作。尽管camera-LiDAR feature map中已经存在一定的camera信息,但是作者又进一步将camera特征做了进一步的特取和融合:采用pointnet提取camra信息和采用3D-RoI-based fusion网络和camera-LiDAR feature map做特征融合。
3 网络细节设计
3.1 Dense Camera Voxel Structure
作者将camera的pixel转化到点云的BEV视图上(voxel-feature-map)时,转化的大小是lidar-voxel-feature-map的x-y各自的两倍大小,也就是说整体的voxel个数是Lidar的四倍,即会包含比较多的细节信息。 以下表示的Auto-Calibrated Projection Method的设计方案,前面提到的是该结构是将image转化到bev上的网络结构,具体的做法是: (1)投影得到一个camera-plane,该plane是图像特征到bev视角的voxel-dense的表达。 (2)将lidar划分的voxel中心投影到camera-plane上(带有一个偏移量,不一定是坐标网格正中心) (3)采用近邻插值,将最近的4个pixel的image特征插值个lidar-voxel。插值的方式采用的是距离为权重的插值方法。
这样,作者就得到了了image信息的feature-map在lidar-voxel上的表示,值得提到的是前面说的偏移值是为了更好的使camera和lidar对齐。
3.2 Gated Camera-LiDAR Feature Fusion
为了融合这两种特征,如下所示,作者采用加权融合的方法,由于上面的转换已经统一了feature-map的size信息,所以这里只需要学习一个同feature-map大小的空间权重矩阵即可。
3.3 3D-RoI Fusion-based Refinement
在3D目标检测中,目前两阶段的方法效果一般优于一阶段的方法,原因是两阶段的方法会在第二阶段对第一阶段提出的proposal方法做进一步的优化工作。但是目前refine的方法各有不同,下一篇笔者会介绍一下目前在3D目标检测中是如何做refine的。(其实如何做refine一般是要考虑到文章用了什么方法或者引入了什么新的信息) 这里作者的采用和MVF中一样的方法,如下图所示,对proposals的边界上采取一定的grid点,然后投影到camera-view上,然后采用pointnet将特征转化到grid上,最后做进一步的优化。
实验结果
在KITTI上的3D目标检测,目前排名是第七名(但是就发表的文章上看,SVGA这篇文章目前是效果最好的,但是在KITTI-benchmark上并没有公布)
一些参数设置都是和之前的网络一致,就不细说。 以下内容是在test数据集上的实验结果,看的出来在easy上的表现非常好。
消融实验如下,看的出来,在kitti的val数据集上,再不做refine时,精度提升没那么大,说明做refine对moderate和hard类别的重要性。
笔者的思考
目前多模态的确是一个很值得研究的方向,同样还没有很好开发的还有lidar-video及GCN在3D目标检测上的使用,尽管有一个初步的雏形,但是还是能做到更好。本文和之前做多模态融合最大的不同就在于融合的方法,之前仅仅是采用索引融合,本文先是转化到bev视图上,然后通过voxel中心和camera-plane的映射得到camera信息在voxel上的表达,最后再采用了加权融合的方法做fusion,值得提到的是,为了进一步提高精度,作者采用的是两阶段的方法,这是很有必要的。
本文仅做学术分享,如有侵权,请联系删文。