nuScenes数据集实战:从安装到多传感器数据可视化

nuscenes教程 1.nuScenes数据集(发音为/nuːsiːnz/)是由Motional(前身为nuTonomy)团队开发的大规模自动驾驶公共数据集。下面基本上都是这样的操作,具体可以参考nuscenes官网官方教程也可以参考https://blog.youkuaiyun.com/qq_47233366/article/details/123450282?2.下面是采集车图片:采集车上配备了完善的传感器,包括6个相机(CAM)、1个激光雷达 (LIDAR)、5个毫米波雷达(RADAR)、IMU和GPS。就可以不输出上面内容了。 阅读详情

1. nuScenes数据集简介与安装指南

nuScenes是自动驾驶领域最受欢迎的公开数据集之一,由Motional(前身为nuTonomy)团队于2019年发布。这个数据集采集自波士顿和新加坡的复杂城市道路场景,包含1000个场景,每个场景时长约20秒。数据集最吸引人的特点是其多模态传感器配置:6个摄像头(覆盖360°视野)、1个激光雷达、5个毫米波雷达,以及完整的IMU和GPS数据。

我第一次接触这个数据集时,被它的规模震撼到了——完整版约400GB,包含140万张图像、39万帧激光雷达扫描数据。不过别担心,官方提供了mini版本(约4GB),非常适合快速验证想法。数据集的核心价值在于其精细的3D标注,包括23类物体的3D边界框、属性和可见度信息,这在同类数据集中非常罕见。

安装过程其实很简单,只需两步:

pip install nuscenes-devkit

然后下载数据集(建议从官网注册后获取mini版本)。解压后你会看到这样的目录结构:

/data/sets/nuscenes
    ├── samples       # 关键帧传感器数据
    ├── sweeps        # 非关键帧传感器数据  
    ├── maps          # 高精地图(PNG+JSON)
    └── v1.0-mini     # 元数据与标注(JSON)

遇到过一个小坑:如果自定义数据路径,需要修改devkit源码中的默认路径设置。建议初学者先用官方推荐路径,等熟悉了再调整。

2. 数据集结构深度解析

2.1 核心数据表关系

nuScenes的数据组织像一个小型数据库,所有信息通过token(唯一ID)关联。主要表格包括:

  • scene:场景单元(如"雨天十字路口左转")
  • sample:场景中的时间采样点(每0.5秒一帧)
  • sample_data:具体传感器数据(如图像、点云文件路径)
  • sample_annotation:3D物体标注

用个生活化的比喻:如果把scene比作一部电影,sample就是电影中的关键帧,sample_data是每帧的画面和声音,sample_annotation则是字幕里标注的人物信息。

2.2 传感器数据详解

数据集包含三类传感器:

  1. 摄像头:6个(前/后/左前/右前/左后/右后),1600×900分辨率
  2. 激光雷达:1个32线雷达(车顶),每秒20次扫描
  3. 毫米波雷达:5个(前/左前/右前/左后/右后),每秒13次扫描

特别要注意的是数据存储方式:

  • samples/文件夹存放关键帧数据
  • sweeps/存放中间帧数据(无标注)

实际使用时有个技巧:如果只做目标检测,可以只下载samples数据;若要做时序分析,才需要完整的sweeps数据。

3. 多传感器数据可视化实战

3.1 基础可视化方法

devkit自带的NuScenesExplorer类提供了开箱即用的可视化工具。最常用的三个方法:

from nuscenes.nuscenes import NuScenes
nusc = NuScenes(version='v1.0-mini', dataroot='/data/sets/nuscenes')

# 渲染单帧传感器数据
nusc.render_sample_data('37091c75b9704e0daa829ba56dfa0906')  # 传入sample_data token

# 渲染3D标注框
nusc.render_annotation('ef63a697930c4b20a6b9791f423351da')

# 渲染整个场景的追踪轨迹
nusc.render_instance('9cba9cd8af85487fb010652c90d845b5')

实测发现一个小技巧:在Jupyter Notebook中使用%matplotlib notebook可以获得交互式可视化窗口,方便旋转查看3D点云。

