CVPR2020论文介绍: 3D 目标检测高效算法

CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Cloud

随着CVPR2020入选论文的曝光,一篇关于自动驾驶的文章被录用,该论文提出了一个通用、高性能的自动驾驶检测器,首次实现3D物体检测精度与速度的兼得,有效提升自动驾驶系统安全性能。目前,该检测器在自动驾驶领域权威数据集KITTI BEV排行榜上排名第三。论文是如何解决物体检测难题的?

View Aggregation

利用Anchor grid作为感兴趣区域进行Crop和Resize到同一大小,然后将两者的特征进行element-wise sum,然后进行3D proposals的第一次回归。然后进行NMS,使用proposals对feature map再次进行Crop和Resize, 然后再次回归,修正proposals,通过NMS得到Object Bounding Boxes。

上图中左边的Fully Connected Layers回归车辆位置的尺寸,右边的Fully Connected Layers回归车辆的朝向角。

3D
目标检测需输出物体类别及在三维空间中的长宽高、旋转角等信息

与普通的 2D 图像识别应用不同,自动驾驶系统对精度和速度的要求更高,检测器不仅需要快速识别周围环境的物体,还要对物体在三维空间中的位置做精准定位。然而,目前主流的单阶段检测器和两阶段检测器均无法平衡检测精度和速度,这极大地限制了自动驾驶安全性能。

此次,论文提出了新的思路即将两阶段检测器中对特征进行细粒度刻画的方法集成到单阶段检测器。具体来说,在训练中利用一个辅助网络将单阶段检测器中的体素特征转化为点级特征,并施加一定的监督信号,同时在模型推理过程中辅助网络无需参与计算,因此,在保障速度的同时又提高了检测精度。

以下是第一作者 Chenhang He 对该论文做出的解读:

1. 背景

2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN和MaskRCNN,One
Shot系列的YOLOv1-YOLOv3。在2D Object
Detection的基础上又提出了新的要求3D Object Detection。问题的具体描述检测环境中的三维物体,并给出物体的Bounding Box。相比于2D,3D的Bounding Box的表示除了多了一个维度的位置和尺寸,还多了三个角度。可以想象,一架飞机的Bounding Box的尺寸的是固定的,飞机的姿态除了位置之外,还有俯仰角、偏航角和翻滚角三个角度。

目前对于3D Object Detection有迫切需求的产业是自动驾驶产业,因为要想安全的自动驾驶,需要周围障碍物的三维位姿,在图片中的二维位姿不带深度信息,没有办法有效避免碰撞。所以3D Object Detection的数据集大多也是自动驾驶数据集,类别也主要是车辆和行人等,比较常用的有KITTI和kaist。由于自动驾驶针对车辆,所以障碍物的高度的检测对于安全行驶并没有十分重要,而障碍物都在陆地上,所以也不存在俯仰角和翻滚角两个角度。所以有些3D Object Detection方法将这三值忽略了。

目标检测是计算机视觉领域的传统任务,与图像识别不同,目标检测不仅需要识别出图像上存在的物体,给出对应的类别,还需要将该物体通过 Bounding box 进行定位。根据目标检测需要输出结果的不同,一般将使用 RGB 图像进行目标检测,输出物体类别和在图像上 2D bounding box 的方式称为
2D 目标检测。而将使用 RGB 图像、RGB-D 深度图像和激光点云,输出物体类别及在三维空间中的长宽高、旋转角等信息的检测称为 3D 目标检测。

从点云数据进行 3D 目标检测是自动驾驶(AV)系统中的的关键组件。与仅从图像平面估计 2D 边界框的普通 2D 目标检测不同,AV 需要从现实世界估计更具信息量的 3D 边界框,以完成诸如路径规划和避免碰撞之类的高级任务。这激发了最近出现的 3D 目标检测方法,该方法应用卷积神经网络(CNN)处理来自高端 LiDAR 传感器的点云数据。

3D Detection with Frustum PointNets

模型主要分为3部分:

  • frustum proposao
  • 3D
    instance segmentation
  • 3D
    amodal bounding box estimation

对于实时3D
sensor采集的3D数据还是比2D数据的分辨率要低很多,所以用2D图片和2D目标检测的方法来提proposal(同时进行分类)效果很好。

