基于 Center 的 3D 目标检测和跟踪
论文地址:https://arxiv.org/abs/2006.11275
论文代码:https://github.com/tianweiy/CenterPoint
3D 目标通常表示为点云中的 3D Boxes。
CenterPoint
在第一阶段,使用关键点检测器检测对象的中心,然后回归到其他属性,包括 3D 大小、3D 方向和速度;
在第二阶段,它使用目标上的附加点特征来细化这些估计。
在 CenterPoint 中,3D 目标跟踪简化为贪婪的最近点匹配。
论文背景
2D 目标检测: 根据图像输入预测轴对齐的边界框。 RCNN 系列找到与类别无关的候选边界框,然后对其进行分类和细化。 YOLO、SSD 和 RetinaNet 直接找到特定于类别的框候选,回避了后续的分类和细化。基于中心的检测器,例如CenterNet 或CenterTrack,直接检测隐式对象中心点,而不需要候选框。许多 3D 检测器都是从这些 2D 检测器演变而来的。
3D 目标检测: 旨在预测 3D 旋转边界框。它们与输入编码器上的 2D 检测器不同。
Vote3Deep 利用以特征为中心的投票来有效处理等间距 3D 体素上的稀疏 3D 点云;
VoxelNet 在每个体素内使用 PointNet 来生成统一的特征表示,具有 3D 稀疏卷积和 2D 卷积的头从中产生检测;
SECOND 简化了 VoxelNet 并加速了稀疏 3D 卷积;
PIXOR 将所有点投影到具有 3D 占据和点强度信息的 2D 特征图上,以消除代价较高的 3D 卷积;
PointPillars 用柱表示替换所有体素计算,每个地图位置有一个高的细长体素,提高了主干效率;
MVF 和 Pillar-od 结合多个视图特征来学习更有效的支柱表示。
论文的贡献集中在输出表示上,并且与任何 3D 编码器兼容,并且可以改进它们。
VoteNet 使用点特征采样和分组通过投票聚类来检测对象。
相比之下,论文通过中心点的特征直接回归到 3D 边界框,无需投票对每个对象使用单个 postive 单元格并使用关键点估计损失。
点云上的 3D 目标检测的挑战:
1. 点云稀疏,并且 3D 对象的大部分部分没有测量结果;
2. 生成的输出是一个三维框,通常无法与任何全局坐标系很好地对齐;
3. 3D 目标有各种尺寸、形状和纵横比。
Axis-aligned 2D box 不能很好地代表自由形式的 3D 对象。
一种解决方案可能是:为每个对象方向分类不同的模板(锚点),但这不必要地增加了计算负担,并可能引入大量潜在的误报检测。
论文认为连接 2D 和 3D 域的主要潜在挑战在于对象的这种表示。
论文相关
2D CenterNet
2D CenterNet [1] 将目标检测重新表述为关键点估计。
它采用输入图像并为 K K K 个类别中的每一个l类别预测 w × h w × h w×h heatmap Y ^ ∈ [ 0 , 1 ] w × h × K \hat Y \in [0, 1]^{w×h×K} Y^∈[0,1]w×h×K。输出 heatmap 中的每个局部最大值(即值大于其八个邻居的像素)对应于检测到的目标的中心。为了检索 2D 框,CenterNet 回归到所有类别之间共享的尺寸图 S ^ ∈ R w × h × 2 \hat S ∈ \R^{w×h×2} S^∈Rw×h×2。
对于每个检测对象,尺寸图将其宽度和高度存储在中心位置。 CenterNet 架构使用标准的全卷积图像主干,并在顶部添加密集预测头。
在训练期间,CenterNet 学习使用 rendered 高斯核来预测每个类 c i ∈ { 1... K } c_i \in \{1 ... K\} ci∈{1...K}的每个带注释的对象中心 q i \boldsymbol q_i qi 处的 heatmap,并回归到带注释的边界框中心的目标大小 S S S。为了弥补主干架构跨步引入的量化误差,CenterNet 还回归到局部偏移 O ^ \hat O O^。
在测试时,检测器会生成 K K K 个 heatmap 和稠密的与类别无关的回归图。热图中的每个局部最大值(峰值)对应于一个目标,置信度与峰值处的热图值成正比。对于每个检测到的目标,检测器从相应峰值位置的回归图中检索所有回归值。根据应用领域,可能需要非极大值抑制 (NMS)。
[1] Xingyi Zhou, DequanWang, and Philipp Kr¨ahenb¨uhl. Objects as points. arXiv:1904.07850, 2019.
3D 目标检测
P = { ( x , y , z , r ) i } \cal P=\{ (x,y,z,r)_i \} P={(x,y,z,r)i} 是 3D 位置 ( x , y , z ) (x,y,z) (x,y,z) 和 反射率 r r r 测量的无序点云。3D 目标检测旨在从该点云预测鸟瞰图中的一组 3D 对象边界框 B = { b k } B = \{b_k\} 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) 组成,旋转由 yaw α \alpha α 表示。不失一般性,使用以自我为中心的坐标系,传感器位于 ( 0 , 0 , 0 ) (0, 0, 0) (0,0,0) 且 y a w = 0 yaw= 0 yaw=0。
当前 3D 目标检测器使用 3D 编码器将点云量化为常规 bins。然后,基于点的网络提取 bins 内所有点的特征。然后,3D 编码器将这些特征汇集到其主要特征表示中。
大部分计算发生在主干网络中,该网络仅对这些量化和池化的特征表示进行操作。主干网络的输出是 map-view 参考帧中宽度为 W W W、长度为 L L L、具有 F F F 个通道的 map-view 特征图 M ∈ R W × L × F M ∈ \R^{W×L×F} M∈RW×L×F。宽度和高度都与各个体素 bins 的分辨率和主干网络的步幅直接相关。常见的backbone 有 VoxelNet 和 PointPillars。
使用 map-view 特征图 M M M,检测头(最常见的是一级或两级边界框检测器),然后从锚定在此overhead 特征图上的一些预定义边界框完成目标检测。
1.由于3D边界框具有各种大小和方向,基于锚的3D检测器难以将轴对齐的2D框拟合到3D对象。
2.在训练期间,先前的基于锚的3D检测器依赖于2D Box IoU进行目标分配,这为为不同类别或不同数据集选择正/负阈值带来了不必要的负担。
论文内容
CenterPoint 总体框架如下:

