3D目标检测实战 | 图解KITTI数据集与数据格式

目录

  • 1 数据集简介
  • 2 传感器坐标系
  • 3 数据集下载与组织
  • 4 数据内容说明
    • 4.1 矫正文件calib
    • 4.2 图像文件image
    • 4.3 点云文件velodyne
    • 4.4 标签文件label
    • 4.5 平面文件plane

1 数据集简介

KITTI数据集是一个广泛应用于自动驾驶和计算机视觉领域的公开数据集。该数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院共同创建,旨在提供丰富的场景和多种类型的传感器数据,包括立体摄像头、激光雷达和GPS/IMU定位。该数据集用于评测

  • 立体图像(stereo)
  • 光流(optical flow)
  • 视觉测距(visual odometry)
  • 3D物体检测(object detection)
  • 3D跟踪(tracking)

等计算机视觉技术在车载环境下的性能。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据

3D目标检测旨在从传感器数据中准确地定位和识别三维空间中的物体。KITTI数据集针对3D目标检测任务提供了14999张图像以及对应的点云,其中7481组用于训练,7518组用于测试,针对场景中的汽车、行人、自行车三类物体进行标注,共计80256个标记对象。

KITTI数据集的广泛使用推动了3D目标检测算法的发展,为自动驾驶技术的进步做出了重要贡献。同时,这个数据集也成为了研究人员之间共享和比较算法性能的标准基准,促进了该领域的研究和创新。

2 传感器坐标系

KITTI数据集使用的数据采集车如下所示,该图展示了传感器传感器之间的变换,以及车体在地面上方的高度

在这里插入图片描述

其中的传感器配置为

  • 2个一百四十万像素的PointGray Flea2灰度相机
  • 2个一百四十万像素的PointGray Flea2彩色相机
  • 1个64线的Velodyne激光雷达,10Hz,角分辨率为0.09度,每秒约一百三十万个点,水平视场360°,垂直视场26.8°,至多120米的距离范围
  • 4个Edmund的光学镜片,水平视角约为90°,垂直视角约为35°
  • 1个OXTS RT 3003的惯性导航系统(GPS/IMU),6轴,100Hz,分别率为0.02米,0.1°

主要传感器的坐标系定义如下所示,后续进行数据可视化时,需要根据车体信息和坐标系定义进行数据转换

在这里插入图片描述

3 数据集下载与组织

主要下载资源如下

  • KITTI官网:3D目标检测
  • AVOD:道路平面信息

在这里插入图片描述

下载完成主要的数据集后,可以按训练集和测试集组织为如下格式

.data
└── kitti├── test│   ├── calib│   ├── image_2│   └── velodyne└── train├── calib├── image_2├── label_2├── planes└── velodyne

4 数据内容说明

4.1 矫正文件calib

calib是相机、雷达、惯导等传感器的矫正数据或变换关系,以train/calib/000000.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

其中数据的含义是:

  • P 0 P_0 P0- P 4 P_4 P4:相机内参矩阵 R 3 × 4 \mathbb{R} ^{3\times 4} R3×4
    P i = [ f u i 0 c u i − f u i b i 0 f v i c v i 0 0 0 1 0 ] P_i=\left[ \begin{matrix} f_{u}^{i}& 0& c_{u}^{i}& -f_{u}^{i}b_i\\ 0& f_{v}^{i}& c_{v}^{i}& 0\\ 0& 0& 1& 0\\ \end{matrix} \right] Pi= fui000fvi0cuicvi1fuibi00
    其中参数 c u c_u cu c v c_v cv用于中心映射——将光轴与归一化成像面的交点,即成像面中心点映射到像素平面中心,其取决于拜耳阵列与光轴如何对齐。参数 f u f_u fu f v f_v fv用于归一化——将矩形的传感器阵列映射为正方形, b i b_i bi是第 i i i个相机沿 x x x方向距离0号相机的位移。序号含义如下
