kitti数据集在3D目标检测中的入门_kitti3d数据集-程序员宅基地

技术标签: 可视化  点云  计算机视觉  深度学习  

数据集官网下载地址:
http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
在这里插入图片描述
3D目标检测数据集由7481个训练图像和7518个测试图像以及相应的点云数据组成,包括总共80256个标记对象。
上图红色框标记的为我们需要的数据,分别是彩色图像数据(12GB)、点云数据(29GB)、相机矫正数据(16MB)、标签数据(5MB)。其中彩色图像数据、点云数据、相机矫正数据均包含training(7481)和testing(7518)两个部分,标签数据只有training数据。
需要填写邮箱,然后会给发送下载链接(但是很慢)!!!
可以通过—KITTI数据集下载(百度云)
https://blog.csdn.net/u013086672/article/details/103910266

一:目前3D点云在目标检测的算法历程

在这里插入图片描述
其中,point representation、Voxel representation、graph representation的详解见参考链接7。
在这里插入图片描述

  • 其中上半部分主要是利用了图片以及激光雷达作为输入,例如F-PointNet网络先从2D图片上检测出目标,然后投影到3D点云中。但是这种方法存在遮挡等问题。
  • 然后下半部分是仅仅利用了激光雷达的点云作为输入,其中同理分为两种类型,一是基于无规则的点云直接提取特征做检测即Point-based,另一种是Voxel-based,其主要先把无规则点云处理为有规则的,然后再提取特征。
  • 这里注意的是AP主要是car的检测,再行人检测其没有还这么好的效果,因为很多物体和人比较相似所以误差较大。

二:kitti数据集的采集

KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。 在这里插入图片描述
为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。为了方便传感器数据标定,规定坐标系方向如下:
• Camera: x = right, y = down, z = forward
• Velodyne: x = forward, y = left, z = up
• GPS/IMU: x = forward, y = left, z = up
在这里插入图片描述
(雷达采集数据时,是绕着竖直轴旋转扫描,只有当雷达旋转到与相机的朝向一致时会触发相机采集图像。不过在这里无需关注这一点,直接使用给出的同步且校准后的数据即可,它已将雷达数据与相机数据对齐,也就是可以认为同一文件名对应的图像数据与雷达点云数据属于同一个场景。)

三:数据集介绍

  • 1)images文件
    在这里插入图片描述
  • 2)velodyne文件
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    效果图如下:
    在这里插入图片描述
  • 3)calib文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述注:这里可以将label中照相机标注的3D目标检测框的中心坐标通过上面公式映射到点云中物体的真实检测框,这样的话都是三位坐标系的转换,那么对于2D目标检测框如何从点云中来得到的,这是个问题!!!!------这段理解是错的。。
    应该是:
    雷达坐标系变换到xx号相机的图像坐标系的公式
    设X为雷达坐标系中的齐次坐标,Y为对应在xx号相机的图像坐标系的齐次坐标,则
    在这里插入图片描述
    以上是对于raw data,对于目标检测其转换是:
    在这里插入图片描述
    (R|T) : 雷达坐标系 -> 0号相机坐标系
    R_rect_00: 0号相机坐标系 -> 矫正后的0号相机坐标系
    P_rect_0x: 矫正后的0号相机坐标系 -> x号相机的图像平面
    从上面可以看出主要是从三维到二维平面的转换!!!
    效果图:待!!
    重要注意:补充理解:
    在经过了之后的资料查询,有了之间的大体关系的认知,先重新将部分理解的梳理一遍:
    校准文件如上面所示,其主要包括,从3D激光雷达的点云坐标x映射到0号相机的坐标系Tr_velo_to_cam * x(因为两者的三维空间的坐标系的标定是不一样的,可能不对);R0_rect Tr_velo_to_cam * x,其中校准是为了使多个摄像机的图像位于同一平面上,即所对应的图片*;**然后可以将其投影到对应的图片上,P_rect_2 * R0_rect *Tr_velo_to_cam * x ,注(等价将投影面向左移动同时保持针孔位置不变,即可投影到彩色摄像机的图片上)。
    然后在这里的两个测试
    第一个测试是将3D边界框从标签文件投影到图像上
    第二项测试是将点云坐标中的一个点投影到图像上。
    代数很简单,如下所示
    第一个等式用于将3D绑定框投影到与camera_2图像协调的参考摄像机中。
    第二个方程将Velodyne坐标点投影到camera_2图像中。
    y_image = P2 * R0_rect * R0_rot * x_ref_coord
    y_image = P2 * R0_rect * Tr_velo_to_cam * x_velo_coord
    在上面,R0_rot是要从对象坐标映射到参考坐标的旋转矩阵。”
    重要注意:补充理解2:
    内参矩阵+外参矩阵点云到相机的坐标转换
    https://blog.csdn.net/qq_33801763/article/details/77033064?utm_medium=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
    部分内容摘取:
    1.内参矩阵:
    设空间中有一点P,若世界坐标系与相机坐标系重合,则该点在空间中的坐标为(X, Y, Z),其中Z为该点到相机光心的垂直距离。设该点在像面上的像为点p,像素坐标为(x, y)。
    在这里插入图片描述

由上图可知,这是一个简单的相似三角形关系,从而得到
在这里插入图片描述
但是,图像的像素坐标系原点在左上角,而上面公式假定原点在图像中心,为了处理这一偏移,设光心在图像上对应的像素坐标为(cx,cy),则
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37534947/article/details/106628308

智能推荐

Windows平台RTMP、RTSP播放器录像模块精细化控制_windows rtsp播放器-程序员宅基地

文章浏览阅读1.2k次。一个小小的录像功能,如果做的更加通用兼容性好的话,需要注意的点还很多,本文抛砖引玉,感兴趣的开发者可酌情参考。_windows rtsp播放器

农业大棚监控系统v0.1-程序员宅基地

文章浏览阅读360次。场景一. 分析农业大棚监控系统的数据表设计1. 设备描述表2. 设备类型表3. 设备状态表4. 大棚表5. 。。。。。二. 分析农业大棚监控系统功能设计1. 设备管理2. 监控中心2.1 实时:每隔10分钟动态刷新..._农业监控系统数据项描述表

飞桨PaddlePaddle 深度学习 波士顿房价预测任务 熟悉过程 python numpy_housing.data 飞桨 没有-程序员宅基地

文章浏览阅读260次。这个教程不赖,以前学的时候咋就没这种教程,近段时间学paddlepaddle。教程:https://www.paddlepaddle.org.cn/tutorials/projectdetail/1516091数据:https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data# 导入需要用到的packageimport numpy as npimport jsonfrom matplotlib _housing.data 飞桨 没有

Tp5—隐藏public的方法(修改Apache服务器的配置实现)_工具类应隐藏 public 构造器-程序员宅基地

文章浏览阅读6.7k次。出现问题:url :localhost/public/index.php/能用,而index.php不能用。也就是public隐藏的问题。(项目放在了www根目录下)看了下官方文档的解释点击打开链接,但是完全没有看懂。就百度看了下。找到了如何修改Apaceh配置localhost虚拟主机1:首先找到vhost所在的位置 (E:\wamp\bin\apache\apache2.4.9\conf),打..._工具类应隐藏 public 构造器

js 定时器(setTimeout/setInterval)出现变量未定义(xxx is not defined) 的解决方法_setinterval is not defined-程序员宅基地

文章浏览阅读1.7k次。js 定时器(setTimeout/setInterval)出现变量未定义(xxx is not defined) 的解决方法_setinterval is not defined

mysql 使用临时表更新_MySQL中不使用临时表更新列数据-程序员宅基地

文章浏览阅读481次。为此,请使用CASE语句。即使不使用临时表也可以使用。让我们首先创建一个表-mysql>createtableDemoTable->(->UserNamevarchar(100),->UserStatusvarchar(100)->);QueryOK,0rowsaffected(0.74sec)使用插入命令在表中插入一些记录-mysql&..._mysql临时表更新语句

随便推点

Pytorch 属性统计-程序员宅基地

文章浏览阅读894次。Pytorch 属性统计. norm. mean sum. prod. max, min, argmin, argmax. kthvalue, topknorm - p :范数import torcha = torch.full([8], 1)b = a.view(2, 4)c = a.view(2, 2, 2)# 所有元素的1范数print("a.norm(1):\t", a.norm(1))print("a.norm(1):\t", a.norm(1))print("c

MySQL5.7RPM安装.pdf-程序员宅基地

文章浏览阅读242次。解压tar -xvf mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar安装yum -y localinstall mysql-community-common-5.7.20-1.el6.x86_64.rpmyum -y localinstall mysql-community-libs-5.7.20-1.el6.x86_64.rpmyum -y local...

ext3分区修复linux,ext3文件系统超级块损坏修复-程序员宅基地

文章浏览阅读1.2k次。1,一服务器/dev/sdb文件系统损坏,重启后系统启不来,进入单用户模式fsck无法修复,把/etc/fstab中的/dev/sdb注释掉后,系统成功起来。2,mount挂载/dev/sdb提示bad superblock错误,无法正常挂载:[root@localhost ~]# mount /dev/sdb /testmount: wrong fs type, bad option, bad ..._group descriptors look bad

mysql 多列最大值_mysql – 从多列获取两个最大值-程序员宅基地

文章浏览阅读946次。这不是最优雅的解决方案,但如果您无法更改表结构,则可以取消数据的转换,然后应用用户定义的变量来获取每个student_id的行号.代码将类似于以下内容:select student_id, name, col, datafrom(SELECT student_id, name, col,data,@rn:=case when student_id = @prev then @rn else 0 e..._数据库 取出相同最大的2个值

idea 看类的子类 uml 图_StarUML for Mac(UML软件建模器)-程序员宅基地

文章浏览阅读255次。StarUML for Mac是一款UML软件建模器,自动更新StarUML会自动检查最新更新,支持快速编辑中的许多缩写,一次创建元素和关系是一款强大且易用的工具。staruml下载使用这款UML软件建模器吧!软件功能UML 2兼容UML 2.x标准元模型和图表:类,对象,用例,组件,部署,复合结构,序列,通信,状态图,活动和配置文件图。附加图表支持创建实体 - 关系图(ERD),数据流图(DFD..._idea mac 子类

VUE深度作用选择器/deep/_vue /deep/-程序员宅基地

文章浏览阅读959次。为了保证每个组件的css唯一性,避免污染全局或者被全局污染,vue提供了scoped作用域。当 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。如果你希望scoped样式中的一个选择器能够作用得“更深”,例如影响子组件,可以用深度作用选择器(样式穿透)来实现。_vue /deep/

推荐文章

热门文章

相关标签