KITTI数据集简介与使用

article/2025/10/23 13:00:25

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.数据采集平台

  如图-1所示,KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。具体的传感器参数如下[2] :

  • 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所示为传感器的配置平面图。为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。为了方便传感器数据标定,规定坐标系方向如下[2] : 
    • Camera: x = right, y = down, z = forward 
    • Velodyne: x = forward, y = left, z = up 
    • GPS/IMU: x = forward, y = left, z = up 
        这里写图片描述 
                        图-2 传感器设置

3.Dataset详述

  图-3展示了KITTI数据集的典型样本,分为 ’Road’, ’City’, ’Residential’, ’Campus’ 和’Person’五类。原始数据采集于2011年的5天,共有180GB数据。 
这里写图片描述 
                    图-3 KITTI数据集的样本,展现KITTI数据集的多样性。

3.1 数据组织形式

  论文[2] 中提及的数据组织形式,可能是早期的版本,与目前KITTI数据集官网公布的形式不同,本文稍作介绍。 
如图-4所示,一个视频序列的所有传感器数据都存储于data_drive文件夹下,其中date和drive是占位符,表示采集数据的日期和视频编号。时间戳记录在Timestamps.txt文件。 
    这里写图片描述 
                    图-4 数据组织形式 
  对于从KITTI数据集官网下载的各个分任务的数据集,其文件组织形式较为简单。以Object detection为例,下图是Object Detection Evaluation 2012标准数据集中left color images文件的目录结构,样本分别存储于testing和training数据集。

data_object_image_2 
|── testing 
│ └── image_2 
└── training 
└── image_2

  下图是training数据集的label文件夹目录结构。

training/ 
└── 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标注文件如图-5所示。 
    这里写图片描述 
                    图-5 object detection样本与标注 
  为了理解标注文件各个字段的含义,需要阅读解释标注文件的readme.txt文件。该文件存储于object development kit (1 MB)文件中,readme详细介绍了子数据集的样本容量,label类别数目,文件组织格式,标注格式,评价方式等内容。下面介绍数据格式的label描述: 
    这里写图片描述 
  注意,’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介绍,结果评估方法等详细内容。

devkit_object 
|── cpp 
│ |── evaluate_object.cpp 
│ └── mail.h 
|── mapping 
│ |── train_mapping.txt 
│ └── train_rand.txt 
|── matlab 
│ |── computeBox3D.m 
│ |── computeOrientation3D.m 
│ |── drawBox2D.m 
│ |── drawBox3D.m 
│ |── projectToImage.m 
│ |── readCalibration.m 
│ |── readLabels.m 
│ |── run_demo.m 
│ |── run_readWriteDemo.m 
│ |── run_statistics.m 
│ |── visualization.m 
│ └── writeLabels.m

4.评价准则Evaluation Metrics

4.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] : 
    这里写图片描述 
                    图-6 Stereo和optical flow的预测结果与评估

4.2 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框之间的重合度来度量: 
            这里写图片描述 
  如果则说明检测到的边框和图像上该类的ground truth匹配,此时。为了防止重复检测,如果边框与ground truth多个边框重合度都大于50%,取重合度最大的视为对的匹配。检测算法对真实物体的重复检测,只算其中一次为正确预测,其余的重复预测视为错误检测。 
  对于一个给定类别,N是该类所有图像上的真实物体数目。物体检测任务采用PR曲线和AP值评估模型精度,给定不同阈值t,得到不同的召回率和精确率,从而可以绘制P-R曲线,计算每个检测器的AP值: 
            这里写图片描述 
  评价精确率AP是P-R曲线的积分值,当t是离散的情况时,AP就是不同t的召回率对应的精确率的平均值。为了简化计算,PASCAL VOC2007采用插值的方法,使用11个等间距recall上的精确值的平均值作为分类器的AP。召回率取值[0,0.1,…,1],计算公式如下: 
            这里写图片描述 
  每个召回率r上的精确值由大于r所对应精确率的最大值插值来决定: 
            这里写图片描述 
  对于KITTI目标检测任务,仅仅评估目标高度大于25pixel的预测结果,将易混淆的类别视为同一类以减少假阳性(false positives)率,并且使用41个等间距recall上的精确值的平均值近似计算分类器的AP。 
