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
相关推荐
JWASX14 分钟前
【agent 开发】agent 开发学习 - LangChain(2)
python·学习·langchain
ab12376831 分钟前
Spring Integration 完整笔记 + 和 spring-integration-mqtt、Paho、EMQX 的关系
java·笔记·spring
li星野39 分钟前
【学习记录】立创EDA专业版核心概念全解析:数据整理、设计验证与器件四层模型
学习
知识分享小能手44 分钟前
C学习教程,从入门到精通,C语言输入和输出(4)
c语言·开发语言·学习
ACP广源盛139246256731 小时前
Type-C 扩展坞方案选型笔记|国产 DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP 评估
开发语言·笔记·硬件架构·硬件工程·hdmi·国产芯片
旖旎夜光1 小时前
【LangGraph实战】LangGraph 学习笔记(四):持久化——从线程记忆到跨会话长期记忆
人工智能·笔记·python·学习·ai编程·langgraph
kdxiaojie1 小时前
MPU6050学习
笔记·学习·mpu6050
敬往事一杯酒哈11 小时前
海康 AGV 导航读码器学习
学习
qq_2842740512 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_2842740513 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造