【MMDetection3D实战(3)】: KITTI 数据集介绍

文章目录

    • 1. 数据集介绍
    • 2 数据下载及准备
      • 2.1 下载并整理数据集
      • 2.2 传感器及坐标定义
      • 2.3 数据的标注
    • 3 MMDet3D 中的坐标系规范
    • 4 数据的处理及可视化
      • 4.1 数据处理
      • 4.2 点云读取和可视化
        • 4.2.1 点云的读取
        • 4.2.2 点云的可视化

1. 数据集介绍

KITTI数据集是3D目标检测中比较基础和常用的数据集,本文以KITTI数据集为例,简单的介绍下数据的标注的格式以及3D坐标系相关知识。

KITTI发布于2012年,距今也有10多年的历史了。它是针对无人驾驶任务构建的一套数据集和评价体系,其中包括2D和3D检测等一系列具体任务。
在这里插入图片描述

数据通过汽车搭载的光学相机、激光雷达等传感器采集而来,具体传感器包括:1个激光雷达,一系列相机,GPS去采集位置信息等。KITTI针对检测任务一共提供了14999张图像及对应的点云,其中7481组用于训练,7518组用于测试。KITTI标注的数据只有3个类别,分别是汽车、行人、自行车三类物体进行标注,在一万5千张图像上标注80256个物体。

官方地址:https://www.cvlibs.net/datasets/kitti/index.php

在这里插入图片描述
官方提供了一个视频demo,可以看到随着汽车的驾驶,它把图像数据以及对应场景的点云数据记录下来了。可以看到画面中有两条虚线,它表示前方90度范围的视角。视角实际上对应的就是相机能拍摄到的范围,点云即便是360度的,但它的标注也只标注了相机视角范围内。如果标到相机以外,点云的数据和相机就对应不上,数据就没有意义,因此点云没有提供相机以外的标注。

2 数据下载及准备

2.1 下载并整理数据集

在KITI官网,点击object标签,然后点击3d object就会显示出下载的页面,需要注册账号进行下载。
在这里插入图片描述

使用mmdet在KITTI数据集上训练,需要把下载的数据进行简单整理,整理成上图右侧的结构形式

  • 可以看到KITTI官网提供了很多项数据,通常我们会下载第一项Download left color images of object data set (12 GB)对应为左侧彩色相机拍摄的图像,一般做视觉任务就会用这个数据。将数据下载下来,划分训练和测试,分别放在testingtraining下面的image_2文件夹中。

  • 对于2-4项数据对应是别的相机采集的图像,通常我们是不用的

  • 第五项Download Velodyne point clouds, if you want to use laser information (29 GB)点云的数据,同样数据包含训练和测试,分别放在testingtrainning下对应存放点云的文件夹名为velodyne(和激光雷达传感器同名)。

  • 接下来是相机的calibration数据(Download camera calibration matrices of object data set (16 MB)),主要包含相机的内外参以及相机和雷达间坐标系转换的矩阵,然后将数据下载下来按照测试和训练分别放在testingtraining文件夹下的calib`文件夹下。

  • 然后还需要下载标注Download training labels of object data set (5 MB),标明了场景中的物体和标注框,标注框只在训练数据上用到,因此下载下来放到training下面的label_2`文件夹下。

由于完整的数据集比较大,这边也提供可一个mini版的kitti数据集, 下载地址:百度网盘,密码:9niw , 可以看到分别有3个文件夹:ImageSets,testing,training, 其中testing包含3个文件夹:calib(标定),image_2(图像),velodyne(标注);trainning下包含了4个文件夹:calib(标定),image_2(图像),velodyne(标注)以及标注label_2。数据集中一个文件名对应一个场景,image的文件名和label的文件名以及velodyne点云对应的文件名是一一对应的。

在这里插入图片描述
其中calib中存放的是一系列相机的校准矩阵,以及不同坐标系之间的旋转平移变换矩阵。
在这里插入图片描述

校准calib中000000.txt的数据

ImageSets文件夹下包含4个文件:train.txt,test.txt,trainval.txt,val.txt是数据集划分的列表。如下图所示:
在这里插入图片描述

2.2 传感器及坐标定义

