【文章阅读】3D Backbone Network for 3D Object Detection

Brief

一篇arxiv19上的文章,感觉真的挺新的,总结了一下最新的用于3D检测的backbone,其中重要的积累了一些稀疏卷积的基础架构,刚好最近也在啃稀疏卷积的3D形式,包括了两部分(submanifold和sp层)。
该文章的结构都是3D卷积的结构,和二维CNN无关
这一篇文章的另外一个版本是《Three-dimensional Backbone Network for 3D Object Detection in Traffic Scenes》

因该是作者换了一个写法,格式是CVPR的格式,不知道中了没有。很有意思的是该工作也是和我最近研究的second这一篇工作的基础上完成的,因此大体结构都是类似的。

Abstruct

  • 该文章主要介绍作者设计的一些3D基础卷积结构
  • 居然也能达到sota的效果(在KITTI上)

1 INTRODUCTION

  • 批评一下2D卷积运用于3D检测的问题(Voxel-based)

VoxelNet [15] builds 3 layers of 3D CNN to extract 3D features for region proposal network. However, compressing 3D data into 2D or shallow 3D layers make the network fail to extract reliable 3D features for detection.

  • 稀疏3D卷积的形式内存占用减少,使得可以设计复杂的网络结构。
  • 3DBN-1:不同分辨率的特征提取整合,bottom to top
  • 3DBN-2:包含从下到上和从下到上两个过程的特征提取
  • 这篇文章也是voxel-based 的方法,需要进行规则化。

2 RELATED WORK

  • Image-based 3D detection

Deep MANTA

  • 3D point cloud-based detection

VoxelNet and SECOND adopt PointNet, to extract features from the low resolution raw point cloud for each voxel.

  • Detection by fusing image and 3D point cloud

AVOD-FPN等等等

3 3D BACKBONE NETWORK

要主要研究的部分来了,这一部分主要分为稀疏卷积的运行模式,和作者自己提出的基础架构。

稀疏卷积

  • 作者先给出了些文章约定的记号:
记号 内容
小写字母 标量
大写字母 向量
粗体大写字母 矩阵
c i n × h i n × w i n × l i n c_{in}×h_{in}×w_{in}×l_{in} cin×hin×win×lin 3D卷积层输入数据:长宽高×特征维度
CNN fliter: ( k × k × k × c i n × c o u t , s ) (k × k × k × cin × c_{out}, s) (k×k×k×cin×cout,s) k表示3D卷积的kernel_size,s表示stride, c o u t 表 示 输 出 的 维 度 c_{out}表示输出的维度 cout
  • The pipeline of sparse CNN:
    【文章阅读】3D Backbone Network for 3D Object Detection_第1张图片

(1)输入数据就是3D空间的体素全体 M i n M_{in} Min,但是很多的体素实际上是空的
(2)通过哈希表 H i n H_{in} Hin把非空的体素转化为输入矩阵 M i n M_{in} Min,其中 a i n a_{in} ain表示的是输入的非空的体素的个数, c i n c_{in} cin则是每个voxel的特征维度
(3) w i , j , k w^{i,j,k} wi,j,k表示的是特征维度上的变换矩阵。经过变换矩阵得到对应的输出特征。最后再通过哈希表就得到了变换后的特征。这里需要指出的是输出的hash表和输入的是不一样的,是比输入的要大,因为只要有在kernel中有一个voxel是非空的,那么就可以得到对应的值
这里有一个疑问:这里的stride和kernel这些领域信息实际上每有描述到,仅仅是把每一个体素内的特征就行了一个特征变换,如何做到类似滑动的卷积?
(5)回答上面提出的这个问题,上面的rule不是指的激活函数,而是指的基于偏移量而得到的输入和输出神经元的连接规则。原文如下:
The rule book, Rule, depicting neuron connections from the current layer to the next layer is created based on the offset between input points and its corresponding output points.
作者给出的例子是如果偏移量offset(0,0,0),那么久表示输入的点在3D kernel的最上-右-前的那一个位置;同样(f-1,f-1,f-1)对应的输入时kennel的最下-左-下的位置.

如何构建连接规则relu和得到对应的activate points – a o u t a_{out} aout,以及创建输出的哈希表 H o u t H_{out} Hout作者放到附件,这里贴上来研究一下:

  • RELU
    【文章阅读】3D Backbone Network for 3D Object Detection_第2张图片

也就是一个更新rule规则的一个方式。后面再研究

  • hash out
    【文章阅读】3D Backbone Network for 3D Object Detection_第3张图片

3D Backone

作者在这篇文章中的主要的贡献是两个提高检测精度的3D backone,实际上,这一项工作的主要是基于second的工作的,如下看一下这两个主要的3D特征提取网络。

  • 3D BN1
    【文章阅读】3D Backbone Network for 3D Object Detection_第4张图片

作者的第一个网络结构采用了自下而上的残差模块,仅此而已,在SECOND中实际上是用的稀疏卷积的直连模式,实际上也就4个BLOCK,每一个含有两层,而这篇文章的第一个网络是把该4个BLOCK换成了一个残差连接的形式。

  • 3D BN2
    【文章阅读】3D Backbone Network for 3D Object Detection_第5张图片

在二维检测中,这样的类似FPN的连接结构可以融合多尺度特征。这里的第二个网络就是把它给融入到3D的检测的3D卷积中来。

实验效果

【文章阅读】3D Backbone Network for 3D Object Detection_第6张图片

其实怎么说呢,这个效果意料之中。现在排到了榜单的46名,比我的高3名。我是垃圾,不错侧面说明,这个改动也不咋的

你可能感兴趣的:(深度学习-点云基础网路-分类)