Center-based 3D Object Detection and Tracking 论文学习

news/2024/11/2 2:21:37/

论文地址:Center-based 3D Object Detection and Tracking
Github 地址:Center-based 3D Object Detection and Tracking

1. 解决了什么问题?

在点云中,3D 目标通常以 3D 框的形式表示。这个表征借鉴于 2D 图像的检测,但也带来了一些问题。在 3D 世界中,目标没有特定的朝向,基于边框的检测器很难枚举出所有的朝向,或用一个与 x x x y y y轴对齐的边框来拟合任意旋转的物体。
点云 3D 检测有如下挑战:

  • 点云比较稀疏,3D 空间的大多数区域是没有测量值的;
  • 输出结果是 3D 框,在全局坐标系里通常不会很好地对齐;
  • 3D 目标的大小、形状和宽高比差异很大,比如在路上,公交车和 limo 很长、行人个子很高。

3D 检测与 2D 之间有着明显的差异,使算法的迁移工作更加困难。症结在于,与 x x x y y y轴对齐的 2D 框并不能很好地表示任意 3D 物体。如下图所示,anchor-based 方法使用自车坐标系下 x x x轴或 y y y轴对齐的 anchors。当这个车是直行时,该方法可以检出物体;但当车子左转时,anchor-based 方法就无法拟合该旋转物体了。一个办法是将每个物体的朝向角分类为不同的 anchors,但这会增加计算成本,产生大量的 false positives。本文认为,要将 2D 域和 3D 域关联起来,根本的挑战在于如何表征物体。如下图所示,用点表征目标极大地简化了 3D 检测。
在这里插入图片描述

2. 提出了什么方法?

提出将 3D 目标用点来表示、检测和跟踪。在不同的主干网络下,从边框表征切换到基于中心点的表征可以提升 3D 检测 3 % ∼ 4 % 3\%\sim 4\% 3%4%mAP。CenterPoint 是一个双阶段 3D 检测器,首先用一个关键点检测器来找到目标的中心点,回归其属性(如 3D 框大小、3D 框朝向角及速度);然后在第二阶段,使用额外的目标点特征,优化这些预测结果。双阶段优化能进一步提升 2 % 2\% 2%mAP,计算量增长 < 10 % <10\% <10%
CenterPoint 使用标准的 LiDAR 主干网络,即 VoxelNet 或 PointPillars,由输入点云构建出表征。然后将这些表征 flatten 成一个俯视图,使用基于图像的关键点检测器来找到目标中心点。对于每个检到的中心点,从该点的特征回归出其它的属性,如 3D 大小、朝向和速度。在第二阶段,提取 3D 目标框四个外立面的 3D 中心点的特征。它恢复出丢失的局部几何信息(步长、局部感受野造成),能带来明显的表现提升。
基于中心的表征有多个核心优点:

  • 边框有朝向角,而中心点没有。这极大地降低了目标检测器的搜索空间,使主干网络能学习任意旋转角度的物体。
  • 基于中心的表征能简化下游任务。如果目标是点的话,轨迹就是其时空路径。CenterPoint 预测连续帧之间目标的相对速度(偏移),然后做贪心匹配。
  • 基于点的特征提取使我们能设计出更有效、更快的双阶段优化模块。

2.1 Preliminaries

CenterNet

将目标检测看作为关键点预测问题。输入是单张图片,为 K K K个类别预测一个 w × h w\times h w×h形状的热力图 Y ^ ∈ [ 0 , 1 ] w × h × K \hat{Y}\in [0,1]^{w\times h\times K} Y^[0,1]w×h×K。输出热力图上的每个局部极大值(即像素值 ≥ \geq 它相邻的八个像素值)都对应一个检测物体的中心。为了提取 2D 框,CenterNet 回归一个 size map S ^ ∈ R w × h × 2 \hat{S}\in \mathbb{R}^{w\times h\times 2} S^Rw×h×2,由所有的类别共享。对于每个检测目标,size map 里面是中心点位置的宽度和高度。CenterNet 架构使用全卷积主干,和一个密集预测的 head。训练时,在每个标注框的中心点 q i \mathbf{q}_i qi(其类别为 c i ∈ { 1 , . . . , K } c_i\in \left\{1,...,K\right\} ci{1,...,K}),用高斯核来学习预测热力图,并回归目标框的大小 S S S。为了补偿由主干网络步长引起的量化误差,CenterNet 也会回归一个局部偏移图 O ^ \hat{O} O^
测试时,检测器产生 K K K个热力图、与类别无关的回归图。热力图上的每个局部极大值对应一个目标,置信度大小与热力图的极大值呈正相关。对于每个检测目标,检测器从相应的极大值位置得到回归值。