在3D检测任务中坐标系以及坐标系之间的关系是非常复杂的,下图是数据采集KITTI数据的采集车和车身布置的一系类传感器定义以及他们之间的位置关系。
在这里插入图片描述
通常我们会关注上图中两个坐标系,一个是上图中蓝色对应的激光点云坐标系,另一个是红色相机坐标系。这两个坐标系都是三维的坐标系,从图中可以看出两个坐标系的X,Y,Z轴的定义是不一样的。对其中蓝色的激光点云坐标系,取x,y平面与地平面平行,z轴垂直向上;对于相机坐标系,会遵循图像坐标系的习惯,以图像平面为x,y,z轴向前(与行驶方向一致)。从右侧可以看到,相机坐标系和激光雷达坐标系之间还存在前后0.27m的位移,以及0.06m水平方向的位移。如果我们希望把激光点云坐标系中的一个点转换到相机坐标系中,首先需要将x,y,z做旋转然后在平移。

除了X,Y,Z坐标以外,3D检测还需要针对每个物体给出它在水平方向的转角。在KITTI数据集中转角的定义是在相机坐标系下的,当一个物体朝向X轴正半轴,我们定义此时转角为0度。当一个物体朝向相机Z轴正半轴,将其定义-90度。为什么Z轴的正半轴定义为-90度呢, 这个是由右手坐标系来决定的,我们拿出右手,拇指朝向y轴正方向,4指朝向x轴,然后做一个握拳的动作,会发现4指朝向z轴的负半轴转过去。所以实际上朝着Z轴的负半轴转角度是增加的,是正角度, 所以反过来z轴的正半轴对应的就是负的角度。

2.3 数据的标注

在这里插入图片描述
一张图片会对应一个标注文件,上图是图片以及它对应的标注。图片中有多个物体,就有多行标注。标注中一行数据对应的含义如下:
在这里插入图片描述

  • 第1列:物体的类别type
  • 第2列: 截断程度(truncated), 表示处于边缘目标的截断程度,取值范围为0~1,0表示没有截断,取值越大表示截断程度越大。处于边缘的目标可能只有部分出现在视野当中,这种情况被称为截断。
  • 第3列遮挡程度(occlude),取值为(0,1,2,3)。0表示完全可见,1表示小部分遮挡,2表示大部分遮挡,3表示未知(遮挡过大)
  • 第4列: 观测角度(alpha),取值范围为(-pi, pi)`, 在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】升级打怪之路 Day 17:二叉树题型 —— 二叉树的序列化与反序列化

今日题目: 297. 二叉树的序列化与反序列化652. 寻找重复的子树 目录 LC 297. 二叉树的序列化与反序列化 【classic】 ⭐⭐⭐⭐⭐1)序列化逻辑2)反序列化逻辑 LC 652. 寻找重复的子树 【稍有难度】 今天主要学习了二叉树的序列化和反序列化相关…

数字逻辑-时序逻辑电路一

一、实验目的 (1)熟悉触发器的逻辑功能及特性。 (2)掌握集成D和JK触发器的应用。 (3)掌握时序逻辑电路的分析和设计方法。 二、实验仪器及材料 三、实验内容及步骤 1、用D触发器(74LS74&am…

使用Docker在windows上安装IBM MQ

第一步、安装wsl 详见我另一篇安装wsl文章。 第二步、安装centos 这里推荐两种方式,一种是从微软商城安装,一种是使用提前准备好的镜像安装,详见我另一篇windos下安装centos教程。 第三步、安装windows下的Docker desktop 详见我另一篇wind…

TQ15EG开发板教程:运行MPSOC+AD9361

目录 1,下载工程需要使用的文件 2,编译以及修改工程 3,获取生成BOOT.BIN所需要的3个文件 3.1生成bit文件 3.2生成elf文件 3.3生成fsbl文件 4,生成boot.bin文件 5,上板测试 6,切换FMC接口 7&#…

自适应窗口图片轮播HTML代码

自适应窗口图片轮播HTML代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 代码下载地址 自适应窗口图片轮播HTML代码

分享 | 计算机组成与设计学习资料+CPU设计源码+实验报告

1.引言 百度网盘资源链接: 链接:https://pan.baidu.com/s/1Ww6u_l1L6DMXofC2HxfETw?pwdyqd6 提取码:yqd6 2.学习资源预览 2.1 包含学习手册四本: - 计算机原理与设计:Verilog HDL版 - 计算机组成与设…

开源分子对接程序rDock使用方法(2)-高通量虚拟筛选HTVS

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、rDock用于高通量虚拟筛选HTVSMulti-Step Protocol HTVS步骤及注意事项 二、rDock中Multi-Step Protocol用于HTVS的用法Step 1. Exhaustive dockingStep 2. sdreport summaryStep 3. 运行rbhtfi…

Linux之NFS网络文件系统详解

华子目录 简介NFS背景介绍注意 生产应用场景NFS工作原理示例图流程 NFS的使用安装配置文件主配置文件分析权限参数/etc/exports文件内容示例 实验1nfs账户映射实验2实验3 autofs自动挂载服务产生原因安装配置文件分析挂载参数 实验4实验5:本机自动挂载光驱 简介 NF…

专升本 C语言笔记-08 goto语句

goto语句 无条件跳转运算符(凡是执行到goto语句会直接跳转到 定义的标签) 缺点&#xff1a;滥用goto语句将会导致逻辑混乱&#xff0c;导致系统崩溃等问题! ! ! 代码演示 int i 0; //定义标签 jump(名字随便起哦) jump:printf("%d ",i); i; if(i < 10)goto j…

如何处理Android悬浮弹窗双击返回事件?

目录 1 前言 1.1 准备知识 1.2 问题概述 2 解决方案 3 代码部分 3.1 动态更新窗口焦点 3.2 窗口监听返回事件 3.3 判断焦点是否在窗口内部 3.4 窗口监听焦点移入/移出 1 前言 1.1 准备知识 1&#xff09;开发环境&#xff1a; 2D开发环境&#xff1a;所有界面或弹窗…

Burp Suite Professional Error No response received from remote server.

记录burp suite 抓到包-改包-放包之后出现的问题&#xff1a; Burp Suite Professional Error No response received from remote server. 重新下载软件&#xff0c;没有进行汉化&#xff0c;好用了。汉化真坑。

buuctf warmup 超详细

目录 1.代码审计&#xff1a; 2.逻辑分析 3.总结分析 4.分析记录 5.疑点解答 1.代码审计&#xff1a; <?phphighlight_file(__FILE__);class emmm //定义了一个类{public static function checkFile(&$page) 类里面又申明创建…

论文阅读——RemoteCLIP

RemoteCLIP: A Vision Language Foundation Model for Remote Sensing 摘要——通用基础模型在人工智能领域变得越来越重要。虽然自监督学习&#xff08;SSL&#xff09;和掩蔽图像建模&#xff08;MIM&#xff09;在构建此类遥感基础模型方面取得了有希望的结果&#xff0c;但…

【JavaScript】面试手撕柯里化函数

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引入柯里化定义实现快速使用柯里化的作用提高自由度bind函数 参考资料 引入 上周…

目标跟踪SORT算法原理浅析

SORT算法 Simple Online and Realtime Tracking(SORT)是一个非常简单、有效、实用的多目标跟踪算法。在SORT中&#xff0c;仅仅通过IOU来进行匹配虽然速度非常快&#xff0c;但是ID switch依然非常严重。 SORT最大特点是基于Faster RCNN的目标检测方法&#xff0c;并利用卡尔…

跟着GPT学设计模式之桥接模式

说明 桥接模式&#xff0c;也叫作桥梁模式&#xff0c;英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中&#xff0c;桥接模式是这么定义的&#xff1a;“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就…

【Ubuntu-20.04】OpenCV-3.4.16的安装并对图片与视频处理

【Ubuntu-20.04】OpenCV-3.4.16的安装并对图片与视频处理 一、安装OpenCV-3.4.161.下载OpenCV-3.4.16安装包2.将安装包放到/home&#xff0c;并解压3.使用 cmake 安装 opencv4.配置环境5.查看 opencv 的版本信息 二、处理图片&#xff08;一&#xff09;创建文件夹 code &#…

深入理解Python中的面向对象编程(OOP)【第129篇—Scikit-learn的入门】

深入理解Python中的面向对象编程&#xff08;OOP&#xff09; 在Python编程领域中&#xff0c;面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种强大而灵活的编程范式&#xff0c;它允许开发者以对象为中心组织代码&#xff0c;使得…

错误: 找不到或无法加载主类 Hello.class

在运行这串代码 public class Hello{ public static void main(String[] args){ System.out.println("Hello world!"); } } 的时候出现报错&#xff1a;错误: 找不到或无法加载主类 Hello.class 入门级错误 1.公共类的文件名和类名不一致 hello.j…

2024国际数字体育科技与电子竞技博览会在深圳前海隆重召开

随着科技的飞速发展,数字体育与电子竞技日益成为全球关注的焦点。3月2日,由中国电子商会数字体育与电子竞技专业委员会指导、赛艾特会展(深圳)有限公司、深圳国合华鑫科技发展有限公司、通联(深圳)数字科技集团有限公司联合主办的2024国际数字体育科技与电子竞技博览会新闻发布…