# 自动驾驶中的多目标跟踪
在这篇文章里,笔者将试图对自动驾驶中多目标跟踪(Multi-Object Tracking, MOT)领域近几年代表性的论文进行整理,分析各项工作的思路和做法,以便读者能够迅速了解这个领域的前沿动态。顺便,我也对MOT领域的公开数据集、排行榜、评价指标等做了整理,以作为面向初学者或跨行业者的基础知识。
我们首先明确一下多目标跟踪的概念。多目标跟踪并不是一个新鲜词,二战期间雷达出现以后,利用雷达对敌方飞机进行跟踪和锁定,就是目标跟踪的早期应用;当前最为现代化的军用雷达,能够同时跟踪数十乃至数百个高速运动的敌方目标,其背后正是多目标跟踪算法的功劳。此外在多媒体分析领域,多目标跟踪技术也有着重要应用。
在自动驾驶领域,多目标跟踪是指对在不同时刻观测到的多个目标,进行关联和跟踪,以便获得每个目标的位置/轨迹、速度、方向等状态信息,服务于下游的规划、预测、决策等模块。因此,MOT是自动驾驶中最为基础和重要的能力之一。
通常来说,自动驾驶的感知系统会给出在时序上离散(且无序)的目标信息,通常体现为一定数量的含有语义标签的bounding box。在2D图像感知中,box是二维的,在3D点云感知中,box是三维的。一个理想的多目标跟踪算法,应该能够尽可能准确(accuracy)和精确(precision)地追踪同一个目标,并很好地解决目标新出现、被遮挡、消失、轨迹交错、目标检测结果不稳定、目标数量剧烈变化等情况。这些情况实际也是多目标跟踪领域的难点。如下图所示,是一个自动驾驶场景中MOT的例子(图片来自Waymo数据集),尽管现实中的MOT不会这么理想。
图1:waymo数据集中的多目标跟踪示例
多目标跟踪算法可以粗略分为两个类别:(1)传统的基于规则的方法,通常以IoU/马氏距离等结合匈牙利匹配算法进行目标关联、以卡尔曼滤波器(KF)结合匀速/匀加速运动学模型进行目标状态的预测和更新,最终实现目标跟踪。(2)基于深度学习的方法,通常使用训练过的神经网络来完成关联和追踪的任务,根据与目标检测的关系,又可以细分为若干种不同的类型;当然,目前端到端的做法也不是什么新鲜事儿了,一切环节都交给神经网络来隐式地处理。下面我们也会按照这两个类别,在每个类别里挑选代表性的论文进行综述。
数据集、排行榜网站
主要是自动驾驶中的这几个数据集,包括 KITTI,nuScenes,Waymo Open Dataset。还有一些在其它领域比较有名的数据集,比如MOTChallenge,MOT15/16/17/20等,但这些大体上关注 2D MOT。在自动驾驶领域我们主要考虑 3D MOT,因此还是以自驾中的三个数据集为主。
nuScenes 数据集 MOT 任务排行榜:nuScenes tracking task
KITTI 数据集 MOT 任务排行榜:kitti tracking
paperwithcode 网站 3D MOT 任务排行榜:3D Multi-Object Tracking,必读,必读!以下图为例,网页上清楚显示了在 nuScenes 数据集上,以 AMOTA 为评价指标,排行榜上的方案有哪些,及其结果。
paperwithcode网站:paperwithcode,汇总了各项数据集、挑战赛排行榜、前沿论文、开源实现等信息,相当全面。该网站的额外优势在于可以非常方便地跳转到排行榜上的各项工作的论文与代码,从业人员必备。
OpenDriveLab 网站:OpenDriveLab ,业内非常有名的实验室,也发布有 OpenLane Topology,Online HD Map Construction,3D Occupancy Prediction,nuPlan Planning 等挑战赛。
All Challenges 网站:All Challenges,一个非常全面的AI领域各项挑战赛汇总网站。
评价指标
读者在浏览各数据集和排行榜的时候,会经常发现MOTA、MOTP、AMOTA、AMOTP、HOTA、MT、ML、TP、FP、FN等评价指标,乍看起来眼花缭乱,不容易区分它们各自的含义。这里我们对常见指标的含义做出解释说明,其中会穿插铺垫一些基本概念。
-
IoU:交并比,也即两个 bounding box 的交叉部分占两者总体的比例,也即 交集 / 并集
-
GT:某一时刻目标检测得到的目标的总数量
-
FP:False Positive,轨迹的预测没有对应的检测结果,轨迹丢失
-
FN:False Negative,检测结果没有对应的轨迹预测,目标被missed
-
IDS/IDSW:也即 ID 发生 switch,常见于两个或多个目标的轨迹交错时,ID发生变化的情形
-
MOTA:多目标追踪的准确度(Accuracy),考虑所有时刻中,正确关联的目标的数量占GT的比例
-
MOTP:多目标追踪的精度(Precision),考虑所有时刻中,正确关联的距离度量的均值
-
AMOTA:MOTA在不同阈值上的均值
-
AMOTP:MOTP在不同阈值上的均值
-
HOTA:Higher Order Tracking Accuracy,更高阶的准确度度量,含有多个子度量,考虑了更多的评估要素
-
MT:mostly tracked,意指多数跟踪数,跟踪部分比例超过80%的轨迹的数量
-
ML:mostly lost,意指多数丢失数,丢失部分比例超过80%的轨迹的数量
请注意,所有这些指标都不是空穴来风,而是研究者们精心设计出来的评价指标,您可以参阅下方3篇论文,来了解这些指标的出处、和详细的解释。
-
Bernardin, Keni, and Rainer Stiefelhagen. "Evaluating multiple object tracking performance: the clear mot metrics."EURASIP Journal on Image and Video Processing2008 (2008): 1-10.
-
Weng, Xinshuo, et al. "3d multi-object tracking: A baseline and new evaluation metrics."2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2020.
-
Luiten, Jonathon, et al. "Hota: A higher order metric for evaluating multi-object tracking."International journal of computer vision129 (2021): 548-578.
相关综述
与多目标跟踪相关的综述共有如下5篇(欢迎评论区补充),请注意每篇的侧重点都有所不同,对于自驾的同学并不一定都有用。
-
Girao, Pedro, et al. "3D object tracking in driving environment: A short review and a benchmark dataset."2016 IEEE 19th international conference on intelligent transportation systems (ITSC). IEEE, 2016. //
-
Luo, Wenhan, et al. "Multiple object tracking: A literature review."Artificial intelligence293 (2021): 103448. //
-
Bashar, Mk, et al. "Multiple object tracking in recent times: a literature review."arXiv preprint arXiv:2209.04796(2022). //
-
Peng, Yang. "Deep learning for 3D Object Detection and Tracking in Autonomous Driving: A Brief Survey."arXiv preprint arXiv:2311.06043(2023). //
-
Zhang, Peng, et al. "3D Multiple Object Tracking on Autonomous Driving: A Literature Review."arXiv preprint arXiv:2309.15411(2023). //
传统方法
笔者将按照时间线由远及近的顺序,来综述传统方法下的经典工作,对应的时段为2018年 ~ 今(2024/01),涵盖了BeyondPixels、AB3DMOT、EagerMOT、SimpleTrack、PolarMOT、Poly-MOT等经典工作,其中不少至今仍在排行榜上位于前列。笔者在详细阅读完每篇论文之后,根据自己的理解、对每篇工作的主旨都做了整理,如下。
Sharma, Sarthak, et al. "Beyond pixels: Leveraging geometry and shape cues for online multi-object tracking."2018 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2018.
首先是这篇发表于 2018 年的论文,方案简称 Beyond pixels,当年在 KITTI 数据集 3D Multi-Object Tracking 排行榜上也是代表性的存在。这篇论文聚焦于道路场景下、基于单目图像的多目标追踪,其主要贡献是提出了一种复合了多种度量的匹配代价,来更好地完成目标的帧间关联。所提出的匹配代价包含的度量有:(1)将2D box结合地平面假设恢复出深度,提升到3D空间,再结合自车的运动估计(来自视觉里程计VO)将3D box投影到另一帧的2D图像平面上,与投影位置附近的所有目标,构建2D-2D的交并比度量,作者在论文中称之为 3D-2D Cost;(2)类似第一种度量,但是把两帧上的2D box都提升到3D空间,构建3D-3D的交并比度量,作者称之为 3D-3D Cost;(3)用CNN网络为每个目标计算一个外观描述子,计算描述子之间的一个相似性度量,作者称之为 Appearance Cost;(4)为每个目标计算一个形状描述子,该描述子直观上可以反映车辆的类别(比如SUV和轿车在形状上有差异),因此可以构建一个形状描述子的相似性度量;此外,每个目标都估计了一个姿态,因此也构建一个姿态的相似性度量,作者称这部分度量为 Shape and Pose Cost。最终的匹配代价是上述所有度量的加权线性组合。基于这种 Object-To-Object 的匹配代价,结合二分图匹配算法(比如匈牙利算法),来完成帧间的目标关联。在笔者看来,这篇工作的核心价值在于提出了一些新的度量,但由于使用了地面假设因此泛化能力可能不佳,对现实中的车身剧烈运动可能不够鲁棒,且需要同步运行额外的CNN网络和视觉里程计,因此计算开销可能较大。
项目主页:https://junaidcs032.github.io/Geometry_ObjectShape_MOT/
代码开源地址:https://github.com/JunaidCS032/
Beyond Pixels 论文图
Weng, Xinshuo, et al. "3d multi-object tracking: A baseline and new evaluation metrics."2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2020.
简称 AB3DMOT,2019年上传arxiv,正式发表在 IROS2020 上。这篇工作堪称简单好用的典范,个人认为非常适合新手入门,因为论文提供了新的参照基准,后续也被高频地引用。这篇工作以基于激光雷达的 3D MOT 为背景,因为激光雷达点云提供了精确的三维测量,因此 MOT 可以直接在三维空间中进行。作者使用已有的3D点云目标检测网络(PointRCNN/Mono3DPLiDAR)来进行detection,每一个detection结果表达为一个8维的向量,包含「位置、朝向角、box尺寸、置信度」信息。作者使用简单的「匀速模型+卡尔曼滤波器+匈牙利匹配」的范式来完成 3D MOT,其中卡尔曼滤波器维护的状态量为目标的「位置、朝向角、box尺寸、置信度、和速度」,构成了一个11维的向量。对比检测网络给出的结果,发现状态量多出了速度信息,这也正是卡尔曼滤波器做预测的依据。事实上,每一个卡尔曼滤波器都维护了某个目标的轨迹信息。
值得注意的是,AB3DMOT 不需要估计自车运动,所有的状态量都在LiDAR坐标系下表达,事实上是把自车的速度施加到了目标的速度中,好处是不需要显式估计 Ego Motion,使 MOT 任务更简单。针对目标检测结果中经常出现的180度跳变,作者也给出了简单有效的处理逻辑。在匈牙利匹配部分,匹配的依据就是简单的两个 3D box 之间的交并比。作者还设计了一些逻辑来处理目标的出现和消失,也即维护轨迹的生命周期,略过不表。在算法之外,作者的另一个贡献是提出了新的 MOT 评价指标,也即 AMOTA、AMOTP 和 sAMOTA,上文已经详细解释过了,略过不表。
项目主页:https://www.xinshuoweng.com/projects/AB3DMOT/
代码开源地址:https://github.com/xinshuoweng/AB3DMOT
AB3DMOT 论文图
Chiu, Hsu-kuang, et al. "Probabilistic 3d multi-object tracking for autonomous driving."arXiv preprint arXiv:2001.05673(2020).
接下来我们再看一篇 3D MOT 的文章(也记作 mahalanobis_3d_multi_object_tracking),该项工作的思路和 AB3DMOT 很像,时间上也接近并引用了前者,同样是基于「匀速模型+卡尔曼滤波器+匈牙利匹配」的基本结构,当时在 2019 nuScenes Tracking Challenges 挑战赛上取得了第一名的成绩。相比于 AB3DMOT,这篇工作的突出贡献是:建模了预测和观测中的不确定性,并使用考虑了不确定性的马氏距离(Mahalanobis Distance)来构建帧间匹配代价,而非像 AB3DMOT 那样直接使用 3D box 的交并比。其它的不同还有:这篇工作中卡尔曼滤波器的状态量虽然也是11维,但把置信度替换为了角速度、相比于前者的匀速运动模型,这里实际上使用了匀速+匀转速的运动模型。另外,这篇工作的大量篇幅都在于对不确定性的传播和收敛、以及卡尔曼滤波器细节的介绍,这和文章的重心是一致的。
代码开源地址:https://github.com/eddyhkchiu/m
Mahalanobis 3D MOT 论文图
Kim, Aleksandr, Aljoša Ošep, and Laura Leal-Taixé. "Eagermot: 3d multi-object tracking via sensor fusion."2021 IEEE International conference on Robotics and Automation (ICRA). IEEE, 2021.
EagerMOT —— 这是一项在各个排行榜上都效果不错的工作,原因之一在于,它事实上是融合了 2D 检测和 3D 检测的多模态 MOT 工作,在动机层面上主要是考虑到了两类观测的互补特性 —— 3D检测具有深度信息但对远处目标不敏感,2D检测不具有深度信息但可以检测到远处的目标。在算法逻辑上:(1)首先在同一时刻的2D检测和3D检测之间进行关联,关联的标准是将 3D box 投影到 2D 图像平面,计算和 2D box 的交并比,以贪婪的方式确定关联。(2)第一阶段关联:执行一次3D检测和3D轨迹之间的关联,但匹配代价使用的是作者自定义的一种距离(normalized cosine distance),主要考虑了 3D box 的朝向相似性。(3)第二阶段关联:2D检测和尚未发生关联的3D轨迹和2D轨迹进行关联,匹配代价是 2D box 的交并比。(4)轨迹状态更新:关联成功的3D轨迹按照卡尔曼滤波器+匀速运动模型的范式更新轨迹状态,未关联成功的3D轨迹进行纯预测更新,关联成功的2D轨迹也进行2D范式的更新。笔者评价:总体上的感觉是:有3D用3D,无3D用2D,在几乎所有环节,3D检测的优先级都高于2D检测,2D检测不存在时就退化为纯3D接着工作;3D和2D之间并没有想象中的深耦合。
代码开源地址:https://github.com/aleksandrkim
EagerMOT 论文图
Pang, Ziqi, Zhichao Li, and Naiyan Wang. "Simpletrack: Understanding and rethinking 3d multi-object tracking."European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2022.
这篇文章由图森未来和UIUC发表在2022年的ECCV上,2021年上传arxiv。其工作主要有三块:(1)将现有 tracking-by-detection 范式下的 MOT 算法分解为「预处理、数据关联、运动模型、生命周期管理」四个模块,对各模块的常见方法做了对比和分析,并提出了改进的措施;(2)将改进措施集成到自己提出的 SimpleTrack 算法框架中,在 nuScenes 和 Waymo Open Dataset (WOD) 上实现了更好的表现;(3)对主流数据集 WOD 和 nuScenes 提供的目标检测频率和评价标准问题提出了疑问和讨论,对 SimpleTrack 的失效情形进行了分析并给出了未来工作的方向。笔者评价:这篇文章的第一部分工作对 MOT 各个模块的拆解和分析很值得借鉴,其中甚至分析了不同数据集“偏好”不同方法的问题。
代码开源地址:https://github.com/tusen-ai/SimpleTrack
SimpleTrack 论文图
Pang, Su, Daniel Morris, and Hayder Radha. "3d multi-object tracking using random finite set-based multiple measurement models filtering (rfs-m 3) for autonomous vehicles."2021 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2021.
这篇论文的作者是密歇根州立大学(MSU)的 Pang Su 博士,其整个博士期间的研究方向就是基于随即有限集(Random Finite Set, RFS)的多目标检测和跟踪,在网上也能找到其博士学位论文《3D Object Detection and Tracking for Autonomous Vehicles》的部分信息,这篇 ICRA 2021 论文正好对应其博士学位论文中的第六章。随即有限集也是数学上的一个集合,但具有元素个数有限、且数量随机的特性,某种程度上契合了MOT中目标数量有限和随机的特性,因此在目标检测和追踪中都有应用,但这个方向的研究似乎相对小众,笔者对其原理也是似懂非懂。这里推荐一些还不错的资源,供读者参考:缪天磊:随机有限集(Random Finite Set)-简介,智商为零:开源一个基于随机有限集(Random Finte Sets)的多源多目标跟踪框架,中国电子学会:深圳大学谢维信教授团队就扩展目标跟踪问题提出一种新型混合滤波器。
回到这篇文章,大体上来讲,作者提出了使用基于随机有限集 (RFS) 的多重测量模型滤波器 (称为RFS-M3) 来解决自动驾驶场景中的 3D MOT 问题。具体来说,作者使用的是泊松多伯努利混合滤波器(PMBM filter),并为之构建了多测量观测模型以适应不同的应用场景。整个滤波器能够以优雅和自然的方式来表达追踪中的不确定性。
代码开源地址:未开源
RFS-M3 论文图
Li, Xiaoyu, et al. "Poly-mot: A polyhedral framework for 3d multi-object tracking."2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2023.
这项工作来自哈工大,发表于 IROS 2023,在 nuScenes 数据集上取得了第一名的成绩。其动机是:现有的 3D MOT 方法通常使用单一的相似性度量和运动模型来建模所有的目标,但现实中目标的类型多种多样,不同类别目标的运动模式更是相差甚多(如行人、电瓶车、汽车、客运巴士等),因此作者提出为不同类型的目标使用不同的相似性度量、数据关联策略、和运动模型,从而提升 MOT 的性能。这项工作的核心内容有:(1)检测结果预处理部分使用了非极大值抑制和置信度阈值过滤;(2)提出了两种运动模型 CTRA 和 Bicycle,前者适合汽车和行人,后者适合电瓶车和摩托车等,运动模型内嵌到卡尔曼滤波器中执行预测和更新;(3)数据关联部分,作者认为对不同类别目标使用统一的相似性度量和阈值是不合理的,提出了多类别重复关联的策略,分为两个阶段执行,并使用了三种相似性度量;(4)轨迹的生命周期管理部分和其它工作没有本质差别,不再赘述。笔者评价:这篇工作的核心思想就是一点 —— 在 MOT 中对不同类别的物体使用不同的标准,这是符合直觉的,非常值得借鉴(ps: 为啥这个思路前边没人做过?),代码也开源了,数据集效果也非常好。Poly-MOT 是纯传统方法,因此效率也相对较高,使用 Intel 9940X CPU 在 nuScenes 数据集上可以做到 3 fps 的处理速度,而 SimpleTrack 是 0.51 fps。
代码开源地址:https://github.com/lixiaoyu2000/Poly-MOT
Poly-MOT 论文图
Learning方法
笔者对深度学习类方法的理解深度有所欠缺,这里就不写每篇的要点了,个别文章随缘注解。
Yin, Tianwei, Xingyi Zhou, and Philipp Krahenbuhl. "Center-based 3d object detection and tracking."Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021.
简称 CenterPoint,一篇很重要的参考文章。
项目开源地址:https://github.com/tianweiy/CenterPoint
Wu, Jialian, et al. "Track to detect and segment: An online multi-object tracker."Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021.
在逻辑上比较别致,别人是先检测再追踪,这篇文章提出先追踪,并用追踪结果辅助检测,当然所有事情都是用神经网络完成的。作者也在文章中评价了不同的思路和实现结构。
项目主页:https://jialianwu.com/projects/TraDeS.html
项目开源地址:https://github.com/JialianW/TraDeS
Luo, Chenxu, Xiaodong Yang, and Alan Yuille. "Exploring simple 3d multi-object tracking for autonomous driving."Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021.
轻舟智行和约翰霍普金斯大学联合发表的工作,简称 SimTrack。
项目开源地址:https://github.com/qcraftai/simtrack
Chiu, Hsu-kuang, et al. "Probabilistic 3D multi-modal, multi-object tracking for autonomous driving."2021 IEEE international conference on robotics and automation (ICRA). IEEE, 2021.
基于多模态融合的多目标追踪工作,具有深度学习方法和传统方法的松耦合结构,来自于斯坦福大学和丰田研究院,没有开源。
Zeng, Yihan, et al. "Cross-modal 3d object detection and tracking for auto-driving."2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2021.
基于多模态融合的多目标追踪工作,来自于上海交大,似乎没有开源。
Koh, Junho, et al. "Joint 3d object detection and tracking using spatio-temporal representation of camera image and lidar point clouds."Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 36. No. 1. 2022.
未开源。
Liu, Zhijian, et al. "Bevfusion: Multi-task multi-sensor fusion with unified bird's-eye view representation."2023 IEEE international conference on robotics and automation (ICRA). IEEE, 2023.
项目开源地址:https://github.com/mit-han-lab/bevfusion
Wang, Li, et al. "Camo-mot: Combined appearance-motion optimization for 3d multi-object tracking with camera-lidar fusion."IEEE Transactions on Intelligent Transportation Systems(2023).
未开源。
Kim, Aleksandr, et al. "PolarMOT: How far can geometric relations take us in 3D multi-object tracking?."European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2022.
与别的方法不同,这里是将目标与附近目标的相对空间关系构建为图(Graph),进而用神经网络来处理这种图的观测,实现多目标追踪的功能。
项目主页:PolarMOT
代码开源地址:https://github.com/aleksandrkim61/PolarMOT
Wang, Xiyang, et al. "DeepFusionMOT: A 3D multi-object tracking framework based on camera-LiDAR fusion with deep association."IEEE Robotics and Automation Letters7.3 (2022): 8260-8267.
未开源。
Pang, Ziqi, et al. "Standing Between Past and Future: Spatio-Temporal Modeling for Multi-Camera 3D Multi-Object Tracking."Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023.
端到端搞定一切。
项目开源地址:https://github.com/TRI-ML/PF-Track
Liu, Jianan, et al. "GNN-PMB: A simple but effective online 3D multi-object tracker without bells and whistles."IEEE Transactions on Intelligent Vehicles8.2 (2022): 1176-1189.
图神经网络。
项目开源地址:https://github.com/chisyliu/Gnn
# 鱼眼相机和超声波的强强联合!基于BEV空间的多模感知算法
目前,自动驾驶技术已经愈发的成熟,很多车企都已经在自家的车辆产品上配备了自动驾驶算法,使车辆具备了感知、决策、自主行驶的能力,下图是一个标准的自动驾驶算法流程图。
图一:标准自动驾驶流程图
通过上面展示出来的标准自动驾驶流程图可以清晰的看出,整个自动驾驶流程包括五个子模块:
-
场景传感器:采用不同的数据传感器对当前的周围场景进行信息的采集工作,对于自动驾驶车辆来说,常见的数据采集传感器可以包括:相机(Camera),激光雷达(Lidar),毫米波雷达(Radar),超声波传感器(Ultrasonics)等等。
-
感知和定位:在获得了来自场景传感器采集到各种数据信息之后,会将采集到的相关信息送入到不同的感知和模型当中输出对当前环境的感知和定位结果,这里会涉及到的相关感知算法可以包括:车道线检测感知算法(Lane Detection),目标检测感知算法(Object Detection),语义分割感知算法(Semantic Segmentation),定位和建图算法(SLAM),高精地图算法(HD Maps)等等。
-
周围环境建模:在得到上一步各种感知模型的预测结果后,目前主流的做法是将各类感知算法输出的预测结果以车辆自身(Ego)为坐标系进行融合,从而构建一个周围环境感知行为的BEV空间预测地图,从而方便下游的规划和控制任务。
-
规划:在得到上一步输出的当前周围环境的BEV感知结果地图后,自动驾驶车辆上配备的路径规划算法会根据当前的交通规则以及车辆自身位姿设计相关的行驶路径,并根据行驶路径输出一套完整的相关驾驶行为决策。
-
控制:控制模块也就是整个自动驾驶流程的最后一步,此时的车辆会根据规划模块输出的一整套完成的驾驶行为决策进行判断,从而采取如转向(Steer),汽车加速(Accelerate),汽车减速(Brake)等相关的行为,实现对车辆的控制。
以上就是大致介绍了一下整个自动驾驶流程包括的所有内容,基本说明了一辆自动驾驶汽车从收集数据开始到最终完成驾驶行为的全过程。相信大家也可以看出,如果一辆自动驾驶汽车想要做出准确的决策,周围环境信息数据的采集和感知和定位算法模型的预测结果扮演了整个驾驶流程中至关重要的角色。
那么你接下来,我们先重点介绍一下自动驾驶流程图的第一步:周围环境信息数据的采集模块:
相机传感器是目前自动驾驶中最常用的数据采集传感器之一,因其可以采集到具有丰富语义信息的图像数据,且价格低廉而被广泛采用。一般而言,相机传感器包括:针孔相机或者鱼眼相机。鱼眼相机在一些短范围内的感知具有广泛的应用前景,然而无论是哪种类型的相机传感器,在面对现实世界的驾驶场景当中,都面临着一些非常严峻的问题,相关问题列举如下:
-
相机传感器在光线较暗的情况下表现较差:因为相机这类图像传感器主要是利用光线照射到物体上进行成像,但是在这种有限的光照条件下,严重的阻碍了成像结果中物体语义表示的质量,从而影响模型最终输出的感知结果,直接影响了后续的规控等任务 。
-
相机会暴露在外部自然场景当中:目前的自动驾驶车辆中,普遍都是采用环视相机的采集方式,同时这类环视相机通常都是安装在自动驾驶车辆的外部,这就会导致环视相机会暴露在沙子,泥土,污垢,灰尘,雨雪或者杂草等环境中,对相机造成影响,从而间接的影响到相机的成像结果,或者外参矩阵,间接的影响后续的感知定位、规划、控制等任务中。
-
强烈太阳光的干扰:在某些自动驾驶场景当中,可能会存在着天气特别晴朗的情况,这就会导致太阳光线过于充足,太阳的眩光会导致相机传感器的镜头表面被过度的曝光,严重影响了相机传感器采集到的图像质量,阻碍了下游基于视觉的障碍物感知算法的预测效果, 进而直接影响到后续的规划、控制模块的决策结果。
通过上述提到的诸多现实问题可以看出,虽然相机传感器不仅价格低廉,而且可以为后续的障碍物感知算法提供丰富的目标语义信息,但是其受环境的影响是非常巨大的,这就表明我们需要在自动驾驶车辆上配备额外传感器的原因。我们发现超声波传感器具有低功耗,对物体的颜色、材料不敏感,还可以比相机传感器更好的抵抗环境中的强烈光线,同时可以进行比较准确的短距离目标检测,对自动驾驶的障碍物感知是具有很要的数据采集价值。
考虑到以上传感器因素,同时为了更好的匹配下游的规控任务,我们在本文中设计了一种端到端的基于CNN卷积神经网络的多模态感知算法,利用鱼眼相机传感器和超声波传感器作为输入,实现在BEV空间的障碍物感知任务。
论文链接:https://browse.arxiv.org/pdf/2402.00637.pdf;
网络模型的整体架构细节梳理
下图是我们提出的算法模型的整体框架图,在介绍本文提出的基于CNN卷积神经网络的多模态感知算法各个子部分的细节之前,我们先整体概括一下整个算法的运行流程。
-
首先是采用预处理步骤,将超声波传感器采集到的原始回波数据的幅度信息转换为卷积神经网络可以进行处理的2D图像形式的数据。
-
其次采用CNN卷积神经网络对每个模态传感器采集到的数据完成特征提取过程,并且将提取到的多个模态的特征进行融合,构建出最终的模态无关特征。
-
然后是将上一步得到的模态无关特征完成空间上的转换过程得到BEV空间下的特征。
-
最后是将BEV空间特征喂入到语义分割任务的解码器当中,得到像素级别的障碍物预测结果。
图二:基于CNN卷积神经网络的多模态感知算法整体流程图
单一模态特征提取编码器
图三:部分障碍物对应的鱼眼相机和超声波传感器的数据响应可视化结果
BEV空间坐标系的映射过程
因为我们要完成鱼眼相机的2D图像特征向3D的BEV空间特征的变换,我们采用了Kannala-Brandt相机模型来实现这一变换过程。相比于基于图像中心半径的距离来表示径向畸变不同,Kannala-Brandt算法模型将相机畸变看作为通过透镜的光入射角函数,如下图的公式(1)所示。
由于在BEV投影过程中,需要将2D的图像特征投影到3D的BEV空间中,这就需要确保世界坐标空间中特定的网格区域的表示是非常准确的。因此,我们考虑将每个来自特征金字塔的特征图进行裁剪,从而保证2D图像特征对应于现实世界空间中定义的最大边界的精确上下边界。因此为了更好的从特征图中裁剪出相应区域,我们从公式(2,3,4)中确定失真系数。通过使用具有相应焦距、失真参数、主点和世界坐标空间高度和深度的公式(1),我们可以获得表示现实世界空间坐标系的图像空间坐标(u, v),从而就可以确定变换过程中每个网格的最小和最大深度,从而完成特征金字塔不同尺度特征的裁剪过程,最后利用相机的外参矩阵实现将图像特征变换为BEV空间特征。
基于内容感知的膨胀和多模态特征融合
由于本文是多模态的感知算法,需要同时利用图像和超声波的光谱特征,这就会遇到多模态算法中无法避开的一个问题:由于不同传感器采集到的数据代表了不同形式的环境表示。鱼眼相机通过图像像素的方式来捕获当前环境中丰富的语义信息,但是会丢失掉目标的深度以及几何结构信息。超声波传感器通过接收发射信号打到物体后发射回来的回波信号来感知周围的环境。这种不同传感器采集到的数据模态上的差异增加了特征融合过程中的难度。除此之外,在前文也有提到,相机传感器通常会暴露在自动驾驶车辆的外部,这就会造成周围环境会使得传感器发生潜在的错位风险,导致不同传感器采集到的同一个目标可能会在BEV空间中落到不同的网格单元中,从而直接造成融合后的多模态特征出现歧义性的问题,影响最终的感知算法预测结果。
所以,综合考虑到上面提到的多模态特征表示存在的差异,以及还可能出现的传感器错位之间的风险,我们提出了基于内容感知的膨胀和多模态特征融合模块。该模块中的膨胀卷积可以根据卷积核所在特征图的不同位置自适应的调整膨胀率的大小,相应的自适应膨胀卷积的计算公式如下:
以上就是我们提出的基于内容的膨胀卷积,通过该卷积用于调整超声波BEV空间特征。随后,将膨胀后的BEV空间特征与鱼眼相机完成空间转换后的BEV空间特征合并起来,从而实现多模态特征信息的融合,从而实现更准确的障碍物感知任务。
语义占用预测头
在获得了多模态的BEV空间特征后,我们制定了一个双阶段的多尺度语义占用网格预测解码器来得到最终的网格地图占用预测。解码器的具体网络结构如图九所示,该结构有两个顺序级联的残差块组成。第一个残差块用于避免在相同的分辨率内损害目标的空间特征。第二个残差块通过利用上下文特征来学习不同障碍物类型的先验几何形状信息。将多模态的BEV空间特征在多组级联的卷积网络中作用后得到最终的分割结果。
实验结果和评价指标
评价指标
由于我们设计的障碍物感知算法需要涉及到二值分割来区分前景和背景区域的目标,所以我们采用了一下的相关指标来评价我们设计模型的好坏。
-
召回率指标:该指标可以很好的反映出系统对于障碍物的感知能力,同时该指标也广泛应用于2D、3D检测任务当中,这里就不过多介绍了。
-
欧几里得距离指标:该指标可以帮助我们评估预测障碍和地面真实障碍在空间位置方面的一致性程度。预测障碍物与实际障碍物之间的距离是关键信息,以确保系统准确地感知障碍物的位置。
-
绝对距离误差:该指标可以准确的反映出障碍物感知网络模型将障碍物相对于自车作为参考的接近程度。通过了解这种相对距离有助于对象回避、刹车或者在转向的过程中做出实施决策。
-
归一化距离指标:该指标可以更好的评价模型预测出来的障碍物与自车之间的距离性能好坏。
实验结果(定量指标)
首先,我们比较了提出的多模态障碍物感知算法模型在室内和室外两种环境空间以及不同传感器下的检测性能,具体定量的数据指标如下图所示:
所提出的算法模型在不同场景下的指标汇总
通过实验结果可以看出,在室内场景来看,由于采用了超声波传感器采集到的数据,障碍物感知算法模型在距离指标上有着非常出色的预测优势,同时在召回率方面也要大幅度的超过单模态(纯相机)的算法算法版本。对于室外场景而言,所提出的算法模型得益于多模态数据互补的优势,各个指标均都要大幅度领先于单模态视觉的感知算法版本。
接下来是针对当前的两种不同版本的算法模型在各个不同障碍物类别上的感知结果性能汇总,不同类别具体定量的实验数据汇总在下表当中
通过上表可以看出,对于绝大多数的障碍物目标,当前提出的多模态算法模型在召回率、精度、交并比、距离、归一化距离、欧氏距离等各个指标上均要明显的高于单模态纯图像的算法版本。由此说明,通过多种模态的数据进行信息互补,不仅提高算法模型对于障碍物的检测识别性能,同时还可以更加精确的定位障碍物的的具体位置。
为了进一步的展示我们提出的多模态感知算法模型在距离上的感知优势,我们对不同距离段的感知性能指标进行了统计,具体统计结果如下表所示。 whaosoft aiot http://143ai.com
我们将模型5.8米的感知范围分成了四个不同的距离段,通过实验数据可以看出,随着距离的变远,仅仅使用单模态纯视觉的算法版本其召回率,距离性能均是不断下降的,因为随着距离的变远,图像中的目标变得越来越小,模型对于目标的特征提取变得更加困难。但是随着超声波传感器采集的信息加入,可以明显的看出,随着距离的变远,模型的精度并没有明显的降低,实现了不同传感器信息的互补优势。
实验结果(定性指标)
下面是我们多模态算法模型感知结果的可视化效果,如下图所示。
提出的算法模型感知结果的可视化效果
结论
本文首次提出了利用鱼眼相机传感器以及超声波传感器进行BEV空间的障碍物感知算法,通过定量指标(召回率、精度、欧氏距离以及归一化距离等指标)可以证明我们提出算法的优越性,同时上文可视化的感知结果也可以说明我们算法出色的感知性能。
# 自动驾驶中的坐标变换
本文对线性代数中的坐标变换、基变换两个概念的引入、性质进行了详细推导,并以自动驾驶中的传感器外参标定验证场景举例,介绍了坐标变换和基变换在实际工程中的应用,相信看完本文大家能对坐标变换和基变换有更深的理解。
本文默认读者具备基础的线性代数知识,包括基、线性组合、线性变换等概念。
应用背景
车辆系和相机系都是右手坐标系,一般情况下:车辆系的X轴指向车辆前方,Y轴指向车辆左方,Z轴指向天空;相机为前视相机,其坐标系为X轴指向车辆右方,Y轴指向地面,Z轴指向车辆前方。
车辆坐标系和相机坐标系
为什么需要坐标转换矩阵 T 呢,假设我们在图像中检测到一个行人,此时我们可以通过相机内参并结合其他测距传感器,得出该行人在相机系下的位置,但我们并不知道这个人距离车辆有多远,在车辆的正前方还是左前方。因此就需要一个坐标转换矩阵,将相机系下的三维点转换到车辆系下,供下游任务使用。
问题引入
为什么要对 R^{-1} 进行分解才能得知如何从车辆坐标系旋转到相机坐标系?为什么这么巧刚好是 R^{-1} ?先别懵,我们先验证这个结论对不对,再来解释为什么。
实验验证
为了实验能更加直观和真实,我们先做出如下设置:
车辆、相机与人的位置关系
include <eigen3/Eigen/Core>
int main(){
float pi = 3.14159265358979;
Eigen::Matrix3f R_inv;
R_inv << 0, 0, 1, -1, 0, 0, 0, -1, 0;
Eigen::Vector3f euler_angle = R_inv.eulerAngles(0, 1, 2); // 0: X轴,1: Y轴,2: Z轴,前后顺序代表旋转顺序,旋转方式为内旋
std::cout << "先绕X轴旋转: " << euler_angle[0] * 180 / pi <<std::endl;
std::cout << "再绕Y轴旋转: " << euler_angle[1] * 180 / pi << std::endl;
std::cout << "最后绕Z轴旋转: " << euler_angle[2] * 180 / pi << std::endl;
}
// Console Output:
// 先绕X轴旋转: -0
// 再绕Y轴旋转: 90
// 最后绕Z轴旋转: -90
在不考虑平移的情况下,坐标变换矩阵 T 中只包含 R ,因此我们也可以称 R 为坐标变换矩阵,其描述了坐标间的变换关系;我们将 R^{-1} 成为基变换矩阵,其描述了坐标系之间的变换关系。
我们接下来采用线性代数,来分析为什么坐标变换矩阵和基变换矩阵刚好就是互为逆的关系。
线性代数解释(坐标变换和基变换的本质)
基变换矩阵和坐标变换矩阵互为逆,推导完毕。
总结
基变换矩阵和坐标变换矩阵的关系之前也在矩阵论这门课中接触过,但当时完全不了解其应用场景,也对为什么这么取名一知半解。直到在实际应用中碰到了这个问题,才发现简简单单的两个公式,在使用时必须根据应用场景对齐进行区分,来选择究竟使用基变换矩阵还是坐标变换矩阵。