nuscenes 数据集学习笔记

目录

这个讲的比较细致:

安装:

数据信息类型:

[Data 传感器](#Data 传感器)

读取数据:

boxes3d_to_corners3d

3d转corners2d


这个讲的比较细致:

NuSences 数据集解析以及 nuScenes devkit 的使用_nuscenes-devkit-CSDN博客

安装:

pip install nuscenes-devkit

数据信息类型:

Map & Camera(png), Lidar(激光雷达) & Radar(雷达)(pcd), Json

文件结构(以v1.0-mini为例):

  • maps: 存放Map的png文件
  • samples: 存放Camera, Lidar, Radar关键非结构化数据信息, 带标注
  • sweeps: 存放Camera, Lidar, Radar 次要非结构化数据信息, 不带标注
  • v1.0-mini: 存放结构化json数据

Data 传感器

`传感器类型 详细信息 采样频率 精度
相机 6台彩色相机 12Hz 1600×900 JPEG
LiDAR 1台32线旋转式激光雷达,360°水FOV,-30°-10°的垂直FOV,探测距离70m,每秒140万点云 20Hz 2cm
毫米波雷达 5个77GHz的毫米波雷达,FMCW调频,探测距离250m 13Hz 速度精度±0.1km/h

读取数据:

python 复制代码
from nuscenes.nuscenes import NuScenes

def get_dataset_info2(nusc):
    sample_num = len(nusc.sample)
    ann_num = 0

    scene_tokens = set()
    for sample in nusc.sample:
        ann_num += len(sample['anns'])

        scene = nusc.get('scene', sample['scene_token'])
        scene_tokens.add(scene['token'])
    scene_num = len(scene_tokens)

    print('====== Start from sample')
    print('Scene Num: %d\nSample Num: %d\nAnnotation Num: %d' % (scene_num, sample_num, ann_num))


def get_dataset_info3(nusc):
    ann_num = len(nusc.sample_annotation)

    scene_tokens = set()
    sample_tokens = set()
    for ann in nusc.sample_annotation:
        sample = nusc.get('sample', ann['sample_token'])
        sample_tokens.add(sample['token'])

        scene = nusc.get('scene', sample['scene_token'])
        scene_tokens.add(scene['token'])
    scene_num = len(scene_tokens)
    sample_num = len(sample_tokens)

    print('====== Start from annotation')
    print('Scene Num: %d\nSample Num: %d\nAnnotation Num: %d' % (scene_num, sample_num, ann_num))


if __name__ == '__main__':
 nusc = NuScenes(version='v1.0-mini',
                    dataroot=r'E:\project\jijia\datasets\nuscenes_mini',
                    verbose=True)

 get_dataset_info2(nusc)
 get_dataset_info3(nusc)

boxes3d_to_corners3d

python 复制代码
def boxes3d_to_corners3d(boxes3d, rot_axis):
    """
    将3D框的表示转换为8个角点的表示。
    
    参数:
    - boxes3d: (N, 9) 的数组,每一行表示一个3D框,其包含中心点坐标、尺寸和旋转角度。
    - rot_axis: 旋转轴(通常是 'x', 'y' 或 'z' 轴)。
    
    返回:
    - corners3d: (N, 8, 3) 的数组,每一行表示一个3D框的8个角点的坐标。
    """
    
    # 提取中心点坐标、尺寸和旋转角度
    centers3d, dims3d, angles3d = boxes3d[:, :3], boxes3d[:, 3:6], boxes3d[:, 6:9]
    
    # 将尺寸转换为标准化的角点坐标
    norm_corners3d = dims3d_to_norm_corners3d(dims3d)  # (N, 8, 3)
    
    # 获取旋转矩阵
    rot_mat_t = points3d_utils.get_rot_mat_t(angles3d, rot_axis)
    
    # 旋转标准化角点坐标
    corners3d = points3d_utils.rotate_points3d(norm_corners3d, rot_mat_t)  # (N, 8, 3)
    
    # 将旋转后的角点坐标加上中心点坐标,得到最终的角点坐标
    corners3d += centers3d.reshape((-1, 1, 3))  # (N, 8, 3)
    
    return corners3d

3d转corners2d

python 复制代码
def boxes3d_to_corners2d(boxes3d, rot_axis, cam_intrinsic):
    # boxes3d: (N, 9)
    corners3d = boxes3d_to_corners3d(boxes3d, rot_axis)  # (N, 8, 3)
    corners = corners3d_to_corners2d(corners3d, cam_intrinsic)  # (N, 8, 2)
    return corners
相关推荐
SophiaSSSSS10 分钟前
无标注文本的行业划分(行业分类)算法 —— 无监督或自监督学习
学习·算法·分类
christine-rr10 分钟前
【25软考网工】第三章(3)虚拟局域网VLAN
网络·笔记·软考
酷讯网络_24087016022 分钟前
海外版高端Apple科技汽车共享投资理财系统
学习·游戏·开源·汽车
明月清了个风32 分钟前
数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
笔记·学习·算法·动态规划
美味的大香蕉37 分钟前
从Kafka读取数据
笔记
苏州向日葵1 小时前
C#学习知识点记录
开发语言·学习·c#
落笔画忧愁e2 小时前
数据通信学习笔记之OSPF的区域
笔记·学习·智能路由器
Dovis(誓平步青云)2 小时前
Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力
图像处理·人工智能·学习·云原生·ai作画·边缘计算·机器翻译
Always_away2 小时前
26考研|数学分析:数项级数
笔记·学习
樱花穿过千岛湖3 小时前
第一章:Model Context Protocol (MCP)
网络·人工智能·python·网络协议·学习·tcp/ip