3D Detection

P = { ( x , y , z , r ) i } \mathcal{P}=\left\{(x,y,z,r)_i\right\} P={(x,y,z,r)i}是 3D 位置 ( x , y , z ) (x,y,z) (x,y,z)的无序的点云, r r r是反射的测量值。3D 检测算法预测一组 BEV 视角下的 3D 目标框 B = { b k } \mathcal{B}=\left\{b_k\right\} B={bk}。每个目标框 b = ( u , v , d , w , l , h , α ) b=(u,v,d,w,l,h,\alpha) b=(u,v,d,w,l,h,α)包括中心点坐标 ( u , v , d ) (u,v,d) (u,v,d)、3D 大小 ( w , l , h ) (w,l,h) (w,l,h)和偏航角 α \alpha α。不失一般性地,我们采用了自车中心的坐标系,传感器坐标为 ( 0 , 0 , 0 ) (0,0,0) (0,0,0),偏航角为 0 0 0
目前的 3D 检测器使用一个 3D 编码器,将点云量化为规则的 bins。然后,基于点的网络提取一个 bin 内所有点的特征。3D 编码器对这些特征做池化,得到初始的特征表示。计算量主要在主干网络内。主干网络的输出是一个俯视图特征 M ∈ R W × L × F \mathbf{M}\in \mathbb{R}^{W\times L\times F} MRW×L×F,宽度为 W W W,长度是 L L L,通道数为 F F F W , L W, L W,L与单个 voxel bin 的分辨率和主干网络的步长直接相关。常用的主干网络包括 VoxelNet、PointPillars。
有了俯视图特征 M \mathbf{M} M,现有的检测器用一个检测 head 基于预先定义的 anchor boxes 输出检测结果。因为 3D 框有不同的尺寸和朝向,anchor-based 3D 检测器很难将 x x x轴或 y y y轴对齐的 2D 框拟合到 3D 目标。训练时,anchor-based 3D 检测器需要用 2D 框的 IoU 做标签分配,对于不同的类别和数据集,阈值选取也会造成不必要的负担。

2.2 CenterPoint

下图展示了 CenterPoint 架构。 M ∈ R W × H × F M\in\mathbb{R}^{W\times H\times F} MRW×H×F是 3D 主干的输出特征图。第一阶段预测一个类别相关的热力图、目标大小、sub-voxel 位置优化、旋转角度、速度。所有的输出都是密集预测结果。
在这里插入图片描述

Center heatmap head

Center-head 目的是,在任意待检测目标的中心位置输出一个热力图 peak。该 head 输出一个 K K K通道热力图 Y ^ \hat{Y} Y^,每个通道对应一个类别。训练时,将标注框的 3D 中心点投影到俯视图,回归目标是该中心点的 2D 高斯。本文使用了 Focal Loss。俯视图中目标要比图像里的稀疏。俯视图中的距离是绝对值,而图像视角会因为透视产生畸变。在俯视图下,车辆占据的像素面积很小,而在图像视角中,少量的大目标可能占据大面积的图像区域。此外,在图像视角下,透视投影会压缩目标的深度维度,使它们的中心点彼此更加靠近。在 CenterNet 中,监督信号非常稀疏,大多数位置是背景类。我们增大每个 ground-truth 目标中心的高斯 peak,提升热力图 Y Y Y目标的正监督信号。将高斯半径设为 σ = max ⁡ ( f ( w l ) , τ ) , τ = 2 \sigma=\max(f(wl), \tau), \tau=2 σ=max(f(wl),τ),τ=2是最小的高斯半径, f f f是半径函数。CenterPoint 保留了简洁的 center-based 目标分配。模型从相邻像素点获得更密集的监督信号。

