作者:Jeremy Cohen
编译:东岸因为@一点人工一点智能
原文:三维目标跟踪简介
我在做无人车工作的时候,有一次接受了一个任务:指导一群感知实习生。
在所有的项目中,其中有一个最突出的,来自一位工程实习生,他撰写了一篇基于相机的3D目标跟踪的论文。
当时,我们只有2D物体检测,并且正在整合2D目标跟踪。但自从我们看到了这篇论文之后,我们考虑过全面采用3D目标跟踪。
当你在LinkedIn上浏览时,会发现大多数目标跟踪应用都是2D的。但现实世界是3D的,无论你是跟踪汽车、行人、直升机、导弹,还是进行增强现实,你都需要使用3D技术。
在2022年的CVPR(计算机视觉与模式识别)会议上,我们看到了大量关于3D物体检测的论文,而且我们开始看到越来越多的论文提交到像IEEE或国际计算机视觉期刊这样的地方。
在这篇文章中,我想探索3D跟踪领域,并向您展示如何设计一个3D跟踪系统。我们将从平面的2D开始,然后转向3D,并且我们将看到2D跟踪和3D跟踪之间的区别。
目标跟踪是指在空间中定位和跟踪物体的位置和方向随时间变化的过程。它涉及在一系列图像(或点云)中检测物体,然后预测物体在随后的帧中的位置。
其目标是在存在遮挡、相机运动和光照条件变化的情况下持续估计物体的位置和方向。
尽管许多人将多目标跟踪称为跟踪的一种形式,但跟踪领域实际上更广泛,涉及特征跟踪或光流等主题。然而,最常见的方法是通过2D多目标跟踪;在本文中,我想讨论的是3D的多目标跟踪。
我们大多数人熟悉2D物体检测,这是一种从图像中预测感兴趣物体(如汽车、行人、自行车等)周围边界框坐标的任务。尽管2D物体检测可能是整个计算机视觉领域最受欢迎的技术,但在实际应用中它仍有许多不足之处。
在3D中,第一个改变的将是边界框
这部分内容可能会让不少人感到困惑,但是一个三维边界框与一个二维边界框是不同的。我们不仅预测图像帧中的四个像素值,而且还在相机的坐标系中预测准确的XYZ位置(包括深度),盒子的长度和深度,以及偏航、俯仰和滚转角度。
为了简化事情,我们总是可以假设某些值是恒定的,比如俯仰和横滚(并且在像旧金山这样的城市中没有“俯仰速率”),但是3D边界框是有方向性的。
以下是来自KITTI数据集的一个示例,我们可以看到这张图片,注意我添加的方向:
在二维中,你不需要预测这些方向,而且你的边界框要简单得多。但是如果你正在进行三维目标跟踪,你将需要处理三维边界框。
接下来,让我们看看如何生成这些边界框。
如果我们使用摄像头进行工作,3D物体检测可以基于单张图像或立体视觉进行设置。通常,这些算法会将图像发送到一个直接输出边界框的模型。
以下是使用名为YOLO3D的算法进行单目3D示例:
无论是单目还是立体视觉,目前存在许多3D物体检测器,大多数公司已经在摄像机上使用了3D物体检测技术。
福利 - 基于相机的3D探测器的快速清单:
当使用激光雷达时,我们会使用像Point-RCNN这样的算法,从点云中输出3D边界框。
例如,这里有一个名为3D Cascade R-CNN的算法,可以从激光雷达中进行3D目标检测。
福利 - 以下是一份快速的LiDAR检测算法列表,您可以搜索:
AVOD (2018), Frustum PointNet (2018), PointRCNN (2019), IOU (2020), PV-RCNN (2021), Cas-A (2022).
接下来,让我们转到跟踪部分:
在物体跟踪领域,通常有两种方法:
· 单独跟踪器 - 我们通过检测来进行跟踪;首先使用物体检测器,然后逐帧跟踪其输出图像。
· 联合跟踪器 - 我们通过将2个图像(或点云)发送给深度学习模型来进行联合检测和3D对象跟踪。
由于我们已经在物体检测上花费了很多时间,让我们从3D边界框继续进行。
在2D物体跟踪(独立追踪器)中,跟踪流程如下:
1)给定连续两个时间步的检测结果...
2)计算二维IOU(或任何其他成本,如框的形状或外观指标)
3)将其放入一种二分图算法中,如匈牙利算法。
4)关联最高匹配并设置颜色/ID
使用卡尔曼滤波器预测下一个位置(从而在下一步中具有更准确的关联)
我们将在3D中完全这样做,但有两点将会改变:
1)IOU
2)卡尔曼滤波器
用于MOT任务的算法-匈牙利算法(The Hungarian Algorithm),将保持不变。
当我们跟踪一个边界框时,通常我们会计算图像之间2个重叠框的IOU(交并比)。如果IOU很高(框重叠),那么意味着对象是相同的,它稍微移动了一下,因此我们应该跟踪它。如果不是,那么意味着它是一个不同的对象。我们还可以使用二分图来跟踪多个对象。
匈牙利算法的目标是基于成本,将 t-1 和 t 两个障碍物列表进行关联。这个成本可以是 IOU,但无论是2D还是3D的IOU,关联步骤都是完全相同的。
交并比(IOU)是指在时间(t-1)的框与时间(t)的框之间有多少重叠部分。虽然它不能保证两个框一定匹配,但这是最常用的因素之一,也是我们可以轻松设置的因素之一。
如果我们想要从二维转向三维,我们必须理解如何计算三维IOU(交并比),因此我们不再比较面积,而是比较体积:
这是一张很酷的图片,用于展示2D和3D IOU之间的差异。
今天,有很多一行代码的实现可以用于计算3D IOU,实际上就是将交集除以并集。
虽然3D IOU是一个很酷的指标,但远非我们唯一可以使用的指标,而且对于远离的物体可能会失败。另一方面,我们也可以使用其他指标,如点云距离(Chamfer Loss)、方向差异甚至质心的欧几里得距离。
在二维世界中,重叠是一个问题,因为即使车辆彼此之间很远,它们也可能重叠。但在三维中,这个问题简单地消失了。因为我们处于三维空间中,我们知道一些边界框在平面图像中看起来重叠,但在三维空间中却不会重叠。
到目前为止,我们已经看到我们应该做以下几点:
· 在连续的两个时间步中获取3D边界框。
· 利用匈牙利算法计算两个列表的3D IOU(并且我们正确获取了颜色和ID)。
· 剩下的就是使用卡尔曼滤波器来预测下一步的情况。
2D卡尔曼滤波器是一种算法,它基于历史数据来预测下一个位置,针对两个坐标值进行操作。它是一个迭代算法,意味着它存储了先前值的信息,并随时间不断迭代。在2D MOT中,我们使用它来预测边界框中心的下一个位置(我们也可以预测边界框的所有四个坐标)。
为此,我们使用了两个变量:μ代表均值,σ代表标准差/不确定度。我们用一个二维高斯分布来表示边界框,并使用预测/更新循环。
当我们处于三维空间中时,我们至少可以使用3D卡尔曼滤波器,即跟踪X、Y和Z三个维度的位置信息。
处理不确定性(这里使用了随机数)可能会更加复杂,但这是进行3D物体跟踪时所需的最基本步骤。
· 3D目标跟踪是关于对现实世界中的物体进行跟踪。
· 3D物体检测可以通过相机、LiDAR或雷达来实现。它仅用于生成边界框。
· 对于每个物体,我们的检测器将返回一个3D边界框。
多目标跟踪的过程与2D相同,只是关联将使用3D IOU进行,而预测将使用3D卡尔曼滤波进行。
3D目标跟踪是感知领域中最迷人的领域之一。在自动驾驶车辆中,它是“规划”之前的最后一步。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。