nuPlan数据集可视化实操:用Jupyter Notebook快速探索自动驾驶场景(附完整代码) nuPlan数据集可视化实操用Jupyter Notebook快速探索自动驾驶场景附完整代码自动驾驶研究离不开高质量的数据集支持而nuPlan作为业界领先的开放数据集为算法开发和验证提供了丰富的场景素材。本文将带你快速上手nuPlan数据集的可视化探索通过Jupyter Notebook交互式分析直观理解数据内容为后续算法开发打下坚实基础。1. 环境配置与数据准备在开始可视化探索之前我们需要确保开发环境正确配置。与传统的命令行工具不同Jupyter Notebook提供了更友好的交互界面特别适合数据探索阶段使用。推荐使用conda管理Python环境避免依赖冲突conda create -n nuplan_viz python3.9 conda activate nuplan_viz pip install jupyter notebook数据集下载后建议按以下结构组织文件nuplan/ ├── dataset/ │ ├── maps/ │ └── nuplan-v1.1/ │ └── mini/ └── devkit/提示mini数据集约15GB包含约1000个场景足够初步探索使用。完整数据集需要申请权限。2. 启动可视化Notebook官方提供的nuplan_scenario_visualization.ipynb是绝佳的起点。这个Notebook已经封装了常用的可视化功能我们只需关注数据解读即可。启动Jupyter Notebook服务jupyter notebook --port8888 --no-browser打开Notebook后首先检查内核是否选择正确应为前面创建的nuplan_viz环境。初始单元格通常包含必要的导入和配置from nuplan.planning.scenario_builder.nuplan_db.nuplan_scenario import NuPlanScenario from nuplan.planning.scenario_builder.nuplan_db.nuplan_scenario_utils import ScenarioExtractionInfo from nuplan.common.maps.nuplan_map.map_factory import NuPlanMapFactory3. 核心可视化功能解析3.1 场景选择与加载Notebook通常提供场景选择接口以下是一个典型示例scenario NuPlanScenario( data_rootNUPLAN_DATA_ROOT, map_rootNUPLAN_MAPS_ROOT, scenario_extraction_infoScenarioExtractionInfo( scenario_name2021.07.16.20.45.29_veh-35_01095_01486, start_time0, duration20 # 单位秒 ) )关键参数说明scenario_name场景唯一标识符start_time/duration定义要分析的片段3.2 地图元素可视化nuPlan包含丰富的高精地图信息通过以下代码可渲染车道线、交叉口等元素import matplotlib.pyplot as plt fig, ax plt.subplots(figsize(12, 12)) scenario.map_api.render_map(ax) plt.show()常见地图图层包括车道线不同类型用颜色区分交通信号红绿灯位置和状态可行驶区域车辆合法行驶范围3.3 动态轨迹展示车辆和行人轨迹是分析重点以下代码绘制主车ego和其他交通参与者轨迹from nuplan.planning.utils.color import Color ego_traj scenario.get_ego_trajectory() ax.plot(ego_traj[:, 0], ego_traj[:, 1], colorColor.BLUE, labelEgo) for track in scenario.get_tracks(): ax.plot(track.poses[:, 0], track.poses[:, 1], colorColor.RED, alpha0.5)4. 高级自定义技巧4.1 重点对象高亮显示当需要特别关注某个交通参与者时可以修改绘制参数special_track scenario.get_track_by_token(pedestrian_123) ax.plot(special_track.poses[:, 0], special_track.poses[:, 1], linewidth3, colorColor.GREEN, labelSpecial Pedestrian)4.2 传感器数据叠加nuPlan包含丰富的传感器数据如雷达点云lidar_data scenario.get_lidar_data(time_step10) ax.scatter(lidar_data[:, 0], lidar_data[:, 1], s1, colorColor.CYAN)4.3 交互式探索利用Jupyter的交互控件可以创建动态可视化from IPython.display import display import ipywidgets as widgets def show_frame(frame_idx): fig, ax plt.subplots(figsize(10, 10)) scenario.visualize(ax, frame_idx) plt.show() frame_slider widgets.IntSlider(min0, maxlen(scenario)-1, step1, value0) widgets.interactive(show_frame, frame_idxframe_slider)5. 典型场景分析案例5.1 交叉口行为分析通过可视化可以清晰看到不同交通参与者在交叉口的交互主车接近交叉口时的速度变化行人过街对主车轨迹的影响其他车辆的让行行为5.2 复杂变道场景重点关注变道时机的选择周围车辆的反应轨迹平滑度评估5.3 极端天气条件nuPlan包含雨雪等特殊天气场景可视化时注意传感器数据质量变化轨迹异常检测地图元素可见性6. 性能优化技巧处理大规模数据时这些技巧能提升效率数据缓存from joblib import Memory memory Memory(./cache) memory.cache def load_scenario(scenario_name): return NuPlanScenario(...)选择性加载scenario NuPlanScenario(..., load_occupancy_mapFalse)并行处理from concurrent.futures import ThreadPoolExecutor with ThreadPoolExecutor() as executor: results list(executor.map(process_scenario, scenario_list))7. 扩展应用方向基于这套可视化工具可以进一步开发异常检测系统自动识别不符合交通规则的轨迹场景分类器根据可视化特征对场景难度分级算法验证平台对比算法输出与真实轨迹完整代码示例已整理在GitHub仓库包含更多实用功能和详细注释。实际使用时建议先从mini数据集入手熟悉数据结构和可视化方法后再扩展到完整数据集分析。