1. nuScence数据集简单介绍
数据集官网:https://www.nuscenes.org
论文:https://arxiv.org/abs/1903.11027
官方github页面:GitHub - nutonomy/nuscenes-devkit: The devkit of the nuScenes dataset.
1.1 坐标系的定义
nuScence数据集共有5类坐标系,定义分别如下:
注:全局坐标系的原点位于该场景地图左上角(该信息对可视化有帮助)。
nuScenes同时也提供了各传感器与自车坐标系、自车坐标系与全局坐标系之间的坐标平移矩阵与旋转矩阵(四元数表达),以及各相机的内参矩阵。
1.2 激光雷达点云
nuScenes数据集使用32线激光雷达,垂直方向的视野为−30.67°−30.67°到10.67°10.67°,水平方向上有360°360°视野,一帧测量的次数为1086。采样频率为20Hz,但每10帧才有标注信息(这些帧称为关键帧,存储在samples文件夹中;其余无标注的帧称为非关键帧,存储在sweeps文件夹中)。每一个序列的长度约为20s。
上述数据来源:https://arxiv.org/abs/2205.13764
nuScence数据集的激光雷达点云包含5个通道,分别表示x,y,zx,y,z,强度(0~255的整数值)和激光束编号(0~31的整数)。
1.3 边界框的标注
边界框的标注信息位于全局坐标系下,包含中心位置、尺寸(顺序为w,l,hw,l,h)、角度(四元数表达)、速度、属性、包含的激光雷达/雷达点数量等。
实际标注的类别有很多。但通常,评估时考虑的10个类别如下:
2. mmdetection3d中,nuScenes数据集info文件的生成
当使用nuScenes的mini数据集时,在 mmdetection3d
目录下执行:
python tools/create_data.py nuscenes --root-path $数据集根目录$ --version v1.0-mini --extra-tag nuscenes --out-dir $数据集根目录$
当使用完整数据集时,执行
python tools/create_data.py nuscenes --root-path $数据集根目录$ --version v1.0 --extra-tag nuscenes --out-dir $数据集根目录$
会在数据集根目录下生成5个文件和一个内含bin文件的文件夹。
由于mmdetection3d默认的pipeline只涉及 nuscenes_infos_train.pkl
、nuscenes_infos_val.pkl
这两个文件,因此本文只讨论这两个文件的由来和内容。
2.1 create_data.py
做了什么
与 nuscenes_infos_train.pkl
、nuscenes_infos_val.pkl
的生成有关的函数为nuscenes_converter.create_nuscenes_infos()
函数,该函数除了使用nuScenes工具包从数据集文件中获取信息外,还对获取的信息进行了下列处理:
-
计算各传感器(相机、非关键帧激光雷达)到关键帧激光雷达的坐标变换矩阵(平移矩阵+旋转矩阵):由于各传感器采样数据不完全同步,记传感器采集数据的时刻为t’t’,激光雷达采集数据的时刻为tt,则坐标变换的流程如下
-
将边界框速度从全局坐标系下转换到激光雷达坐标系下,得到vx,vyvx,vy。
-
使用nuScenes的工具包将边界框的中心位置和角度转换到激光雷达坐标系下(调用
nusc.get_sample_data
方法),得到中心位置cx,cy,czcx,cy,cz;将旋转角四元数转换为欧拉角,取偏航角θθ(弧度制,与xx轴的夹角)。 -
根据边界框内的激光雷达点数和雷达点数,计算边界框的有效性(至少包含一个激光雷达点或雷达点时有效)。
-
构建边界框表达:(cx,cy,cz,l,w,h,θ)(cx,cy,cz,l,w,h,θ)。
-
将信息整理为2.2节所述的info文件格式并保存。
与其余文件的生成有关的函数为nuscenes_converter.export_2d_annotation()
函数和create_groundtruth_database()
函数,关于后者的生成过程、文件说明及使用见此文。
点击nuScenes数据集及mmdetection3d中的相关处理 - 古月居 (guyuehome.com)可查看全文