View-of-Delft(以下简称VoD)数据集简介与Dev-kit的github页面:GitHub - tudelft-iv/view-of-delft-dataset
Dataset Preparation | The View of Delft dataset
如下图所示为数据采集车辆及其传感器设置(包含坐标系定义)。
可见传感器包含一个4D雷达,一个64线激光雷达和一个分辨率为的彩色立体相机。需要注意的是三者的坐标系定义。
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)
其中相同名称的文件,若其后附有相同的编号,表示两者内容相同。
ImageSets:其中train.txt内包含用于训练的帧的编号,val.txt、trainval.txt、test.txt类似;
calib: 存储了每一帧(包含训练、验证或测试帧)的校准信息,包含相机内参、相对激光雷达或雷达的坐标变换矩阵(外参)等信息。
velodyne:存储了每一帧的激光雷达或雷达点云数据(bin格式);
image_2:存储了每一帧的图像(jpg格式);
label_2:存储了每一帧的标注信息(包含边界框参数、类别等)。
需要重点介绍的是velodyne点云数据格式、calib信息和label_2信息:
激光雷达点云数据共含4个维度,依次为坐标和反射强度。
雷达点云数据共含7个维度,依次为坐标、 RCS值、相对径向速度、补偿后的相对径向速度(绝对径向速度)以及相对时间ID (例如,radar_3frames文件夹中的点云来自相邻的3帧,其中来自当前帧的点的时间ID为0,来自前一帧的点的时间ID为-1,以此类推)。
以激光雷达文件夹下的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个数,可以组成相机的内参矩阵()P0~P3(由于只有1个相机,故P0~P3完全相同,可只考虑其中一个如P2);第5行的9个数可以组成0号相机的修正矩阵()R0_rect;第6行的12个数可组成激光雷达坐标系到相机坐标系的变换矩阵()Tr_velo_to_cam。注意第7行为空,可能是为了和KITTI数据集的格式匹配。
将上述矩阵扩维至(即将上述矩阵放置于4阶单位阵的左上角)。则可以通过下列方式使用这些矩阵来进行坐标系转换:
设为某点在激光雷达/雷达坐标系中的坐标,则其在相机坐标系中的坐标可以按照
计算,其中,;其在图像坐标系中的坐标可以按照
计算,其中,其中为深度。
对于雷达文件夹下的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)有所不同,在这里对应的是雷达坐标系到相机坐标系的变换矩阵。
以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) | 物体的观测角(弧度),范围为 [, ] |
经过对标注文件的验证,得到观测角的计算公式为 暂不知几何意义 |
5~8 | 2D边界框(bbox) | 图像中物体的2D边界框,包含左、上、右、下像素坐标 |
该项由3D边界框自动生成:将边界框的八个角点投影到图像上,其外接矩形在图像范围内的部分即为2D边界框 |
9~11 | 尺寸(dimensions) | 3D物体尺寸:高、宽、长(单位:) |
即激光雷达坐标系下的z_size, y_size, x_size或图像坐标系下的y_size, z_size, x_size |
12~14 | 位置(location) | 3D物体在相机坐标系中的, , 位置(单位:) |
对应的是边界框底部中心的坐标 |
15 | 旋转角(rotation) | 绕激光雷达坐标系轴的旋转角(弧度),范围为[, ] |
当物体朝向与激光雷达坐标系轴负方向【即对齐时的相机坐标系轴正方向】重合时旋转角为0 |
最后一项固定为1,可以理解为分类分数。
需要注意的是,KITTI devkit假设相机坐标系的轴和激光雷达的轴是平行的,只是有不同的正方向。然而,在VoD数据采集车辆的传感器设置中,摄像机存在微小倾斜,因此VoD数据集将物体围绕激光雷达轴的旋转角作为标注信息(可能会给数据处理带来一定的麻烦)。
激光雷达坐标系和雷达坐标系也不是完全对齐的。