3DObjection_lidar

大家都在搞lidar,搞image的我偷偷溜过来看看论文。还是对方法没有什么感觉,好像现在image的喜欢keypoint

Paper

MV3D: Multi-View 3D Object Detection Network for Autonomous Driving——2017

A sensory-fusion framework that takes both LIDAR point cloud and RGB images as input and predicts oriented 3D bounding boxes.

Two-stage detector, region proposal-based method, inspired by Faster RCNN.

体素化(Voxelization)不仅包含模型的表面信息,而且能描述模型的内部属性,从二维的点扩展到了三维的立方体单元。


  • 提取特征: three views

    • a提取点云俯视图特征——BV(bird view)

      鸟瞰表达被编码成高度,强度和密度信息。我们离散投影的点云到分辨率为0.1米的二维网格中采样)。

      • 对每一个单元格,高度特征被计算为该单元格的最大高度点。要编码更详细的高度信息,点云平分(均匀)成M片(这里的切片应该是将整个二维网格进行高度划分)。每个切片都进行高度图计算,因此,我们得到M个高度图。

      • 强度特征是每个单元格中最大高度点的映射值

      • 密度特征表示每个单元格中的点的数目。为了归一化特征,它被计算为MIN(1,log(N+ 1)/log(64));其中N是在单元格中的点的数目。

      强度和密度特征计算的是整个点云,而高度特征计算的是M切片,所以,总的鸟瞰图被编码为(M + 2)个通道的特征(M height feature map, 1 intensity feature map, 1 density feature map)。

      优点:

      • 物体投影到俯视图时,保留了物体的物理尺寸,从而具有较小的尺寸方差,这在前视图/图像平面的情况下不具备的
      • 在俯视图中,物体占据不同的空间,从而避免遮挡的问题
      • 由于目标通常位于地面平面上,并在垂直位置的方差较小,俯视图定位在获得准确的3D bounding box是很重要的。因此,使用俯视图作为输入,可以确保3D位置预测更可行
    • b提取点云前视图特征——FV(front view):前视图是一个圆柱面,会比BV更加稠密。

      前视图表示对鸟瞰图表示提供了互补的信息。

  • c提取图像特征——Image(RGB)

    VGG-16

  • 从点云俯视图特征中计算候选区域3D object proposal generation

  • 把候选区域分别与a、b、c得到的特征进行整合

    • 把俯视图候选区域投影到前视图和图像中
    • 经过ROI pooling整合成同一维度
  • 把整合后的数据经过网络进行融合multi-view feature fusion


Two subnetworks:

  • 3D object proposal generation

    3D区域提名网络利用鸟瞰视角的点云表示去产生高度精确的3D候选框。3D物体区域推荐的好处是可以在3D空间中被投影到任何视图中。

  • multi-view feature fusion多角度特征融合: 多角度映射后变为2D图像,可以用2D CNN处理

    深度融合的方法,使得中间层之间可以相互交互。使用deep fusion

    对于每一栏使用了相同的基础网络,为了正则化(规范基于区域的融合网络)增加了辅助的路径和损失:drop-path和auxiliary losses

    对于每次迭代,我们随机选择做全局下降路径局部下降路径的概率为50%。如果选择全局下降路径,我们从三视图中相同概率中选择一个视图。如果选择局部下降路径,每个连接节点的路径输入随机丢弃的概率为50%。我们确保每个连接节点至少保留一个输入路径。为了进一步加强每个视图的表示能力,我们在网络中添加辅助路径和损失。


Q&A

Q:在Fast RCNN阶段为什么选择回归3D框顶点的8个坐标点而不是车辆的位置、尺寸与角度?

A:作者认为,直接回归3D框坐标,可以更好地对应俯视图以及前视图feature map的空间关系。实际上作者也进行了实验,回归3D框顶点的8个点与回归3D参数相比,在2D检测上的精度(AP)更高。在应用算法时,不需要对8个点实际是一个3D立方体做额外的后处理,算法的直接输出已经是一个合理的3D立方体坐标。

Q:对于使用3路不同input与只使用其中2路或1路input的实验,训练/测试方案是怎样的?

A:对于缺少输入的情形(如只用激光雷达俯视加视觉,或只用视觉),作者都是使用这种输入方案重新训练模型并测试的。作者没有尝试过用3路input训练的模型但是用2路input来测试的效果。但是由于训练中加入了drop path,即随机只使用一路input,或在某层进行element-wise mean时不加入某路input的输出,故输出可能也是有效的。

Q:这种激光雷达+视觉的方案是不是与硬件(如相机与激光雷达的外参等)绑定的?

A:作者认为,网络中从3D proposal生成各个view的proposal过程中依赖硬件外参。如果外参有了微小改动,可能可以进行重新标定后调整生成proposal的参数,并没有进行相关的实验。但是如果硬件外参改变过大,以至于影响了输入数据的分布情况,那么肯定就不能复用模型了。

Point-GNN: Graph Neural Network for 3D Object Detection in a Point Cloud——2020