This normalization helps improve the rotation-invariance of the
algorithm.

目前基于点云的 3D 物体检测主要有两种架构:

1、单阶段检测器 (single-stage): 将点云编码成体素特征 (voxel feature), 并用
3D CNN 直接预测物体框, 速度快。但是由于点云在 CNN 中被解构,
对物体的结构感知能力差, 所以精度略低。2、两阶段检测器 (two-stage): 首先用 PointNet 提取点级特征, 并利用候选区域池化点云 (Pooling from point cloud) 以获得精细特征. 通常能达到很高的精度但速度很慢。

2. 方法





目前业界主要以单阶段检测器为主,这样能保证检测器能高效地在实时系统上进行。本文提出的方案将两阶段检测器中对特征进行细粒度刻画的思想移植到单阶段检测中,通过在训练中利用一个辅助网络将单阶段检测器中的体素特征转化为点级特征,并施加一定的监督信号,从而使得卷积特征也具有结构感知能力,进而提高检测精度。而在做模型推断时,辅助网络并不参与计算(detached), 进而保证了单阶段检测器的检测效率。另外本文提出一个工程上的改进,Part-sensitive Warping (PSWarp), 用于处理单阶段检测器中存在的 “框 - 置信度 - 不匹配”
问题。

主体网络





用于部署的检测器, 即推断网络, 由一个骨干网络和检测头组成。骨干网络用 3D 的稀疏网络实现,用于提取含有高语义的体素特征。检测头将体素特征压缩成鸟瞰图表示,并在上面运行 2D 全卷积网络来预测 3D 物体框。

辅助网络





在训练阶段,本文提出一个辅助网络来抽取骨干网络中间层的卷积特征,并将这些特征转化成点级特征 (point-wise feature)。在实现上,本文将卷积特征中的非零信号映射到原始的点云空间中, 然后在每个点上进行插值,这样本文就能获取卷积特征的点级表示。令 {():j=0,…,M} 为卷积特征在空间中的表示, {:i=0,…,N}为原始点云, 则卷积特征在原始点上的表示 等于

辅助任务





本文提出两种基于点级特征的监督策略来帮助卷积特征获得很好的结构感知力, 一个前景分割任务, 一个中心点回归任务。

具体来说,相比于 PointNet 特征提取器
(a),
卷积网络中的卷积操作和下采样会造成点云结构的破坏 (b)使得特征对物体的边界与内部结构不敏感。本文利用分割任务来保证部分卷积特征在下采样时不会被背景特征影响 ,从而加强对边界的感知。本文利用中心点回归任务来加强卷积特征对物体内部结构的感知能力 (d),使得在少量点的情况下也能合理的推断出物体的潜在大小,形状。本文使用 focal loss 和
smooth-l1 对分割任务与中心回归任务分辨进行优化。

3. 工程上的改进

在单阶段检测中, feature map 和
anchor 的对齐问题是普遍存在的问题, 这样会导致预测出来的边界框的定位质量与置信度不匹配,这会影响在后处理阶段(NMS)时, 高置信度但低定位质量的框被保留,
而定位质量高却置信度低的框被丢弃。在 two-stage 的目标检测算法中,RPN 提取 proposal,然后会在 feature map 上对应的的位置提取特征(roi-pooling 或者 roi-align),这个时候新的特征和对应的 proposal 是对齐的。本文提出了一个基于 PSRoIAlign 的改进,Part-sensitive Warping
(PSWarp), 用来对预测框进行重打分。

如上图, 本文首先修改最后的分类层以生成 K 个部分敏感的特征图,用{X_k:k = 1,2,…,K}表示,每个图都编码对象的特定部分的信息。例如,在 K = 4 的情况下,会生成 {左上,右上,左下,右下} 四个局部敏感的特征图。同时,本文将每个预测边界框划分为 K 个子窗口,然后选择每个子窗口的中心位置作为采样点。这样,本文可以生成 K 个采样网格{S^k:k
= 1,2,…,K},每个采样网格都与该局部对应的特征图相关联。如图所示,本文利用采样器, 用生成的采样网格在对应的局部敏感特征图上进行采样,生成对齐好的特征图。最终能反映置信度的特征图则是 K 个对齐好特征图的平均。

