complex-YOLOv4(一):Kitti数据集解读

complex-YOLOv4(一):Kitti数据集解读

      • 一、kitti数据集下载
      • 二、kitti数据集解读
        • 2.1 data_drive文件
        • 2.2 data_drive_tracklets标签文件
          • 2.2.1 每帧标注
          • 2.2.2 对轨迹标注
        • 2.3 data_calib文件
      • 三、Kitti数据集分析
      • 四、Kitti官方development kit

一、kitti数据集下载

下载链接:
http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
complex-YOLOv4(一):Kitti数据集解读_第1张图片
下载29G点云文件,12G的左RGB文件用于可视化,16MB的矫正文件calib,5MB的labels文件。

二、kitti数据集解读

下载好文件后,将文件整理为如下组织形式:
complex-YOLOv4(一):Kitti数据集解读_第2张图片
下面按照文件组织形式进行介绍。

2.1 data_drive文件

a.总括:
分别包含了点云文件(bin文件)、彩色图像(无压缩png)、灰度图像(无压缩png)和IMU/GPS文件(txt)。
采集设备安装如下所示:
complex-YOLOv4(一):Kitti数据集解读_第3张图片
1.红色都是采集装备。三角形代表彩色/灰度相机,圆形是激光雷达,长方形为惯性测量单元。
2.图中标注了各个采集装置的坐标,用于后续坐标之间的转化(蓝色箭头表示了各个转化矩阵)。
3.图中还标出了每种采集装置的坐标系情况。值得注意的是,相机坐标系的xyz和其他两者不同。
4.每种文件下都包含了时间戳文件,用于同步数据。同步数据使用激光雷达时间戳为基准,当激光雷达向正前方时,触发摄像机拍照,实现硬同步;IMU/GPS无法实现硬同步,但是可以通过找对应的最近帧进行定位的线性插值,实现软同步。
但是我们使用时,直接下载同步/校准数据(synced+rectified data)就可以不考虑同步和校准工作。

在这里插入图片描述

b.重点介绍一下点云数据bin:
点云数据以浮点二进制文件格式存储,每行包含8个数据,每个数据由四位十六进制数表示(浮点数),每个数据通过空格隔开。一个点云数据由四个浮点数数据构成,分别表示点云的x、y、z、r(强度or反射值),点云的存储方式如下表所示。
complex-YOLOv4(一):Kitti数据集解读_第4张图片
bin转pcd见之前的博客,这里不再介绍。
c.
png图片已经提前裁剪发动机罩和天空区域。

2.2 data_drive_tracklets标签文件

有两种标签格式。

2.2.1 每帧标注

complex-YOLOv4(一):Kitti数据集解读_第5张图片
complex-YOLOv4(一):Kitti数据集解读_第6张图片
解释:

type:代表类别
truncated:表示目标是否被截断
occluded:表示物体是否被遮挡
alpha:目标的观察角度
取值范围为:-pi ~ pi(单位:rad),它表示在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机z轴,此时物体方向与相机x轴的夹角,如图所示。complex-YOLOv4(一):Kitti数据集解读_第7张图片
bbox:图像中的GT框
dimensions:点云中的三维GT框
location:3D物体的位置(location)分别是x、y、z(单位:米),特别注意的是,这里的xyz是在相机坐标系下3D物体的中心点位置。
rotation_y:请注意,我们只提供偏航角,而其他两个角度则假定接近于零。即,只关注下图中的rz角度。类似下面图中的yaw角度。
complex-YOLOv4(一):Kitti数据集解读_第8张图片complex-YOLOv4(一):Kitti数据集解读_第9张图片
score:只有在测试时才生成score。

2.2.2 对轨迹标注

complex-YOLOv4(一):Kitti数据集解读_第10张图片
对象是轨迹。

2.3 data_calib文件

文件夹下包含三个txt文件。
在这里插入图片描述
cam_to_cam,包含各相机的标定参数

S_xx: 1x2 矫正前xx号相机的图片尺寸
K_xx: 3x3 矫正前xx号相机的标定参数
D_xx: 1x5 矫正前xx号相机的畸变系数
R_xx: 3x3 外参,xx号相机的旋转矩阵
T_xx: 3x1 外参,xx号相机的平移矩阵
S_rect_xx: 1x2 矫正后XX号相机的图片尺寸
R_rect_xx: 3x3 旋转矩阵,用于矫正xx号相机,使得图像平面共面(原话是make image planes co-planar)。使用时使用零填充到4*4大小,最后一个元素设为1。
P_rect_0x: 3x4 投影矩阵,用于从矫正后的0号相机坐标系 投影到 X号相机的图像平面。
这里只用到最后两个矩阵R_rect和P_rect

velo_to_cam,从雷达坐标系到0号相机坐标系的转换

R: 3x3 旋转矩阵
T: 3x1 平移矩阵
delta_f 和delta_c 已被弃用

由此可以得出从雷达坐标系变换到xx号相机的图像坐标系的公式:
设X为雷达坐标系中的齐次坐标 X = [x y z 1]’,对应于xx号相机的图像坐标系的齐次坐标Y = [u v 1]’,则:
在这里插入图片描述
其中
Tvelo to cam : 雷达坐标系 -> 0号相机坐标系(外参)
R_rect_00: 0号相机坐标系 -> 矫正后的0号相机坐标系
P_rect_0x: 矫正后的0号相机坐标系 -> x号相机的图像平面(内参)
具体实现代码见主页另外的文章。

三、Kitti数据集分析

通过几个直方图来分析Kitti数据集:
1)数据集分布不均匀。
complex-YOLOv4(一):Kitti数据集解读_第11张图片
car和pedestrian占数据集的一大半,导致训练结果倾向于这两大类。
2)每一帧包含的目标数量较少
complex-YOLOv4(一):Kitti数据集解读_第12张图片
大多数帧包含的目标数都在0~5区间内。
3)包含的高速运动物体较少
complex-YOLOv4(一):Kitti数据集解读_第13张图片

大多数目标的速度都在0~10m/s

四、Kitti官方development kit

下载文件complex-YOLOv4(一):Kitti数据集解读_第14张图片
更改文件路径后直接运行。
matlabR2019a运行结果
run_demoTracklets

图1:目标框在摄像机范围内
complex-YOLOv4(一):Kitti数据集解读_第15张图片
图二:目标框不在摄像机范围内

bashrun_demoVelodyne

鼠标移到某个点上还可以显示对应的坐标。

KITTI已经帮我们准备了这么多好用的可视化工具,后续的工作再也不用担心可视化啦!

你可能感兴趣的:(三维目标检测,三维目标识别,KITTI)