3.2 多传感器同步可视化

要实现多传感器数据叠加显示(如相机图像+雷达点云),需要处理坐标系转换。devkit已经封装好了相关方法:

from nuscenes.utils.data_classes import LidarPointCloud
import matplotlib.pyplot as plt

# 获取样本数据
sample = nusc.sample[10]
cam_token = sample['data']['CAM_FRONT']
lidar_token = sample['data']['LIDAR_TOP']

# 将激光雷达点云投影到图像
points = LidarPointCloud.from_file(nusc.get_sample_data(lidar_token)[0])
img = Image.open(nusc.get_sample_data(cam_token)[0])

# 可视化
plt.figure(figsize=(12,6))
plt.imshow(img)
points.render_height(plt.gca())  # 在图像上渲染点云高度信息

这里有个常见问题:点云在图像上位置不准?通常是没考虑传感器外参。devkit的get_sample_data()方法会自动完成坐标系转换,比自己手动计算更可靠。

4. 高级技巧与性能优化

4.1 高效数据加载方案

处理完整数据集时,I/O容易成为瓶颈。我的经验是:

  1. 预加载元数据:初始化时设置verbose=False可加速加载
  2. 使用生成器:批量处理样本而非单帧处理
  3. 缓存常用数据:如校准参数、地图等
# 批量处理示例
for scene in nusc.scene:
    first_sample_token = scene['first_sample_token']
    while first_sample_token:
        sample = nusc.get('sample', first_sample_token)
        process_sample(sample)  # 自定义处理函数
        first_sample_token = sample['next']

4.2 自定义可视化技巧

官方可视化有时不够灵活,我们可以用pyviz或open3d实现更复杂的渲染:

from nuscenes.utils import visualization as viz
import open3d as o3d

# 创建带标注的3D场景
fig, ax = viz.visualize_sample(nusc, sample_token='ca9a282c9e77460f8360f564131a8af5')
plt.show()

# 使用Open3D交互式查看点云
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points.points[:3,:].T)
o3d.visualization.draw_geometries([pcd])

遇到过的一个坑:open3d默认坐标系与nuScenes不同(y轴向上 vs z轴向上),需要做坐标变换。

5. 实际项目中的应用建议

在真实项目中,我通常会这样使用nuScenes:

  1. 算法原型阶段:用mini版快速验证idea
  2. 模型训练:使用完整版的trainval split(约700场景)
  3. 测试评估:用test split(约150场景)提交到官方评测服务器

对于计算资源有限的团队,建议:

  • 优先使用关键帧数据(samples)
  • 从单一模态开始(如仅用摄像头或仅用激光雷达)
  • 利用官方提供的baseline代码(如CenterPoint、BEVFusion)

最后分享一个实用脚本——批量导出所有场景的鸟瞰图:

from nuscenes.utils.geometry_utils import view_points

def export_bev(scene_token, output_dir):
    scene = nusc.get('scene', scene_token)
    sample_token = scene['first_sample_token']
    
    while sample_token:
        sample = nusc.get('sample', sample_token)
        lidar_data = nusc.get_sample_data(sample['data']['LIDAR_TOP'])[0]
        
        # 转换为BEV坐标
        points = LidarPointCloud.from_file(lidar_data)
        points = points.points[:3,:]  # 取xyz
        points[2,:] = 0  # 忽略高度
        
        # 绘制并保存
        plt.scatter(points[0,:], points[1,:], s=1)
        plt.savefig(f"{output_dir}/{sample_token}.png")
        plt.clf()
        
        sample_token = sample['next']
nuScenes数据集实战指南:从安装到多传感器数据可视化 本文详细介绍了nuScenes数据集的使用方法,从安装到多传感器数据可视化,涵盖了数据集结构解析、数据加载实战和高级可视化技巧。通过实际案例和代码示例,帮助开发者快速掌握这一自动驾驶研究的黄金标准数据集,提升多模态数据处理能力。 阅读详情

相关推荐

Python实现NuScenes数据集可视化:从3D边界框到2D图像的投影原理与实践

本文介绍了使用Python实现NuScenes数据集3D边界框到2D图像投影可视化的方法。NuScenes作为自动驾驶领域的重要数据集,包含多传感器数据和3D物体标注。文章详细解析了从世界坐标系到图像坐标系的转换流程,包括车辆位姿、相机标定等关键步骤,并提供了完整的Python实现代码。通过3D到2D投影公式(X/Z,Y/Z)和相机内参矩阵,可将物体3D位置准确映射到图像上,为自动驾驶算法开发和数据分析提供可视化基础。文中还包含数据集下载、环境配置和技术实现细节,帮助读者快速掌握这一关键技术。

Hi20240217的博客 1189

NuScenes数据集安装步骤

云服务器平台自测nuscenes数据集

dydwl的博客 1645

nuScenes数据集实战:从坐标系转换到多传感器融合的完整解析

自动驾驶感知系统的开发离不开高质量数据集与多模态数据处理技术。nuScenes作为业内主流的自动驾驶数据集,涵盖相机、激光雷达与毫米波雷达等异构传感器数据,其组织方式与坐标变换链路是目标检测、轨迹预测乃至多传感器融合模型训练的关键。理解数据分层、传感器配置与外参标定原理,是高效复用真实路测数据的基础。本文从数据组织与坐标系转换入手,解析全局坐标到图像像素的投影链路,给出可直接复用的点云投影与可视化代码,并探讨版本兼容、内存控制及标注对齐等工程化问题,帮助开发者快速掌握这一多模态数据集的完整使用流程,降低真实

weixin_35756373的博客 174

nuscenes devkit 使用入门

nuScenes数据集真值标注数据都存在了json文件中,并且每个json文件还存了不同的信息,直接看可能不够直观。而本身数据集就提供了库或函数帮助我们使用这些数据。nuscenes-devkit安装包,可通过pip直接安装nuscenes-devkit repo代码,提供了一些示例脚本,帮助我们可视化数据。以上两个工具配合使用,可以调用函数处理或可视化数据。

BeHappyBeLucky的博客 5926

nuScenes数据集实战:多传感器融合与3D目标检测全流程解析

多传感器融合是自动驾驶感知的核心技术,通过整合相机、激光雷达和毫米波雷达数据,实现更鲁棒的环境理解。其原理在于利用标定参数将不同传感器数据统一到同一坐标系,进行时空对齐与特征融合。技术价值在于提升3D目标检测精度和场景适应性。典型应用包括BEV感知、轨迹预测等。nuScenes数据集提供完整的360度传感器套件和标注,是实践多传感器融合的理想平台。本文深入拆解nuScenes数据加载、坐标系变换、标注解析及BEV模型训练全流程,助力开发者快速上手。

weixin_26907223的博客 199

nuScenes 数据集实战:从数据解析到 3D 检测训练全流程

多传感器融合是自动驾驶感知的核心技术,通过整合摄像头、激光雷达和毫米波雷达数据,实现更鲁棒的环境理解。其原理在于利用标定参数将不同传感器数据统一到自车坐标系,并进行时空同步。技术价值在于提升 3D 检测精度和场景适应性。典型应用包括 BEV 感知、点云分割和轨迹预测。nuScenes 数据集提供 1000 个场景的多模态同步数据,涵盖 6 摄像头、1 激光雷达和 5 毫米波雷达,是验证融合算法的理想平台。本文围绕 nuScenes 的目录结构、标注格式和坐标系变换,详解从数据加载到 3D 检测训练的全流程,

weixin_29054245的博客 122

nuscenes-devkit 安装报错

nuscenes-devkit 安装报错

zfjBIT的专栏 1217

nuscenes-devkit:nuScenes数据集的devkit

nuScenes开发套件 欢迎使用和数据集的 。 概述 地图扩展 地图版本 nuScenes入门 已知的问题 引文 变更日志 2021年4月5日:Devkit v1.1.3:错误修复和pip要求。 2020年11月23日:Devkit v1.1.2:发布具有激光雷达底图的地图扩展v1.3。 2020年11月9日:Devkit v1.1.1:Lidarseg评估代码,NeurIPS挑战公告。 2020年8月31日:Devkit v1.1.0:nuImages v1.0和nuScenes-lidarseg v1.0代码发布。 2020年7月7日:Devkit v1.0.9:地图和预测代码的其他更新。 2020年4月30日:nuImages v0.1代码发布。 2020年4月1日:Devkit v1.0.8:放宽点数要求并重组预测代码。 2020年3月24日:Devkit v1.