Regression head

我们保留目标中心特征的多个属性:sub-voxel 位置偏移 o ∈ R 2 o\in \mathbb{R}^2 oR2、相较于地面的高度 h g ∈ R h_g\in\mathbb{R} hgR、3D 大小 s ∈ R 3 s\in\mathbb{R}^3 sR3,以及偏航角 ( sin ⁡ ( α ) , cos ⁡ ( α ) ) ∈ R 2 (\sin(\alpha),\cos(\alpha))\in \mathbb{R}^2 (sin(α),cos(α))R2。Sub-voxel 位置偏移 o o o能降低体素化和网络步长引发的量化误差。 h g h_g hg能帮助定位目标的 3D 位置,找回高度信息。朝向角预测将偏航角的余弦和正弦值作为连续的回归目标。这样回归 heads 就提供了 3D 框的所有信息。每个输出都有自己的 head。训练时,ground-truth 中心点用 L1 回归损失监督。回归 size 的对数能更好地处理形状间的差异。推理时,我们索引每个目标 peak 位置的 head 输出,提取所有的属性值。

Velocity head and tracking

为了跟踪目标,针对每个检测目标,模型都学习预测一个两维的速度估计 v ∈ R 2 \mathbf{v}\in\mathbb{R}^2 vR2,作为额外的回归输出。速度估计比较特殊,它需要当前时间戳和上一时间戳的俯视图输入。它预测当前帧和上一帧的目标位置差异。与其它回归目标不同,用 L1 损失监督当前时间戳 ground-truth 目标的速度预测。
推理时,我们使用贪心匹配策略,用该偏移量来关联当前检测结果和之前的检测结果。将速度估计值 × ( − 1 ) \times(-1) ×(1),把当前帧的目标中心投影回上一帧,然后根据最近距离匹配跟踪目标。每个未匹配轨迹至多会被保留 T = 3 T=3 T=3帧。用最后已知的速度估计值来更新每个未匹配的轨迹。
CenterPoint 协同优化热力图损失和回归损失。它简化并提升了以前的 anchor-based 3D 检测器。但是,目标的所有属性都来自于目标中心的特征,这些信息不能充分保证目标的准确定位。例如,在自动驾驶场景,传感器通常只能看到物体的某一面,并不是它的中心。

2.3 Two-stage CenterPoint

在第一阶段,我们仍然使用 CenterPoint。第二阶段从主干网络的输出提取额外的点特征。从预测 3D 框的每一面的中心点都提取一个点特征。注意,在俯视图视角,目标 3D 框的中心点、3D 框顶面和底面的中心点是同一个。因此,我们只考虑预测目标框的四个外立面的中心点和一个 3D 框的中心点。通过双线性插值,从主干输出的俯视图 M \textbf{M} M提取每个点的特征。然后将这些点特征 concat 起来,输入一个 MLP。第二阶段预测一个与类别无关的置信度得分、边框优化偏移量。
预测与类别无关的置信度得分,用候选框和 ground-truth 框的 3D IoU 来指导 target 得分 I I I
I = min ⁡ ( 1 , max ⁡ ( 0 , 2 × I o U t − 0.5 ) ) I=\min(1, \max(0, 2\times IoU_t-0.5)) I=min(1,max(0,2×IoUt0.5))
I o U t IoU_t IoUt是第 t t t个候选框和 ground-truth 框的 IoU。用二值交叉熵损失监督训练:
L s c o r e = − I t log ⁡ ( I ^ t ) − ( 1 − I t ) log ⁡ ( 1 − I ^ t ) L_{score}=-I_t \log(\hat{I}_t) - (1-I_t)\log (1- \hat{I}_t) Lscore=Itlog(I^t)(1It)log(1I^t)
其中, I ^ t \hat{I}_t I^t是预测的置信度得分。推理时,直接用单阶段 CenterPoint 的类别预测,用两项得分的几何平均值来表示最终的置信度, Q ^ t = Y ^ t ∗ I ^ t \hat{Q}_t=\sqrt{\hat{Y}_t\ast \hat{I}_t} Q^t=Y^tI^t Q ^ t \hat{Q}_t Q^t是目标 t t t的最终预测置信度得分, Y ^ t = max ⁡ 0 ≤ k ≤ K Y ^ p , k \hat{Y}_t=\max_{0\leq k\leq K}\hat{Y}_{p,k} Y^t=max0kKY^p,k是第一阶段的置信度得分, I ^ t \hat{I}_t I^t是第二阶段预测的置信度得分。
对于边框回归,在第一阶段输出候选框的基础上,第二阶段预测一个偏移量,用 L1 损失训练模型。CenterPoint 简化了双阶段 3D 检测算法,速度要比之前使用 PointNet 特征提取和 RoIAlign 操作的两阶段方法快很多。

