文章目录

  • 一、KITTI数据集简介
    • 1.1 介绍
    • 1.2 下载
  • 二、数据解析
    • 2.0 数据集结构
    • 2.1 ImageSets
    • 2.2 Testing & Training
      • 2.2.1 calib
      • 2.2.2 image_2
      • 2.2.3 label_2
      • 2.2.4 planes
      • 2.2.5 velodyne
  • 三、数据集的下载和组织
  • 四、可视化
    • 4.1 CloudCompare软件
    • 4.2 PCL库
  • 参考

一、KITTI数据集简介

1.1 介绍

  • 文章链接
    《Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite (2012)》

Kitti的数据采集车,顶上是一个64线的velodyne激光雷达,前面有四个摄像头分别是cam0~3,其中0和1是灰度相机,2和3是rgb相机。激光雷达的坐标系遵循右手定则,而相机坐标系遵循左手定则,如图所示。
KITTI数据集解析和可视化
为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。
KITTI数据集解析和可视化
四个相机经过了严格的位置矫正,保证yz同值,x同轴,如果想进行lidar与camera的坐标系转换,默认以cam0为基准,即如果是cam0转到velodyne,就直接转,如果是cam其他转velodyne,则先要转到cam0,再转到velodyne,相机和激光的坐标转换后续会详细说明。

具体的传感器参数如下:
2 × PointGray Flea2 grayscale cameras (FL2-14S3M-C), 1.4 Megapixels, 1/2” Sony ICX267 CCD, global shutter
2 × PointGray Flea2 color cameras (FL2-14S3C-C), 1.4 Megapixels, 1/2” Sony ICX267 CCD, global shutter
4 × Edmund Optics lenses, 4mm, opening angle ∼ 90◦, vertical opening angle of region of interest (ROI) ∼ 35◦
1 × Velodyne HDL-64E rotating 3D laser scanner, 10 Hz, 64 beams, 0.09 degree angular resolution, 2 cm distance accuracy, collecting ∼ 1.3 million points/second, field of view: 360◦ horizontal, 26.8◦ vertical, range: 120 m
1 × OXTS RT3003 inertial and GPS navigation system, 6 axis, 100 Hz, L1/L2 RTK, resolution: 0.02m / 0.1◦

为了方便传感器数据标定,规定坐标系方向如下 :

1.2 下载

  • 数据集官网
    数据集官网下载地址
  • 百度网盘下载链接
    链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw
    提取码:grys
    建议使用百度网盘的下载链接(因为文件特别大,而且官网的下载速度很慢。)

进入官网,下图红色框标记的为我们需要的数据:

其中彩色图像数据、点云数据、相机矫正数据均包含training(7481)和testing(7518)两个部分,标签数据只有training数据。
KITTI数据集解析和可视化

二、数据解析

2.0 数据集结构

按照官方给出的OpenPCDet中的KITTI数据集的组织方法,排布数据集

data
│──  kitti
│  │── ImageSets
│  │── testing
│  │  ├── calib & image_2 & velodyne
│  │── training
│  │  ├── calib & image_2 & label_2 & planes & velodyne

2.1 ImageSets

数据集列表信息,一般包括如下3部分:

2.2 Testing & Training

2.2.1 calib

calib文件是相机、雷达、惯导等传感器的矫正数据。以“000001.txt”文件为例,内容如下:

P0: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 0.000000000000e+00 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.875744000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 4.485728000000e+01 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.163791000000e-01 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.745884000000e-03
P3: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.395242000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.199936000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.729905000000e-03
R0_rect: 9.999239000000e-01 9.837760000000e-03 -7.445048000000e-03 -9.869795000000e-03 9.999421000000e-01 -4.278459000000e-03 7.402527000000e-03 4.351614000000e-03 9.999631000000e-01
Tr_velo_to_cam: 7.533745000000e-03 -9.999714000000e-01 -6.166020000000e-04 -4.069766000000e-03 1.480249000000e-02 7.280733000000e-04 -9.998902000000e-01 -7.631618000000e-02 9.998621000000e-01 7.523790000000e-03 1.480755000000e-02 -2.717806000000e-01
Tr_imu_to_velo: 9.999976000000e-01 7.553071000000e-04 -2.035826000000e-03 -8.086759000000e-01 -7.854027000000e-04 9.998898000000e-01 -1.482298000000e-02 3.195559000000e-01 2.024406000000e-03 1.482454000000e-02 9.998881000000e-01 -7.997231000000e-01
1、将 Velodyne 坐标中的点 x 投影到左侧的彩色图像中 y,使用公式 y = P2 * R0_rect * Tr_velo_to_cam * x
2、将 Velodyne 坐标中的点 x 投影到右侧的彩色图像中 y,使用公式 y = P3 * R0_rect * Tr_velo_to_cam * x
3、将 Velodyne 坐标中的点 x 投影到编号为 0 的相机(参考相机)坐标系中,使用公式 R0_rect * Tr_velo_to_cam * x
4、将 Velodyne 坐标中的点 x 投影到编号为 0 的相机(参考相机)坐标系中,再投影到编号为 2 的相机(左彩色相机)的照片上,使用公式 P2 * R0_rect * Tr_velo_to_cam * x

2.2.2 image_2

