自动驾驶车辆的规模化扩张严重依赖于它们处理异常情况的能力,比如道路上罕见的物体。为了应对这些情况,首先需要检测到异常。在过去几年里,自动驾驶的异常检测取得了巨大进步,但受限于设计不佳的基准测试,这些测试过于关注相机数据。
在这项工作中,作者提出了AnoVox,这是迄今为止最大的自动驾驶异常检测基准。AnoVox融合了大规模的多模态传感器数据和空间VOXel真值,使得可以独立于所用传感器比较方法。
作者提出了正常性的正式定义,并提供了一个合规的训练数据集。AnoVox是第一个既包含内容异常也包含时间异常的基准测试。
1 Introduction
在过去的几年中,作者见证了自动驾驶车辆从相对较小且定义明确的操作设计域(ODD)扩展到城市范围,预计在不久的将来可能会覆盖多个相邻城市的地理区域[70, 71, 72]。然而,随着在不断扩大ODD中的车队规模,由于曝光度增加,长尾分布中罕见事件场景的发生更加频繁[68]。
专家视角通常用于判断“长尾”数据点,关注内容和时间上的异常,因为推理过程中无法重放训练数据。这些专家观点常用于创建异常检测基准,但对异常检测并无帮助。很少有出版物从数据角度来定义异常[25, 38, 79],这些异常也被称为分布外(OOD)、极端案例或离群值。
近期的研究集中在异常检测方法[41]及其影响,如OOD分割[55]、目标检测[31]、实例分割[52]和视频跟踪[51]。这些方法通常不仅仅从训练数据中学习正常性表示,还需要进行语义分割阶段并在包含(人为)异常的辅助数据上进行微调[9, 23]。
尽管在自动驾驶领域存在大量的数据集[47, 50, 14],但只有大约5-10%的数据集是为自动驾驶中基准测试异常检测方法设计的[15, 13]。然而,这些现有数据集存在重大局限性。
首先,大多数数据集只包含摄像头数据,尽管自动驾驶依赖多模态传感器设置。其次,时间信息经常被忽视,将异常检测限制在单帧。此外,在具有挑战性的交通情况下很少发现内容异常,这允许假设路上的任何东西都可能是异常[51]。大多数异常是由人定义的,比如街上的狗[9],这使得检测具有挑战性,因为这些类别通常包含在训练数据集中但没有标注[31, 27]。
因此,异常检测方法可能会错过它们认为在训练中并不典型的异常。
通过AnoVox,作者提供了一个具有挑战性且适应性强的ANOmaly检测基准,利用CARLA仿真引擎[30]以提供所有模态下的 GT 数据以及空间VOXel表示。
鉴于基础模型[57, 21]、世界模型[44, 77]和大规模预训练方法[42, 75]的激增,作者也看到了自我监督和无监督训练范式在异常检测领域应用的潜力。
因此,作者优先支持无需标签的训练范式,并提供了一个广泛的综合数据集,以促进在OOD分割领域的研究,解决当前数据集的限制,并使当前异常检测方法的盲点技术能够快速原型化。
作者的贡献包括:
-
正常性的形式定义,并提供一个符合要求的训练数据集,以公平比较异常检测方法
-
大型且具有挑战性的基准,具有高场景复杂性和包含许多无异常帧的时间场景
-
第一个包含内容和时间异常的基准,提供多模态传感器数据、自我车辆状态信息以及所有模态下的 GT 数据,同时还有空间 Voxel 表示
所有用于复现作者结果、创建新的AnoVox实例以及基准测试异常检测方法的代码都可以在GitHub上找到。数据集可以在Zenodo上找到。
2 Related Work
在自动驾驶领域,异常检测传统上是在一组较小的基准上进行评估的。在分析相关研究时,作者纳入了那些提供公开可访问的以自我视角为基础的感知数据集的研究,这些数据集提供像素级或点 Level 的真实数据。
因此,作者忽略了那些不提供明确数据以及只提供帧 Level 标注的框架。
在如表1所示的相关研究概述中,作者更新并扩展了Bogdoll等人[15]的调查,现在比较了文献中的22个数据集。
可以观察到,大多数基准都是小型的,设计用于基于相机的_内容_异常检测,以语义形式提供真实数据。
在包括_content_异常的数据集中,只有CODA [49]系列包括激光雷达数据,但仅以摄像头空间的2D边界框形式提供真值。DeepAccident [69]基准测试是唯一一个为激光雷达点云提供_temporal_ 3D标签的。
在数据集中引入异常的方法有不同的类别[15]。
录制
和
模拟
相似之处在于,选定的异常直接引入到数据中。这样,异常真正成为环境的一部分[51, 59, 19]。不过,什么算作异常的定义可能会有所不同。
数据增强
通常遵循 Copy-Paste 模式,将异常的图像粘贴到另一个数据集中的已有场景上。这种方式会在异常和基础数据之间引入分布偏移[6, 9]。
网络搜集
描述了从网上手动挑选被认为是异常的图片的过程[23, 45]。
类别排除
基于现有数据集,从训练数据中移除选定的类别,从而将它们视为异常,而实际上这些类别从人的角度来看仍然相当正常[34, 40]。
无效类别
利用现有数据集中的无效或杂项类别,并将它们标记为异常。这可以通过额外的标签指南只重新标记选定的类别来完成[49]。
最后,
OOD检测
使用异常检测方法从数据集中导出异常 Proposal ,然后可以对其进行标记,通常在人工质量检查之后[49]。
虽然许多数据集包括时间序列形式的时间数据,并为常规任务(如目标检测或语义分割)提供标签,但没有一个包括关于 ego 车辆的状态信息。然而,在部署期间,这类信息通常是可用的,并且可以利用。
最后,大多数基准测试没有提供正常性的定义。这使得无监督和自监督方法很难精确检测异常,如果语义训练分布不是完全已知的。特别理想的是,一个明确定义的正常性,允许生成符合要求的训练数据。
这只有在模拟中才可能实现,因为在那里可以完全控制训练和评估数据。有时,甚至在评估数据中也会出现 未标注 的异常。
AnoVox是一个具有挑战性的基准,它从具身AI的角度而不是纯粹的计算机视觉角度来处理异常检测领域。因此,作者提供了具有 ego 车辆状态信息的时态上下文数据,适用于典型的多模态传感器设置。
为了明确异常的定义,作者提供了一个正常性的形式化定义,并提供符合要求的训练数据。这尤其允许使用无监督和自监督异常检测方法,这些方法通常依赖于大量 未标注 的数据。
3 AnoVox Dataset
AnoVox既提供了代表“正常性”的数据,也提供了包含“内容”和“时间”异常的数据。虽然作者提供了一个大规模的数据集,但AnoVox主要是一个可扩展的框架,可以与任意车辆设置和广泛选择的参数一起使用以创建更多数据。这不仅仅允许在已知环境中检测异常,还允许在领域转移下检测异常。在第3.1节中,作者提供了一个正式的“正常性”定义,并展示了AnoVox提供的训练数据是如何遵循这一正常性定义的。在第3.2节中,作者展示了可以用AnoVox生成哪些类型的场景。最后,第3.3节提供了作者数据集的概览。
Definition of Normality
在过去,当呈现异常检测基准时,通常没有广泛讨论正常性的定义。一种典型的解决方案是将正常性定义为Cityscapes数据集[9, 23]中的所有语义类别。然而,这并不一定与训练数据相关。如果是的话,它需要将正常性作为已标记的训练数据,以了解这些类别。通过AnoVox,作者在合成环境中提供了对正常性和异常的完全可控性。这确保了基准中包含的异常是真正的异常,并不是偶然包含在 未标注 的训练数据集中。为了公平地评估异常检测方法,它们共享相同的正常性定义是很重要的。作者认为,这种正常性主要应由训练数据定义,而不是由专家定义的概念。然而,这需要在正常性的定义下生成大量训练数据的能力,这在现实世界中是不可行的,因为异常肯定会在大规模、 未标注 的数据集中出现。然而,在作为具身AI子领域的自动驾驶领域,训练数据不仅仅是帧:有一个执行动作的记录实体,以及时间上下文。因此,作者根据三个类别提供了一个正常性的正式定义:
自身(Ego)
:数据中的域偏移不仅可以通过新颖的环境条件引起,也可以通过不同的捕获方法引起。在自动驾驶中,这尤其指的是传感器类型和配置。此外,环境中的时间变化也受到作者自身行为的影响。因此,自身代理的行为也构成了正常性的一部分。
域(Domain)
:通过域,作者描述车辆周围静态环境。这包括车辆穿越的地理区域,也包括见过的天气类型和白天的时间规定。
物理实体(Physical Entities)
:这些是场景中的动态参与者,最典型的如其他车辆、自行车和行人。然而,这里也可以包括如动物或可能移动的物体等类别。
基于这些概念,作者在表2中为CARLA仿真引擎提供了一个正常性的定义,该定义允许生成符合要求的 数据集。
Scenario Generation
AnoVox旨在创建可配置的大规模数据集,这些数据集可以定义正常性或包含异常。如图2所示,首先需要设置车辆传感器配置。AnoVox目前支持任意数量的摄像头、激光雷达和深度传感器,它们可以自由地安装在所选的自主车辆上。这允许复制现有的传感器设置,与其他数据集对齐,或测试新配置。
作者提供了四种预先设计好的多模态车辆传感器配置。如图3所示,
mono
配置包括一个位于车辆顶部中央前方的激光雷达和一个摄像头。
作者的
stereo
设置包括两个位于前缘的摄像头以及顶部的一个摄像头和一个激光雷达。
multi
设置增加了面向后方的摄像头以及前后方低位置的附加激光雷达传感器,与车顶激光雷达相比位置较低。最后,
surround
设置在顶部安装的激光雷达旁边提供了一个完整的
摄像头视角。
每个RGB摄像头自动附带一个深度摄像头。
其次,需要设置环境和演员。AnoVox目前支持八种不同的区域和14种天气以及一天中时间预设。场景中可以生成行人、自行车骑行者以及多种类型的车辆。
目前,AnoVox支持创建不含异常的_正常性_,放置_内容_异常,以及激活_时间_异常。通过从训练数据集中移除领域,AnoVox还支持在领域转移下检测异常。
鉴于这些配置,AnoVox预计算了场景流程并将它们存储为场景描述。因此,描述所有场景的元数据是可用的,并允许轻松进行数据集分析。场景描述可以通过共享场景描述文件并在本地生成场景来在同行之间共享,无需移动数百GB的数据。
基于给定的配置,AnoVox在模拟中执行驾驶场景。作者提供了一个定制的CARLA模拟引擎[30],包括作者手动收集和处理的所有_内容_异常。每个场景的长度为20秒,以10 Hz的频率录制,共200帧。当场景开始时,自主车辆在世界中生成并沿着给定的路线前往目标目的地。
在途中的某个点,会出现一个_内容_或_时间_异常。为确保及时到达异常点,沿自主车辆路线激活了绿波。由于物理计算在模拟中保持活动状态,自主车辆将与异常接触,导致真实的碰撞。
3.2.1 Actor Routing.
道路上奇怪的物体在模拟中的行为与现实中一样——它们会造成交通堵塞。这使得 ego 车辆很难到达异常点。因此,在作者的场景中,作者对所有其他车辆部署了过滤和重新规划路线的算法。
首先,作者过滤掉所有靠近作者生成点以及直接朝向异常点的演员。然后,作者持续监控所有计划中的路径,一旦车辆即将进入带有异常的车道(可能会被困住),作者就会重新规划路线。
这种重新规划技术性地改变了它们的驾驶行为。如表格2所示,在训练数据中,只存在显示
自动驾驶
驾驶行为的车辆。重新规划使它们转变为 _行为代理_。
作者通过提供新的标签来处理这个问题。这样,由于与正常性对齐的违反可能导致的误报可以在评估时被过滤掉。
内容异常。
作者提供了178个不同的
内容
异常,分为五个不同的大小类别
微小,小型,中型,大型
和 _巨型_。从语义上讲,它们分属于六个不同的超类别。每个异常除了其超类别和大小标签外,还有一个单独的标签。
动物
类包括了33种不同大小的动物。
家庭
类包括了53种典型的家庭物品,如家具、桌子、背包或纸板箱。
特殊
类包括了67个相当非典型的类型物品,以及那些落入杂项类别的物品,如宝可梦,其中一些可能会以服装或毛绒玩具的形式在现实世界中出现。
自然
类包括了12个户外物品,如岩石或木头。