OpenPCDet中的kitti数据预处理
kitti数据集预处理一共生成6个内容,其中包括5个pkl文件以及一个gt_database目录。
本文主要对这6部分文件的数据内容进行解析讲解。
- kitti_infos_train.pkl
- kitti_infos_trainval.pkl
- kitti_infos_val.pkl
- kitti_infos_test.pkl
- kitti_dbinfos_train.pkl
- gt_database
kitti_infos_train.pkl文件解析
该pkl文件中主要存储训练集中的每个图像和对应点云中包含的点云信息、图像信息、标定参数以及目标的标签数据,整体数据结构如下:
[
{(第一个样本)
point_cloud:{
num_features: 使用的特征数 3 或者 4 (xyz 还是xyzi等等)
lidar_idx: "000000" (雷达bin文件对应的文件名称)
}
image: {
image_idx : 图像文件对应的文件名称,
image_shape: 图像的大小高宽
}
calib: {
P2: 矫正后的0号相机相对于2号相机的投影矩阵
RO_rect: 0号相机矫正矩阵,为了让各个相机可以共面,这样代码中的深度计算才正确
Tr_velo_to_cam: 0号相机坐标系相对于雷达坐标系的变换矩阵
}
annos: {
name: 当前样本中对应的检测目标的名称数组
truncated: 当前样本中对应的检测目标的截断系数数组。 系数越大,截断越多
occluded: 遮挡系数 0,1,2 越大遮挡越大
alpha: 将目标转至正前方观测其与相机x轴之间的角度
bbox: 目标在2号相机下的box框的x1y1x2y2格式
demensions: 物体的长高宽
location: 目标框的底部中心点在矫正后的0号坐标系下的坐标
rotation_y: 从目标行驶方向前方观测目标和相机坐标系x轴的夹角
score:置信度 一般不使用
difficulty: 难易程度,该参数按照图像的高度、截断程度、遮挡程度来进行综合区分得到
index: 对应数组中的检测目标在总的目标中的id
gt_boxes_lidar: 雷达坐标系下的物体的x y z l w h yaw
num_points_in_gt: 各个目标框中存在的点个数
}
},
{(第二个样本)
......
},
]
kitti_infos_val.pkl文件解析
该pkl文件数据格式内容与kitti_infos_train.pkl文件相同,用于存储验证集的样本数据信息
kitti_infos_trainval.pkl文件解析
该pkl文件数据格式内容与kitti_infos_train.pkl文件相同,用于存储训练集和验证集总体的样本数据信息
kitti_infos_test.pkl文件解析
该pkl文件主要存储测试集的数据信息,相比于验证集和训练集,文件中没有annos标签类别属性。整体的数据结构如下:
[
{(第一个样本)
point_cloud:{
num_features: 使用的特征数 3 或者 4 (xyz 还是xyzi等等)
lidar_idx: "000000" (雷达bin文件对应的文件名称)
}
image: {
image_idx : 图像文件对应的文件名称,
image_shape: 图像的大小高宽
}
calib: {
P2: 矫正后的0号相机相对于2号相机的投影矩阵
RO_rect: 0号相机矫正矩阵,为了让各个相机可以共面,这样代码中的深度计算才正确
Tr_velo_to_cam: 0号相机坐标系相对于雷达坐标系的变换矩阵
}
},
{(第二个样本)
......
},
]
gt_database文件夹解析
gt_database文件夹中的pkl文件总个数为训练集中的总目标个数。其中每个pkl文件中存放了当前目标框中的内部局部点云数据信息,点云的数据为以当前目标的gt_box中心点为原点去中心化操作后得到的xyzi数据,pkl的文件名格式为
000000_Pedestrian_0.bin
其中:
000000: 代表该目标所对应的图像或者点云文件的名称id
Pedestrian: 代表该目标所对应的类别名称
0: 代表该目标在当前000000文件中的目标id(假设一共8个检测目标,该目标为第0个)
kitti_dbinfos_train.pkl文件解析
该pkl文件中主要存储训练数据集中所有检测目标的字典dict,dict的key代表了目标的类别名称,value为一个列表list格式,list大小为整个训练集中属于该类别的目标的总个数,list元素对应一个新的dict,存放了训练数据的相关属性,整体结构如下所示。
{
检测物体类别1(Pedestrain):[
{
name:"类别名称",
path:"该目标对应的点云bin文件的路径,对应的gt_database文件夹下的文件路径",
image_idx: "对应的图像的文件名称",
gt_idx: "对应的gt类别列表中的第几个类别",
box3d_lidar:"雷达坐标系下的物体的x y z l w h yaw",
num_points_in_gt:"当前gt框中包含的点个数",
difficulty:"难易程度,该参数按照图像的高度、截断程度、遮挡程度来进行综合区分得到,",
bbox:"该目标在2号相机图像上的2d box左上右下坐标",
score:"测试才会使用,一般不使用",
},
{
......
}
],
检测物体类别2(Car):[
....
]
}