序号相机
0左边灰度相机
1右边灰度相机
2左边彩色相机
3右边彩色相机
  • R 0 r e c t R^{rect}_0 R0rect:立体矫正矩阵 R 3 × 3 \mathbb{R} ^{3\times 3} R3×3,在实际计算时在第四行和第四列添加全为0的向量,扩展为4x4的矩阵。 R 0 r e c t R^{rect}_0 R0rect用于立体视觉中使相机图像共面,详见计算机视觉教程6-1:图解双目视觉系统与立体校正原理
    在这里插入图片描述
  • T r v e l o _ t o _ c a m Tr_{\mathrm{velo\_to\_cam}} Trvelo_to_cam:从雷达到0号相机的旋转平移矩阵 R 3 × 4 \mathbb{R} ^{3\times 4} R3×4,在实际计算时,需要添加一行 [ 0 , 0 , 0 , 1 ] [0,0,0,1] [0,0,0,1]齐次化为 R 4 × 4 \mathbb{R} ^{4\times 4} R4×4的矩阵
  • T r i m u _ t o _ v e l o Tr_{\mathrm{imu\_to\_velo}} Trimu_to_velo:从惯导或GPS装置到0号相机的旋转平移矩阵 R 3 × 4 \mathbb{R} ^{3\times 4} R3×4,在实际计算时,需要添加一行 [ 0 , 0 , 0 , 1 ] [0,0,0,1] [0,0,0,1]齐次化为 R 4 × 4 \mathbb{R} ^{4\times 4} R4×4的矩阵

利用上述矩阵可以将不同坐标系的数据相互转换,例如将雷达坐标系的点 x x x映射到左侧彩色相机可以使用

y = P 2 ⋅ R 0 r e c t ⋅ T r v e l o _ t o _ c a m ⋅ x y=P_2\cdot R^{rect}_0 \cdot Tr_{\mathrm{velo\_to\_cam}} \cdot x y=P2R0rectTrvelo_to_camx

即先将 x x x转换到0号相机,再进行0号相机立体矫正,最后投影到2号相机,即左侧彩色相机

4.2 图像文件image

image是以8位PNG格式存储的图像文件,以train/image_2/000000.png为例

在这里插入图片描述

4.3 点云文件velodyne

velodyne是以浮点二进制格式存储的激光雷达点云文件,每行包含8个浮点数数据,其中每个浮点数数据由四位十六进制数表示且通过空格隔开。一个点云数据由4个浮点数数据构成,分别表示点云的 x x x y y y z z z r r r(其中 x x x y y y z z z表示点云的三维坐标, r r r表示反射强度),以train/velodyne/000000.bin为例

8D97 9241 39B4 483D | 5839 543F 0000 0000 
83C0 9241 8716 D93D | 5839 543F 0000 0000
2D32 4D42 AE47 013F | FED4 F83F 0000 0000
3789 9241 D34D 623E | 5839 543F 0000 0000
E5D0 9241 1283 803E | E17A 543F EC51 B83D
...

4.4 标签文件label

label是标签文件,以train/label_2/000000.txt为例

Pedestrian 0.00 0 -0.20 712.40 143.00 810.73 307.92 1.89 0.48 1.20 1.84 1.47 8.41 0.01

训练数据共15列,每列的含义如下

  • 第1列 字符串:代表物体类别,总共有9类,分别是CarVanTruckPedestrianPerson_sittingCyclistTramMiscDontCare。其中DontCare表示该区域没有被标注,比如由于目标物体距离激光雷达太远。为了防止在评估过程中(主要是计算精确度precision),将本来是目标物体但因某些原因而没有标注的区域统计为假阳性,评估脚本会自动忽略DontCare区域的预测结果
  • 第2列 浮点数:代表物体是否被截断(truncated),数值在0(非截断)到1(截断)间浮动,数字表示指离开图像边界的程度
  • 第3列 整数:代表物体是否被遮挡(occluded),离散值0、1、2、3分别表示被遮挡的程度
  • 第4列 弧度:物体的观察角度(alpha),取值范围为 [ − π , π ] [-\pi, \pi ] [π,π],它表示在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机 y y y轴旋转至相机 z z z轴,此时物体方向与相机 x x x轴的夹角

在这里插入图片描述

  • 第5~8列 浮点数:物体的2D边界框大小(bbox),四个数分别是xmin、ymin、xmax、ymax(单位:pixel),表示2D边界框的左上角和右下角的坐标
  • 第9~11列 浮点数: 3D物体的尺寸(dimensions),三个数分别是高、宽、长(单位:米)
  • 第12-14列 浮点数: 3D物体在相机坐标系下的位置(location),三个数分别是 x x x y y y z z z(单位:米),特别注意的是,这里的xyz是在相机坐标系下3D物体的中心点位置,这里中心点位于底面中心
  • 第15列 弧度:3D物体的方向角(rotation_y),取值范围为 [ − π , π ] [-\pi, \pi ] [π,π],它表示在相机坐标系下,物体的全局方向角,也就是物体前进方向与相机坐标系x轴的夹角
  • 第16列 浮点数:目标检测的置信度(score),只在测试集中有

4.5 平面文件plane

planes是由AVOD生成的道路平面信息,其在训练过程中作为一个可选项,用来提高模型的性能,例如限制物体在道路平面上。以train/planes/000000.txt文件为例

# Matrix
WIDTH 4
HEIGHT 1
-7.051729e-03 -9.997791e-01 -1.980151e-02 1.680367e+00 

四个系数代表了平面方程系数 A A A B B B C C C D D D,即

A x + B y + C z + D = 0 Ax+By+Cz+D=0 Ax+By+Cz+D=0


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/140802.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch(Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合)

Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合 一、Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索。 1、Elasticsearch 搜索入门 …

6、SpringBoot_项目的打包与运行

七、SpringBoot项目的打包与运行 1.目前项目怎么运行的 通过浏览器访问idea 将jar部署到服务器 2.maven 打包项目 命令 mvn package使用命令后会得到如下的jar 3.程序运行 命令 java -jar 项目.jar启动如下 4.springboot打包需要插件 插件 <plugin><group…

【AI视野·今日Robot 机器人论文速览 第三十六期】Tue, 19 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 19 Sep 2023 (showing first 100 of 112 entries) Totally 112 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;In-Hand Object Rotation, RotateIt 提出了一种基于视觉与触觉的物体旋转朝向的方法…

vtk- 数据类型(一) 三角链实例代码

三角链实例代码 #include <iostream> #include <string> #include <regex> #include "tuex.h" #include "vtkCylinderSource.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkRendere…

Tensorflow-gpu保姆级安装教程(Win11, Anaconda3,Python3.9)

Tensorflow-gpu 保姆级安装教程&#xff08;Win11, Anaconda3&#xff0c;Python3.9&#xff09; 前言Tensorflow-gpu版本安装的准备工作(一)、查看电脑的显卡&#xff1a;(二) 、Anaconda的安装(三)、cuda下载和安装(四)、cudnn下载安装(五)、配置环境变量(六)、创建 tensorfl…

数据结构之【泛型】

泛型&#xff1a;定义阶段不明确具体类型&#xff0c;产生对象时明确具体类型。 //Object是Java中的最高参数统一化&#xff0c;能够接受所有的引用类型&#xff1b; //有了包装类的自动拆装箱之后&#xff0c;Object还能够接收基本类型数值&#xff08;自动装箱&#xff09; …

常见限流算法学习

文章目录 常见限流算法学习前言限流算法基本介绍固定窗口计数器限流算法计数器限流算法相关介绍计数器限流算法的实现&#xff08;基于共享变量&#xff09;计数器限流算法的实现&#xff08;基于Redis&#xff09; 滑动窗口计数器算法滑动时间窗口算法相关介绍介绍滑动时间窗口…

Python批量统计pdf中“中文”字符的个数

之前的文章提供了批量识别pdf中英文的方法,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文上。以及自动pdf英文转中文文档,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文下。以及Python统计pdf中英文单词的个数。    本文实现Python统计pdf中中文字符的…

SpringBoot项目(百度AI整合)——如何在Springboot中使用文字识别OCR入门

前言 前言&#xff1a;本系列博客尝试结合官网案例&#xff0c;阐述百度 AI 开放平台里的组件使用方式&#xff0c;核心是如何在spring项目中快速上手应用。 本文介绍如何在Springboot中使用百度AI的文字识别OCR 其他相关的使用百度AI的文章列表如下&#xff1a; 如何在Spri…

【iOS逆向与安全】插件开发之某音App直播间自动发666

1.目标 由于看直播的时候主播叫我发 666&#xff0c;支持他&#xff0c;我肯定支持他呀&#xff0c;就一直发&#xff0c;可是后来发现太浪费时间了&#xff0c;能不能做一个直播间自动发 666 呢&#xff1f;于是就花了几分钟做了一个。 2.操作环境 越狱iPhone一台 frida ma…

“构建完善的用户认证与数据交互系统“

目录 引言1.ElementUI完成登录注册1. 登录页面设计与实现2. 注册页面设计与实现 2.axios之get请求3.axios之post请求4.跨域问题的解决方案5.总结 引言 在现代Web应用程序开发中&#xff0c;用户认证和数据交互是至关重要的功能。本文将介绍如何使用ElementUI、axios和解决跨域…

【C++】STL详解(八)—— priority_queue的使用及模拟实现仿函数

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】STL…

11.外观模式

外观模式&#xff08;Facade&#xff09;&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。 UML 测试代码 #include <iostream> using namespace std;class SubSystemOne { pu…

Kafka 源码分析——Producer

文章目录 前言Producer 整体流程Producer 初始化Producer 发送流程执行拦截器逻辑获取集群元数据序列化选择分区消息累加进缓存消息发送 Producer缓冲区Producer 参数调优 前言 在 Kafka 中, 把产生消息的一方称为 Producer 即 生产者&#xff0c;它是 Kafka 的核心组件之一&a…

Spring面试题20:Spring怎样开启注解装配?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring怎样开启注解装配? 要在Spring中开启注解装配,需要进行以下几个步骤: 添加必要的依赖:在项目的构建工具(如Maven或Gradle)配置文件中…

WebGL 选中一个表面

目录 选中一个表面 示例程序&#xff08;PickFace.js&#xff09; 代码详解 gl.readPixels()见126行效果 gl.UNSIGNED_BYTE注意点 示例效果 选中一个表面 ​​​​​​​WebGL 选中物体_山楂树の的博客-CSDN博客可以使用同样的方法来选中物体的某一个表面。这一节在Pi…

苹果手表 Series 6 拆解

步骤 1 苹果手表 Series 6 拆解 Series 6&#xff08;右&#xff09;与具有一年历史的姐妹&#xff08;左&#xff09;的外部比较仅显示出细微的差异&#xff0c;但这就是拆卸的目的。我们已经知道这些细节&#xff1a; LTPO OLED Retina 显示屏针对常亮功能进行了优化——这次…

亚马逊 CodeWhisperer 初体验

1、CodeWhisperer 介绍 CodeWhisperer 是亚马逊出品的一款基于机器学习的通用代码生成器&#xff0c;可实时提供代码建议。类似 Cursor 和 Github Copilot 编码工具。 官网&#xff1a;AI 代码生成器 - Amazon CodeWhisperer - AWS 在编写代码时&#xff0c;它会自动根据您现…

【深度学习实验】前馈神经网络(三):自定义两层前馈神经网络(激活函数logistic、线性层算子Linear)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集 2. 激活函数logistic 3. 线性层算子 Linear 4. 两层的前馈神经网络MLP 5. 模型训练 一、实验介绍 本实验实现了一个简单的两层前馈神经网络 激活函数…

JavaScript(WebAPI)

目录 一.WebAPI 二.DOM 1.选中页面元素 2.事件 三.操作元素 获取修改元素内容 获取/修改表单元素属性 value type 获取/修改样式属性 1.修改内联样式 2.修改元素应用的CSS类名 四.操作节点 1.新增元素 2.删除元素 五.小结 六.案例 1.网页版本的猜数字 2.表白…