pip install nuscenes-devkit安装报错

error : Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual....

Elon15的博客 6848

ZYNQ平台上基于SGMII接口的IEEE1588/PTP协议高效实现方案

本文深入探讨了在Xilinx ZYNQ平台上,利用SGMII接口实现高精度IEEE1588/PTP协议的方案。通过将硬件时间戳单元集成在PL端的AXI以太网子系统IP核中,该方案绕过了软件协议栈和外部PHY的延迟,实现了亚微秒级的时间同步精度。文章详细解析了硬件设计、Vivado IP配置、Linux驱动移植及PTP协议栈部署等关键步骤,为工业控制、通信等领域的高精度网络同步提供了高效、灵活的解决路径。

q5r6s7的博客 605

完整版:ultralytics下运行yoloworld并训练

本文介绍了Ultralytics YOLO环境的快速配置与使用流程:1) 通过conda创建Python 3.9环境并安装依赖包;2) 配置中科大镜像源加速安装PyTorch和Ultralytics;3) 准备YOLO格式数据集并修改data.yaml配置文件;4) 提供模型预测、训练和验证的常用指令,包括predict/train/val等命令参数设置。文章还包含CLIP模型下载、权重文件获取以及本地安装等注意事项,完整覆盖了从环境搭建到模型部署的全过程。

weixin_50209871的博客 1345

Nuscenes数据集实战:从零开始搭建自动驾驶数据可视化环境(附避坑指南)

本文提供了一份详细的Nuscenes数据集实战指南,旨在帮助自动驾驶研究者和开发者从零开始搭建高效、稳定的数据可视化环境。文章涵盖了Python环境配置、nuscenes-devkit库安装、依赖冲突解决方案等核心步骤,并分享了官方文档未提及的常见“避坑”技巧,如特定版本NumPy导致的崩溃和内存优化方法,确保读者能在30分钟内完成环境搭建并流畅浏览数据集。

nept的博客 1012

WGS-84 ECEF ENU 坐标系学习记录

地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。 一、 几种坐标系 地心地固直角坐标系(ECEF)坐标系 其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿...

YYshuangshuang的博客 1万+

NuScenes 数据集实战:从数据加载到多传感器融合可视化

本文详细介绍了如何使用NuScenes数据集进行自动驾驶多传感器融合研究。通过nuscenes-devkit工具包,从环境搭建、数据加载到核心概念解析,逐步指导实现激光雷达点云与相机图像的融合可视化,并涵盖高级数据探索与坐标系变换等实用技巧,为相关算法开发提供坚实基础。

vvv99的博客 391

别再为镜面物体检测发愁了!手把手教你用PMD相位偏折术增强2.5D形状图细节(附Python代码)

本文详细解析了PMD相位偏折术在工业视觉中镜面物体检测的应用,通过2.5D成像方案增强形状图细节。文章提供了Python代码示例,介绍了一种计算高效的局部特征增强算法,帮助解决产线环境中的噪声问题,提升缺陷识别准确率。

weixin_29299807的博客 346

火山引擎实时对话AI实战:5分钟搞定WebRTC+大模型+ASR/TTS全链路集成

本文详细介绍了如何利用火山引擎的实时对话AI解决方案,快速集成WebRTC、大模型、ASR和TTS服务,构建低延迟、高保真的实时语音对话应用。通过实战代码示例,从环境准备、音频流管理到全链路串联与性能优化,为开发者提供了一套端到端的集成指南,适用于智能客服、在线教育等互动场景。

weixin_29051245的博客 1129

nuScenes 数据集实战解析:从数据加载到可视化

