资讯详情

KITTI 3D目标检测数据集解析(完整版)

  1. KITTI官网
  2. Vision meets Robotics: The KITTI Dataset

1. KITTI数据集概述

1.1 传感器配置

??拜耳阵列是由于彩色相机的成像(Bayer Pattern)在插值处理过程中,彩色图像分辨率低,光敏度低,采集车配备了两组双目相机,一组灰度,一组彩色。个人猜测,为了增加相机的水平视角,每个相机镜头前都安装了一个光学镜头。

传感器类型 详细信息
灰度相机 2台140像素的PointGray Flea2灰度相机, FL2-14S3M-C
彩色相机 2台140万像素PointGray Flea2彩色相机, FL2-14S3C-C
光学镜头 4个Edmund光学镜头,焦距4mm,90°水平孔径,35°垂直孔径角
激光雷达 1台Velodyne HDL-64E扫描频率为10的激光Hz,64线,0.09°角度分辨率,2cm探测精度,每秒130万点,探测距离120m
GPS/IMU惯导系统 1个OXTS TR3003惯导,6轴,1000采集频率Hz,L1/L2信号波段,0.02m和0.1°的精度

??如下图所示,传感器图所示。

1.2 数据采集

??KITTI整个数据集是在德国卡尔斯鲁厄采集的,采集时长6小时。KITTI官网发布的数据约占收集总数的25%。除测试集中相关数据片段外,根据场景可分为道路、城市、居民区、校园和行人五类。 ??采集车的路径如下图所示,用红、蓝、黑区分GPS红色是信号质量最高的精度RTK矫正;蓝色无矫正信号;黑色缺失GPS该部分数据已从数据集中删除。

  1. 图像:采用8bit PNG格式保存。将原始图像的引擎盖和天空部分剪掉,并根据相机参数进行畸变矫正,最终图像约为50万像素。
  2. 激光:逆时针旋转,保存浮点数二进制文件。激光点保存 ( x , y , z ) (x,y,z) (x,y,z)坐标和反射率 r r r平均每帧12万个激光点。
  3. 图像与激光同步:相机曝光时间由激光控制,当激光扫描到前面(即相机朝向角度)时,会触发相机快门,KITTI记录激光三次戳、旋转开始和结束以及触发相机曝光的时间。

1.3 数据标注

??对于相机视野中的每一个动态目标,KITTI基于激光坐标系的3D标注信息,定义汽车、货车、 卡车、行人、坐着的人、自行车、有轨电车等7种目标类型,拖车、滑板车等其他少数目标统一归类为Misc”类别。3D标记信息包括目标尺寸、世界坐标和偏航角(默认情况下翻滚角和俯仰角等于0)。

1.4 传感器标定

??尽量减少时间带来的系统偏差,KITTI每天收集数据后,所有传感器都会重新校准。

??使用激光雷达时间戳作为基准类同步其他传感器。对于相机,通过激光雷达触发相机快门来减少动态目标的偏差。GPS/IMU无法同步,但由于采集频率高,最大时间误差只有5ms。所有传感器的时间戳使用系统时钟记录。

??四个相机的光心均对齐到同一平面。由于枕形畸变的成像,畸变矫正图像从同一平面进行 1392 × 512 1392\times512 1392×512裁剪到 1224 × 370 1224\times370 1224×370像素大小。

  首先根据左侧灰度相机的位置安装激光雷达,然后基于选择50个手工选点的标定误差进行最优化,并根据KITTI立体视觉榜单Top3方法的性能变化来保证标定的鲁棒性。


2. 3D目标检测数据集概述

2.1 数据下载

  3D目标检测数据集包含7481张训练图片,7518张测试图片,以及相应的点云数据,共包含80256个标注目标。对应的官方下载路径如下(建议复制链接用迅雷下载):

  1. Download left color images of object data set (12 GB)
  2. Download the 3 temporally preceding frames (left color) (36 GB) (非必需)
  3. Download Velodyne point clouds, if you want to use laser information (29 GB)
  4. Download camera calibration matrices of object data set (16 MB)
  5. Download training labels of object data set (5 MB)
  6. Download object development kit (1 MB) (including 3D object detection and bird’s eye view evaluation code)

图片、激光点云、标注真值、标定参数通过图片序号一一对应。

