易学智能

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2119|回复: 4

[转]KITTI数据集简介与使用

[复制链接]

22

主题

107

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
发表于 2018-8-27 15:08:09 | 显示全部楼层 |阅读模式
本帖最后由 马猴烧酒 于 2018-8-27 15:29 编辑

本文转载于https://blog.csdn.net/solomon1558/article/details/70173223/
1 KITTI数据集
    KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像(stereo),光流(optical flow),视觉测距(visual odometry),3D物体检测(object detection)和3D跟踪(tracking)等计算机视觉技术在车载环境下的性能。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,每张图像中最多达15辆车和30个行人,还有各种程度的遮挡与截断。整个数据集由389对立体图像和光流图,39.2 km视觉测距序列以及超过200k 3D标注物体的图像组成[1] ,以10Hz的频率采样及同步。总体上看,原始数据集被分类为’Road’, ’City’, ’Residential’, ’Campus’ 和 ’Person’。对于3D物体检测,label细分为car, van, truck, pedestrian, pedestrian(sitting), cyclist, tram以及misc组成。
2 数据采集平台

    如图2.0-1所示,KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。具体的传感器参数如下[2]
  1. 2 × PointGray Flea2 grayscale cameras (FL2-14S3M-C), 1.4 Megapixels, 1/2” Sony ICX267 CCD, global shutter
  2. 2 × PointGray Flea2 color cameras (FL2-14S3C-C), 1.4 Megapixels, 1/2” Sony ICX267 CCD, global shutter
  3. 4 × Edmund Optics lenses, 4mm, opening angle ∼ 90◦, vertical opening angle of region of interest (ROI) ∼ 35◦
  4. 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
  5. 1 × OXTS RT3003 inertial and GPS navigation system, 6 axis, 100 Hz, L1/L2 RTK, resolution: 0.02m / 0.1◦
复制代码
1.png
图2.0-1 数据采集平台
    如图2.0-2所示为传感器的配置平面图。为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。为了方便传感器数据标定,规定坐标系方向如下[2] :
  1. • Camera: x = right, y = down, z = forward
  2. • Velodyne: x = forward, y = left, z = up
  3. • GPS/IMU: x = forward, y = left, z = up
复制代码
2.png
图2.0-2 传感器设置
3 Dataset详述
    图-3展示了KITTI数据集的典型样本,分为 ’Road’, ’City’, ’Residential’, ’Campus’ 和’Person’五类。原始数据采集于2011年,共有180GB数据。
3.png
图3.0-1 KITTI数据集的样本
3.1 数据组织形式
    论文[2] 中提及的数据组织形式,可能是早期的版本,与目前KITTI数据集官网公布的形式不同,本文稍作介绍。
如图3.1-1所示,一个视频序列的所有传感器数据都存储于data_drive文件夹下,其中date和drive是占位符,表示采集数据的日期和视频编号。时间戳记录在Timestamps.txt文件。
   4.png
图3.1-1 数据组织形式
     对于从KITTI数据集官网下载的各个分任务的数据集,其文件组织形式较为简单。以Object detection为例,下图是Object Detection Evaluation 2012标准数据集中left color images文件的目录结构,样本分别存储于testing和training数据集。
  1. data_object_image_2
  2. |── testing
  3. │ └── image_2
  4. └── training
  5. └── image_2
复制代码
    下图是training数据集的label文件夹目录结构。
  1. training/
  2. └── label_2
复制代码
3.2 Annotations
     KITTI数据集为摄像机视野内的运动物体提供一个3D边框标注(使用激光雷达的坐标系)。该数据集的标注一共分为8个类别:’Car’, ’Van’, ’Truck’, ’Pedestrian’, ’Person (sit- ting)’, ’Cyclist’, ’Tram’ 和’Misc’ (e.g., Trailers, Segways)。论文[2] 中说明了3D标注信息存储于date_drive_tracklets.xml,每一个物体的标注都由所属类别和3D尺寸(height,weight和length)组成。当前数据集的标注存于每种任务子数据集的label文件夹中,稍有不同。
     为了说明KITTI数据集的标注格式,本文以Object detection任务的数据集为例。数据说明在Object development kit的readme.txt文档中。从标注数据的链接 training labels of object data set (5 MB)下载数据,解压文件后进入目录,每张图像对应一个.txt文件。一帧图像与其对应的.txt标注文件如图3.2-1所示。
