3d occ视觉输入
OccLLaMA: An Occupancy-Language-Action Generative World Model for Autonomous Driving
🎯 一、核心思想:为什么要用Occ做VLA的输入?
1.1 现有方法的痛点
论文开篇指出了当前MLLM(多模态大语言模型)在自动驾驶中的两大问题:
| 问题 | 表现 | 后果 |
|---|---|---|
| 缺乏世界模型 | 直接从感知映射到动作,不建模世界动态 | 无法理解“动作如何影响世界”,泛化能力差 |
| 视觉表示不合适 | 多用2D图像/BEV,丢失3D几何信息 | 对高度、小物体、遮挡场景理解不足 |
1.2 OccLLaMA的解决方案
核心思想:用3D语义占据(Semantic Occupancy)作为统一的视觉表示,构建一个能够同时理解、生成、规划的自回归世界模型。
三个关键创新:
- 场景Tokenizer:把稠密的3D Occ变成离散的“场景词”
- 统一多模态词表:把场景词、语言词、动作词放在同一个词表里
- Next Token/Scene Prediction:同时支持时序预测(语言/动作)和空间预测(场景)
🏗️ 二、技术架构(对应你发的Figure 2)
OccLLaMA的架构分为两大核心组件:
2.1 Scene Tokenizer(场景分词器)
这是把3D Occ变成离散token的关键模块,解决了两个核心难点:
难点1:3D Occ极度稀疏(90%是空气)
- 普通3D卷积计算浪费、效率低
- 解决方案:将3D Occ转成伪点云(只保留非空气体素),用PointPillar方式提取BEV特征
难点2:语义类别不平衡
- 道路、建筑物多,行人、自行车少
- 解决方案:解耦几何和语义,用两个head分别重建:
- Voxel Head:预测哪些体素被占据(二分类)
- Class Head:只在被占据的体素上预测语义类别
Tokenizer的工作流程:
1 | 输入3D Occ (200×200×16) |
2.2 统一多模态词表(Unified Vocabulary)
Tokenizer训练好后,OccLLaMA构建了一个包含四类词的统一词表:
| 词表类型 | 来源 | 用途 | 大小 |
|---|---|---|---|
| 场景词 (V_s) | Scene Tokenizer的codebook | 表示3D占据场景 | (K_s)(论文用2048) |
| 语言词 (V_t) | LLaMA原有词表 | 理解、推理、问答 | LLaMA-8B原词表 |
| 动作词 (V_a) | 轨迹坐标分箱 | 表示规划轨迹 | 将连续坐标离散化成N个bin |
| 功能词 (V_f) | 特殊token | 标记模态边界 |
关键创新:把3D场景也变成了“词”,可以和语言、动作放在同一个序列里,用同一个LLM处理。
🔄 三、训练方法(三阶段训练)
Stage 1: Scene Tokenizer训练(独立训练)
- 目标:学会把3D Occ压缩成离散token,并能重建回来
- 损失函数:交叉熵 + Lovasz-Softmax + 码本损失
- 数据:Occ3D数据集(基于nuScenes的3D占据标注)
- 结果:训练好的Tokenizer固定下来,不再更新
Stage 2: 3D Occ-语言-动作预训练(全参数)
目标:对齐三种模态,让模型学会:
- 世界模型能力:给定历史Occ,预测未来Occ(4D占据预测)
- 场景理解能力:给定Occ,生成语言描述(场景字幕)
训练方式:
- 用next token/scene prediction的方式,在统一词表上做自回归预训练
- 关键设计:场景内的token用空间注意力(Spatial Attention),场景间的token用因果注意力
Stage 3: 指令微调(Instruction Tuning)
- 方法:LoRA(低秩适配)
- 任务:根据不同的prompt指令,完成:
- 视觉问答(VQA)
- 轨迹规划(Motion Planning)
- 场景理解
📊 四、实验结果(核心数据解读)
论文在三个任务上做了评估,我挑最关键的结论说:
4.1 4D占据预测(核心任务)
任务:给2秒历史Occ,预测未来3秒的Occ
| 方法 | 输入 | 1s mIoU | 3s mIoU | Avg mIoU |
|---|---|---|---|---|
| OccWorld | 真值Occ | 25.78 | 10.51 | 17.14 |
| OccLLaMA | 真值Occ | 25.05 | 15.26 | 19.93 |
| OccWorld | 图像 | 8.98 | 6.98 | 8.66 |
| OccLLaMA | 图像 | 10.34 | 6.98 | 8.66 |
结论:
- 用真值Occ作为输入时,OccLLaMA在长时预测(3s)上显著优于OccWorld(15.26 vs 10.51)
- 说明自回归世界模型比专用预测模型更适合长时序建模
4.2 轨迹规划
任务:预测未来3秒的6个waypoints
| 方法 | 输入 | Avg L2 (m)↓ | Avg Collision (%)↓ |
|---|---|---|---|
| UniAD | 图像+多任务监督 | 1.03 | 0.71 |
| OccWorld | 真值Occ | 1.17 | 1.35 |
| OccLLaMA | 真值Occ | 1.14 | 1.20 |
结论:
- OccLLaMA只用Occ作为输入,就能达到接近UniAD(用了地图、框、跟踪、占据等多任务监督)的性能
- 说明Occ表示足够丰富,可以支撑规划任务
4.3 视觉问答(VQA)
任务:nuScenes-QA数据集上的问答
| 方法 | 输入 | 整体准确率 |
|---|---|---|
| LLaVA | 图像 | 45.9% |
| LiDAR-LLM | 点云 | 45.9% |
| OccLLaMA | Occ | 49.1% |
结论:
- OccLLaMA在VQA任务上超越基于图像和点云的SOTA
- 说明3D Occ既能保留几何信息,又能对齐语义,是很好的VLA视觉表示
📌 总结
OccLLaMA的核心贡献:
- 第一个把3D Occ作为VLA视觉输入的工作,验证了这种表示的可行性
- 设计了专门针对3D Occ稀疏性的Scene Tokenizer
- 提出了Next Token/Scene Prediction的双重预测机制,同时建模空间和时间
- 在4D占据预测、规划、VQA三个任务上都达到SOTA或competitive性能
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 hikawa00!
