View-of-Delft数据集文件学习

View-of-Delft(以下简称VoD)数据集简介与Dev-kit的github页面:GitHub - tudelft-iv/view-of-delft-dataset

Dataset Preparation | The View of Delft dataset

1.数据采集传感器设置

        如下图所示为数据采集车辆及其传感器设置(包含坐标系定义)。

        可见传感器包含一个4D雷达,一个64线激光雷达和一个分辨率为1936\times 1216的彩色立体相机。需要注意的是三者的坐标系定义。

2.组织形式和文件介绍

        VoD数据集的组织形式和KITTI数据集相同,如下所示:

View-of-Delft-Dataset (root)
    ┣━━ lidar (kitti dataset where velodyne contains the LiDAR point clouds)
    ┃       ┣━━ ImageSets (1)
    ┃       ┣━━ training
    ┃       ┃       ┗━━ calib (1) & velodyne (1) & pose (1) & image_2 (1) & label_2 (1)
    ┃       ┗━━ testing
    ┃                ┗━━ calib (1) & velodyne (1) & pose (1) & image_2 (1)
    ┃ 
    ┣━━ radar (kitti dataset where velodyne contains the radar point clouds)
    ┃       ┣━━ ImageSets (1)
    ┃       ┣━━ training
    ┃       ┃       ┗━━ calib (2) & velodyne (2) & pose (1) & image_2 (1) & label_2 (1)
    ┃       ┗━━ testing
    ┃                ┗━━ calib (2) & velodyne (2) & pose (1) & image_2 (1)
    ┃ 
    ┣━━ radar_3frames (kitti dataset where velodyne contains the accumulated radar point clouds of 3 scans)
    ┃       ┣━━ ImageSets (1)
    ┃       ┣━━ training
    ┃       ┃       ┗━━ calib (2) & velodyne (3) & pose (1) & image_2 (1) & label_2 (1)
    ┃       ┗━━ testing
    ┃                ┗━━ calib (2) & velodyne (3) & pose (1) & image_2 (1)
    ┃
    ┗━━ radar_5frames (kitti dataset where velodyne contains the radar point clouds of 5 scans)
             ┣━━ ImageSets (1)
             ┣━━ training
             ┃       ┗━━ calib (2) & velodyne (4) & pose (1) & image_2 (1) & label_2 (1)
             ┗━━ testing
                      ┗━━ calib (2) & velodyne (4) & pose (1) & image_2 (1)

        其中相同名称的文件,若其后附有相同的编号,表示两者内容相同。

  1. ImageSets:其中train.txt内包含用于训练的帧的编号,val.txt、trainval.txt、test.txt类似;

  2. calib: 存储了每一帧(包含训练、验证或测试帧)的校准信息,包含相机内参、相对激光雷达或雷达的坐标变换矩阵(外参)等信息。

  3. velodyne:存储了每一帧的激光雷达或雷达点云数据(bin格式);

  4. image_2:存储了每一帧的图像(jpg格式);

  5. label_2:存储了每一帧的标注信息(包含边界框参数、类别等)。

        需要重点介绍的是velodyne点云数据格式、calib信息和label_2信息:

2.1 点云数据

        激光雷达点云数据共含4个维度,依次为x,y,z坐标和反射强度reflectance

        雷达点云数据共含7个维度,依次为x,y,z坐标、 RCS值rcs、相对径向速度v\_r、补偿后的相对径向速度(绝对径向速度)v\_r\_compensated以及相对时间ID time(例如,radar_3frames文件夹中的点云来自相邻的3帧,其中来自当前帧的点的时间ID为0,来自前一帧的点的时间ID为-1,以此类推)。

2.2 校准(calib)信息

        以激光雷达文件夹下的calib信息00000.txt为例:

P0: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
P1: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
P2: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
P3: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
R0_rect: 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
Tr_velo_to_cam: -0.007980200000000000 -0.999854100000000000 0.015104900000000000 0.151000000000000000 0.118497000000000000 -0.015944500000000000 -0.992826400000000000 -0.461000000000000000 0.992922400000000000 -0.006133100000000000 0.118606900000000000 -0.915000000000000000
Tr_imu_to_velo:

        其中,前4行有12个数,可以组成相机的内参矩阵(3\times 4)P0~P3(由于只有1个相机,故P0~P3完全相同,可只考虑其中一个如P2);第5行的9个数可以组成0号相机的修正矩阵(3\times3)R0_rect;第6行的12个数可组成激光雷达坐标系到相机坐标系的变换矩阵(3\times 4)Tr_velo_to_cam。注意第7行为空,可能是为了和KITTI数据集的格式匹配。

        将上述矩阵扩维至4\times4(即将上述矩阵放置于4阶单位阵的左上角)。则可以通过下列方式使用这些矩阵来进行坐标系转换:

        设p_{velo}=[x,y,z]^T为某点在激光雷达/雷达坐标系中的坐标,则其在相机坐标系中的坐标p_{cam}=[x',y',z']^T可以按照

\bar{p}_{cam}=\textup{Tr\_velo\_to\_cam} \cdot\bar{p}_{velo}

计算,其中\bar{p}_{velo}=[x,y,z,1]^T\bar{p}_{cam}=[x',y',z',1]^T;其在图像坐标系中的坐标p_{img}=[u,v]^T可以按照

\bar{p}_{img}=\textup{P2}\cdot\textup{R0\_rect} \cdot \textup{Tr\_velo\_to\_cam} \cdot\bar{p}_{velo}

计算,其中\bar{p}_{img}=[ud,vd,d,1]^T,其中d为深度。

        对于雷达文件夹下的calib信息00000.txt:

P0: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
P1: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
P2: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
P3: 1495.468642 0.0 961.272442 0.0 0.0 1495.468642 624.89592 0.0 0.0 0.0 1.0 0.0
R0_rect: 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
Tr_velo_to_cam: -0.013857 -0.9997468 0.01772762 0.05283124 0.10934269 -0.01913807 -0.99381983 0.98100483 0.99390751 -0.01183297 0.1095802 1.44445002
Tr_imu_to_velo: 

可以看到,与激光雷达同一帧(编号)的calib信息相比,上面的文件仅第6行(Tr_velo_to_cam)有所不同,在这里对应的是雷达坐标系到相机坐标系的变换矩阵。 

2.3 标注(label_2)信息

        以00000.txt为例:

bicycle 0 1 -0.5150583918601345 1692.8589 873.00977 1935.0 1064.7266 0.9959256326426174 0.4582897348611458 1.737482152677817 5.230204792744421 2.477337074657124 8.676091008791296 0.027439126666472635 1
Car 0 0 1.5969678879628475 1359.3518 791.88385 1506.7257 968.71594 1.9658151675250493 2.009540517674054 4.257372605697204 7.423425672011678 4.838405038872109 23.385299613662408 -4.378838552585744 1
motor 0 0 -2.4142505347858005 88.35352 823.8978 464.32352 1073.3318 1.4704096973162277 1.1856527220632311 2.3723464213832814 -5.100367912654446 3.0821597861596888 11.195305589263592 -2.8417358744591588 1
Pedestrian 1 1 -1.6660393553754074 1548.5125 804.1335 1623.0793 982.50916 1.8422458172896514 0.712902028244753 0.5298325090028302 6.891531865294575 3.8656267092244225 16.523690043276844 -1.2709047988027686 1
Pedestrian 1 1 0.10923688061570824 384.32187 809.8085 470.49887 1014.3773 1.7113494534438007 0.6927278561464366 0.6700939150565816 -4.869471653036317 3.453343853662825 13.67393509650957 -0.232873768267166 1
Pedestrian 0 0 -1.7369841834426152 441.1206 806.78595 509.6245 983.0217 1.7313492749151453 0.6006713495861179 0.6221442714556515 -5.189488000680589 3.723224301471528 15.962183176995822 -2.051316852635901 1
Pedestrian 1 1 -0.8081777226409069 43.90973 840.74774 124.20658 963.51794 1.5412211529367874 0.6060047872488128 0.7569538339732375 -12.164861304877576 4.599773078955673 20.752229568039407 -1.3383849316442624 1
ride_other 0 2 2.836959762705909 1349.3645 844.5118 1405.9341 905.7561 1.1442937265889208 0.9213328783178462 0.9260649787315438 8.853846975969235 5.8885278183729906 31.829908119470943 -3.1749227280590704 1
truck 1 0 -1.3595927657319646 626.16113 581.6047 1312.4491 1215.0 3.083587526826805 2.6886104777286772 7.90147259012395 0.8362113864028187 2.9011883815517554 10.471172336004262 -1.2799034509939837 1
bicycle 0 1 -2.172004192965079 1717.6375 853.8164 1935.0 1146.5216 0.8744498006924738 0.5472547914257222 1.6346471237668838 4.05597549845168 2.0111565023332525 6.595811517157581 -1.620677576243707 1
Pedestrian 1 1 0.32144062779943916 270.60336 797.81323 376.92422 1023.54193 1.8294479159771333 0.7217715421067585 0.662114961829581 -5.5701001001316355 3.388678461833007 13.09856796340132 -0.08063749051784308 1
Pedestrian 0 0 0.7375522059644327 71.37786 830.52124 153.21786 981.89264 1.5928943449092015 0.6289930517586932 0.5275438250442627 -9.696689737074104 3.993278471608547 17.092711783163384 0.22152418469137491 1

其中每一行有16项。根据官方介绍文档,前15项的意义分别如下:

项数 名称 描述 备注
1 类别(class)

物体类别名称,如“Car”、“Pedestrian”、“Cyclist”等。

共有13类被标注的物体:Car, Pedestrian, Cyclist(包含自行车和骑手), rider(自行车、摩托车上的人), bicycle(未使用的), bicycle_rack, human_depiction(如雕像), moped_scooter, motor, truck, ride_other, vehicle_other, ride_uncertain。

有的帧的标注出现且仅出现一个“DontCare”类别的边界框,应该是对应该帧检测范围内无物体的情况。

注:一般来说,由于部分类别样本很少、部分类别相似度较高,可以仅考虑前三个类别。

2 截断(truncated) 该项无效,不能使用。 该项的存在是为了与KITTI数据集格式保持一致
3 遮挡(occluded)

用整数(0,1,2)表示的遮挡状态,0=完全可见,1=部分遮挡,2=严重遮挡

上述DontCare类物体的遮挡程度会标注3
4 观测角(alpha)

物体的观测角(弧度),范围为

[-\pi\pi]

经过对标注文件的验证,得到观测角的计算公式为

\textup{alpha}=\arctan \left (\frac{z}{x} \right )+\textup{rotation}-\frac{\pi}{2}

暂不知几何意义

5~8 2D边界框(bbox)

图像中物体的2D边界框,包含左、上、右、下像素坐标

该项由3D边界框自动生成:将边界框的八个角点投影到图像上,其外接矩形在图像范围内的部分即为2D边界框
9~11 尺寸(dimensions)

3D物体尺寸:高h、宽w、长l(单位:\mathrm{m}

激光雷达坐标系下的z_size, y_size, x_size或图像坐标系下的y_size, z_size, x_size
12~14 位置(location)

3D物体在相机坐标系中的xy, z位置(单位:\mathrm{m}

对应的是边界框底部中心的坐标
15 旋转角(rotation)

激光雷达坐标系-Z的旋转角(弧度),范围为[-\pi\pi]

当物体朝向与激光雷达坐标系Y轴负方向【即对齐时的相机坐标系X轴正方向】重合时旋转角为0

最后一项固定为1,可以理解为分类分数。

        需要注意的是,KITTI devkit假设相机坐标系的Y轴和激光雷达的Z轴是平行的,只是有不同的正方向。然而,在VoD数据采集车辆的传感器设置中,摄像机存在微小倾斜,因此VoD数据集将物体围绕激光雷达-Z轴的旋转角作为标注信息(可能会给数据处理带来一定的麻烦)。

        激光雷达坐标系和雷达坐标系也不是完全对齐的。

你可能感兴趣的:(目标检测,自动驾驶)