无人驾驶汽车系统入门(二十六)——基于深度

  在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的对象进行特征提取,紧接着我们训练一个分类器实现对这些对象的分类,这是一种基于激光雷达的目标检测方法。近年来,随着深度学习在图像视觉领域的发展,一类基于单纯的深度学习模型的点云目标检测方法被提出和应用,本文将详细介绍其中一种模型——SqueezeSeg,并且使用ROS实现该模型的实时目标检测。

  实际上,在深度学习方法出现之前,基于点云的目标检测已经有一套比较成熟的处理流程:分割地面->点云聚类->特征提取->分类,典型的方法可以参考Velodyne的这篇论文:LIDAR-based 3D Object Perception

  那么传统方法存在哪些问题呢?

  因此,近年来不少基于深度学习的点云目标检测方法被提出,本文介绍的SqueezeSeg就是其中一种,这类方法使用深度神经网络提取点云特征,以接近于端到端的处理流程实现点云中的目标检测。

  论文:SqueezeSeg: Convolutional Neural Nets with Recurrent CRF for Real-Time Road-Object Segmentation from 3D LiDAR Point Cloud, https://arxiv.org/pdf/1710.07368.pdf

  SqueezeSeg使用的是CNN(卷积神经网络)+CRF(Conditional Random Field,条件随机场)这样的结构。其中,CNN采用的是Forrest提出的SqueezeNet网络(详情见论文:“SqueezeNet: Alexnet-level accuracy with 50x fewer

  parameters and < 0.5mb model size”, https://arxiv.org/pdf/1602.07360.pdf ), 该网络使用远少于AlexNet的参数数量便达到了等同于AlexNet的精度,极少的参数意味着更快的运算速度和小的内存消耗,这是符合车载场景需求的。被预处理过的点云数据(二维化)将被以张量的形式输入到这个CNN中,CNN输出一个同等宽高的标签映射(label map),实际上就是对每一个像素进行了分类,然而单纯的CNN逐像素分类结果会出现边界模糊的问题,为解决该问题,CNN输出的标签映射被输入到一个CRF中,这个CRF的形式为一个RNN,其作用是进一步的矫正CNN输出的标签映射。最终的检测结果论文中使用了DBSCAN算法进行了一次聚类,从而得到检测的目标实体。

  下面我们从预处理出发,首先理解这一点云目标检测方法。

  传统的CNN设计多用于二维的图像模式识别(宽 高 通道数),三维的点云数据格式不符合该模式,而且点云数据稀疏无规律,这对特征提取都是不利的,因此,在将数据输入到CNN之前,首先对数据进行球面投影,从而到一个稠密的、二维的数据,球面投影示意图如下:

  在这里插入图片描述