注意:

  • 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识

ubuntu版本:20.04
ros版本:noetic

课程回顾

ROS1结合自动驾驶数据集Kitti开发教程(一)Kitti资料介绍和可视化
ROS1结合自动驾驶数据集Kitti开发教程(二)发布图片
ROS1结合自动驾驶数据集Kitti开发教程(三)发布点云数据
ROS1结合自动驾驶数据集Kitti开发教程(四)画出自己车子模型以及照相机视野
ROS1结合自动驾驶数据集Kitti开发教程(五)发布IMU数据
ROS1结合自动驾驶数据集Kitti开发教程(六)发布GPS数据

前言

如果我们想要在kitti提供的视频中进行car,person,bicycle等分类的标注,就需要使用kitti官方提供的一套图像标注资料。

1.下载tracking资料

首先进入kitti的tracking资料页面:http://www.cvlibs.net/datasets/kitti/eval_tracking_overview.php
可以看到如下页面:

其中有三个tracking类别,分别是Multi-Object Tracking(多目标跟踪)Multi-Object Tracking and Segmentation(多目标跟踪和分割)Segmenting and Tracking Every Pixel(分割和像素跟踪),我们这次主要是想画出目标的识别框(2D/3D bounding-boxes),所以选择第一类即可。界面如下所示,下载框出来的文件。(下载可能需要注册一个账号,正常注册即可)

下载完成后可以看到是以xxxx.txt为命名的文档,而我们所使用的数据集2011_09_26_drive_0005所对应的Label标注是0000.txt文件。

1.1数据集标注格式

数据集标注格式如下所示:

下面是介绍数据格式的label描述:

kitti数据集原始数据集被分为Road,City, Residential, CampusPerson。对于3D物体检测,label细分为car,van,truck,pedestrian,pedestrian(sitting), cyclist, tram以及misc组成。注意,DontCarelabel表示该区域没有被标注,比如目标物体距离激光雷达太远。为了防止在评估过程中(主要计算precision),将本来是目标物体但是因为某些原因而没有标注的区域统计为假阳性(false positives),评估脚本会自动忽略DontCare区域的预测结果。

2.读取tracking资料并且显示

2.1使用jupyter notebook 工具简化我们的开发工作

安装:sudo pip3 install jupyter
安装完成后启动:jupyter notebook

可以在功能包中的scripts文夹内新建一个Python3(ipykernel)文件。

2.2读取并展示tracking资料

程序如下所示:

import cv2
import pandas as pd
import numpy as np
import os
LABEL_NAME = ["frame", "track id", "type", "truncated", "occluded", "alpha", "bbox_left", "bbox_top", "bbox_right", "bbox_bottom", "dimensions_height", "dimensions_width", "dimensions_length", "location_x", "location_y", "location_z", "rotation_y"] 
BASE_PATH = "/home/mckros/kitti/RawData/2011_09_26/2011_09_26_drive_0005_sync/"    
data = pd.read_csv(os.path.join(BASE_PATH, "label_02/0000.txt"), header=None, sep=" ")
# 修改列名
data.columns = LABEL_NAME
data

运行结果如下,可以看到已经展示出了很多类型的数据:

结语

本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~

为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接
✌Bye