image文件以8位PNG格式存储,图集如下:
KITTI数据集解析和可视化

2.2.3 label_2

label文件是KITTI中object的标签和评估数据,以“000001.txt”文件为例,包含样式如下:

Truck 0.00 0 -1.57 599.41 156.40 629.75 189.25 2.85 2.63 12.34 0.47 1.49 69.44 -1.56
Car 0.00 0 1.85 387.63 181.54 423.81 203.12 1.67 1.87 3.69 -16.53 2.39 58.49 1.57
Cyclist 0.00 3 -1.65 676.60 163.95 688.98 193.93 1.86 0.60 2.02 4.59 1.32 45.84 -1.55
DontCare -1 -1 -10 503.89 169.71 590.61 190.13 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 511.35 174.96 527.81 187.45 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 532.37 176.35 542.68 185.27 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 559.62 175.83 575.40 183.15 -1 -1 -1 -1000 -1000 -1000 -10

​ 每一行代表一个object,每一行都有16列分别表示不同的含义,具体如下:

2.2.4 planes

# Plane
Width 4
Height 1
-1.851372e-02 -9.998285e-01 -5.362310e-04 1.678761e+00

2.2.5 velodyne

velodyne文件是激光雷达的测量数据(绕其垂直轴(逆时针)连续旋转),以“000001.bin”文件为例,内容如下:

8D 97 92 41 39 B4 48 3D 58 39 54 3F 00 00 00 00
83 C0 92 41 87 16 D9 3D 58 39 54 3F 00 00 00 00 
2D 32 4D 42 AE 47 01 3F FE D4 F8 3F 00 00 00 00 
37 89 92 41 D3 4D 62 3E 58 39 54 3F 00 00 00 00 
E5 D0 92 41 12 83 80 3E E1 7A 54 3F EC 51 B8 3D 
7B 14 70 41 2B 87 96 3E 50 8D 37 3F CD CC 4C 3E 
96 43 6F 41 7B 14 AE 3E 3D 0A 37 3F E1 7A 14 3F 
2F DD 72 41 5E BA C9 3E 87 16 39 3F 00 00 00 00 
FA 7E 92 41 5E BA 09 3F 58 39 54 3F 00 00 00 00 
66 66 92 41 EC 51 18 3F CF F7 53 3F 00 00 00 00 
A4 70 92 41 77 BE 1F 3F CF F7 53 3F 00 00 00 00 
A4 70 92 41 8D 97 2E 3F 58 39 54 3F 00 00 00 00 
...

点云数据以浮点二进制文件格式存储,每行包含8个数据,每个数据由四位十六进制数表示(浮点数),每个数据通过空格隔开。一个点云数据由四个浮点数数据构成,分别表示点云的x、y、z、r(强度 or 反射值),点云的存储方式如下表所示:
KITTI数据集解析和可视化

三、数据集的下载和组织

  • 百度网盘下载链接
    链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw
    提取码:grys

从百度网盘下载如下框出的文件。
KITTI数据集解析和可视化

其中 xxx.zipxxx.z01xxx.z02xxx.z03 是分包文件,必须全部下载后才能够解压。

然后通过xftp把下载的压缩包全部上传到云服务器上。
分包文件的解压方法,以 data_object_image_2.zip 为例子。

# 先将压缩包合并
zip -s 0 data_object_image_2.zip --out image_02.zip
# 再次解压
unzip image_02.zip

解压之后的文件结构如下所示。
KITTI数据集解析和可视化
如下所示,在kitti文件夹下新建testingtraining 目录。然后把上一步解压后得到的data_object_image2/testing/image_2 文件放入到data/kitti/testing 文件夹下;把上一步解压后得到的data_object_image2/training/image_2 文件放入到data/kitti/training 文件夹下。

然后新建一个文件夹ImageSets,并进入到该文件夹下。
下载官方已经提供好的划分kitti数据集文件:test.txt train.txt val.txt trainval.txt

# test.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/test.txt --no-check-certificate --content-disposition -O test.txt
# train.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/train.txt --no-check-certificate --content-disposition -O train.txt
# val.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/val.txt --no-check-certificate --content-disposition -O val.txt
# trainval.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/trainval.txt --no-check-certificate --content-disposition -O trainval.txt

KITTI数据集解析和可视化

最终的组织架构如下图所示:
KITTI数据集解析和可视化

有时候我们可能多个项目都使用到同一个数据集,这时候可以建立软链接

比如我的原始kitti数据集下载到了/data/zyw/project/data/kitti , 但是我在mmdetection3d/data 文件夹下需要kitti文件夹。
为了节省内存开销,我们不直接复制,而是创建软链接。

cd mmdetection3d/data
ln –s  /data/zyw/project/data/kitti  kitti

四、可视化

4.1 CloudCompare软件

CloudCompare功能强大,直接安装这个软件是最简单的可视化方法。

提取码:zfjo

4.2 PCL库

通过配置PCL来可视化点云,相对比较复杂,具体可以参考下面的博客~
【PCL1.11.0+win10+vs2019】环境配置/ 点云格式转换及可视化

参考

参考博客:
【1】https://blog.csdn.net/i6101206007/article/details/11225682
【2】https://blog.csdn.net/u013086672/article/details/103913361

发表回复