2.4 Architecture

第一阶段的所有输出共享一个 3 × 3 3\times 3 3×3卷积层、BN 和 ReLU。每项输出进入各自的分支(两个 3 × 3 3\times 3 3×3卷积、BN 和 ReLU)。第二阶段使用一个共享的 MLP、BN、ReLU 和 DropOut (drop rate 为 0.3 0.3 0.3),后面是两个分支( 3 3 3个全连接层),一个预测置信度得分,一个预测边框回归。


http://www.ppmy.cn/news/60490.html

相关文章

C#学习教程大纲

以下是C#学习教程的大纲&#xff1a; 第一部分&#xff1a;基础知识 C#简介 什么是C#&#xff1f; C#的历史和发展 C#的特点和优势 开发环境的搭建 安装Visual Studio开发环境 配置开发环境 第一个C#程序 Hello World程序 程序的结构 编译和运行程序 数据类型和变…

鲲鹏昇腾开发者峰会2023举办

[2023年5月6日 广东东莞]今天&#xff0c;以“创未来 享非凡”为主题的鲲鹏昇腾开发者峰会2023在东莞松山湖举办。 鲲鹏产业生态繁荣&#xff0c;稳步发展&#xff0c;正在成为行业核心场景及科研领域首选&#xff0c;加速推动数字化转型&#xff1b;昇腾产业快速蓬勃向上&…

人生四维度

人生四维度 不是有钱了就成功&#xff0c;你知道&#xff1b;人生的成功不止一种&#xff0c;你也知道。但成功还有哪种&#xff1f;你知道吗&#xff1f; 如果把人生的体验展开&#xff0c;我们可以得到四个维度&#xff0c;高度、深度、宽度和温度。 财富、权力、影响力 构…

渗透测试流程方法工具详情

渗透测试分类 黑盒测试:从远程网络位置来评估目标网络基础设施,没有任何相关信息 白盒测试:内部发起,了解到关于目标环境的所有内部与底层知识 灰盒测试:结合两者优势,根据对目标系统所掌握的有限知识与信息,来选择评估整体安全性的最佳途径 测试方法 OSSTMM安全测试方法…

使用MASA全家桶从零开始搭建IoT平台(二)设备注册

前言 我们不希望任何设备都可以接入我们的IoT平台&#xff0c;所以一个设备正常的接入流程是这样的&#xff0c; 1、上位机软件通过串口或其他方式读取设备的唯一标识码UUID。 2、上位机调用IoT后台接口&#xff0c;发送UUID和ProductID。 3、后台接口判断设备是否注册过&…

Envoy控制面实践

简介 Envoy 是一款由 Lyft 开源的&#xff0c;使用 C 编写的 L7 代理和通信总线&#xff0c;目前是 CNCF 旗下的开源项目且已经毕业&#xff0c;代码托管在 GitHub 上&#xff0c;它也是 Istio 服务网格中默认的数据平面。关于 Envoy 的详情请阅读 Envoy 中文文档。Envoy 本身无…

PyTorch:深度学习框架的优雅演进与设计理念

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

JavaScript (七) -- JavaScript 事件(需要了解的事件的运用)

目录 具体方法: 1. onmouseover事件的使用(鼠标悬浮事件) onmouseover事件的代码演示: