自动驾驶CRUW数据集(大型毫米波频域图数据集)

数据集介绍

  • CRUW是一个基于雷达频域图像的自动驾驶数据集:

    • 目前是唯一一个开源的、多场景的、大型雷达频域图像检测数据集
    • 论文:Rethinking of Radar’s Role: A Camera-Radar Dataset and Systematic Annotator via Coordinate Alignment
    • 数据集:https://www.cruwdataset.org/

在这里插入图片描述

图1. 数据集的统计信息

在这里插入图片描述

图2. Parking Lot 场景样例
  • 优点:
    • 丰富的物体语义信息,带有目标中心点周围的形状信息
    • 基于雷达数据标注,使用CFAR结合Mask RCNN的分割与检测结果标注目标,并且在vertical和xy平面建立雷达检测与图像检测的对齐关系损失,使自动标注的精度较高;
    • 丰富的场景:拥有多个训练样例和四个场景的数据采集,样本量大;
  • 缺点:
    • 场景目标单一:parking lot等场景下目标运动单一目标较少,如上图2所示;
    • 标注物体较少:受制于检测模型性能,使用模型自动进行目标自动标注,导致很多场景下目标召回率较低,在一些密集的路口中,标注仅涉及到极小部分目标;

数据集格式与内容

在这里插入图片描述

图3. 下载后的数据(按照作者的设置数据集文件放置标准)

  其中,数据以sequence为最小组合,其中sequences意为序列,每个序列带有一个编号,序列下有多张图片及其对应的npy二进制文件(.npy文件是numpy专用的二进制文件,这里为频域图格式),annotations含有sequence对应的雷达图像中每个目标点的极坐标下的坐标(r,θ)和对应的种类(human,cylist等),另外calib中含有sequence对应的坐标转换矩阵(雷达坐标系与像素坐标系)。

数据集官方接口工具

  • 作者提供了接口工具CRUW-devkit,类似于nuScenes的nuscenes-devkit,能够方便开发者进一步封装成dataloader,还有评价功能;

数据路径配置与参数设置

from cruw import CRUW
data_root ='path/to/cruw'
dataset = CRUW(data_root=data_root, sensor_config_name='sensor_config_rod2021')
print(dataset)

在这里插入图片描述
如上图所示,sensor_cfg包含传感器的各类信息:

  1. 对相机来说:包括像素,采样率,父路径、扩展名;
  2. 对雷达来说:包括ramap(radar map)的大小,采样率,天线数等信息;

目标种类与目标投影

在这里插入图片描述
如上图所示,ra2idx和idx2ra能够分辨将极坐标系和笛卡尔坐标系相互转化。


展示效果

  1. 取出数据
import os
import numpy as np
import matplotlib.pyplot as plt

from cruw.visualization.examples import show_dataset_rod2021

def get_paths(seq_name, frame_id):
	# 某一帧图像
    image_path = os.path.join(data_root, 'sequences', 'train', seq_name, 
                              dataset.sensor_cfg.camera_cfg['image_folder'], 
                              '%010d.jpg' % frame_id)
    # 对应的帧的雷达npy文件
    chirp_path = os.path.join(data_root, 'sequences', 'train', seq_name, 
                              dataset.sensor_cfg.radar_cfg['chirp_folder'],
                              '%06d_0000.npy' % frame_id)
    anno_path = os.path.join(data_root, 'annotations', 'train', seq_name + '.txt')
    # 返回图像、对应的雷达npy文件及标注文件
    return image_path, chirp_path, anno_path
  1. 可视化样例
# 序列id
seq_name = '2019_04_09_BMS1000'
# 帧id
frame_id = 400
# 得到数据
image_path, chirp_path, anno_path = get_paths(seq_name, frame_id)
# 这里因为windows的路径格式为"\\",兼容作者的ubuntu环境,要对源路径转换
image_path = image_path.replace('\\', '/')
# 展示
show_dataset_rod2021(image_path, chirp_path, anno_path, dataset)

在这里插入图片描述

其他样例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评价接口

from cruw.eval import evaluate_rod2021
# 这里提交评价,工具会自动评估模型性能
# submit_dir = '<SUBMISSION_DIR>'
# truth_dir = '<ANNOTATION_DIR>'
# evaluate_rod2021(submit_dir, truth_dir, dataset)
### 使用CRUW数据集的方法 #### 数据加载与初始化 为了使用CRUW数据集,首先需要通过其官方提供的`cruw`库来完成数据的加载和初始化操作。以下是实现这一过程的具体代码示例: ```python from cruw import CRUW # 配置数据根目录以及传感器配置名称 data_root = 'path/to/cruw' dataset = CRUW(data_root=data_root, sensor_config_name='sensor_config_rod2021') # 打印数据集基本信息 print(dataset) ``` 上述代码中,`data_root`变量指定了CRUW数据集所在的本地路径[^1],而`sensor_config_name`则定义了所使用的传感器配置文件名。 #### 访问序列数据 CRUW数据集中以`sequence`作为基本单位存储数据。每个`sequence`包含了多帧雷达图像及其标注信息。可以通过如下方式访问特定的`sequence`数据: ```python seq_id = '2019_08_30_000' # 替换为实际存在的sequence ID rdm_path = dataset.get_rdm_dir(seq_id) # 获取频域图所在路径 annotation_data = dataset.load_annotation(seq_id) # 加载对应sequence的标注信息 calib_matrix = dataset.get_calib(seq_id) # 获取坐标转换矩阵 ``` 在此过程中,`get_rdm_dir()`函数返回指定`sequence`中的`.npy`频域图文件夹位置;`load_annotation()`用于读取目标点的位置及类别标签;`get_calib()`获取从雷达坐标到像素坐标的变换关系矩阵。 #### 构建DataLoader 对于深度学习模型训练而言,通常会将原始数据封装至PyTorch或其他框架支持的数据加载器(DataLoader)形式以便高效迭代。利用`CRUW-devkit`可以简化此流程: ```python import torch from cruw.data import CRUWDataset, collate_fn train_dataset = CRUWDataset(dataset=dataset, split='train') train_loader = torch.utils.data.DataLoader( train_dataset, batch_size=4, shuffle=True, num_workers=4, collate_fn=collate_fn ) for batch_idx, (inputs, targets) in enumerate(train_loader): pass # 处理输入与目标 ``` 这段脚本展示了如何基于已有的`dataset`对象创建适合于神经网络训练的数据管道结构。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

naca yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值