导言

多模态3D目标识别任务常常要融合Image相片信息和Lidar点云数据,以此来为单纯依赖点云的方法添加相片中的材质纹理和颜色特征。imVoteNet是今年CVPR2020上发布的论文,主要思想在于使用成熟的2D目标检测器辅助3D检测器propose检测框,以此来缩小3D检测器的搜索范围。

我觉得可以借鉴的点有:

  • 网络结构:采用了独立的2D检测器生成2D预测结果,预测结果通过某种方式反馈到3D点云中去,总体上看起来是late fusion的模式。可以使用任何2D检测器和类似VoteNet的点云3D目标检测模型,甚至可以使用在体素方法上(在相机视角上压缩)
  • 训练方式: 使用了Multi-tower training来调节不同来源的特征的收敛速度。
Late Fusion
Late Fusion

主要方法

2D特征提取

2D特征提取主要依赖于一个训练完成的检测器,大概流程如下:

  1. 2D检测器检测图片, 输出目标框和目标类别。
  2. 将3D目标检测器输出的seed point,也就是下采样得到的可能存在目标的点投影回图片中。
  3. 如果投影回图片中的点恰好落在2D目标框内,则对该点对应的像素提取三种特征:
    • geometry特征:通过该像素相对2D目标框中心的位移(2D Hough Vote),估计出的伪3D Hough Vote
    • semantic特征:可以是对应2D目标框抽取出的特征向量,也可以直接是分类结果的one-hot向量。
    • texture特征:可以是投影像素领域上的RGB值,也可以是单像素的RGB值。

semantic和texture特征都比较容易理解,提取geometry特征的示意图如下:

geometry特征
geometry特征

Geometry特征即为由向量pc=(u,v)\vec{pc}=(\triangle{u}, \triangle{v})估计出的3D向量PC\vec{PC^{'}}(理想情况下我们希望估计出PC\vec{PC},但是倘若物体距离镜头很远的话,CC^{'}CC在z轴上的差距可以忽略不计)。同时为了一定程度上弥补这种估计带来的不准确性,geometry还包括了向量OC\vec{OC}的方向。因此对于点P(x1,y1,z1)(x_1, y_1, z_1)我们有geometry特征:

(ufz1,vfz1,OCOC)(\frac{\triangle{u}}{f}z_{1}, \frac{\triangle{v}}{f}z_{1}, \frac{\vec{OC^{'}}}{||\vec{OC^{'}}||})

Multi-tower training

Multi-tower Head
Multi-tower Head

为了解决不同来源的feature在问题优化中步调不一致的问题,文章采用了multi-tower的方法对模型进行训练。也就是同时使用2D特征、3D特征以及2D和3D特征联结分别训练一个VoteNet检测头(先vote,再propose)。
这样一来训练的loss就为三个检测头的loss的加权平均,文章也试验了不同的权重组合,最终得出2D:3D:(2D+3D)=0.3:0.3:0.4时效果最好。
虽然在训练时使用三个独立检测头,但实际模型推理仅仅使用(2D+3D)这一个检测头来预测结果。

建议阅读

现在源码已经放出,可以试着阅读:
imvotenet源码
同时,mmdetection3D框架上有老哥放出了不带Multi-tower的pull request:
mmdetection3d的imvotenet pull request