资料
官网
The KITTI Vision Benchmark Suite
论文
https://www.cs.toronto.edu/~urtasun/publications/geiger_et_al_cvpr12.pdf
3D评价指标
3D评价指标这个位置,有时间还是整体阅读一下官方的论文
Car AP@0.70, 0.50, 0.50,代表bbox,bev,3d的IOU阈值,既bbox iou阈值0.70,bev iou阈值0.50,3d iou阈值0.50
bbox AP:95.6634,89.8026,89.0725分别对应的是easy、moderate和hard 下的评估结果。就是KITTI数据集里有遮挡、截断的属性,依据此定义的这个难易程度
AOS表示平均方向相似性
AP40:
https://zhuanlan.zhihu.com/p/594184522
官方工程
相机安装
红色框住的部分是KITTI使用的四个相机
图像下载地址
本地使用P2相机采集的图像
数据示例
图像示例
标注文档
相机参数
P2:
数据说明
标注示例
标注文档
标注说明
1、从标注文档和标注示例上看,2dbbox看着像是3dbbox投到2d图像然后取了最小外包围盒的结果,但是从人的类别上看又不是,因此挺奇怪的,2dbbox整体标的一般
2、location是在相机坐标系下3d包围盒下底面中心点的坐标,不是3d包围盒中心点的坐标
相机参数
P0代表左边灰度相机
P1代表右边灰度相机
P2代表左边彩色相机
P3代表右边彩色相机
R0_rect指的是0号相机的修正矩阵
Tr_velo_to_cam指的是velodyne到camera的矩阵大小为3x4,包含了旋转矩阵 R 和 平移向量 t
Tr_imu_to_velo指的是IMU到camera的矩阵 大小为3x4,包含了旋转矩阵 R 和 平移向量 t
问题说明
观测角与旋转角
观测角这个概念在3D检测中,目前来看只适用于KITTI数据集,原因是啥呢,观测角观测角是用相机观测目标得到的一个角度
工程中观测角与旋转角是可以相互转换的,转换算法原理见参考链接
工程中只有观测角alpha进入到了模型训练中,旋转角ry没有
有的工程直接使用标注好的观测角alpha进入模型训练(已知:monodle),有的工程使用旋转角ry计算出观测角alpha(已知:SMOKE、DEVIANT),然后进入训练。输出时都是得到观测角alpha,然后计算旋转角ry
原理
KITTI 数据集 - superxiaoying - 博客园
为什么学的都是观测角而不是旋转角
下图中object沿着红线运动时他的旋转角都不会发生变化,但是他的观测角会发生变化,因此旋转角ry无法作为一个被学习的参数
以下图为例,绿色梯形是相机,蓝色方块是车辆,此时旋转角相同但是车辆姿态却不一样,还有一种情况车辆姿态相同旋转角却不一样。由此可见用旋转角在图像上表示物体姿态是有漏洞的
标注中location的值为啥是在相机坐标系下
个人理解这个所谓的相机坐标系是区分于IMU坐标系、雷达坐标系的这么一个坐标系,对应相机P0的坐标系,并不是指各个相机P1、P2、P3的坐标系
理由是在使用P2相机对应的图像将3D坐标location转换到2D图像坐标时,使用的是相机参数P@location而不是K@location
相机参数P中的最后一列是否对应真实世界坐标到相机坐标的位移
不对应,是已经乘完焦距后的
相机参数R0_rect
陀螺仪建立的坐标系是绝对垂直朝下的,但是相机是人工安装的,无法做到这一点,有一些小小的偏移,R0_rect就是用来解决这个问题的
工程中Z>2标签进行训练
关于工程中大多数选择将Z<2的标签滤掉
由于kitti数据集的标签是在相机坐标系下标的,因此pos[-1]为坐标系Z轴,Z轴向前,因此这个Z<2表示在车辆行进方向上,目标中心点距离相机的距离。从下图中可以看出从相机到车头距离接近2米,在加上目标本身就有宽度,因此这个Z<2在Z轴方向上基本上嵌入到了车身中(X轴方向有距离,因此不是嵌入其中)
滤掉的标签