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
相关推荐
月光下的洪流2 小时前
自定义数据集 实例分割 MaskFormer+SOLOV2
linux·服务器·python·学习
Komorebi_99995 小时前
【无标题】
笔记·论文写作
泡芙萝莉酱6 小时前
java学习 - Redis五大数据类型
java·redis·学习
zhangbin_2376 小时前
【Python机器学习】单变量非线性变换
开发语言·人工智能·python·学习·机器学习
精选软件库8 小时前
5款提高工作效率的免费工具推荐
学习
冯诺依曼转世8 小时前
MySQL2(Mysql对数据的增删改 数据的备份和还原 单表查询 常用的聚合函数(⭐⭐))
运维·服务器·数据库·笔记·学习·mysql
仕兴9 小时前
《software architecture patterns》学习笔记
笔记·学习
经海路大白狗10 小时前
【网络安全】一文带你了解什么是【中间人攻击】
网络·学习·安全·web安全·中间人攻击
幼儿园老大*11 小时前
PTA—C语言期末复习(选择题)
c语言·开发语言·笔记·学习·算法
HC1825808583211 小时前
柯桥在职学历提升|专科本科之自考本科哪些专业不考数学
学习·职场和发展