本文提供了nuScenes自动驾驶数据集从入门到精通的实战指南。详细解析了数据集的多模态结构、核心概念与数据关联逻辑,并逐步演示了环境搭建、数据加载、API使用以及多传感器数据(图像、点云、地图)的可视化技巧,帮助研究者和开发者高效利用这一权威基准进行算法开发与验证。

oil88的博客 447

基于GA-PSO-BP混合神经网络的多输入多输出数据预测-Python代码实现

多输入多输出数据预测

2301_80449389的博客 2783

NuScenes数据集实战:从传感器校准到多模态数据可视化

本文提供了NuScenes自动驾驶数据集从入门到实战的完整指南。详细解析了其多模态数据(激光雷达、摄像头、雷达)的组织逻辑与核心JSON文件关联,并重点演示了如何使用官方Devkit进行传感器校准数据访问、单传感器可视化以及激光雷达点云与摄像头图像的多模态联合可视化,帮助研究者快速上手这一关键数据集。

weixin_29197835的博客 421

【ARM Trace32(劳特巴赫) 使用介绍 10 -- Trace32 scan dump 详细介绍】

将图 1-2 中扫描单元按照扫描移位模式连接起来,就构成了扫描测试中的基本结构,这里介绍下全扫描。全扫描就是多个扫描单元相连接,上一单元的扫描输出,连接到目前单元的扫描输入,目前单元的扫描输出连接到下一单元的扫描输入,以此类推,构成一条移位寄存器链,如图1-3 所示:图 1-3 全扫描这样的扫描结构,可通过一个串行输入端,将期望的数据存入移位寄存器链并观察运行结果。

CodingCos的博客 2034

k8s中pod使用详解

k8s中Pod使用

congge 1万+

nuscenes数据集实战:从数据加载到3D目标可视化(Python代码示例)

本文详细介绍了NuScenes数据集在自动驾驶研发中的应用,从数据加载到3D目标可视化的全流程解析。通过Python代码示例,展示了多传感器数据可视化、3D标注数据解析以及高级数据操作技巧,帮助开发者高效利用这一全面的多模态自动驾驶数据集。

weixin_26968079的博客 249

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

nuScenes数据集实战解析:从数据加载到可视化应用

本文提供了nuScenes自动驾驶数据集从环境搭建、数据加载到核心数据结构解析的完整实战指南。通过详细的代码示例,深入讲解了Scene、Sample、Annotation等关键概念,并演示了图像、点云及多模态数据的可视化方法,帮助研究者和开发者高效利用这一多模态数据集进行算法开发与验证。

coffee的博客 413

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

nuScenes数据集实战:如何用Python SDK的Tutorials快速上手数据可视化与3D标注查看

本文详细介绍了如何使用nuScenes数据集的Python SDK进行数据可视化与3D标注查看。从开发环境配置、数据加载到3D标注可视化,提供了完整的实战指南,帮助自动驾驶研究者快速上手这一多模态数据集,提升算法开发效率。

weixin_33045961的博客 237

Nuscenes数据集实战:从零开始搭建自动驾驶数据解析环境(附避坑指南)

本文提供了一份详细的Nuscenes数据集实战指南,涵盖从零搭建自动驾驶数据解析环境的完整流程。内容重点包括环境配置、数据集获取与组织、核心API解析、多传感器数据关联与可视化,并分享了3D标注解析与高级应用技巧,旨在帮助研究者高效上手并规避常见问题。

ipfs8storage的博客 536

NuScenes数据可视化避坑指南:Open3D中处理多传感器坐标系转换的5个关键步骤

本文针对NuScenes数据集在Open3D中进行多传感器数据可视化时常见的坐标系错乱问题,提供了详细的避坑指南。文章深入解析了Global、Ego和Sensor三层坐标系的关系,并拆解了从点云加载、标注框转换到最终可视化验证的5个关键步骤,帮助开发者精准实现激光雷达点云与3D标注框的空间对齐。

ice55的博客 486
上一篇: Xposed Hook实战:绕过360加固应用的模拟器检测机制
下一篇: PKCS7与RSA验签原理图解:OpenSSL如何用cafile构建信任链?
mango
博客等级 码龄27年 429粉丝 1710原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值