战斗包子
UniAD_test

UniAD_test

UniAD

一、 环境搭建 (Infrastructure)

1. 硬件与基础镜像

  • 平台: AutoDL
  • 显卡: RTX 3090 (24GB) 或 RTX 4090 (显存必须 \ge 24GB)
  • 镜像配置:
    • PyTorch: 1.11.0
    • Python: 3.8 (Ubuntu 20.04)
    • CUDA: 11.3

2. 核心依赖安装

UniAD 对版本极度敏感,切勿直接安装最新版

1
2
3
4
5
6
7
# 基础工具
pip install -U openmim

# 核心库 (严格锁定版本)
mim install "mmcv-full>=1.6.0"
mim install "mmdet==2.26.0" # 必须是 2.x,3.x 会报 mmengine 错误
mim install "mmsegmentation==0.30.0" # 必须是 0.x

二、 数据准备 (Data Preparation)

1. 数据清单 (nuScenes)

你需要从 nuScenes 官网或相关渠道下载以下文件:

  • v1.0-mini.tgz (核心数据集)
  • nuScenes-map-expansion-v1.3.zip (高精地图扩展包,强依赖,没它会报错)
  • can_bus.zip (车辆底盘信息,如速度、转角)
  • uniad_base_e2e.pth (UniAD 预训练权重文件)

在 AutoDL 的数据盘 /root/autodl-tmp/UniAD 下,建立如下软链接和目录结构:

1
2
3
4
5
6
7
8
UniAD/
├── ckpts/
│ └── uniad_base_e2e.pth -> (存放权重)
├── data/
│ ├── nuscenes/ -> /root/autodl-tmp/nuscenes (解压后的原始数据)
│ ├── infos/ -> (存放生成的 .pkl 索引,需手动创建并复制)
│ ├── can_bus/ -> (软链接到 /root/autodl-tmp/nuscenes/can_bus)
│ └── others/ -> (存放 motion_anchor_infos_mode6.pkl)

运行脚本生成 .pkl 索引文件,这是模型读取数据的“字典”。

1
2
3
4

python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes --version v1.0-mini

Fix (关键修复): 配置文件默认去 data/infos 找索引,但脚本生成在 data/nuscenes。 操作: mkdir -p data/infos && cp data/nuscenes/*.pkl data/infos/

三、 rule based对比

传统规划组件 (Rule-based) 端到端对应物 (UniAD E2E) 本质区别
Reference Line (参考线) Navigation Embedding (意图向量) 几何引导 vs 语义引导
Obstacle Selection (障碍物筛选) Cross-Attention (注意力机制) 规则过滤 vs 权重分配
Solver (QP/SQP) (求解器) MLP (多层感知机) 数学求解 vs 经验拟合
Cost Function (代价函数) Loss Function (L2 + Collision Loss) 人工调参 vs 数据驱动

四、 可视化流程 (Visualization Workflow)

这是解决“画不出图”问题的终极方案。学术代码通常对在线画图 (--show-dir) 支持不佳,推荐分离关注点

Step 1: 只推理,存数据 (Inference & Dump)
快速跑完模型,只保存结果文件,不浪费显存去画图,避免 OOM。

1
2
3
4
5
PYTHONPATH=".":$PYTHONPATH bash tools/uniad_dist_eval.sh \
projects/configs/stage2_e2e/base_e2e.py \
ckpts/uniad_base_e2e.pth \
1 \
--out results.pkl

Step 2: 只画图,不推理 (Plot & Dump)

1
2
3
4
5
PYTHONPATH=".":$PYTHONPATH python tools/analysis_tools/visualize/run.py \
--predroot results.pkl \
--out_folder vis_results \
--demo_video test_demo.mp4 \
--project_to_cam True
本文作者:战斗包子
本文链接:https://paipai121.github.io/2025/11/22/工作/UniAD-test/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可