3D物体检测(一)


title: 3D物体检测(一)
date: 2020-02-21 16:40:40
categories:

  • 3D物体检测
    tags:
  • 3D物体检测
  • 点云

总结一下在bilibili上看到的基于点云场景的三维物体检测算法及应用,有兴趣的也可以去看看这个视频。
这一部分主要总结一下,结合雷达点云数据和相机采集的二维图像数据的方法。
主要包括: MV3D-Net、F-PointNet

MV3D-Net

Multi-View 3D Object Detection Network for Autonomous Driving

具体思想

结合二维图像和3D点云数据。3D点云数据比较庞大,挑选了俯视图和前视图,根据高度、强度和密度三个指标来定义特征。在俯视图中生成3D推荐框,分别在三个不同视图中进行特征提取,再进行特征融合,最后进行定位和回归。

核心部分

参考知乎上的一篇博客:https://zhuanlan.zhihu.com/p/86312623
讲得比较详细,有兴趣可以看看。

网络结构

20200221001713.png

本文方法设计的具体步骤如下:

1)提取特征

a. 提取点云俯视图特征
b. 提取点云前视图特征
c. 提取图像特征

2)从点云俯视图特征中计算候选区域

3)把候选区域分别与1)中a、b、c得到的特征进行整合
a. 把俯视图候选区域投影到前视图和图像中
b. 经过ROI pooling整合成同一维度

4)把整合后的数据经过网络进行融合

通过俯视图生成3D推荐框,针对俯视点云、前视点云、二维图像三个视图的数据,将推荐框按规则投影,通过roipool分别提取特征,再在后面进行多视图特征融合,回归最终结果。

提取特征

1)提取俯视图特征

俯视图由高度、强度、密度组成,投影到分辨率为0.1的二维网格中。

a. 高度

对于每个网格来说,高度特征有点云单元格中的最高值得出;为了编码更多的高度特征,点云被分为M块,每一个块都计算相应的高度图,从而获得了M个高度图。

b. 强度

强度是每个单元格中有最大高度的点的映射值.

c. 密度

表示每个单元格中点的数目,为了归一化特征,被计算为:

20200221002758.png

其中N为单元格中的点的数目。强度和密度特征计算的是整个点云,而高度特征是计算M切片,所以,总的俯视图被编码为(M + 2)个通道的特征。

2)提取前视图特征
前视图给俯视图提供了额外的信息。由于激光点云非常稀疏的时候,投影到2D图上也会非常稀疏。相反,我们将它投影到一个圆柱面生成一个稠密的前视图。 假设3D坐标为
20200221002911.png
那么他的前视图坐标
20200221002928.png
可以通过如下式子计算
20200221002901.png

Frustum-PointNet

  • 上述的PointNet和PointNet++主要用于点云数据的分类和分割问题,Frustum-PointNet(F-PointNet)将PointNet的应用拓展到了3D目标检测上。目前单纯基于Lidar数据的3D目标检测算法通常对小目标检测效果不佳,为了处理这个问题,F-PointNet提出了结合基于图像的2D检测算法来定位目标,再用其对应的点云数据视锥进行bbox回归的方法来实现3D目标检测。F-PointNet的网络结构如下图所示。
    20200128220644.png
    可以看到,F-PointNet主要由以下几部分构成:
  • 视锥生成(frustum proposal):
    首先通过2D目标检测器来定位图片中的目标以及判断它们的类别。对每一个检测到的目标,通过标定好的传感器的内参和它们之间的转换矩阵得到其对应的点云数据中的各点,即点云视锥。作者使用的2D目标检测模型是基于VGG网络的FPN作为特征提取器,并用Fast R-CNN来预测最终的2D bbox。
  • 3D实例分割(3D instance segmentation):
    对每个得到的点云视锥,通过旋转得到以中心视角为坐标轴的点云数据。对转换后的点云数据用PointNet(或PointNet++)进行实例分割。实例分割是一个二分类问题,用于判断每个点属于某个目标或者不属于。
  • 3D边界框回归(3D box estimation):
    将上一步实例分割的结果作为mask得到属于某个实例的所有点云,计算其质心作为新的坐标系原点。通过一个T-Net进行回归得到目标质心和当前坐标原点的残差。将点云平移到计算得到的目标质心后,通过PointNet(或PointNet++)对3D bbox的中心、尺寸和朝向进行回归得到最终的输出。此步骤采用的回归方式和Faster R-CNN中类似,不直接回归,而是回归到不同尺寸和朝向的锚点(anchors)。

综上所述,F-PointNet是一个多步骤的3D目标检测算法。如下图所示,为了应对点云数据中各个目标的视角不变性和得到更准确的bbox回归(通过缩小需要回归的值的取值范围),算法需要进行三次坐标转换。模型的loss和2D的目标检测一样是包含分类以及回归的多任务loss。同时,作者提出了一种被称为corner loss的损失函数来对目标的中心、朝向和大小进行联合优化,避免由于某一方面的不准确而主导loss。

20200128220851.png

详细参考: https://blog.csdn.net/u011507206/article/details/89106892

(img-JfvCT2eV-1582518717583)]

详细参考: https://blog.csdn.net/u011507206/article/details/89106892

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值