[自动驾驶算法][从0开始轨迹预测]:三、常用的轨迹预测数据集--Argoverse v2


写在前面:

“工欲善其事,必先利其器”!

在深度学习中,数据是实现人工智能任务的三大基本要素之一,另外两个分别是算力和算法。

在深度学习任务中,数据的质量和数量对最终效果有决定性的影响。由于深度学习模型的复杂性,需要大量的数据来训练,否则模型的泛化能力会比较差,也就是过拟合。数据的质量和数量都很重要,数据的质量主要体现在数据的清洗和标注,一个高质量的数据集能够提高模型训练的质量和预测的准确率.

数据处理的步骤主要有以下几个环节:数据采集、数据存储、数据清洗、数据标注、数据增强等.
数据处理的目的是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值、有意义的数据.

数据决定了一个深度学习任务的上限,而模型仅仅是无限接近这个上限。

1. 轨迹数据集总览

数据集预测类别
Argoverse v1机动车
Argoverse v2机动车
Nuscense机动车、行人
WaymoOpenSource机动车
ApolloScape机动车
ETH行人
UCY行人

2. Argoverse v2数据集

数据集官网:Argoverse 2

argoversev2官方使用指南

2.1 传感器布局与坐标系统

img
  1. 激光雷达:

激光雷达扫描以 10 Hz 的频率收集。此外,还提供了全局坐标系中的 6-DOF 自车辆位姿。激光雷达回波由两个 32 束激光雷达捕获,它们以 10 Hz 的频率沿同一方向旋转,但方向相差 180°。所有雷达感知到的数据都转到了自车坐标系中。坐标系:X向前,Y向左,Z向上,符合右手系

  1. 相机:

7个环形摄像机的 20 fps 图像,以提供全全景视野,以及来自 2 个立体摄像机的 20 fps 图像;提供了相机内参、外参和全局坐标系中6-DOF自车位姿。坐标系:Z向前(景深方向),Y向下,X向右,符合右手系

  1. 自车坐标系:ISO坐标系坐标系:X向前,Y向左,Z向上,符合右手系。
  2. BEV坐标系:
img

上图所示为argoverse数据集的bev坐标系和bev像素坐标系,在argoverse数据集中,标注结果是建立在自车系基础上的,而自车坐标系是以车轴中心点作为坐标原点,以车辆朝向为x方向,以车辆左侧为y方向,以垂直向上为z方向,所形成的右手坐标系。所以在argoverse数据集中,bev坐标系使用与自车坐标系相同的坐标系。而bev像素坐标系则是坐标原点位于bev图的左下角,向上是y轴,向右是x轴,形成右手坐标系。所以在argoverse数据集中的bev图一般h小于等于w,车头朝右。

2.2 轨迹预测数据集

1. 数据集的下载和读取

按照教程(建议使用s5cmd)下载motion-forecast数据集以及安装av2的api,下载后的数据集目录:

data_root
    ├── train
    │   ├── 0000b0f9-99f9-4a1f-a231-5be9e4c523f7
    │   │   ├── log_map_archive_0000b0f9-99f9-4a1f-a231-5be9e4c523f7.json
	│	│	└── scenario_0000b0f9-99f9-4a1f-a231-5be9e4c523f7.parquet
    │   ├── 0000b6ab-e100-4f6b-aee8-b520b57c0530
    │   ├── ...
    ├── val
    │   ├── 00010486-9a07-48ae-b493-cf4545855937
    │   ├── 00062a32-8d6d-4449-9948-6fedac67bfcd
    │   ├── ...
    ├── test
    │   ├── 0000b329-f890-4c2b-93f2-7e2413d4ca5b
    │   ├── 0008c251-e9b0-4708-b762-b15cb6effc27
    │   ├── ...

每个场景数据文件包括一个以log_map_archive_{uuid}.json命名的地图文件,和一个以scenario_{uuid}.parquet命名的场景文件,数据集文件的读取:

import pandas as pd
from av2.map.map_api import ArgoverseStaticMap

def load_av2_df(scenario_file: Path):
    scenario_id = scenario_file.stem.split("_")[-1]  # unique uuid like: '37052017-85f3-4676-bf91-9f275a7389e2'
    df = pd.read_parquet(scenario_file)
    static_map = ArgoverseStaticMap.from_json(
        scenario_file.parents[0] / f"log_map_archive_{scenario_id}.json"
    )
    return df, static_map, scenario_id
2. 场景文件的数据结构:
  • scenario_id:场景唯一的uuid
  • city:该场景处于的城市名称
  • track_id:障碍物唯一的id
  • focal_track_id: 该场景中用于做单轨迹预测的障碍物id
  • observed:布尔值,指示障碍物状态是否属于当前场景
  • position_x/position_y: (x, y) 障碍物边界框中心坐标。
  • heading:朝向角(以弧度为单位,地图坐标系)。
  • velocity_x/velocity_y:(v_x, v_y) 障碍物的瞬时速度(以米/秒为单位)。
  • timestep:与障碍物状态对应的时间步[0, num_scenario_timesteps)。
  • num_timestamps:场景的时长/帧数
  • start_timestamp:开始的时间戳
  • end_timestamp:结束的时间戳
  • object_type: 推理得到的障碍物类别(10)
    • Dynamic
      • VEHICLE
      • PEDESTRIAN
      • MOTORCYCLIST
      • CYCLIST
      • BUS
    • Static
      • STATIC
      • BACKGROUND
      • CONSTRUCTION
      • RIDERLESS_BICYCLE
    • UNKNOWN
  • object_category:用于该条轨迹在轨迹预测任务中的类别
    • TRACK_FRAGMENT: 质量较低的轨迹,可能仅包含一段时间戳.
    • UNSCORED_TRACK: 用于上下午输入的未打分的轨迹.
    • SCORED_TRACK: 高质量的轨迹 - 用于多智能体预测.
    • FOCAL_TRACK: 场景中主要的轨迹 - 用于单轨迹预测.
3. 地图文件的数据结构
  • drivable_areas:可行驶区域
    • value:area_boundarylist(x,y,z)
    • key:id
  • pedestrain_crossing:人行横道
    • value:edge_1:list(x,y,z);edge_2:list(x,y,z)
    • key:id
  • lane_segmments:车道段
    • value:
      • centerlinelist(x,y,z)
      • id
      • is_intersection:bool
      • lane_type:车道类型
        • VEHICLE
        • BIKE
        • BUS
      • left_lane_boundary:list(x,y,z)
      • left_lane_mark_type:左侧车道线线形
      • left_neighbor_id:左侧车道id,None为空
      • predecessors:前继车道id
      • right_lane_boundary:list(x,y,z)
      • right_lane_mark_type
      • right_neighbor_id
      • successors:后继lane id
    • key:id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值