DiffusionDriveV2 代码结构图
系列 -
目录
DiffusionDrive/
│
├── 📄 setup.py # 项目安装配置
├── 📄 environment.yml # Conda 环境依赖
├── 📄 requirements.txt # pip 依赖
├── 📄 kmeans_navsim_traj_20.npy # K-Means 轨迹聚类锚点
│
├── 📂 docs/ # 文档
│ ├── DiffusionDrive_Architecture.md # 架构说明
│ ├── install.md # 安装指南
│ └── train_eval.md # 训练与评估指南
│
├── 📂 assets/ # 图片资源
│
├── 📂 gtrs_traj/ # Ground-truth 参考轨迹
│ └── 16384.npy
│
├── 📂 download/ # 数据集下载脚本
│ ├── download_maps.sh
│ ├── download_mini.sh
│ ├── download_navtrain.sh
│ ├── download_trainval.sh
│ ├── download_test.sh
│ ├── download_private_test_e2e.sh
│ └── super_download.sh
│
├── 📂 scripts/ # 运行脚本
│ ├── 📂 training/ # 训练脚本
│ │ ├── run_ego_mlp_agent_training.sh
│ │ └── run_transfuser_training.sh
│ ├── 📂 evaluation/ # 评估脚本
│ │ ├── run_metric_caching.sh
│ │ ├── run_transfuser.sh
│ │ ├── run_cv_pdm_score_evaluation.sh
│ │ ├── run_ego_mlp_agent_pdm_score_evaluation.sh
│ │ └── run_human_agent_pdm_score_evaluation.sh
│ └── 📂 submission/ # 提交脚本
│ ├── run_cv_create_submission_pickle.sh
│ └── run_merge_submission_pickles.sh
│
├── 📂 tutorial/ # 教程
│ └── tutorial_visualization.ipynb
│
└── 📂 navsim/ # ========== 核心代码 ==========
│
├── 📂 agents/ # ===== 智能体 (Agent) =====
│ ├── abstract_agent.py # 抽象基类 Agent
│ ├── constant_velocity_agent.py # 恒速 Baseline Agent
│ ├── ego_status_mlp_agent.py # MLP Baseline Agent
│ ├── human_agent.py # 人类驾驶 Agent
│ │
│ ├── 📂 transfuser/ # ---- TransFuser Agent ----
│ │ ├── transfuser_agent.py # Agent 入口
│ │ ├── transfuser_config.py # 配置
│ │ ├── transfuser_backbone.py # 骨干网络 (ResNet + Transformer)
│ │ ├── transfuser_model.py # 完整模型
│ │ ├── transfuser_features.py # 特征提取与目标构建
│ │ ├── transfuser_loss.py # 损失函数
│ │ └── transfuser_callback.py # 训练回调
│ │
│ ├── 📂 diffusiondrive/ # ---- DiffusionDrive v1 ----
│ │ ├── transfuser_agent.py # Agent 入口
│ │ ├── transfuser_config.py # 配置
│ │ ├── transfuser_backbone.py # 骨干网络
│ │ ├── transfuser_model_v2.py # 扩散模型 (核心)
│ │ ├── transfuser_features.py # 特征提取与目标构建
│ │ ├── transfuser_loss.py # 损失函数
│ │ ├── transfuser_callback.py # 训练回调
│ │ └── 📂 modules/ # 扩散模块
│ │ ├── blocks.py # 基础网络块 (SinusoidalPosEmb, ResBlock 等)
│ │ ├── conditional_unet1d.py# 条件 UNet1D 去噪网络
│ │ ├── multimodal_loss.py # 多模态损失
│ │ └── scheduler.py # 扩散调度器 (DDPM/DDIM)
│ │
│ └── 📂 diffusiondrivev2/ # ---- DiffusionDrive v2 ----
│ ├── diffusiondrivev2_rl_agent.py # RL Agent 入口
│ ├── diffusiondrivev2_rl_config.py # RL 配置
│ ├── diffusiondrivev2_model_rl.py # RL 模型
│ ├── diffusiondrivev2_sel_agent.py # Selection Agent 入口
│ ├── diffusiondrivev2_sel_config.py # Selection 配置
│ ├── diffusiondrivev2_model_sel.py # Selection 模型
│ ├── transfuser_backbone.py # 骨干网络
│ ├── transfuser_config.py # 基础配置
│ ├── transfuser_features.py # 特征提取与目标构建
│ ├── transfuser_loss.py # 损失函数
│ ├── transfuser_callback.py # 训练回调
│ └── 📂 modules/ # 扩散模块 (同 v1)
│ ├── blocks.py
│ ├── conditional_unet1d.py
│ ├── multimodal_loss.py
│ └── scheduler.py
│
├── 📂 common/ # ===== 公共数据结构 =====
│ ├── dataclasses.py # 核心数据类 (Scene, Frame, Trajectory 等)
│ ├── dataloader.py # 数据加载器
│ └── enums.py # 枚举定义
│
├── 📂 evaluate/ # ===== 评估 =====
│ └── pdm_score.py # PDM 评分计算
│
├── 📂 visualization/ # ===== 可视化 =====
│ ├── bev.py # 鸟瞰图 (BEV) 可视化
│ ├── camera.py # 相机视图可视化
│ ├── lidar.py # LiDAR 点云可视化
│ ├── config.py # 可视化配置
│ └── plots.py # 绘图工具
│
└── 📂 planning/ # ===== 规划系统 =====
│
├── 📂 training/ # ---- 训练框架 ----
│ ├── abstract_feature_target_builder.py # 特征/目标构建抽象类
│ ├── agent_lightning_module.py # PyTorch Lightning 训练模块
│ ├── dataset.py # 数据集定义
│ └── 📂 callbacks/
│ └── time_logging_callback.py # 训练时间日志回调
│
├── 📂 metric_caching/ # ---- 指标缓存 ----
│ ├── caching.py # 缓存逻辑
│ ├── metric_cache.py # 缓存数据结构
│ ├── metric_cache_processor.py# 缓存处理器
│ └── metric_caching_utils.py # 缓存工具函数
│
├── 📂 scenario_builder/ # ---- 场景构建 ----
│ ├── navsim_scenario.py # NavSim 场景定义
│ └── navsim_scenario_utils.py # 场景工具函数
│
├── 📂 simulation/ # ---- PDM 仿真规划器 ----
│ └── 📂 planner/pdm_planner/
│ ├── abstract_pdm_planner.py # PDM 规划器抽象类
│ ├── abstract_pdm_closed_planner.py # 闭环 PDM 规划器抽象类
│ ├── pdm_closed_planner.py # 闭环 PDM 规划器实现
│ ├── 📂 observation/ # 观测处理
│ │ ├── pdm_observation.py # 观测数据
│ │ ├── pdm_occupancy_map.py # 占用栅格地图
│ │ └── pdm_object_manager.py # 目标物管理
│ ├── 📂 proposal/ # 轨迹提案生成
│ │ ├── pdm_proposal.py # 提案定义
│ │ ├── pdm_generator.py # 提案生成器
│ │ └── batch_idm_policy.py # 批量 IDM 策略
│ ├── 📂 scoring/ # 轨迹评分
│ │ ├── pdm_scorer.py # 评分器
│ │ ├── pdm_scorer_utils.py # 评分工具
│ │ └── pdm_comfort_metrics.py # 舒适度指标
│ ├── 📂 simulation/ # 运动学仿真
│ │ ├── pdm_simulator.py # 仿真器
│ │ ├── batch_kinematic_bicycle.py # 批量自行车运动学模型
│ │ ├── batch_lqr.py # 批量 LQR 控制器
│ │ └── batch_lqr_utils.py # LQR 工具
│ └── 📂 utils/ # 工具函数
│ ├── pdm_path.py # 路径处理
│ ├── pdm_geometry_utils.py # 几何工具
│ ├── pdm_array_representation.py # 数组表示
│ ├── pdm_emergency_brake.py # 紧急制动
│ ├── pdm_enums.py # 枚举
│ ├── route_utils.py # 路线工具
│ └── 📂 graph_search/ # 图搜索
│
├── 📂 script/ # ---- 运行入口脚本 ----
│ ├── run_training.py # 训练入口
│ ├── run_pdm_score.py # PDM 评分入口
│ ├── run_pdm_score_fast.py # 快速 PDM 评分
│ ├── run_pdm_score_from_submission.py # 从提交文件评分
│ ├── run_metric_caching.py # 指标缓存入口
│ ├── run_dataset_caching.py # 数据集缓存入口
│ ├── run_create_submission_pickle.py # 创建提交文件
│ ├── run_merge_submission_pickles.py # 合并提交文件
│ ├── utils.py # 脚本工具
│ ├── 📂 builders/ # 构建器
│ │ ├── observation_builder.py # 观测构建器
│ │ ├── planner_builder.py # 规划器构建器
│ │ ├── simulation_builder.py # 仿真构建器
│ │ └── worker_pool_builder.py # 工作池构建器
│ └── 📂 config/ # Hydra 配置文件
│ ├── 📂 common/
│ │ ├── default_common.yaml
│ │ ├── default_evaluation.yaml
│ │ ├── 📂 agent/ # Agent 配置 (7种)
│ │ ├── 📂 train_test_split/ # 数据集划分配置
│ │ └── 📂 worker/ # 并行 Worker 配置
│ ├── 📂 training/ # 训练配置
│ ├── 📂 metric_caching/ # 指标缓存配置
│ └── 📂 pdm_scoring/ # PDM 评分配置
│
└── 📂 utils/ # ---- 工具 ----
└── 📂 multithreading/
└── worker_ray_no_torch.py # Ray 分布式 Worker模块依赖关系
┌─────────────────────────────────────────────────────────────────┐
│ scripts/ (Shell) │
│ 训练 / 评估 / 提交 启动脚本 │
└──────────────────────────┬──────────────────────────────────────┘
│ 调用
▼
┌─────────────────────────────────────────────────────────────────┐
│ navsim/planning/script/ │
│ run_training.py | run_pdm_score.py | ... │
│ (Hydra 配置驱动) │
└──────┬──────────────┬──────────────┬───────────────┬────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌───────────┐ ┌──────────────┐
│ training/ │ │ builders/ │ │ metric_ │ │ scenario_ │
│ │ │ │ │ caching/ │ │ builder/ │
│ Lightning │ │ 构建观测/ │ │ │ │ │
│ 训练模块 │ │ 规划器/仿真│ │ 指标缓存 │ │ 场景构建 │
└─────┬──────┘ └─────┬──────┘ └─────┬─────┘ └──────┬───────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ navsim/agents/ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ abstract_agent.py (抽象基类) │ │
│ └──────┬──────────┬──────────────┬────────────┬────────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌───────────┐ ┌──────────────┐ │
│ │TransFuser│ │Diffusion │ │Diffusion │ │ Baseline │ │
│ │ │ │Drive v1 │ │Drive v2 │ │ Agents │ │
│ │ model │ │ │ │ (RL/Sel) │ │ (CV/MLP/ │ │
│ │ backbone │ │ model_v2 │ │ model_rl │ │ Human) │ │
│ │ features │ │ backbone │ │ model_sel │ │ │ │
│ │ loss │ │ features │ │ backbone │ │ │ │
│ │ callback │ │ loss │ │ features │ │ │ │
│ └──────────┘ │ callback │ │ loss │ └──────────────┘ │
│ │ modules/ │ │ callback │ │
│ │ ├ UNet1D│ │ modules/ │ │
│ │ ├ blocks│ │ ├ UNet1D │ │
│ │ ├ sched.│ │ ├ blocks │ │
│ │ └ mm_lss│ │ ├ sched. │ │
│ └──────────┘ │ └ mm_lss │ │
│ └───────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ navsim/common/ │
│ dataclasses.py | dataloader.py | enums.py │
│ (公共数据结构与加载) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ navsim/planning/simulation/ │
│ PDM Planner 仿真系统 │
│ ┌────────────┐ ┌──────────┐ ┌─────────┐ ┌──────────────┐ │
│ │ observation │ │ proposal │ │ scoring │ │ simulation │ │
│ │ 观测处理 │ │ 轨迹提案 │ │ 轨迹评分│ │ 运动学仿真 │ │
│ └────────────┘ └──────────┘ └─────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ navsim/evaluate/ │
│ pdm_score.py │
│ (PDM 评分指标计算) │
└─────────────────────────────────────────────────────────────────┘