2.2 数据解析

2.2.1 3D框标注

字段 字段长度 单位 含义
Type 1 - 目标类型
Truncated 1 - 目标截断程度:0~1之间的浮点数表示目标距离图像边界的程度
Occluded 1 - 目标遮挡程度:0~3之间的整数0:完全可见 1:部分遮挡 2:大部分遮挡 3:未知
Alpha 1 弧度 目标观测角: [ − p i , p i ] [-pi, pi] [−pi,pi]
Bbox 4 像素 目标2D检测框位置:左上顶点和右下顶点的像素坐标
Dimensions 3 3D目标尺寸:高、宽、长
Location 3 目标3D框坐标: ( x , y , z ) (x, y,z) (x,y,z),相机坐标系,
Rotation_y 1 弧度 目标朝向角: [ − p i , p i ] [-pi, pi] [−pi,pi]

  3D框标注信息格式如下,这里说明一下Alpha和Rotaion_y的区别和联系:

2.2.2 激光点云

  激光点云数据采用二进制存储,逐点保存,每个激光点对应4个float数据 ( x , y , z , r ) (x,y,z,r) (x,y,z,r),依次解析即可,python解析代码如下:

import numpy as np
import struct

def read_lidar_info(file_path):
    size = os.path.getsize(file_path)
    point_num = int(size / 16)
    assert point_num * 16 == size

    lidar_pt_list = np.zeros((point_num, 4), np.float)
    with open(file_path, 'rb') as f:
        for i in range(point_num * 4):
            data = f.read(4)
            val = struct.unpack('f', data)
            row = int(i / 4)
            col = i % 4
            lidar_pt_list[row][col] = val[0]
    lidar_pt_list = lidar_pt_list.transpose()

    return lidar_pt_list

2.2.3 标定数据

  为了尽可能减少标定的系统误差,KITTI每天都会重新对传感器进行一次标定,因此每张图片都有一个对应的txt标定参数文件,如下图所示。

参数名称 含义
P0~P3 3 × 4 3 \times 4 3×4的相机投影矩阵,0~3分别对应左侧灰度相机、右侧灰度相机、左侧彩色相机、右侧彩色相机
R0_rect 3 × 3 3 \times 3 3×3的旋转修正矩阵
Tr_velo_to_cam 3 × 4 3 \times 4 3×4的激光坐标系到Cam 0坐标系的变换矩阵
Tr_imu_to_velo 3 × 4 3 \times 4 3×4的IMU坐标系到激光坐标系的变换矩阵

  目标在相机坐标系下的坐标 X = ( x , y , z , 1 ) T X=(x,y,z,1)^T X=(x,y,z,1)T到图像像素坐标系 Y = ( u , v , 1 ) T Y=(u,v,1)^T Y=(u,v,1)T的投影遵循: Y = P r e c t ( i ) X Y=P^{(i)}_{rect}X Y=Prect(i)​X

  目标在激光坐标系下的坐标 X = ( x , y , z , 1 ) T X=(x,y,z,1)^T X=(x,y,z,1)T到图像像素坐标系 Y = ( u , v , 1 ) T Y=(u,v,1)^T Y=(u,v,1)T的投影遵循: Y = P r e c t ( i ) R r e c t ( 0 ) T v e l o c a m X Y=P^{(i)}_{rect}R^{(0)}_{rect}T^{cam}_{velo}X Y=Prect(i)​Rrect(0)​Tvelocam​X其中 P r e c t ( i ) P^{(i)}_{rect} Prect(i)​对应标定参数的P0~P3,因为这里使用的左侧彩色相机,所以用的是P2投影矩阵。另外, R r e c t ( 0 ) R^{(0)}_{rect} Rrect(0)​和 T v e l o c a m T^{cam}_{velo} Tvelocam​在标定文件中是 3 × 3 3\times 3 3×3的矩阵,实际使用时需要用0扩充到 4 × 4 4\times4 4×4大小,并赋值 R r e c t ( 0 ) ( 3 , 3 ) = 1 R^{(0)}_{rect}(3, 3)=1 Rrect(0)​(3,3)=1, T v e l o c a m ( 3 , 3 ) = 1 T^{cam}_{velo}(3,3)=1 Tvelocam​(3,3)=1。   最终效果如下:

标签: 1392传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台