3D目标检测 | PointPillars论文和代码解析

作者丨周威@知乎

来源丨https://zhuanlan.zhihu.com/p/357626425

编辑丨3D视觉工坊

1 前言

本文要解析的模型叫做PointPillars,是2019年出自工业界的一篇Paper。

该模型最主要的特点是检测速度和精度的平衡。该模型的平均检测速度达到了62Hz,最快速度达到了105Hz,确实遥遥领先了其他的模型。这里我们引入CIA-SSD模型中的精度-速度图,具体对比如下所示。

图1 精度-速度图

可以看出,截止CIA-SSD论文发表前,PointPillars的检测速度都是遥遥领先的,而且精度也不低。

现有的一些研究喜欢将不规则、稀疏的点云数据按照以下两种方式进行处理,然后引入RPN层进行3D Bbox Proposal,这两种方法为:

(1)将点云数据划纳入一个个体素(Voxel)中,构成规则的、密集分布的体素集。常见的有VoxelNet和SECOND,这在之前的文章中已经解析过了;

(2)从俯视角度将点云数据进行处理,获得一个个伪图片的数据。常见的模型有MV3D和AVOD,这也说过了。

本文采用了一种不同于上述两种思路的点云建模方法。从模型的名称PointPillars可以看出,该方法将Point转化成一个个的Pillar(柱体),从而构成了伪图片的数据。

然后对伪图片数据进行BBox Proposal就很简单了,作者采用了SSD的网络结构进行了Proposal。

本文的论文地址为:

https://arxiv.org/abs/1812.05784

代码地址为:

https://github.com/SmallMunich/nutonomy_pointpillars

2 数据处理和网络结构

前面说到本文的一大亮点是将点云划分为一个个的Pillar,从而构成了伪图片的数据。

如何构成这个伪图片呢?作者在论文中是给出了这样的图,如下。

具体实现步骤如下:

按照点云数据所在的X,Y轴(不考虑Z轴)将点云数据划分为一个个的网格,凡是落入到一个网格的点云数据被视为其处在一个pillar里,或者理解为它们构成了一个Pillar。

每个点云用一个  维的向量表示,分别为  。其中  为该点云的真实坐标信息(三维)和反射强度;  为该点云所处Pillar中所有点的几何中心;  为  ,  ,反应了点与几何中心的相对位置。

假设每个样本中有  个非空的pillars,每个pillar中有  个点云数据,那么这个样本就可以用一个  张量表示。

那么可能就有人问了,怎么保证每个pillar中有  个点云数据呢?

如果每个pillar中的点云数据数据超过 个,那么我们就随机采样至  个;如果每个pillar中的点云数据数据少于 个,少于的部分我们就填充为0;

这样的话,作者很容易就实现了点云数据的张量化,具体过程如下。

实现张量化后,作者利用简化版本的PointNet对张量化的点云数据进行处理和特征提取。

特征提取可以理解为对点云的维度进行处理,原来的点云维度为  ,处理后的维度为  ,那么我们就获得了一个 的张量。

接着,我们按照Pillar所在维度进行Max Pooling操作,即获得了  维度的特征图。

为了获得伪图片特征,作者将  转化为  ,即  。那么我们就获得了形如  的伪图片了。具体过程如下:

至此,有关PointPillars中的点云数据的伪图片化就结束了。接下来我们简单聊聊PointPillars的网络结构,具体如下:

伪图片作者2D CNN的输入,用来进一步提取图片特征。

从图中可以看出,该2D CNN采用了两个网络。其中一个网络不断缩小特征图的分辨率,同时提升特征图的维度,因此获得了三个不同分辨率的特征图。

另一个网络对三个特征图进行上采样至相同大小,然后进行concatenation。

之所以选择这样架构,是因为不同分辨率的特征图负责不同大小物体的检测。比如分辨率大的特征图往往感受野较小,适合捕捉小物体(在KITTI中就是行人)。

至此,PointPillars的网络结构就讲解完毕了,很简单有木有?

3 损失函数

PointPillars的损失函数也是一样的简单哈。作者采用了SECOND中类似的损失函数,每个3D BBox用一个7维的向量表示,分别为  。

其中  为中心,  为尺寸数据,  为方向角。

那么检测框回归任务中要学习的参数为这7个变量的偏移量:

作者采用了 Smooth L1损失函数进行训练

和SECOND中相同,为了避免方向判别错误,作者引入了个Softmax损失学习物体的方向。该损失记做  。

有关分类损失,作者仍然采用了Focal Loss,定义如下:

总函数定义如下:

至此,有关PointPillars的初步解析就完成了。

4 总结

PointPillars是一款能够平衡检测速度和检测精度的3D检测模型。最近我也正在看这个模型的代码,上手玩玩这个模型,希望最后的结果能够惊艳到我(微笑)。如果文章解析部分有理解不到位的地方,欢迎各位批评指正!

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值