由于lidar点云稀疏的特点,并且CNN需要输入是规则的grid,为了减少无效计算(sample、group),提出了将点云先进行图重建,将在固定半径r内的点连作边,然后用GNN迭代T回合来提取特征,预测得到类别和object的shape。在GNN中采用了auto-registration mechanism to reduce translation variance,设计了a box merging and scoring operation to combine detections from multiple vertices accurately。

Point-GNN:one-stage


  • Graph construction

    对于一个点用元组表示,其中表示坐标,用表示状态值(反映laser intensity或者features)。但是由于点太多,因此用了体素下采样来减少点云的密度。

    使用MLP,然后用MAX函数堆叠效应。

    限制了每个点的边至多256个;数据增强choose a simple scheme of global rotation, global flipping, box translation and vertex jitter.

  • Graph Neural Network with Auto-Registration

    Refines the vertex features by aggregating features along the edges. 在迭代中,更新每一个点的特征:

    e: edge; v: vertex; f: computes the edge feature between two vertice; : aggregates the edge features for each vertex; g: takes the aggregated edge features to update the vertex features. 更新点时同时更新状态。

    The relative coordinates induce translation invariance against the global shift of the point cloud.

    Because the center vertex already contains some structural features from the previous iteration, we can use it to predict an alignment offset, and propose an auto-registration mechanism:

    其中,is the coordination offset. g, h, f都是MLP实现,g会增加一个residual connection。是MAX 过滤。

    上述可以写为:

    其中[,]表示连接操作。每一次迭代使用不同的MLP,不共享参数。

  • Loss

    分类分支给出每一个类别的可能性,包括background class。use the average cross-entropy loss as the classification loss.

    j是类别,i是点,c表示点

    shape分支,预测7个自由度. 通过中心点来扩展,下表带m和0的是固定的值

    Use Huber loss to compute;如果中心点在所有bbox外面,那么localization loss设置为0;整个localization loss 求的是所有点的平均值。

    整体的loss(为了避免overfitting,对于每一个MLP增加了L1正则项:

  • Box Merging and Scoring

    As multiple vertices can be on the same object, the neural network can output multiple bounding boxes of the same object. Use NMS.【一般是留下分类分数最高的框,但是分类分数不一定反映出localization的质量】propose to calculate the merged box by considering the entire overlapped box cluster.

    o:遮挡因子的计算方法。

lidar相关

由于暂时不接触lidar,但是相关的一些基础知识可能还需要涉及一下;特此这一部分来说明。

lidar -> Info.

  1. 激光雷达获取到三维点去数据

  2. 点云分离

  3. 聚类,一般都是通过计算相邻两个激光点间的距离来决定是否属于同一类。

  4. 障碍物识别

    将3D点云体素化,提取结构特征之后送入到SVM或者神经网络中进行分类,还有的使用了点云的前视图,包含2D点云图,使用了一个全连接的卷积网络作用在2D点云图上从而预测出3D的boxes。计算量太大

  5. 前后两频对比,可以识别是静态障碍物还是动态障碍物。

  6. 动态障碍物可以计算出运动速度等。

  7. 结合无人驾驶汽车当前的位置信息,计算出避障所需的最小安全距离,达到避障功能。

Lidar激光雷达 VS Radar雷达

  • Radar属于毫米波,通常是4-12mm; lidar用的是激光波长通常在900-1500nm之间
  • Radar主要使用的是无线电波,与光波相比,遇到障碍物时无线电波不容易被吸收,所以其有效工作距离更远;在雨雪尘环境下效果可以保持
  • Lidar看得更“细”,更精确(过近的不可);LiDAR传感器快速发射激光脉冲(通常最高可达每秒150000次脉冲),激光信号到达障碍物后反射回LiDAR传感器。传感器通过测量激光信号从发射到返回的时间,精确计算确定传感器到障碍物之间的距离,它还能探测目标物体的准确尺寸。LiDAR通常用于高分辨率地图的绘制。

后记

最近在做一个改变的时候,总是会思考一件事情,这个东西人会这么做吗?这个任务人可以做到吗?人会怎么做?然后就会发现,现在做的似乎只是一个相对快速得到简略结果的方法,有些失望。似乎,我认为机器就是我自己,我会去做到吗?(但我在学驾照的时候,师傅总是说我目测估计能力很差,大概我这个模型就是不成功的吧……

就好像回归三个信息位置、尺寸与角度,但是对于人来说会去评估这些东西吗?还是会直接去衡量角点的位置以及方向呢?又比如对于马路上运行的一辆车,在远处时开了5米,这前后帧的图片不是类似,又怎么去学习呢?好像很难说服自己,可能网络会关注更细节的东西吧~

最近看到的很有意思的想法:大概是一个注意力机制的东西,减少无谓的区域的计算;通常图片和特殊情况图片分别建模;关注物体内在的信息

转载请注明出处,谢谢。

愿 我是你的小太阳

买糖果去喽