paper地址:https://arxiv.org/pdf/2004.01389.pdf
code地址:https://github.com/yinjunbo/3DVID
这是一篇来自北理工和百度合作的文章,目前还未开源,只有项目地址,2020年3月份放置在arxiv上,已经被CVPR2020接收;从标题我们猜测该文采用的时空信息将多帧的点云信息融合做3D目标检测,目前的确是没有研究是通过视频流的方式做3D目标检测,不过这也要求数据集是一些连续的帧才能使得这样一个任务的完成,但是KITTI的确是没有满足这样的要求,因此作者在Nuscence上进行的实验。这是一个CVPR19年上的公布的数据集,这里先给出一张目前在公布的nuscence的榜单,如下,这里的榜一的文章目前将SECOND的代码重构,加入了更多SOTA的方法开源了新的3Ddetection base,即Det 3D项目,链接为:https://github.com/poodarchu/Det3D,而MEGV则是采用了多尺度检测的head,规定了不同大小的物体的检测采用不同的head,同时采用了一种数据增广方式缓解了nuscence中的longtail问题
本文主要内容可以简单总结为,在目前的SoTA的文章中,第一个采用3Dvideo点云做3D目标检测的,利用了前人所没有用到的帧与帧之间的时间连续关系,为此,作者在pointpillars的基础上添加了grap-basd的GNN卷积,使得每个节点的感受野扩大,以此设计了空间特征提取模块;然后根据得到的空间特征送入由GRU为基础模块搭建的时空特征融合模块得到连续帧之间的更加丰富的特征信息,在该模块中,作者分别采用了空间注意力和“时间”注意力机制分别对前景物体加以更大注意和对运动物体加以配准。本文中并不是一个以问题为导向的思路,而是一种新奇的思想引入,但是文章任然指出,之前的方法会出现的FP问题在本文中会得到一定程度的环境。对比由问题为导向的文章3DSSD而言,本文的内容涉及更广。
本文的这一章节主要运用了基于点云的检测方法的backbone和graph-based的方法,因此主要介绍这两方面内容。
1.LiDAR-based 3D Object Detection
作者一样把基于lidar的方法分为了三类,point-based、voxel-based和multi-sensors的方法,前面两种方法已经在前面的博文中有了挺详细的介绍,这里不再介绍。而multi-sensor的研究方法更多的是在18年以前,最新的文章有19年的MVF和AAAI的PIRCNN,采用的都是结合图像和lidar输入的检测方法,不同的是,目前这样做的方法主要有两类,其一是特征融合后在提proposals,第二种是都先提出proposals再融合。后者更像是打比赛中的模型融合的方法。
2.Graph Neural Networks
图神经网络(Graph Neural Networks, GNNs)最早是由Gori等人引入的,用来对图结构数据的内在关系进行建模。然后Scarselli等人将其扩展到不同类型的图。之后的GNN研究可以分为两个方向:(1)第一个研究方向是使用选通机制使信息能够在图中传播,比如利用RNN描述每个节点的状态或者将图形推理概括为参数化的消息传递网络。(2)另外一个研究方向是则是将CNN引入到GNN中,因此GNN在该方向下也可以叫GCNN。本文作者的PMPnet属于第一个方向中的内容,通过门控消息传递策略来捕获pillar特征,用于对每一帧的点云做特征提取。
整体结构图如下,可以看出主包含了空间特征编码和时空特征融合两个模块。前者是对每一帧的点云提取空间特征,后者是采用空间和时间上的注意力机制对提取到的特征序列做融合。
作者首先当前帧的前一帧点云通过GPS信息将其对应的坐标转换到当前帧来,目的是消除运动影响,使静态物体在帧间对齐。然后再采用PMPnet提取空间特征和AST-GRU进行时空特征融合。
作者指出之前的提取voxel特征的方法VFE(被提出在voxelnet,其中SECOND1.0和pointpillars也都有使用)由于感受野的问题并不能完全挖掘voxel的特征(实际上后续有采用3DCNN或者稀疏卷积再次提取,相当于是做了感受野的扩大吧,只是在VFE层仅仅是对单个voxel进行了特征提取);因此这一部分则是为了来解决这样一个问题,即将非空的pillar当做节点,然后将其构建成图结构(怎么构建,距离?),作者称这种图结构有效的保留了非欧式的原始结构。(流型结构就是一个非欧式结构,因为点云扫描得到的都是表面点,可以这样理解)。我们记通过pillar构建的图结构为
,前者表示非空的pillar,后者表示的是边的特征。这里作者表示本文采用的是K-NN建图,采用周围的最近的几个pillar作为邻居节点。采用迭代的方式更新特征,我们假设一个pillar节点为,其对应是初始特征为,该初始特征是通过pillar内采用PFE(简化版的pointnet)提取到,整体运行流程为:
1.得到初始特征:
,这里的表示的是一个pillar节点内的点。
2.特征在图网络中传递:
(1)如下图所示,假设在第s次迭代的时候表示为坐边的形式,左上表示的是当前图的感受范围,可以看出此时的仅仅与有关,与 的特征无关,在点云中表示为左上的形式;在第s+1次迭代后,该可以看出 的特征被融合,得到了新的更大感受野的特征。
(2)上图中的mj,i表示的是两节点之间的传递信息,作者把第s+1次的信息传递定义为:
这里的hi表示的是节点特征,
是边的特征,边的特征直接定义为 ,上式表示的是从第s次的边和节点特征得到第s+1次的信息传递特征,采用的方式是FC层连接。但是一个节点相邻的节点可能不止一个,因此,在通过
更新当前节点特征之前,需要周围所有节点的传递信息进行融合得到最终的传递信息;采用最大池化:
而后再根据
对当前的节点特征进行更新:
通过上述的迭代后,节点vi就算是包含了所有邻居节点的特征信息,同时,邻居节点也包含了它邻居节点的特征;所以第s次迭代完全结束后,该点的特征也聚集了邻居的邻居的特征,使得每个节点的特征对应的感受野信息更加扩大了。
(3)传递完特征后,再采用二维卷积进一步提取高维语义信息。总结一下,上述的backbone,仅仅比pointpillars多了一步信息传递,其余的两步(PFE ,2DCNN)都是一样的。
如果直接采用传统的ConvGRU对上文backbone得到的特征进行融合会得到两个问题:
1.BEV视图下的点云的的前景占比很小,在feamap中统计出来是18×8个像素值,背景点过多会导致背景噪声会主导哦Menory。
2.问题2是在连续帧中,静态物体可以通过GPS信息配准,但是动态物体却不能。针对上述的两个问题,作者的应对方法分别是在空间和时间上采用注意力机制即STA(spatial transformer attention)和TTA(temporal transformer attention)。如下图所示,STA模块专注空间中的前景信息,输出的是新的GRU的输入fea map;TTA模块配准memory中和输入的特征中的动态物体,输出配准后的memory信息。
上图的核心组件分为如下三部分:
(1)VanillaConvGRU:ConvGRU是卷积形式的GRU,相比FC的GRU具有更少的参数和更好的空间表达能力,同时比LSTM具有更少的收敛时间,其工作模式如下,动态图讲解GRU,LSTM运行模式,链接:https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45
本文中,采用如下的公式表示使用旧memory中的状态和输入得到新memory中的状态的过程:
其中字符表示的含义由如下的表格显示:
配合上文的动态图,就可以比较清晰的知道本文中的GRU的运行流程了。
(2)STA 空间注意力模块
和以往的空间注意力机制类似,作者设计了对于输入的fea map的每一个像素采用一个加权的方式,如下公式:
其中代表的含义表示如下:
也就是说,上式表示的内容是对目标pix的输出为:和邻域Pix的加权值再和邻域信息卷积。(3)TTA 时间注意力机制前文提到,这个模块是为了对运动的物体进行配准,作者采用的是改进的DCN结构,也就是可变型卷积结构,目的是通过融合运动信息自适应的筛选出关键支持区域。DCN简化表达为下式子:
其中,下表表示字符含义:
如果将TTA模块中的输入和空间注意力模块中的输出带入,可以表示为:
可以看出实际上在TTA模块中,邻域信息也是起到了非常重要的作用的,该TTA模块由偏移量
Δpm决定,上表格中提到这里的偏移通过卷积层学习到,表达为如下:
这里面有:
ils总的来讲,该模块为了配准动态物体,采用上一次memory和本次feamap作为输入,预测了偏移值
,和下一个的menory特征结合出得到新的输入。
和以往的lidar-based的方法一样,不多介绍。
这其中采用的卷积核大小都是3×3的,除非是用1×1卷积代替全连接的形式。
该结构的输入是经过AST-GRU迭代到最后的menory feature,loss函数和其他的lidar-based的方法一致,采用的是L1 loss和focal loss.
作者在nuscenes数据集上进行了测试, Nuscene数据集简单介绍:这个数据采集是由6个摄像头,1个LIDAR,5个RADAR,GPS,IMU采集得到,与KITTI相比,nuScenes包含7倍以上的对象注释。重要信息:
(1)以2Hz对同步良好的关键帧(图像,激光雷达,雷达)进行采样,并将它们发送到我们的注释软件Scale进行注释。
(2)nuScenes数据集中的所有对象都带有语义类别,以及它们出现的每个帧的3D边界框和属性。
(3)一共有23个对象(截图并不完整)
更多细节大家可以去官网上的文档细细研究,这里不做过多介绍。本文采用在nuscenes而不在KIITTI上进行实验的原因正是KITTI并不提供3D video.
如下图,对于nuscenes的10类目标检测得到的结果如下,可以看出效在大部分物体上都是达到的sota的
下图展示了在pointpillars的基础上添加本文提出的模块后的性能提升,最后的指标不仅仅是检测的IOU值,还和很多其他指标加权得到的结果,在官网中有介绍。
[1]Delving deeper into convolutional networks for learning videorepresentations [2] Fast point r-cnn [3] graph convolutional networks: Semisupervised learning via gaussianprocesses [4]Deep hough voting for 3d object detection in point clouds
上述内容,如有侵犯版权,请联系作者,会自行删文。