位置: IT常识 - 正文
推荐整理分享KITTI数据集解析和可视化(timit数据集),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:kitty 数据集,kitti数据集介绍,timit数据集,kitty 数据集,semantickitti数据集下载,timit数据集,kitti3d检测数据集,kitti数据集介绍,内容如对您有帮助,希望把文章链接给更多的朋友!
Kitti的数据采集车,顶上是一个64线的velodyne激光雷达,前面有四个摄像头分别是cam0~3,其中0和1是灰度相机,2和3是rgb相机。激光雷达的坐标系遵循右手定则,而相机坐标系遵循左手定则,如图所示。 为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。 四个相机经过了严格的位置矫正,保证yz同值,x同轴,如果想进行lidar与camera的坐标系转换,默认以cam0为基准,即如果是cam0转到velodyne,就直接转,如果是cam其他转velodyne,则先要转到cam0,再转到velodyne,相机和激光的坐标转换后续会详细说明。
具体的传感器参数如下: 2 × PointGray Flea2 grayscale cameras (FL2-14S3M-C), 1.4 Megapixels, 1/2” Sony ICX267 CCD, global shutter 2 × PointGray Flea2 color cameras (FL2-14S3C-C), 1.4 Megapixels, 1/2” Sony ICX267 CCD, global shutter 4 × Edmund Optics lenses, 4mm, opening angle ∼ 90◦, vertical opening angle of region of interest (ROI) ∼ 35◦ 1 × Velodyne HDL-64E rotating 3D laser scanner, 10 Hz, 64 beams, 0.09 degree angular resolution, 2 cm distance accuracy, collecting ∼ 1.3 million points/second, field of view: 360◦ horizontal, 26.8◦ vertical, range: 120 m 1 × OXTS RT3003 inertial and GPS navigation system, 6 axis, 100 Hz, L1/L2 RTK, resolution: 0.02m / 0.1◦
坐标系为了方便传感器数据标定,规定坐标系方向如下 :
camera: x = right, y = down, z = forwardvelodyne: x = forward, y = left, z = upGPS/IMU: x = forward, y = left, z = up1.2 下载数据集官网 数据集官网下载地址百度网盘下载链接 链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw 提取码:grys 建议使用百度网盘的下载链接(因为文件特别大,而且官网的下载速度很慢。)进入官网,下图红色框标记的为我们需要的数据:
彩色图像数据(12GB)点云数据(29GB)相机矫正数据(16MB)标签数据(5MB)。其中彩色图像数据、点云数据、相机矫正数据均包含training(7481)和testing(7518)两个部分,标签数据只有training数据。
二、数据解析2.0 数据集结构按照官方给出的OpenPCDet中的KITTI数据集的组织方法,排布数据集
data│── kitti│ │── ImageSets│ │── testing│ │ ├── calib & image_2 & velodyne│ │── training│ │ ├── calib & image_2 & label_2 & planes & velodyneimage_2 即2号彩色相机所拍摄的图片(.png);calib对应每一帧的外参(.txt);label_2是每帧的标注信息(.txt);velodyne是Velodyne64所得的点云文件(.bin)2.1 ImageSets数据集列表信息,一般包括如下3部分:
train.txt:训练集 列表信息test.txt:测试集 列表信息val.txt:验证集 列表信息2.2 Testing & Training2.2.1 calibcalib文件是相机、雷达、惯导等传感器的矫正数据。以“000001.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+00P1: 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+00P2: 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-03P3: 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-03R0_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-01Tr_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-01Tr_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-01P0~P3 Prect(i)P_{rect}^{(i)}Prect(i) :矫正后的相机投影矩阵 R3∗4R^{3*4}R3∗4 0、1、2、3 代表相机的编号,0表示左边灰度相机,1右边灰度相机,2左边彩色相机,3右边彩色相机。 其中bx(i)b_x^{(i)}bx(i)表示相对于参考摄像机0的基准值(以米为单位)
R0_rect Rrect(i)R_{rect}^{(i)}Rrect(i) :矫正后的相机旋转矩阵R3∗3R^{3*3}R3∗3 在实际计算时,需要将该3x3的矩阵扩展为4x4的矩阵,方法为在第四行和第四列添加全为0的向量,并且将(4, 4)的索引值设为1。
Tr_velo_to_cam (Tvelocam)(T_{velo}^{cam})(Tvelocam) :从雷达到相机0的旋转平移矩阵 (R3∗4R^{3*4}R3∗4) 在实际计算时,需要将该3x4的矩阵扩展为4x4的矩阵,方法为增加第四行向量[0,0,0,1]。这个矩阵其实包括了两个部分,其一是3x3的旋转矩阵,其二是1x3的平移向量。
Tr_imu_to_velo (Timuvelo)(T_{imu}^{velo})(Timuvelo) : 从惯导或GPS装置到相机的旋转平移矩阵 (R3∗4R^{3*4}R3∗4) 如果要将激光雷达坐标系中的点x投影到左侧的彩色图像(P2)y中,可使用如下公式: 若想将激光雷达坐标系中的点x投射到其他摄像头,只需替换P2矩阵即可(例如右边的彩色相机P3)。
1、将 Velodyne 坐标中的点 x 投影到左侧的彩色图像中 y,使用公式 y = P2 * R0_rect * Tr_velo_to_cam * x2、将 Velodyne 坐标中的点 x 投影到右侧的彩色图像中 y,使用公式 y = P3 * R0_rect * Tr_velo_to_cam * x3、将 Velodyne 坐标中的点 x 投影到编号为 0 的相机(参考相机)坐标系中,使用公式 R0_rect * Tr_velo_to_cam * x4、将 Velodyne 坐标中的点 x 投影到编号为 0 的相机(参考相机)坐标系中,再投影到编号为 2 的相机(左彩色相机)的照片上,使用公式 P2 * R0_rect * Tr_velo_to_cam * x2.2.2 image_2image文件以8位PNG格式存储,图集如下:
2.2.3 label_2label文件是KITTI中object的标签和评估数据,以“000001.txt”文件为例,包含样式如下:
Truck 0.00 0 -1.57 599.41 156.40 629.75 189.25 2.85 2.63 12.34 0.47 1.49 69.44 -1.56Car 0.00 0 1.85 387.63 181.54 423.81 203.12 1.67 1.87 3.69 -16.53 2.39 58.49 1.57Cyclist 0.00 3 -1.65 676.60 163.95 688.98 193.93 1.86 0.60 2.02 4.59 1.32 45.84 -1.55DontCare -1 -1 -10 503.89 169.71 590.61 190.13 -1 -1 -1 -1000 -1000 -1000 -10DontCare -1 -1 -10 511.35 174.96 527.81 187.45 -1 -1 -1 -1000 -1000 -1000 -10DontCare -1 -1 -10 532.37 176.35 542.68 185.27 -1 -1 -1 -1000 -1000 -1000 -10DontCare -1 -1 -10 559.62 175.83 575.40 183.15 -1 -1 -1 -1000 -1000 -1000 -10 每一行代表一个object,每一行都有16列分别表示不同的含义,具体如下:
第1列(字符串):代表物体类别(type) 总共有9类,分别是:Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc、DontCare。 其中DontCare标签表示该区域没有被标注,比如由于目标物体距离激光雷达太远。为了防止在评估过程中(主要是计算precision),将本来是目标物体但是因为某些原因而没有标注的区域统计为假阳性(false positives),评估脚本会自动忽略DontCare区域的预测结果。
第2列(浮点数):代表物体是否被截断(truncated) 数值在0(非截断)到1(截断)之间浮动,数字表示指离开图像边界对象的程度。
第3列(整数):代表物体是否被遮挡(occluded) 整数0、1、2、3分别表示被遮挡的程度。
第4列(弧度数):物体的观察角度(alpha) 取值范围为:-pi ~ pi(单位:rad),它表示在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机z轴,此时物体方向与相机x轴的夹角(如下图所示,y轴垂直与屏幕)
第5~8列(浮点数):物体的2D边界框大小(bbox) 四个数分别是xmin、ymin、xmax、ymax(单位:pixel),表示2维边界框的左上角和右下角的坐标。
第9~11列(浮点数):3D物体的尺寸(dimensions) 分别是高、宽、长(单位:米)
第12-14列(浮点数):3D物体的位置(location) 分别是x、y、z(单位:米),特别注意的是,这里的xyz是在相机坐标系下3D物体的中心点位置。
第15列(弧度数):3D物体的空间方向(rotation_y) 取值范围为:-pi ~ pi(单位:rad),它表示,在照相机坐标系下,物体的全局方向角(物体前进方向与相机坐标系x轴的夹角),如下图所示。
第16列(浮点数):检测的置信度(score)
2.2.4 planes# PlaneWidth 4Height 1-1.851372e-02 -9.998285e-01 -5.362310e-04 1.678761e+002.2.5 velodynevelodyne文件是激光雷达的测量数据(绕其垂直轴(逆时针)连续旋转),以“000001.bin”文件为例,内容如下:
8D 97 92 41 39 B4 48 3D 58 39 54 3F 00 00 00 0083 C0 92 41 87 16 D9 3D 58 39 54 3F 00 00 00 00 2D 32 4D 42 AE 47 01 3F FE D4 F8 3F 00 00 00 00 37 89 92 41 D3 4D 62 3E 58 39 54 3F 00 00 00 00 E5 D0 92 41 12 83 80 3E E1 7A 54 3F EC 51 B8 3D 7B 14 70 41 2B 87 96 3E 50 8D 37 3F CD CC 4C 3E 96 43 6F 41 7B 14 AE 3E 3D 0A 37 3F E1 7A 14 3F 2F DD 72 41 5E BA C9 3E 87 16 39 3F 00 00 00 00 FA 7E 92 41 5E BA 09 3F 58 39 54 3F 00 00 00 00 66 66 92 41 EC 51 18 3F CF F7 53 3F 00 00 00 00 A4 70 92 41 77 BE 1F 3F CF F7 53 3F 00 00 00 00 A4 70 92 41 8D 97 2E 3F 58 39 54 3F 00 00 00 00 ...点云数据以浮点二进制文件格式存储,每行包含8个数据,每个数据由四位十六进制数表示(浮点数),每个数据通过空格隔开。一个点云数据由四个浮点数数据构成,分别表示点云的x、y、z、r(强度 or 反射值),点云的存储方式如下表所示:
三、数据集的下载和组织百度网盘下载链接 链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw 提取码:grys从百度网盘下载如下框出的文件。
其中 xxx.zip 和xxx.z01、xxx.z02、xxx.z03 是分包文件,必须全部下载后才能够解压。
然后通过xftp把下载的压缩包全部上传到云服务器上。 分包文件的解压方法,以 data_object_image_2.zip 为例子。
# 先将压缩包合并zip -s 0 data_object_image_2.zip --out image_02.zip# 再次解压unzip image_02.zip解压之后的文件结构如下所示。 如下所示,在kitti文件夹下新建testing和training 目录。然后把上一步解压后得到的data_object_image2/testing/image_2 文件放入到data/kitti/testing 文件夹下;把上一步解压后得到的data_object_image2/training/image_2 文件放入到data/kitti/training 文件夹下。
然后新建一个文件夹ImageSets,并进入到该文件夹下。 下载官方已经提供好的划分kitti数据集文件:test.txt train.txt val.txt trainval.txt
# test.txtwget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/test.txt --no-check-certificate --content-disposition -O test.txt# train.txtwget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/train.txt --no-check-certificate --content-disposition -O train.txt# val.txtwget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/val.txt --no-check-certificate --content-disposition -O val.txt# trainval.txtwget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/trainval.txt --no-check-certificate --content-disposition -O trainval.txt最终的组织架构如下图所示:
有时候我们可能多个项目都使用到同一个数据集,这时候可以建立软链接
比如我的原始kitti数据集下载到了/data/zyw/project/data/kitti , 但是我在mmdetection3d/data 文件夹下需要kitti文件夹。 为了节省内存开销,我们不直接复制,而是创建软链接。
cd mmdetection3d/dataln –s /data/zyw/project/data/kitti kitti四、可视化4.1 CloudCompare软件CloudCompare功能强大,直接安装这个软件是最简单的可视化方法。
cloudcompare官网下载地址 选择对应的版本进行下载
或者从百度网盘下载 (winows64,CloudCompare 2.12.4) 链接:https://pan.baidu.com/s/1RWDdMByK1trY–d05-SlHg
显示-语言翻译-简体中文
提取码:zfjo
点击文件-compare 可以打开多种格式的点云文件 可视化效果如下 4.2 PCL库通过配置PCL来可视化点云,相对比较复杂,具体可以参考下面的博客~ 【PCL1.11.0+win10+vs2019】环境配置/ 点云格式转换及可视化
参考参考博客: 【1】https://blog.csdn.net/i6101206007/article/details/11225682 【2】https://blog.csdn.net/u013086672/article/details/103913361
上一篇:【滤波专题-第4篇】滤波器滤波效果的评价指标(信噪比SNR、均方误差MSE、波形相似参数NCC)(滤波方案)
下一篇:机器学习——图像分类
友情链接: 武汉网站建设