4. 效果

本文提出的方法 (黑色)
在 KITTI 数据库上的 PR Curve, 其中实线为两阶段方法, 虚线为单阶段方法。可以看到本文作为单阶段方法能够达到两阶段方法才能达到的精度。

在 KITTI 鸟瞰
(BEV) 和 3D 测试集的效果。优点是在保持精度的同时,不增加额外的计算量,能达到 25FPS 的检测速度。

CVPR2020论文介绍: 3D 目标检测高效算法的更多相关文章

  1. 3D目标检测(CVPR2020:Lidar)

    3D目标检测(CVPR2020:Lidar) LiDAR-Based Online 3D Video Object Detection With Graph-Based Message Passing ...

  2. CVPR2020|3D-VID:基于LiDar Video信息的3D目标检测框架

    作者:蒋天园 Date:2020-04-18 来源:3D-VID:基于LiDar Video信息的3D目标检测框架|CVPR2020 Brief paper地址:https://arxiv.org/p ...

  3. CVPR2019:无人驾驶3D目标检测论文点评

    CVPR2019:无人驾驶3D目标检测论文点评 重读CVPR2019的文章,现在对以下文章进行点评. Stereo R-CNN based 3D Object Detection for Autono ...

  4. AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3

    1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...

  5. 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)

    R-CNN(Region-based CNN) motivation:之前的视觉任务大多数考虑使用SIFT和HOG特征,而近年来CNN和ImageNet的出现使得图像分类问题取得重大突破,那么这方面的 ...

  6. 目标检测 | 经典算法 Cascade R-CNN: Delving into High Quality Object Detection

    作者从detector的overfitting at training/quality mismatch at inference问题入手,提出了基于multi-stage的Cascade R-CNN ...

  7. 带你读AI论文丨用于目标检测的高斯检测框与ProbIoU

    摘要:本文解读了<Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection&g ...

  8. CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet

    在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...

  9. 目标检测YOLO算法-学习笔记

    算法发展及对比: 17年底,mask-R CNN YOLO YOLO最大的优势就是快 原论文中流程,可以检测出20类物体. 红色网格-张量,在这样一个1×30的张量中保存的数据 横纵坐标中心点缩放到0 ...

随机推荐

  1. ASP检测客户是否取消微信公众号

    有时因为项目内需要用到检测客户是否已经取消关注微信公众号,只有没被取消执行相关模板信息发送.图文信息发送.视频语音等信息发送给客户才有意义.也可以知道多少客户还在我们的微信公众号关注内.方便后期做公众 ...

  2. hdu1353 小暴力

    题意:       题意是给你一个数,然后你有0.25,0.1,0.05,0.01的四种面额若干,让你求出最小的钱币纸张. 思路:       对于这种题目要自己观察两样东西,一个是四种面额之间的关系 ...

  3. 学习Canvas绘图与动画基础 canvas入门(一)

    一.创建canvas 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta char ...

  4. Day006 方法的重载

    方法的重载 定义 重载就是在一个类中,有相同的函数名称,但形参不同的函数. 方法的重载的规则 方法名称必须相同. 参数列表必须不同(个数不同.或类型不同.参数排列顺序不同等). 方法的返回值类型可以相 ...

  5. php 实现图片下载,文件下载

    1.控制器public function downPic(){ $filename = input('file','','string'); //文件所在路径 // 检查文件是否存在 if (! fi ...

  6. python 读写 HDFS

    pandas dataframe写入hdfs csv文件的两种方式: 1. from hdfs.client import Client cleint.write(hdfs_url, df.to_cs ...

  7. Python JWT 介绍

    Python JWT 介绍 目录 Python JWT 介绍 1. JWT 介绍 2. JWT 创建 token 2.1 JWT 生成原理 2.2 JWT 校验 token 原理 3. 代码实现 4. ...

  8. 使用C#进行数据库增删改查ADO.NET(一)

    这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...

  9. 【敏杰开发】Beta阶段项目展示

    [敏杰开发]Beta阶段项目展示 项目相关地址汇总 线上地址:http://roadmap.imcoming.top 前端仓库:https://github.com/MinJieDev/Roadmap ...

  10. Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)

    1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下. 2.什么是远程运行? 远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一 ...