3D检测入门 - KITTI数据集

2023-05-16

参考链接
官网:http://www.cvlibs.net/datasets/kitti/index.php
传感器介绍:http://www.cvlibs.net/datasets/kitti/setup.php
相机内外参简介:https://www.cnblogs.com/wangguchangqing/p/8126333.html
好-KITTI数据集–参数+原文翻译:https://www.pianshen.com/article/7493742838/
好-kitti数据集在3D目标检测中的入门:https://www.pianshen.com/article/97781400793/
kitti可视化工具:https://github.com/kuixu/kitti_object_vis
mmdet3d可视化代码:mmdet3d/core/visualizer/image_vis.py
3D数据集转换脚本:https://github.com/open-mmlab/mmdetection3d/tree/master/tools/data_converter # kitti waymo, nuscenes等

看论文永远是你的第一选择

  • 相机
      2个灰度相机(P0, P1)
      2个彩色相机(P2, P3)
  • GPS / IMU (定位信息 + 加速度/加加速度)
  • Lidar
      64线,Velodyne HDL-64E
      每秒 10 帧的速度旋转,每周期捕获10万个点,垂直分辨率64?
      相机由激光扫描仪(面向前方时)以每秒 10 帧的速度触发,快门时间动态调整(最大快门时间:2 毫秒)
  1. 图像:采用8bit PNG格式保存。裁剪掉了原始图像的引擎盖和天空部分,并且根据相机参数进行了畸变矫正,最终图片为50万像素左右。
  2. 激光:逆时针旋转,采用浮点数二进制文件保存。保存了激光点(x,y,z)坐标和反射率r信息,每一帧平均12万个激光点
  3. 图像和激光同步:相机曝光时机是由激光控制的,当激光扫描到正前方(即相机朝向角度)时,会触发相机快门,KITTI会记录激光3个时间戳,旋转起始和结束的时刻,以及触发相机曝光的时刻。

传感器车身排布如下图所示:
在这里插入图片描述
在这里插入图片描述

点云velodyne文件
xxx.bin就是,就是存储xyzr(点云坐标+反射强度)的文件
在这里插入图片描述
上图这个效果咋出来的??

3D检测

简介
3D检测较经典的数据集,入坑必会的数据集之一。除了3D检测,还有2D检测,flow,segmentation,depth等标注。

类别
有这些类别

总共有9类,分别是:Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc、DontCare。其中DontCare标签表示该区域没有被标注,比如由于目标物体距离激光雷达太远。为了防止在评估过程中(主要是计算precision),将本来是目标物体但是因为某些原因而没有标注的区域统计为假阳性(false positives),评估脚本会自动忽略DontCare区域的预测结果。

但是榜单上只显示了3个大类…
另外,mmdet3d数据集中的pkl文件,里面是否做了类别合并???需要去check一下

数据量

  • 训练集:7481;验证集:3768;测试集:7518
  • 8W+目标(感觉还是比较少???,训出来的模型指标差异可能会比较大)

PS:做mono3d,通常用P2 (左彩) 相机作为输入。

标注

  1. 第1列(字符串):代表物体类别(type)
    分别是:Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc、DontCare。
  2. 第2列(浮点数):代表物体是否被截断(truncated) 数值在0(非截断)到1(截断)之间浮动,数字表示指离开图像边界对象的程度。
  3. 第3列(整数):代表物体是否被遮挡(occluded) 整数0、1、2、3分别表示被遮挡的程度。0:完全可见 1:部分遮挡 2:大部分遮挡 3:未知。在mmdet3d中有-1,表示ignore。
  4. 第4列(弧度数):物体的观察角度(alpha) 取值范围为:-pi ~ pi(单位:rad),它表示在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机z轴,此时物体方向与相机x轴的夹角,如图1所示。
  5. 第5~8列(浮点数):物体的2D边界框大小(bbox) 四个数分别是xmin、ymin、xmax、ymax(单位:pixel),表示2维边界框的左上角和右下角的坐标。
  6. 第9~11列(浮点数):3D物体的尺寸(dimensions)分别是高、宽、长 (HWL)(单位:米),mmdet3d中转为了LHW?因为提交过程做了LHW到HWL的转换
  7. 第12-14列(整数):3D物体的位置(location)分别是x、y、z(单位:米),特别注意的是,这里的xyz是在相机坐标系下3D物体的中心点位置
  8. 第15列(弧度数):3D物体的空间方向(rotation_y)取值范围为:-pi ~ pi(单位:rad),它表示,在照相机坐标系下,物体的全局方向角(物体前进方向与相机坐标系x轴的夹角),逆时针为负,顺时针为正,如下图所示。
  9. 第16列(整数):检测的置信度(score)要特别注意的是,这个数据只在测试集的数据中有,评测的时候网络输出