对于物体方向预测,文献[1] 提出了一种新颖的方法:平均方向相似性,Average Orientation Similarity (AOS)。该指标被定义为: 
            这里写图片描述 
  其中,r代表物体检测的召回率recall。在因变量r下,方向相似性s∈[0,1]被定义为所有预测样本与ground truth余弦距离的归一化: 
            这里写图片描述 
  其中D(r)表示在召回率r下所有预测为正样本的集合,∆θ(i) 表示检出物体i的预测角度与ground truth的差。为了惩罚多个检出匹配到同一个ground truth,如果检出i已经匹配到ground truth(IoU至少50%)设置δi = 1,否则δi = 0。

5. 数据使用实践

  KITTI数据集的标注信息更加丰富,在实际使用中可能只需要一部分字段,或者需要转换成其他数据集的格式。例如可以将KITTI数据集转换成PASCAL VOC格式,从而更方便地使用Faster RCNN或者SSD等先进的检测算法进行训练。转换KITTI数据集需要注意源数据集和目标数据集的格式,类别标签的重新处理等问题,实现细节建议参考Jesse_Mx[4] 和github上manutdzou的开源项目[5] ,这些资料介绍了转换KITTI数据集为PASCAL VOC格式,从而方便训练Faster RCNN或者SSD等模型。


http://chatgpt.dhexx.cn/article/jAJd286g.shtml

相关文章

计算机视觉数据集介绍:KITTI数据集

