nuscenes数据集格式

1.记录一下nuscenes数据集的格式,参考了nuScenes数据集标注格式以及nuscenes官网教程

2.v1.0-mini总共有如下几个json文件:
在这里插入图片描述
3.总的解释一下:

attribute.json:描述了物体本身的一些状态,比如行驶、停下等等。
calibrated_sensor.json:在特定车辆上校准的特定传感器(激光雷达/雷达/摄像头)的定义。 所有外在参数都相对于自我车身框架给出。 所有相机图像均未失真和校正。
category.json:对象类别的分类(例如车辆、人类)。
ego_pose.json:相机所在车的标注信息。
instance.json:以实例为单位,记录某个实例出现的帧数、初始token、结尾token等。
log.json:一些场景、日期的日志信息。
map.json:地图相关的一些标注信息,数据集的map文件夹里面会包括map的图片。
sample.json:照片的标注,以照片为单位,一张照片对应一个sample。
sample_annotation.json:保存了物体的标注信息。
sample_data.json:sample对应的简单信息,不包括标注,可以索引出同一个物体前后帧的信息。
scene.json:场景数据。场景是从日志中提取的 20 秒长的连续帧序列。
sensor.json:保存所有传感器的数据表,包含一些简单的传感器类型。
visibility.json:描述一个物体可视的程度,即被遮挡、截断的程度。

4.分开解释:

attribute.json:描述了物体本身的一些状态,比如行驶、停下等等。

{
   "token":                   <str> -- 唯一标识.
   "name":                    <str> -- 属性名称
   "description":             <str> -- 属性详细描述
}

calibrated_sensor.json:在特定车辆上校准的特定传感器(激光雷达/雷达/摄像头)的定义。 所有外在参数都相对于自我车身框架给出。 所有相机图像均未失真和校正。

 {
   "token":                   <str> -- 唯一标识
   "sensor_token":            <str> -- 从sensor.json中对应得到相机类型
   "translation":             <float> [3] --相机外参,偏移矩阵,单位为米.
   "rotation":                <float> [4] -- 相机外参,四元数旋转角
   "camera_intrinsic":        <float> [3, 3] -- 相机内参(似乎只有camera会有)
}

category.json:对象类别的分类(例如车辆、人类)。

 {
   "token":                   <str> -- 唯一标识
   "name":                    <str> -- 物体类别名称 
   "description":             <str> -- 类别详细描述
   "index":                   <int> -- The index of the label used for efficiency reasons in the .bin label files of nuScenes-lidarseg. This field did not exist previously.
}

ego_pose.json:相机所在车的标注信息

{
   "token":                   <str> -- 唯一标识
   "translation":             <float> [3] --Unix时间戳,应该是保存数据表时候的一个时间戳,怀疑与图片名的后缀一一对应,没有详细考证
   "rotation":                <float> [4] -- 车辆外参,四元数旋转角.
   "timestamp":               <int> -- 车辆外参,偏移矩阵,单位为米
}

ego车辆,还有照片中其他车辆(sample_annotation.json)的外参,参考坐标系是世界坐标系,世界坐标系的原点是lidar或radar定义的,没有什么规律,所以要求其他车辆的相机坐标系坐标,就需要在这三个外参(ego、camera、sample)换算一下。

instance.json:以实例为单位,记录某个实例出现的帧数、初始token、结尾token等。

instance {
   "token":                   <str> -- 唯一标识
   "category_token":          <str> -- 类别标识,可以找到category.json里的对应类别
   "nbr_annotations":         <int> -- 出现的数量,即该实例在此数据集一共出现了多少帧
   "first_annotation_token":  <str> -- 第一帧的annotation标识,在sample_annonation.json里可以找到对应标注,下同
   "last_annotation_token":   <str> -- 最后一帧的annotation标识
}

log.json:一些场景、日期的日志信息。

 {
   "token":                   <str> -- 唯一标识
   "logfile":                 <str> -- 日志文件
   "vehicle":                 <str> -- 车辆名称
   "date_captured":           <str> -- 拍摄日期
   "location":                <str> -- 拍摄地点
}

map.json:地图相关的一些标注信息,数据集的map文件夹里面会包括map的图片。

map {
   "token":                   <str> -- 唯一标识
   "log_tokens":              <str> [n] -- 地图中的日志文件
   "category":                <str> -- 地图类别,似乎都是sematic的,因为提供的地图图片都是分割的,Nuscenes本身也包括了道路分割的数据集
   "filename":                <str> -- 对应的地图文件名
}

sample.json:照片的标注,以照片为单位,一张照片对应一个sample。关键帧

{
   "token":                   <str> -- 唯一标识
   "timestamp":               <int> -- 时间戳
   "scene_token":             <str> -- 场景标识,从scene.json中对应唯一场景
   "next":                    <str> -- 下一张照片的token
   "prev":                    <str> -- 上一张照片token
}

sample_annotation.json:保存了物体的标注信息。