在这里插入图片描述
这里可能有点混淆,只要记住这个就可以了:x轴正向对应着len,y轴为width,z轴为height即可。(想象成一辆车沿着x轴正向放置)
所以在mmdet3d中,CameraInstance3DBoxes对应的x_size, y_size, z_size表示LHW。

校准文件

评测指标
使用PASCAL VOC的标注来对3D检测进行评估,也是用AP。几点注意:

  • 太远的物体会被忽略(图像平面上bbox heigth太小),也就是’DontCare’这个类别?
  • 点云中的3D物体只有在图像平面中才会被标记,其他区域不会被考虑。
  • cars,要求3D IOU=0.7,对于pedestrians and cyclists ,要求3D IOU=0.5
  • Easy, Moderate, Hard定义如下
Easy: Min. bounding box height: 40 Px, Max. occlusion level: Fully visible, Max. truncation: 15 %
Moderate: Min. bounding box height: 25 Px, Max. occlusion level: Partly occluded, Max. truncation: 30 %
Hard: Min. bounding box height: 25 Px, Max. occlusion level: Difficult to see, Max. truncation: 50 %

三种难度根据1、物体大小;2、遮挡occlusion;3、阶段truncation;来区分的。
榜单上的结果按照Moderate指标进行排名:All methods are ranked based on the moderately difficult results.

  • update 08.10.2019,根据论文《Disentangling Monocular 3D Object Detection》的建议,评测由之前recall轴上取11点转为取40点。

下面这句话不理解??

We note that the evaluation does not take care of ignoring detections that are not visible on the image plane — these detections might give rise to false positives.

榜单
链接:http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d

  • 基于lidar的方法
    指标都巨高,SOTA算法,Car大概84+;Pedestrian大概48+;Cyclist大概72+;
  • 基于视觉的方法
    指标差很多,Car大概17+就可以了??

注意事项

2D检测

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D检测入门 - KITTI数据集 的相关文章

