PointPillars: Fast Encoders for 3D Object Detection from Point Clouds

PointPillars: Fast Encoders for 3D Object Detection from Point Clouds

  • 简介
  • 3D目标检测整体框架
  • 数据增强
  • 生成伪图像
  • 基础网络
  • 检测头
  • Loss

简介

考虑到点云数据的不规则,将点云编码为适合下游检测流程的格式,是一个首先需要处理的问题。一般有两种处理方式:

  1. 固定编码器,这种编码器往往速度快但是以牺牲精度为前提
  2. 在数据中学习的编码器,这种编码器更准确,但速度较慢

这里提出了PointPillars,一种新颖的编码器,它利用PointNets来学习在垂直列柱体组织中的点云的特征。虽然编码特征可以与任何标准2D卷积检测架构一起使用,但这里进一步提出了精简的下游网络。

3D目标检测整体框架

PointPillars: Fast Encoders for 3D Object Detection from Point Clouds_第1张图片从图中很容易就能看出来,其具体的框架分为三阶段:

  1. 将点云转换为稀疏伪图像的特征编码器网络;
  2. 2D卷积基础网路(backbone),用于将伪图像处理成高维特征表示;
  3. 检测头部(detection head, SSD)对类别预测和对3D检测框的位置进行回归;

数据增强

  1. 受SECOND方法启发,创建一个所有类别的3D 点云BOX查询表,对于每一个类别,随机选取一些样本box,把这些样本box放到当前点云中去(相当于统一位置的相同类别的样本不同个体之间相互换位置),然后每个box再进行旋转和平移变换。
  2. 全局扩展,旋转、尺度变换、全局平移等。

生成伪图像

  • 首先在俯视图的平面上打网格(H x W)的维度;然后对于每个网格所对应的柱子中的每一个点都取(x,y,z,r,x_c,y_c,z_c,x_p,y_p)9个维度。其中前三个为每个点的真实位置坐标,r为反射率,带c下标的是点相对于柱子中心的偏差,带p下标的是对点相对于网格中心的偏差。每个柱子中点多于N的进行采样,少于N的进行填充0。于是就形成了(D,N,P)D=9, N为点数(设定值),P为H*W。
  • 然后学习特征,用一个简化的PointNet从D维中学出C个channel来,变为(C,N,P)然后对N进行最大化操作变为(C,P)又因为P是H*W的,我们再展开成一个伪图像形式,H,W为宽高,C为通道数。

基础网络

PointPillars: Fast Encoders for 3D Object Detection from Point Clouds_第2张图片包含两个子网络(1、top-down网络,2、second网络)top-down网络结构为了捕获不同尺度下的特征信息,主要是由卷积层、归一化、非线性层构成的,second网络用于将不同尺度特征信息融合,主要有反卷积来实现。

检测头

SSD的检测头,具体如下:
PointPillars: Fast Encoders for 3D Object Detection from Point Clouds_第3张图片

Loss

  • 回归量:
    PointPillars: Fast Encoders for 3D Object Detection from Point Clouds_第4张图片
    其中:
     在这里插入图片描述
    其中上标gt表示真实标签,a表示anchor预测。
  • 定义损失函数为:
    在这里插入图片描述
    其中回归loss:
    在这里插入图片描述
    其中分类loss(focal loss):
    在这里插入图片描述
    其中方向loss为softmax分类loss,用来区分正向和反向

对于整体loss中的参数, 1 N p o s \frac{1}{N_{pos}} Npos1正anchors的数量, β l o c = 2 {\beta}_{loc}=2 βloc=2 β c l s = 1 {\beta}_{cls}=1 βcls=1 β d i r = 0.2 {\beta}_{dir}=0.2 βdir=0.2

你可能感兴趣的:(3D检测,机器学习)