skip to content
tlj 的工程笔记
← 项目

DriveGPT4-Mini:可解释驾驶决策的 VLM 微调复现

开源复现

用 QLoRA 微调 Qwen2-VL-2B,让它对驾驶场景图输出结构化的「该怎么开 + 为什么」。一个 50 条样本的迷你复现,验证数据生成到 VLM 微调到可解释决策整条路线。

时间
2026-06
角色
独立完成(数据生成 / 微调 / 评估)
成果
QLoRA 微调后 loss 2.087→1.428(↓31%),可训练参数仅占 0.83%,7.28GB 显存跑通

这是一个迷你复现:50 条样本、AI 辅助完成,目的是验证技术路线可行,不代表产品级能力。

我最近在入门具身智能和智能驾驶方向,这是我在这个方向上动手做的第一个小复现。目标不是做出能用的驾驶模型,而是把”数据生成 → VLM 微调 → 可解释决策”这条完整路线跑通一遍,搞清楚每一步的工程细节。

它做什么

用 QLoRA 微调 Qwen2-VL-2B-Instruct,让它对一张驾驶场景图,输出固定三段式的结构化决策:

【场景描述】车辆在夜间行驶,前方无其他车辆,路面清晰,视线良好。
【驾驶决策】保持车速平稳,适当使用远光灯辅助视线,注意观察周围环境。
【原因分析】夜间视线受限……保持车速平稳有助于维持安全距离,避免紧急制动引发追尾。

对比微调前的 base 模型——它只会泛泛地描述”这是一条公路、注意安全”,没有固定结构、也没有可追溯的推理链。微调后每条决策都带【原因分析】,这是”可解释驾驶决策”的核心。

整条流水线

  1. 数据生成:驾驶场景图用 PIL 合成(含道路、信号灯、行人、前车等元素),再用 Azure GPT-4.1-mini 的视觉接口对每张图自动生成【场景描述+决策+原因】标注。50 条,零人工标注。
  2. 微调:QLoRA(4bit NF4 量化 + LoRA rank=16)微调 Qwen2-VL-2B。可训练参数 18.5M / 2227M,只占 0.83%
  3. 部署:LoRA adapter 合并成独立模型,可进一步量化压缩。

真实训练结果

指标训练前训练后
Loss2.0871.428(↓31%)
Token 准确率52.4%63.3%(+10.9pp)
可训练参数18.5M / 2227M(0.83%)
显存峰值7.28 GB(24G RTX 4090)
训练时间33 秒 / 15 步

样本量很小(50 条 / 15 步),所以这些数字证明的是”路线跑通了、方向对了”,不是模型有多强。我没有把它包装成产品级效果——这点在项目 README 里也写明了。

几个真实的坑

为什么记这个

它本身很小,但对我有意义:这是我在具身智能/驾驶方向上,第一次把多模态数据生成、PEFT 微调、可解释输出这三件事串成一条能跑的流水线。再往前走的很多东西(真实数据集、端到端 VLA、仿真环境),都建立在先把这条小路线吃透的基础上。