随机推荐

  • van2的弹窗自定义事件

    今天帮别人解决了一个移动端的van2的弹窗自定义事件就记录一下 现在国内开发大多数还是已vue为主 xff0c vue3已经比较火热 xff0c 但是对比vue2来讲 xff0c vue2更加稳定 xff0c 以及一些老项目还是用的vue2
  • svg图形绘画

    最近是在整理项目交接工作的时候 xff0c 把之前遇到的问题难点给找出来 xff0c 梳理一下 这个是做svg画布组态项目遇到的问题 目前组态项目中是使用ts文件 xff0c 定义组态类型和格式 xff0c 将不同的组件渲染在画布以及列表上
  • 基于Spring接口,集成Caffeine+Redis两级缓存

    原创 xff1a 微信公众号 码农参上 xff0c 欢迎分享 xff0c 转载请保留出处 在上一篇文章Redis 43 Caffeine两级缓存 xff0c 让访问速度纵享丝滑中 xff0c 我们介绍了3种整合Caffeine和Redis作
  • 不需要登录的app业务如何记录用户状态

    可以采用app获取设备号并服务端保存设备信息和业务信息的方式 欢迎加入我的QQ技术交流群425783133
  • web前端基础-给td设置宽度

    在实际需求中 xff0c 经常遇到要在table中的td中 xff0c 让用户输入比较长的字符串 xff0c 这时就要使td的宽度能较大 在WEB前端中 xff0c 对于 表格元素中的元素td 直接设置宽度是无法生效的 要想达到给td设置宽
  • Kali Linux 暴力破解 wifi密码

    Kali Linux 暴力破解 wifi密码 注意 xff1a 私自破解他人WiFi属于违法行为 xff0c 我这里使用自己的WiFi热点作为学习和测试 明白了破解原理就知道应该怎么防范了 前期准备 暴力破解需要准备的工具 xff1a ka
  • Docker安装与使用

    Docker安装与使用 介绍容器 xff1a 为什么需要Docker xff1f Docker 的用途 xff1a 特点 xff1a Docker安装Linux下安装 xff1a Windows 下安装 xff1a Docker的架构镜像
  • 前端PHP项目部署后404

    问题 xff1a php项目部署后 xff0c 首页可正常访问 xff0c 但跳转其他页面均为404 xff0c 经查询有以下原因 文件以及文件夹权限错误nginx配置错误 span class token comment 无效404方式
  • VINS-Mono 代码详细解读——初始化1:视觉SFM详解 processImage()+initialStructure()

    Estimator类 目录 processImage 函数 initialStructure 初始化函数 SFM初始化 relativePose 函数 getCorresponding 函数返回两帧匹配特征点3D坐标 solveRelati
  • VINS-Mono 代码详细解读——IMU预积分的残差、Jacobian和协方差 processIMU()+intergrationBase类+imu_factor.h

    前言 xff1a 对第k帧和第k 43 1帧之间所有的IMU进行积分 xff0c 可得到第K 43 1帧的PVQ xff08 位置 速度 旋转 xff09 xff0c 作为视觉估计的初始值 每次qwbt优化更新后 xff0c 都要重新进行积
  • VINS-Mono 理论详细解读——紧耦合后端非线性优化 IMU+视觉的残差residual、Jacobian、协方差、基于舒尔补的边缘化

    本讲是VINS最核心部分了 xff0c 前面经历了 1 xff09 视觉跟踪feature tracker IMU预积分integrationBase类 xff1b 2 xff09 初始化中SFM纯视觉估计滑动窗中所有帧的位姿和3D路标点深
  • 多传感器融合定位1(激光雷达+毫米波雷达)

    前言 LZ最近在看Udacity的无人驾驶课程 xff0c 该课程主要分为三部分 xff0c 第一部分的课程主要使用Python实现的车道线识别 车牌识别等计算机视觉项目 由于我对定位 建图等方面有些知识储备 xff0c 所以先从第二部分课
  • CMakeList.txt在大型文件应用(以前端为例)

    基本的CMakeLists txt并不难 xff0c 主要有生成库 生成执行文件 链接二者以及找库find package 找头文件include directories 生成执行文件add executable 链接库和执行文件targe
  • opencv - viz 画出SLAM轨迹

    原文在这里 数据集格式为 xff1a 时间 43 平移 43 旋转矩阵四元数 include lt opencv2 opencv hpp gt include lt fstream gt include lt iostream gt inc
  • PnP(3D-2D)、ICP(3D-3D)

    前言 xff1a 之前学习总结 视觉SLAM十四讲 总结过 xff1a 7 xff1a VO 3D 2D xff1a PnP 43 BA 8 xff1a VO 3D 3D xff1a ICP 43 SVD 43 BA 区别 xff1a 1
  • 通过solvePnP求解相机位置 (代码可运行)

    目录 一 Opencv函数使用 二 目标是求得相机在世界坐标系下的3D坐标 1 法一 xff1a 2 法二 xff1a 3 法1附录源代码 xff08 可运行通过 xff09 一 Opencv函数使用 solvePnP原型为 xff1a b
  • swagger页面配置正常,常用的浏览器无法显示!

    就是浏览器缓存的原因 xff0c 你清一下浏览器的缓存就好了 xff0c 就这么简单 是浏览器缓存的原因 xff0c 你清一下浏览器的缓存就好了 xff0c 就这么简单 浏览器缓存的原因 xff0c 你清一下浏览器的缓存就好了 xff0c
  • VINS-Mono 论文解读(IMU预积分残差+Marg边缘化)

    目录 VIO引出原因 xff1a 融合方案 xff1a 本文贡献 xff1a 0 总体框架 0 1 数据预处理 xff08 IMU预积分见标题1 xff09 0 2 初始化 A 滑动窗口 Sliding Window 纯视觉SfM B 视觉
  • 牛客网C++刷题要点

    1 虚函数 不要在构造函数和析构函数中调用虚函数 下面说说原理 xff1a 假如基类有个虚函数 那么编译器会为其创建虚函数表vtbl 并在对象的内存空间创建虚函数指针vptr 虚函数表的原理是每个类会在里面有自己的所能调用到的虚函数地址 对
  • 3D检测入门 - KITTI数据集

    参考链接 官网 xff1a http www cvlibs net datasets kitti index php 传感器介绍 xff1a http www cvlibs net datasets kitti setup php 相机内外