5.png
图3.2-1object detection样本与标注

    为了理解标注文件各个字段的含义,需要阅读解释标注文件的readme.txt文件。该文件存储于object development kit (1 MB)文件中,readme详细介绍了子数据集的样本容量,label类别数目,文件组织格式,标注格式,评价方式等内容。下面介绍数据格式的label描述:
6.png
     注意,’DontCare’ 标签表示该区域没有被标注,比如由于目标物体距离激光雷达太远。为了防止在评估过程中(主要是计算precision),将本来是目标物体但是因为某些原因而没有标注的区域统计为假阳性(false positives),评估脚本会自动忽略’DontCare’ 区域的预测结果。
3.3 Development Kit
    KITTI各个子数据集都提供开发工具 development kit,该开发工具主要由cpp文件夹,matlab文件夹,mapping文件夹和readme.txt组成。下图以object detection任务的文件夹devkit_object为例,可以看到cpp文件夹主要包含评估模型的源代码evaluate_object.cpp。Mapping文件夹中的文件记录训练集到原始数据集的映射,从而开发者能够同时使用激光雷达点云,gps数据,右边彩色摄像机数据以及灰度摄像机图像等多模态数据。Matlab文件夹中的工具包含读写标签,绘制2D/3D标注框,运行demo等工具。Readme.txt文件非常重要,详述介绍了某个子数据集的数据格式,benchmark介绍,结果评估方法等详细内容。
3.4 评价准则Evaluation Metrics4.1 stereo与visual odometry任务
    KITTI数据集针对不同的任务采用不同的评价准则。对于立体图像和光流(stereo and optical flow),依据disparity 和end-point error计算得到平均错误像素数目(average number of erroneous pixels)。
    对于视觉测距和SLAM任务(visual odometry/SLAM),根据轨迹终点(trajectory end-point)的误差进行评估。传统的方法同时考虑平移和旋转的误差,KITTI分开评估[1] :
8.png
10.png
图3.4-1
  1. devkit_object
  2. |── cpp
  3. │ |── evaluate_object.cpp
  4. │ └── mail.h
  5. |── mapping
  6. │ |── train_mapping.txt
  7. │ └── train_rand.txt
  8. |── matlab
  9. │ |── computeBox3D.m
  10. │ |── computeOrientation3D.m
  11. │ |── drawBox2D.m
  12. │ |── drawBox3D.m
  13. │ |── projectToImage.m
  14. │ |── readCalibration.m
  15. │ |── readLabels.m
  16. │ |── run_demo.m
  17. │ |── run_readWriteDemo.m
  18. │ |── run_statistics.m
  19. │ |── visualization.m
  20. │ └── writeLabels.m
复制代码
图3.4-1 Stereo和optical flow的预测结果与评估

3.5 3D物体检测和方向预测
  目标检测需要同时实现目标定位和目标识别两项任务。其中,通过比较预测边框和ground truth边框的重叠程度(Intersection over Union,IoU)和阈值(e.g. 0.5)的大小判定目标定位的正确性;通过置信度分数和阈值的比较确定目标识别的正确性。以上两步综合判定目标检测是否正确,最终将多类别目标的检测问题转换为“某类物体检测正确、检测错误”的二分类问题,从而可以构造混淆矩阵,使用目标分类的一系列指标评估模型精度。
  KITTI数据集采用文献[3] 用到的平均正确率(Average Precision,mAP)评估单类目标检测模型的结果。PASCAL Visual Object Classes Challenge2007 (VOC2007)[3] 数据集使用Precision-Recall曲线进行定性分析,使用average precision(AP)定量分析模型精度。物体检测评估标准对物体漏检和错检进行惩罚,同时规定对同一物体重复且正确的检测只算一次,多余的检测视为错误(假阳性)。
  对于每一张样本和某一个给定类型的检测器,算法输出预测结果 ,表示检测出图像中有个物体,每个物体的位置信息和置信度分布是和。
  为了评估边界框定位的准确性,使用检测框与ground truth框之间的重合度来度量:
9.png

  如果则说明检测到的边框和图像上该类的ground truth匹配,此时。为了防止重复检测,如果边框与ground truth多个边框重合度都大于50%,取重合度最大的视为对的匹配。检测算法对真实物体的重复检测,只算其中一次为正确预测,其余的重复预测视为错误检测。
  对于一个给定类别,N是该类所有图像上的真实物体数目。物体检测任务采用PR曲线和AP值评估模型精度,给定不同阈值t,得到不同的召回率和精确率,从而可以绘制P-R曲线,计算每个检测器的AP值:
11.png

  评价精确率AP是P-R曲线的积分值,当t是离散的情况时,AP就是不同t的召回率对应的精确率的平均值。为了简化计算,PASCAL VOC2007采用插值的方法,使用11个等间距recall上的精确值的平均值作为分类器的AP。召回率取值[0,0.1,…,1],计算公式如下:             
10.png

  每个召回率r上的精确值由大于r所对应精确率的最大值插值来决定:
f.png
  对于KITTI目标检测任务,仅仅评估目标高度大于25pixel的预测结果,将易混淆的类别视为同一类以减少假阳性(false positives)率,并且使用41个等间距recall上的精确值的平均值近似计算分类器的AP。
对于物体方向预测,文献[1] 提出了一种新颖的方法:平均方向相似性,Average Orientation Similarity (AOS)。该指标被定义为:
       13.png
  其中,r代表物体检测的召回率recall。在因变量r下,方向相似性s∈[0,1]被定义为所有预测样本与ground truth余弦距离的归一化:
          14.png

  其中D(r)表示在召回率r下所有预测为正样本的集合,∆θ(i) 表示检出物体i的预测角度与ground truth的差。为了惩罚多个检出匹配到同一个ground truth,如果检出i已经匹配到ground truth(IoU至少50%)设置δi = 1,否则δi = 0。
4. 数据使用实践

  KITTI数据集的标注信息更加丰富,在实际使用中可能只需要一部分字段,或者需要转换成其他数据集的格式。例如可以将KITTI数据集转换成PASCAL VOC格式,从而更方便地使用Faster RCNN或者SSD等先进的检测算法进行训练。转换KITTI数据集需要注意源数据集和目标数据集的格式,类别标签的重新处理等问题,实现细节建议参考Jesse_Mx[4] 和github上manutdzou的开源项目[5] ,这些资料介绍转换KITTI数据集为PASCAL VOC格式,从而方便训练Faster RCNN或者SSD等模型。
Reference
[1] Andreas Geiger and Philip Lenz and Raquel Urtasun. Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite. CVPR, 2012
[2] Andreas Geiger and Philip Lenz and Christoph Stiller and Raquel Urtasun. Vision meets Robotics: The KITTI Dataset. IJRR, 2013
[3] M. Everingham, L.Van Gool, C. K. I.Williams, J.Winn, and A. Zisserman. The PASCAL Visual Object Classes Challenge 2011 (VOC2011) Results.
[4] Jesse_Mx.SD: Single Shot MultiBox Detector 训练KITTI数据集(1).
http://blog.csdn.net/jesse_mx/article/details/65634482
[5]manutdzou.manutdzou/KITTI_SSD.https://github.com/manutdzou/KITTI_SSD
附录
    不同类别物体在数据集中出现的频率(上图); 对于两个主要类别(车辆,行人)主要的方向统计直方图(如下图)     
10.png

    每张图中不同类别物体出现频率统计如下图所示
11.png

    分别为速度,加速度(排除静止状态)统计直方图;视频序列长度统计直方图;每种场景(e.g., Campus, city)的帧数统计直方图如下

13.png


回复

使用道具 举报

10

主题

82

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2018-9-15 09:06:41 | 显示全部楼层
自动驾驶数据集主要解决哪些任务呢?
回复

使用道具 举报

4

主题

33

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-10-8 08:38:32 | 显示全部楼层
污妖王 发表于 2018-9-15 09:06
自动驾驶数据集主要解决哪些任务呢?

应该包含目标检测,强化学习等内容
回复

使用道具 举报

9

主题

47

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2018-10-9 08:36:55 | 显示全部楼层
很棒的数据集
回复

使用道具 举报

22

主题

107

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
 楼主| 发表于 2018-10-10 08:35:24 | 显示全部楼层

嗯嗯,用来练练手
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易学智能

GMT+8, 2024-4-25 12:23 , Processed in 0.044820 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表