设 M ∈ R W × H × F M \in \R^{W×H×F} M∈RW×H×F 为 3D Backbone 的输出。
第一阶段: 预测类别特定的热图、对象大小、子体素位置细化、旋转和速度。所有输出都是dense 预测。
Center heatmap head
Center heatmap head的目标是在任何检测到的目标的中心位置处产 生heatmap 峰值。该头部产生 K K K 通道 heatmap Y ^ \hat Y Y^, K K K 个类别中的每个类别对应一个通道。
在训练过程中,它将标注边界框的3D中心投影到 map-view 中产生的2D高斯作为目标。使用 focal loss。
自上而下的 map-view 中的目标比图像中的目标更稀疏。在 map-view 中,距离是绝对的,而图像视图会通过透视(perspective)来扭曲它们。
考虑一个道路场景,在 map-view 中车辆占据的区域很小,但在图像视图中,几个大的物体可能占据大部分屏幕。 此外,透视(perspective)投影中深度维度的压缩自然地将对象中心放置得更靠近彼此。
遵循 CenterNet 的标准监督会产生非常稀疏的监督信号,其中大多数位置被视为背景。为了抵消这一点,论文通过放大在每个地面实况目标中心处渲染的高斯峰来增加对目标热图 Y Y Y 的积极监督。将高斯半径设置为 σ = max ( f ( w l ) , τ ) σ = \max(f(wl),τ) σ=max(f(wl),τ),其中 τ = 2 τ = 2 τ=2 是允许的最小高斯半径, f f f 是 CornerNet 中定义的半径函数。通过这种方式,CenterPoint 保持了基于中心的目标分配的简单性;模型从附近的像素获得更密集的监督。
Regression heads
在目标的中心特征处存储几个目标属性:子体素位置细化 o ∈ R 2 o ∈ \R^2 o∈R2,离地高度 h g ∈ R h_g ∈\R hg∈R,3D尺寸 s ∈ R 3 s ∈ \R^3 s∈R3,以及偏航旋转角 ( sin ( α ) , cos ( α ) ) ∈ [ − 1 , 1 ] 2 (\sin(α),\cos(α)) \in [-1,1]^2 (sin(α),cos(α))∈[−1,1]2。子体素位置 o o o 细化减少了来自 backbone 网络的体素化和跨步的量化误差。地面以上高度 h g h_g hg 有助于在3D中定位目标,并添加由 map-view 投影移除的缺失高程信息。方位预测使用偏航角的正弦和余弦作为连续回归目标。结合框大小,这些回归头提供了3D边界框的完整状态信息。每个输出都使用自己的头。
在训练时,论文在 ground-truth 中心位置使用 L1 Loss 训练所有输出。回归到对数大小,以更好地处理各种形状的bounding box。
在推理时,论文通过索引到每个目标的峰值位置处的稠密回归头输出来提取所有属性。
速度头和跟踪
为了通过时间跟踪对象,学习预测每个检测到的目标的二维速度估计 v ∈ R 2 v ∈ \R^2 v∈R2 作为额外的回归输出。速度估计需要时间点云序列。
在论文的实现中,将先前帧中的点转换并合并到当前参考帧中,并预测由时间差(速度)归一化的当前和过去帧之间的目标位置差异。与其他回归目标一样,速度估计也使用当前时间步长处的 ground-truth 目标位置处的 L1 Loss 来监督。
推理阶段,使用此偏移量以贪婪的方式将当前检测与过去的检测相关联。具体来说,将当前帧中的目标中心投影回前一帧,通过应用负速度估计,然后通过最近距离匹配将它们与跟踪目标进行匹配。Following SORT[2],在删除它们之前保留不匹配的轨道直到 T = 3 帧。更新每个不匹配的轨道与其最后已知的速度估计。
Alex Bewley, Zongyuan Ge, Lionel Ott, Fabio Ramos, and Ben Upcroft. Simple online and realtime tracking. ICIP, 2016.
CenterPoint 将所有 heatmap 和回归损失合并到一个共同目标中,并联合优化它们。它简化和改进了以前基于锚点的3D探测器。然而,所有目标属性目前都是从目标的中心特征推断的,其可能不包含用于准确目标定位的足够信息。例如,在自动驾驶中,传感器通常只能看到物体的侧面,而不能看到其中心。
第二阶段: 过使用第二个精化阶段和一个轻量级的点特征提取来改进中心点。CenterPoint 作为第一阶段。第二阶段从主干的输出中提取额外的点特征。
Two-Stage CenterPoint
从预测边界框的每个面的3D中心提取一个点特征。需要注意的是,边界框中心、顶面中心和底面中心都投影到 map-view 中的同一点。因此,只考虑四个朝外的 box 面和预测的目标中心。对于每个点,使用双线性插值从 backbone map-view 输出 M M M中提取特征。接下来,将提取的点特征连接起来,并将它们传递给 MLP。第二阶段在一阶段 CenterPoint 的预测结果之上预测类不可知的置信度得分和框细化。
对于类别不可知的置信度得分预测,使用由框的3D IoU 引导的得分目标 I I I 以及相应的 gound-truth 边界框:
I = min ( 1 , max ( 0 , 2 × I o U t − 0.5 ) ) (1) \tag1 I=\min(1,\max(0,2\times IoU_t-0.5)) I=min(1,max(0,2×IoUt−0.5))(1)其中 I o U t IoU_t IoUt 是第 t t t 个 proposal 和 ground-truth 之间的 IoU。
使用二进制交叉熵损失进行训练:
L s c o r e = − I t log ( I ^ t ) − ( 1 − I t ) log ( 1 − I ^ t ) (2) \tag2 L_{score} =-I_t \log(\hat I_t) - (1-I_t) \log(1- \hat I_t) Lscore=−Itlog(I^t)−(1−It)log(1−I^t)(2) 其中 I ^ t \hat I_t I^t 是预测的置信度得分。
推理阶段,直接使用第一阶段 CenterPoint 的类别预测,并且计算最终的置信分数计算为两个分数 Q ^ t = Y ^ t ∗ I ^ t \hat Q_t = \sqrt{\hat Y_t * \hat I_t} Q^t=Y^t∗I^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 ≤k≤K} \hat Y_{p,k} Y^t=max0≤k≤KY^p,k 和 I ^ t \hat I_t I^t 分别是第一阶段和第二阶段目标 t t t 的置信分数。
对于框回归,模型预测在第一阶段 proposal 之上的改进,用 L1 Loss 训练模型。论文的两阶段CenterPoint 简化并加速了之前的两阶段3D探测器,这些探测器使用代价比较大的基于PointNet的特征提取器和RoIAlign操作。
Architecture
所有第一级输出共享第一个 3 × 3 卷积层,批量归一化和 ReLU。然后,每个输出都使用自己的分支,由两个3×3卷积组成,由批处理范数和ReLU分隔。我们的第二阶段使用共享的两层MLP,具有批规范,ReLU 和 Dropout ,drop 率为0.3,然后是单独的三层 MLP 用于置信度预测和 Box 回归。
论文总结
论文提出了一种基于中心的激光雷达点云 3D 目标检测与跟踪框架。使用一个标准的三维点云编码器,在头部加上一些卷积层来生成鸟瞰 heatmap 和其他 dense 回归输出。检测是一种简单的局部峰值提取和细化,而跟踪是最近距离匹配。CenterPoint简单、接近实时,在Waymo和nuScenes基准测试中实现了最先进的性能。
相关文章:
基于 Center 的 3D 目标检测和跟踪
论文地址:https://arxiv.org/abs/2006.11275 论文代码:https://github.com/tianweiy/CenterPoint 3D 目标通常表示为点云中的 3D Boxes。 CenterPoint 在第一阶段,使用关键点检测器检测对象的中心,然后回归到其他属性࿰…...
华锐技术何志东:证券核心交易系统分布式改造将迎来规模化落地阶段
近年来,数字化转型成为证券业发展的下一战略高地,根据 2021 年证券业协会专项调查结果显示,71% 的券商将数字化转型列为公司战略任务。 在落地数字化转型战略过程中,证券业核心交易系统面临着不少挑战。构建新一代分布式核心交易…...
数据结构 -- ArrayList与LinkedList的区别
一、二者的相同点 1,它们都是继承自List接口。 二、二者的区别 1,数据结构:ArrayList是(Array动态数组)的数据结构;而LinkedList是(Link双向链表)的数据结构。ArrayList 自由性较…...
豪车托运为什么选小板
小板运输是一种适用于豪车客户的高效运输方式。它提供了快速、安全、便捷的服务,并且相对经济实惠。以下是关于小板运输的时效和价格的介绍: 时效:小板运输通常能够在短时间内完成车辆的运输。具体时效取决于起点和目的地之间的距离ÿ…...
【base64加密】js/ts的基础加密
base64的字符串简单加密,主用于网页缓存数据的加密。 适用于常规html、小游戏(egret、cocos、laya)等 原文参考:JS基于base64编码加密解密文本和图片(修订)_js base64加密-CSDN博客 测试:JS实…...
基于python的app程式开发
安装的库文件: 运行代码: # -*- coding:utf-8 -*- from kivy.app import App class HelloApp(App):pass if __name__ __main__:HelloApp().run() 结果画面:...
Spring Event学习
Spring Event学习 观察者模式是一种行为设计模式,它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个模式中,改变状态的对象被称为主题,依赖的对象被称为观…...
UE4 HLSL学习笔记
在Custom配置对应ush文件路径 在HLSL中写入对应代码 Custom里面增加两个Input,名字必须和ush文件内的未知变量名字一样 然后就对应输出对应效果的颜色 这就是简单的加法运算 减法同理: 乘法除法同理 HLSL取最小值 HLSL取最大值 绝对值: 取余…...
报文的路由过程
路由转发过程 记住路由转发过程结论:报文ip是不变,mac改变。 mac地址在同一个广播域传输过程中是不变的;在跨越广播域的时候会发生改变的;而IP地址在传输过程中是不会改变的(除NAT的时候)。 ip地址本质上是…...
【CPP】类和对象
1- Classes and Objects Structures A struct in C is a type consisting of a sequence of data membersSome functions/Statements are needed to operate the data members of an object of a struct type 不不小心操作错误,不小心越界 Classes You should b…...
【多线程面试题二十】、 如何实现互斥锁(mutex)?
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:如何实现互斥锁…...
hypercube背景设置为白色,绘制高光谱3D立方体
import scipy pip install wxpython PyOpenGL和Spectral需要本地安装 可参考链接https://blog.csdn.net/qq_43204333/article/details/119837870 参考:https://blog.csdn.net/Tiandailan/article/details/132719745?spm1001.2014.3001.5506Mouse Functions:left-cl…...
Visual Studio(VS)C++项目 管理第三方依赖库和目录设置
发现很多程序员存在这种做法:把项目依赖的第三方库的lib和dll放在项目目录下,或者复制到输出目录,因为每种配置都有不同的输出目录,所以要复制多份(至少包括Debug和Release两个输出目录),这些做…...
leetCode 2578. 最小和分割 + 排序 + 贪心 + 奇偶分组(构造最优解)
2578. 最小和分割 - 力扣(LeetCode) 给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所…...
自定义实现图片裁剪
要实现这个功能,首先需要创建一个自定义的View,然后在该View中绘制背景框和裁剪后的图片。以下是一个简单的实现: 1. 创建一个名为CustomImageView的自定义View类,继承自View: import android.content.Context; impor…...
开发语言工具编程系统化教程入门和初级专辑课程上线
开发语言工具编程系统化教程入门和初级专辑课程上线 学习编程捷径:(不论是正在学习编程的大学生,还是IT人士或者是编程爱好者,在学习编程的过程中用正确的学习方法 可以达到事半功倍的效果。对于初学者,可以通过下面…...
【Truffle】二、自定义合约测试
一、准备测试 上期我们自己安装部署了truffle,并且体验了测试用例的整个测试流程,实际开发中,我们可以对自己的合约进行测试。 我们首先先明白自定义合约测试需要几个文件 合约文件:既然要测试合约,肯定要有合约的源码…...
场景交易额超40亿,海尔智家三翼鸟开始收获
文 | 螳螂观察 作者 | 余一 随着双十一的到来,国内的消费情绪再次被点燃。在这类大促之下,品牌们就像一个个天体,不断引动着市场潮汐,期待自己能触发更大的“海潮效应”。 所谓“海潮效应”是指,海水因天体的引力而…...
众和策略可靠吗?股票扛杆怎么玩?
可靠 股票扛杆是一种出资战略,经过假贷资金来增加出资金额,从而进步出资收益。这种战略在股票商场中被广泛运用,但一起也伴随着一定的危险。在本文中,咱们将从多个视点来剖析股票扛杆怎么玩。 首要,扛杆出资的原理是…...
解决连接Mysql出现ERROR 2013 (HY000): Lost connection to MySQL server at ‘waiting
在上一篇中解决Mysql ER_ACCESS_DENIED_ERROR: Access denied for user ‘root‘‘localhost‘ (using password: YES)-CSDN博客 写了mysql的密码报错问题,在执行 mysql -u root -p 出现了这个错误, ERROR 2013 (HY000): Lost connection to MySQL se…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
