下载地址与描述

数据集官网下载地址:
The KITTI Vision Benchmark Suite

目标3d检测框的回归 kitti 3d目标检测_3D

3D目标检测数据集由7481个训练图像和7518个测试图像以及相应的点云数据组成,包括总共80256个标记对象。
上图红色框标记的为我们需要的数据,分别是彩色图像数据(12GB)点云数据(29GB)相机矫正数据(16MB)标签数据(5MB)。其中彩色图像数据、点云数据、相机矫正数据均包含training(7481)和testing(7518)两个部分,标签数据只有training数据。

需要填写邮箱,然后会给发送下载链接(但是很慢)!!!
可以通过—KITTI数据集下载(百度云)

3D点云用于目标检测的算法历程

目标3d检测框的回归 kitti 3d目标检测_目标3d检测框的回归_02

目标3d检测框的回归 kitti 3d目标检测_点云_03

其中上半部分主要是利用了图片以及激光雷达作为输入。
然后下半部分是仅仅利用了激光雷达的点云作为输入,其中同理分为两种类型,一是基于无规则的点云直接提取特征做检测即Point-based,另一种是Voxel-based,其主要先把无规则点云处理为有规则的,然后再提取特征。

LIDARImage融合的开山之作无疑是百度的MV3D,而后便是AVOD,它们的检测精度大于LIDAR OnlyVoxelNet

这里注意的是AP主要是car的检测,再者行人检测还没有这么好的效果,因为很多物体和人比较相似所以误差较大。

KITTI数据集的采集

KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。

目标3d检测框的回归 kitti 3d目标检测_php_04

 为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。为了方便传感器数据标定,规定坐标系方向如下:
• Camera: x = right, y = down, z = forward
• Velodyne: x = forward, y = left, z = up
• GPS/IMU: x = forward, y = left, z = up

目标3d检测框的回归 kitti 3d目标检测_目标3d检测框的回归_05

 (雷达采集数据时,是绕着竖直轴旋转扫描,只有当雷达旋转到与相机的朝向一致时会触发相机采集图像。不过在这里无需关注这一点,直接使用给出的同步且校准后的数据即可,它已将雷达数据与相机数据对齐,也就是可以认为同一文件名对应的图像数据与雷达点云数据属于同一个场景。)

数据集介绍

1)images文件

目标3d检测框的回归 kitti 3d目标检测_点云_06

 2)velodyne文件

根据devkit_odometry中readme.txt中所述:雷达点云是以二进制形式存储的,后缀为.bin,每行数据表示一个雷达点:x, y, z, intensity,其中(x, y, z)单位为米,intensity为回波强度,范围在0 ~ 1.0之间。回波强度大小与雷达距离物体的远近和物体本身的反射率有关,一般情况下用不到,此处可以忽略intensity这一列的内容。图像数据是以.png格式存储的,可直接查看。图像已经进行了畸变校正,在此以双目视觉的左图像为例,进行雷达点云与图像数据的融合处理。

目标3d检测框的回归 kitti 3d目标检测_php_07

效果如下: 

目标3d检测框的回归 kitti 3d目标检测_目标3d检测框的回归_08

 3)calib文件

目标3d检测框的回归 kitti 3d目标检测_目标3d检测框的回归_09

目标3d检测框的回归 kitti 3d目标检测_php_10

目标3d检测框的回归 kitti 3d目标检测_点云_11

 注:这里可以将label中照相机标注的3D目标检测框的中心坐标通过上面公式映射到点云中物体的真实检测框,这样的话都是三位坐标系的转换,那么对于2D目标检测框如何从点云中来得到的,这是个问题!!!!------这段理解是错的。。

应该是:

雷达坐标系变换到xx号相机的图像坐标系的公式

设X为雷达坐标系中的齐次坐标,Y为对应在xx号相机的图像坐标系的齐次坐标,则

目标3d检测框的回归 kitti 3d目标检测_数据_12

 以上是对于raw data,对于目标检测其转换是:

目标3d检测框的回归 kitti 3d目标检测_点云_13

 (R|T) : 雷达坐标系 -> 0号相机坐标系
R_rect_00: 0号相机坐标系 -> 矫正后的0号相机坐标系
P_rect_0x: 矫正后的0号相机坐标系 -> x号相机的图像平面
从上面可以看出主要是从三维到二维平面的转换!!!
效果图:待!!
重要注意:补充理解:
在经过了之后的资料查询,有了之间的大体关系的认知,先重新将部分理解的梳理一遍:
校准文件如上面所示,其主要包括,从3D激光雷达的点云坐标x映射到0号相机的坐标系Tr_velo_to_cam * x(因为两者的三维空间的坐标系的标定是不一样的,可能不对);R0_rect Tr_velo_to_cam * x,其中校准是为了使多个摄像机的图像位于同一平面上,即所对应的图片*;**然后可以将其投影到对应的图片上,P_rect_2 * R0_rect *Tr_velo_to_cam * x ,注(等价将投影面向左移动同时保持针孔位置不变,即可投影到彩色摄像机的图片上)。
然后在这里的两个测试
第一个测试是将3D边界框从标签文件投影到图像上
第二项测试是将点云坐标中的一个点投影到图像上。
代数很简单,如下所示
第一个等式用于将3D绑定框投影到与camera_2图像协调的参考摄像机中。
第二个方程将Velodyne坐标点投影到camera_2图像中。
y_image = P2 * R0_rect * R0_rot * x_ref_coord
y_image = P2 * R0_rect * Tr_velo_to_cam * x_velo_coord
在上面,R0_rot是要从对象坐标映射到参考坐标的旋转矩阵。”
重要注意:补充理解2:
内参矩阵+外参矩阵点云到相机的坐标转换