{
   "token":                   <str> -- 唯一标识
   "sample_token":            <str> -- 从sample.json中索引出唯一对应的sample
   "instance_token":          <str> -- 从instance.json中索引出唯一对应的instance
   "attribute_tokens":        <str> [n] -- 从attribute.json中索引出唯一对应的attribute
   "visibility_token":        <str> -- 从visibility.json中索引出唯一对应的visibility
   "translation":             <float> [3] -- 物体外参,偏移矩阵,单位为米
   "size":                    <float> [3] -- 物体大小,单位为米,顺序为宽、长、高
   "rotation":                <float> [4] -- 物体外参,四元数旋转矩阵
   "num_lidar_pts":           <int> -- bbox中出现的lidar点数量,下同
   "num_radar_pts":           <int> -- bbox中出现的radar点数量
   "next":                    <str> -- 下一帧的标注token
   "prev":                    <str> -- 同一个物体,上一帧标注的token,在本数据表中索引出唯一对应的标注信息,上同
}

sample_data.json:sample对应的简单信息,不包括标注,可以索引出同一个物体前后帧的信息。

 {
   "token":                   <str> -- 唯一标识
   "sample_token":            <str> -- 可以从sample.json中索引出唯一对应的sample
   "ego_pose_token":          <str> -- 对应的ego车辆的token,可以从ego_pose中索引出来,据我观察,1和3都是相同的
   "calibrated_sensor_token": <str> -- 可以从calibrated_sensor.json中索引出对应的相机外参和内参,3和4就对应索引出上文所说的ego和camera的外参,sample的外参并不在这个表里,而是在sample_annotation.json中,见下文
   "filename":                <str> -- Relative path to data-blob on disk.
   "fileformat":              <str> -- 文件格式,照片和雷达格式
   "width":                   <int> -- 同下,像素宽度,都是1600;
   "height":                  <int> -- 照片像素高度,似乎只有jpg才会有,都是900
   "timestamp":               <int> -- 时间戳
   "is_key_frame":            <bool> -- 是否是关键帧,Nuscenes中,每秒两帧关键帧,提供标注信息
   "next":                    <str> -- 下一个sample_data的token
   "prev":                    <str> -- 上一个sample_data的token,从本数据表中可以索引出对应的数据,是同一个物体的上一个标注,即上一次出现这个物体是在哪里,下同
}

scene.json:场景数据。场景是从日志中提取的 20 秒长的连续帧序列。

scene {
   "token":                   <str> -- 唯一标识
   "name":                    <str> -- 场景名
   "description":             <str> -- 场景描述
   "log_token":               <str> -- 日志token,从log.json索引出对应日志
   "nbr_samples":             <int> -- 场景中出现的sample的数量,就是该场景下一共出现过多少个标注的物体,同一物体就算一次
   "first_sample_token":      <str> -- 第一个sample的token,从sample.json中可以索引出唯一sample,下同
   "last_sample_token":       <str> -- 场景下的最后一个sample
}

sensor.json:保存所有传感器的数据表,包含一些简单的传感器类型。

sensor {
   "token":                   <str> -- 唯一标识
   "channel":                 <str> -- 位置
   "modality":                <str> {camera, lidar, radar} -- 类型
}

visibility.json:描述一个物体可视的程度,即被遮挡、截断的程度。

visibility {
   "token":                   <str> --  唯一标识
   "level":                   <str> -- 可视化级别,是一个百分数,越高则越清晰,即识别越简单
   "description":             <str> -- 详细描述。一共有4个等级,分别是0到40%,40到60%,60到80%,80到100%
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
nuscenes数据集 devkit是为了帮助研究者和开发者更好地利用nuscenes数据集而开发的一套工具和库。nuscenes数据集是一个广泛使用的自动驾驶领域的开源数据集,其中包含了来自于纽约和新加坡的高质量传感器数据和注释。它提供了一个丰富的环境来进行自动驾驶相关的研究和开发。 nuscenes数据集devkit提供了一系列功能来处理、分析和可视化nuscenes数据集。它包括了Python API,可以用于读取和解析nuscenes数据集,提取有用的信息。研究者和开发者可以使用这些功能来快速访问和处理数据,为他们的研究和开发工作节省了大量的时间和精力。 除了数据处理外,nuscenes数据集devkit还包括了一些强大的视觉化工具。它提供了一个交互式的图形界面,可以用于可视化和浏览nuscenes数据集中的传感器数据、注释和场景信息。这对于研究者和开发者来说非常有用,可以帮助他们更好地理解数据,分析结果,并进行模型评估和验证。 此外,nuscenes数据集devkit还提供了一些实用的功能,如路线规划、物体检测和跟踪等。这些功能可以帮助研究者和开发者进行高级驾驶场景的仿真和测试,以及开发自动驾驶系统的算法和模型。 综上所述,nuscenes数据集devkit是一个强大的工具和库,它为研究者和开发者提供了便捷的数据处理、分析和可视化功能,帮助他们更好地利用nuscenes数据集进行自动驾驶相关的研究和开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值