KITTI数据集简介 KITTI数据集是由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,利用组装的设备齐全的采集车辆对实际交通场景进行数据采集获得的公开数据集。该数据集包含丰富多样的传感器数据(有双目相机、64线激光雷达、GPS/IMU组合导航定位系…

盘阿里云ECS内挖矿程序

1.二话不说先上图,cpu一路飙升在100% 2.进入服务器top命令查看占用cpu的异常进程 3.找到目标PID kill -9 10478 干掉这个进程,没几秒这个Macron的进程又死灰复燃 4.定位Macron目录 ls -l /proc/$PID/exe 定位到发现目标文件为/tmp/Macron,…

记录_第一次解决挖矿程序入侵问题

记录第一次处理,服务器也被挖矿程序入侵,原本是不想处理的,但是阿里云一直给我警告,然后再不处理服务器给我停了,这导致我立马打开电脑进行处理,怎么处理的我也不会啊,就一直百度,还…

centos8 处理挖矿程序攻击

ll /usr/bin/top* top命令被修改,并且隐藏了两个进程 chattr命令不可用,先删除e2fsprogs再重新安装。 yum remove e2fsprogs #rpm -qa|grep e2fsprogs yum -y install e2fsprogs #yum install e2fsprogs-1.45.6-2.el8.x86_64 解锁TOP文件并恢复 c…

案例分享—服务器被植入挖矿程序排查

主机的操作系统是CentOS7,应用架构是JavaMySQLRedis。客户描述问题是有一个从下午2点到凌晨的秒杀活动。秒杀系统开始的时候是可以正常运行的,但是到了晚上7点就突然无法使用了,前台提交秒杀请求后,后端无响应,最终超时…

解决阿里云服务器提示挖矿程序风险

最近阿里云天天提示我挖矿,可是我是良民啊,还要封我号,把我吓够呛啊。 后台通过CPU 被挖矿,Redis 竟是内鬼!_CSDN云计算-CSDN博客 这篇文章有所启发,大家可以看下 目前没提示,后期再提示再更新…

记录解决阿里云ES服务器提示挖矿程序

前言 突然收到阿里云的短信提醒,说服务器出现了恶意挖矿程序,还好这台上都是测试服务器,之前也做了数据备份,可以放心去整,不过还是得小心严重操作前记得备份下 处理过程 1、检查服务器负载与CPU利用率&#xff0c…

服务器提示有挖矿程序,是怎么回事

在提示我有挖矿程序后,我去阿里云的安全中心,看到有三个病毒进程警告,但是都结束进程失败,然后我询问售后工程师,售后工程师给我的回复时格式化云盘。因为没有找到更好的解决方式,就选择了重新安装系统和格…

【解决阿里云服务器提示挖矿程序风险2022】

解决阿里云服务器提示挖矿程序风险2022-10 搜索删除含system-private相关的所有文件 如图:system-private....2.清除定时任务 3.修改文件可执行权限 4.清除路由表中隐患IP 5.在不使用云服务器的情况下可以关闭ssh端口 参考资料: 解决阿里云服务器提示挖…

[linux] 挖矿程序的停止与清除

问题描述 实验室的linux服务器有一位用户的密码比较弱,被试出来了,然后攻击者在我们的服务器上运行了挖矿程序 gpustat查询后发现:四张显卡都被占满,GPU显存占用不大,但使用率为100% 此时如果直接kill那个占用显卡的…

Ubuntu服务器清除挖矿程序

言简意赅,直入主题 早晨ssh登录服务器的时候发现出现情况 screen创建的会话本来还在跑代码的,重新进入一看被terminal了 一脸懵逼地输入nvidia-smi 我了个擦!两张显卡占用一样,而且每秒都是100%,并且都只有一个程序在…

liunx挖矿程序排查思路

最近收到一个阿里云安全告警,在这里写一下自己的排查思路,与大家交流一下: 安全告警邮件 查看异常情况 输入top,输入shift P会按照cpu的使用率大小从大到小进行排序,发现有异常进程7140与7129 [rootwww-site-ec-6 ]# ps -ef…

阿里云服务器中了挖矿程序应该如何清除

阿里云服务器中了挖矿程序如何处理?云安全中心安全告警短信提醒云服务器中了挖矿程序怎么处理?护云盾来详细说下阿里云服务器挖矿程序的解决方法,一种是使用云安全中心自动处理,另一种方式是自行手动清除。 阿里云服务器挖矿程序解决方法 如果你的阿里云服务器中了挖矿程…

阿里云服务器被挖矿程序侵入问题

一、起因 公司需要自行管理代码,所以搞了个阿里云服务器装Gitlab,装的时候版本是13.9.4(在Gitlab挖矿漏洞的版本内)。一直正常使用,然后半夜突然收到阿里云告警短信,说服务器可能存在挖矿程序,部…

移除挖矿程序过程记录

前言: 早上发现一个服务器的挖矿程序预警消息: 那么接下来开始处理这个问题, 废话不说直接上有效的操作了; 1、查看系统定时任务及修改: 查看系统定时任务:方式一:crontab -lcrontab -e&…

如何检查并清除挖矿程序

1.检查cpu使用率 根据cpu使用率曲线确定2.11日可能被注入挖矿程序,根据top确定挖矿程序进程kdevtmpfsi 2.确定挖矿进程源程序位置 find / -name kdevtmpfsi ll 查看安装时间,对比cpu突然拔升时间 3.检查psadm2用户的合法性 4.检查root或者psadm2用…

挖矿程序的处理方式及步骤

概述 随着币圈市场交易的活跃,币价也被日益推高。 从BTC兑美元的在线交易平台上可以看出,BTC的价格屡创新高,这与MG的2W亿脱不了干系。 “重赏之下,必有勇夫”,在互联网圈里也同样适用啊。 所以服务器被植入挖矿程序已经不是很稀奇的事情了,很多服务器因为漏洞、弱密码、…

【树莓派】树莓派系统安装

上一个项目被网络的问题搞得头痛,使用了STM32F407往服务器上扔数据,结果发现一直没有办法连接上服务器,一直在发送arp查找MAC地址,最后使用了树莓派搭建了一个局域网络,先连接树莓派然后进行转发,才连接上服…

树莓派安装Windows for ARM

树莓派安装Windows for ARM 准备1.树莓派2/3/4/400(RAM>2GB)2.WoR 获取Windows for ARM镜像安装启动 准备 1.树莓派2/3/4/400(RAM>2GB) 2.WoR WoR(Windows on ARM)是一款简化树莓派安装Windows的软件。它有一个十分友善操作页面,对于懒癌晚期的患者是一个福…

树莓派安装Docker方法

再次提醒,如果是raspberry系统已经集成安装,就不需要再次安装了。 docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化&…