5.3 KiB
5.3 KiB
MAGAIL4AutoDrive
基于 MetaDrive 仿真器和 Waymo Open Motion Dataset 的自动驾驶多智能体模仿学习(MAGAIL)与行为克隆(BC)训练系统。
本项目旨在从真实的 Waymo 驾驶数据中提取专家轨迹,并通过模仿学习(Imitation Learning)训练能够适应复杂交互场景的自动驾驶策略。
目录结构
MAGAIL4AutoDrive/
├── Algorithm/ # 强化学习与模仿学习算法实现
│ ├── policy.py # 基础策略网络 (MLP 等)
│ ├── ppo.py # PPO 算法实现
│ ├── magail.py # MAGAIL 算法核心逻辑
│ ├── disc.py # 判别器 (Discriminator) 网络
│ └── ...
├── Env/ # 仿真环境封装 (MetaDrive Wrapper)
│ ├── bc_env.py # BCScenarioEnv,45 维观测(BC/MAGAIL 共用)
│ ├── scenario_env.py # 多智能体基础场景环境
│ ├── expert_replay_env.py # 专家轨迹回放环境(数据生成与回放)
│ ├── inverse_dynamics.py # 逆动力学模块 (轨迹 -> 动作)
│ ├── simple_idm_policy.py # ConstantVelocityPolicy 占位策略
│ └── ...
├── dataset/ # 数据集加载器
│ ├── expert_dataset.py # 通用专家数据加载类
│ └── magail_dataset.py # MAGAIL 训练专用数据加载器
├── scripts/ # 工具脚本(数据、回放、可视化、分析)
│ ├── generate_expert_data.py # 从 Waymo 生成专家 (obs, act) pkl
│ ├── visualize_replay.py # 原始专家数据回放
│ ├── visualize_trained_policy.py # BC/MAGAIL 策略可视化统一入口
│ ├── analyze_expert_data.py # 数据分布分析
│ ├── launch_tensorboard.py # 启动 TensorBoard
│ ├── README.md # 脚本用法说明
│ └── ...
├── data/ # 数据目录(相对路径)
│ ├── exp_filtered/ # Waymo 场景数据
│ ├── training_data/ # 专家 pkl 输出(generate_expert_data)
│ └── trajectories/ # 其他轨迹 pkl(如 expert_dataset 输出)
├── models/ # 模型保存目录(相对路径)
│ ├── bc/ # BC 模型 (.pt)
│ └── magail/ # MAGAIL 模型 (*_actor.pth, *_critic.pth)
├── logs/ # 训练日志 (TensorBoard)
│ ├── bc/
│ └── magail/
├── train_bc.py # [根目录] BC 训练
├── train_magail.py # [根目录] MAGAIL 训练
├── visualize_bc.py # [根目录] BC 可视化薄包装 -> scripts/visualize_trained_policy.py
└── README.md
路径约定(相对项目根)
- 数据:Waymo 场景
data/exp_filtered;专家 pkldata/training_data;其他轨迹data/trajectories - 模型:BC
models/bc/,MAGAILmodels/magail/ - 日志:TensorBoard 写入
logs/bc/、logs/magail/
所有默认路径均为相对项目根,便于在不同设备上复用。
核心工作流
1. 数据准备
使用 scripts/generate_expert_data.py 将 Waymo 数据转换为训练用 .pkl,输出到 data/training_data/。
python scripts/generate_expert_data.py --data_dir data/exp_filtered --output_dir data/training_data --num_scenarios 100
2. 行为克隆 (BC)
- 训练:
python train_bc.py(模型保存到models/bc/,日志到logs/bc/) - 可视化:
python visualize_bc.py或python scripts/visualize_trained_policy.py --policy_type bc --model_path models/bc/policy_best.pt
3. 多智能体对抗模仿学习 (MAGAIL)
- 训练:
python train_magail.py(模型保存到models/magail/,日志到logs/magail/) - 可视化:
python scripts/visualize_trained_policy.py --policy_type magail --model_path models/magail/model_50_actor.pth
4. 策略可视化统一入口
BC 与 MAGAIL 共用 scripts/visualize_trained_policy.py,通过 --policy_type bc|magail(或根据 --model_path 自动推断)选择模型类型。根目录 visualize_bc.py 为 BC 的薄包装。详见 scripts/README_visualize.md 与 scripts/README.md。
文件与模块职责
根目录脚本
- train_bc.py:BC 训练,加载
data/training_data下 pkl,模型与日志写入models/bc/、logs/bc/ - train_magail.py:MAGAIL 训练,环境使用
BCScenarioEnv(45 维),模型与日志写入models/magail/、logs/magail/ - visualize_bc.py:薄包装,调用
scripts/visualize_trained_policy.py --policy_type bc
Env 模块
- Env/bc_env.py:
BCScenarioEnv,45 维观测(Ego 5 维 + 10 邻居×4 维),BC 与 MAGAIL 训练/评估共用 - Env/scenario_env.py:
MultiAgentScenarioEnv基类,Waymo 场景加载与步进 - Env/expert_replay_env.py:专家轨迹回放与逆动力学动作,供
generate_expert_data.py与回放可视化 - Env/inverse_dynamics.py:轨迹 → 油门/转向动作
Algorithm 模块
- Algorithm/policy.py:
StateIndependentPolicy,BC 使用的 MLP 策略
scripts 目录
工具脚本用途与用法见 scripts/README.md。