1. 引言
研究自动驾驶车辆在复杂路况下的行为决策具有重要意义,但目前大多数自动驾驶数据集只关注结构化场景,很少有人去研究非结构化道路环境,更少人去研究复杂非结构化场景中的车辆行为。
本文将介绍一个重要的惯性框架数据集:Berkeley DeepDrive Drone (B3D),该数据集由相机采集,广泛包含大量的复杂非结构化场景,包括有交通事故的高速公路、无信号灯交叉路口等。
该数据集有助于研究复杂路况下的自动驾驶车辆行为,并启发自动驾驶汽车和仓库机器人的分散运动规划算法的新设计。
2. 摘要
分散式多智能体规划一直是机器人领域的一个重要研究方向。在该领域的一个有趣和有影响力的应用是非结构化道路环境中的分散车辆协调。
例如,在一个交叉路口,在没有中央协调器的情况下,对相交路径的多个车辆进行拆分是有用的,但却是困难的。我们从常识中了解到,要让车辆通过这种非结构化的环境,驾驶员必须理解并遵守附近驾驶员所观察到的隐含的社交礼仪。为了研究这种隐式驾驶协议,我们收集了伯克利Deep Drive Drone数据集。
该数据集包含1 )一组记录非结构化驾驶的航拍视频,2 )一组用于训练车辆检测模型的图像和注释,以及3 )一组用于说明典型用法的开发脚本。我们认为,该数据集对于研究人类驾驶员所采用的分散多智能体规划具有主要意义,对于遥感环境中的计算机视觉具有次要意义。
3. 数据集介绍
B3D数据集由20个后处理视频、16002个带注释的图像和一个开发工具包组成,数据集链接为https://github.com/b3d-project/b3d。视频、带注释的图像和开发工具包的大小分别为84.5 GB、1.55 GB和225 MB,总计约86.3 GB。在20个经过处理的视频中,有8个是在路口上录制的,12个是在高速公路上录制的,视频格式为mp4,数据集的结构如图1所示。
图1 B3D数据集的文件结构
如图2所示是B3D数据集中所展示的追尾事故,分别发生在hwy00.mp4,以及hwy01.mp4中。在hwy00.mp4的00:45,可以观察到框架左边缘附近的第一次事故。在hwy01.mp4的13:10,在帧中间发现了另一个碰撞事故。
图2 hwy00.mp4和hwy01.mp4的追尾碰撞。
第一次事故涉及至少两辆车,而第二起事件涉及四辆车。
无信号控制的交叉路口可以在jnc00.mp4、jnc01.mp4、jnc02.mp4和jnc07.mp4的视频中找到。如图3a所示和数字3b所示,视频jnc00.mp4和jnc01.mp4是三叉路口的两种变体。如图3c和3d所示数字,视频jnc02.mp4和jnc07.mp4是四向交叉口的两种变体。
jnc03.mp4、jnc04.mp4、jnc05.mp4和jnc06.mp4都有无信号环形交叉口。如图3e所示,视频jnc03.mp4和jnc04.mp4是两个ve-way环岛的记录。如图3f和3g所示,视频jnc05.mp4和jnc06.mp4是四向环形交叉口的两种变体。
hwy04.mp4和hwy05.mp4记录了走走停停的车流。第一个走走停停行为在hwy04.mp4时间02:30到05:07之间形成。第二次停停走走的浪潮出现在hwy04.mp4时间06:06到08:10之间。第三次停停走走的波动出现在hwy04.mp4时间的10:26到12:25之间。第四次发生在hwy05.mp4时间00:00到01:33之间。最后一次出现在hwy05.mp4时间05:19到06:07之间。停停走走波的形成和消散过程如图4所示。
hwy06.mp4、hwy07.mp4和hwy08.mp4都记录了道路工程引发的车辆合并。如图3j所示,该场景的拓扑是一个四车道到两车道的瓶颈。
hwy09.mp4、hwy10.mp4和hwy11.mp4记录了匝道诱导合并。如图3k所示,匝道的拓扑结构是一条三车道的入口匝道正在并入一条四车道的拥堵公路。在合并点之前和之后,车流保持堵塞。
图3 B3D数据集中的典型道路拓扑。
(a)-(d)无信号灯交叉口,(e)-(g)无信号灯环形交叉口,(h)-(i)高速公路,以及(i)-(k)合流瓶颈。
图4 走走停停车流的时间线。
绿色表示正常交通,红色表示由强降雨引起的拥堵,浅红色表示由走走停停引起的拥堵。
为了定性分析视频中观察到的车辆行为,需要获得场景中每辆相关车辆的精确轨迹。为了构建车辆的轨迹,作者首先在每一帧中检测其位置,然后使用跟踪算法将跨帧的每个检测位置关联起来。
为此,作者建立了一个图像数据集,可用于训练车辆检测模型。该数据集由16002个带注释的图像组成,其中80%被分割用于训练,10%用于验证,10%用于测试。图5显示了一个示例注释。
数据集中,总共有135303个边界框被注释为路口图像,总共有129939个边界框被创建为高速公路图像。注意,所有车辆均被不加区分得定义为vehicle类。
图5 注释图像示例。彩色矩形是场景中车辆的轴向对齐边界框。
除了视频和带注释的图片,作者还提供了一个开发工具包,其中包含三个示例脚本:train.py、test.py和mask.py。
其中,脚本train.py用于显示注释图像数据如何用来训练用于车辆检测的神经网络模型。在这个脚本中,作者使用对象检测库Detectron2来训练RetinaNet模型,用于检测输入图像中车辆的位置。
脚本test.py将通过train.py脚本训练的训练模型应用于输入图像,用于训练后的评估和推理。作者提供了预训练模型,可以直接用于推理,使用预训练模型的检测结果的实例如图6所示。
图6 带有检测结果的示例图像。彩色矩形是轴向对齐的边界框。黑色数字是估计边界框的置信分数,其中1.0表示完全确定,0.0表示完全不确定。
最后,mask.py根据预先定义的多边形遮罩来裁剪图像。图7显示了脚本如何根据红色遮罩裁剪掉环岛图像的不相关部分。该脚本旨在帮助用户专注于场景中唯一相关的部分,其中的相关性由用户通过CVAT工具确定。要裁剪视频,只需为视频的一帧定义一个多边形遮罩,然后对视频的每一帧应用遮罩。此外,作者还提供了Docker文件。
图7 mask过程的演示。红色多边形面具由CVAT设计。蒙版之外的像素被认为是不相关的,并被标记为黑色。
4. 视频采集和处理
在每次视频拍摄期间,作者将四轴无人机直接悬停。然后使用内置相机以4K和30 FPS记录俯视视频。实验设置的可视化如图8所示。由于电池容量有限,每次拍摄被限制在15到20分钟之间。
图8 实验装置的图解。四轴无人机悬停在感兴趣的道路上,内置摄像机记录每个交通参与者进出场景的俯视图。
为了训练用于车辆检测的神经网络模型,作者从20个视频中每15秒提取一个帧,然后手动标记一个轴向对齐的边界框,在选定的帧中的每个车辆。此外,作者裁剪了视频帧中不相关的部分,如树木、屋顶和停车场,以此来减小图像的大小。
在运动规划任务中,B3D数据集典型的应用过程如下:
1)运行mask脚本以选择视频数据集的相关部分;
2)应用检测模型提取mask场景中每辆车的位置;
3)检查检测结果,并且手动校正检测错误;
4)使用SORT等跟踪算法,将检测到的位置关联到轨迹中;
5)基于估计的轨迹学习和验证人类驾驶模型。
以此估计得到的模型可以部署在自动驾驶系统上,用于在特殊非结构化场景中导航。此外,所得到的模型可以作为仓库机器人开发分散协调算法的基线。
在计算机视觉中,B3D主要用于开发或评估遥感环境中的小型道路目标的CV算法。从空中视频中检测行人或骑自行车的人对于最先进的计算机视觉来说仍然是一个挑战。这很大程度上是由于这些小物体的低分辨率,因为低分辨率使物体在视觉上模糊不清。如图9所示,检测模型可能会将行人与水印混淆,或弄混行人和骑自行车的人。为此,B3D可以作为构建训练数据和验证候选算法的数据源。
图9 低分辨率物体的视觉模糊
5. 总结
本文介绍了伯克利DeepDrive无人机数据集,该数据集拓展了自动驾驶中的非结构化场景,对于研究复杂路况下的自动驾驶车辆行为具有重要意义。
该数据集包含总共20个视频序列、16002个带注释的图像和一个开发工具包。它可用于以下应用:1)在底层结构道路环境中模拟驾驶员行为,2)设计去中心化运动规划算法,以及3)开发用于低分辨率道路目标的检测方法。
深蓝学院是专注于人工智能的在线教育平台,已有数万名伙伴在深蓝学院平台学习,很多都来自于国内外知名院校,比如清华、北大等。