为什么做
Robotaxi 的碰撞检测能力是安全性的基座,但此前评测靠手工记录、只看混淆矩阵,无法回答”模型为什么错”。我搭建了一个以 VLM 大模型自身作为专家裁判的评测闭环平台,覆盖数据管理 → 评测执行 → 两层评判 → BadCase 分析 → 实验管理全链路。
核心思路:AI 评 AI + 人在回路
- 三方对比:业务微调模型、VLM 专家裁判、人工真值(GT)在同一视觉输入下对比。
- 两层评判:
- 第一层「客观指标」——模型预测 vs GT 逐帧混淆矩阵:Accuracy / Precision / Recall / FPR / Fβ(β>1 偏重召回)。
- 第二层「专家质量复核」——用 Qwen3-VL-30B-Thinking 看图打分(verdict/score/错因分类),并提供 Agent 四角色法庭深度评测:观察员 → 法官初判 → 辩护人 → 法官终裁,全程记录
transcript_json可追溯。
- 对抗锚定效应:强制盲审(
blind_verdict),一审不看真值,产出非循环信号。 - 人在回路:分歧/存疑帧自动进入人工复核队列;确认的 BadCase 沉淀为经验法则(
vlm_judge_memory)注入后续评测,形成”越用越准”闭环。
关键成果
在 8,021 帧 / 674 个真实碰撞的泛化测试集上:
| 模型 | 准确率 | 精确率 | 召回率 | FPR |
|---|---|---|---|---|
| Qwen3-VL-4B Zeroshot | 0.929 | 0.839 | 0.185 | 0.003 |
| 微调模型(fisheye 泛化) | 0.981 | 0.958 | 0.812 | 0.003 |
召回率从 0.185 提升至 0.812(+0.63),精确率同步升至 0.958,召回与精确同时改善、无 trade-off 恶化。专家盲审一致率 0.72~0.87,分歧帧自动进入人工复核。
- BadCase 归因:对 396 条归因分析,得出漏检(FN)占 71% 的核心结论,定位三大漏检场景:碰撞瞬间未拍到接触(29%)> 边缘接触(27.5%)> 车身围栏紧贴(7.8%)。
- 沉淀:35 条经验法则已注入法官模型。
平台规模与迭代
- 14 个数据集 / 55,996 帧 / 34 次评测 / 748 条专家复核 / 35 条经验法则。
- 从 06-03 到 06-25 共 10 轮密集迭代:地基 → 体验完善 → 评判深度升级(四角色法庭)→ 工程化收尾(流式/分块上传、评测中入库、JWT 用户隔离)。
技术栈
React 18 + TypeScript + HeroUI + ECharts 前端;Go + chi + GORM + SQLite 后端(单二进制部署);OpenAI 兼容 SDK 接 Qwen3-VL;JWT + SSO 认证。
经验与复盘
AI 评审 AI 可行,但必须人在回路:盲审一致率约 80%,分歧帧必须有人的判断作锚点,纯 AI 闭环比对业务没有说服力。
召回率是安全场景的核心指标:漏检才是真正的安全隐患,FPR 只要不产生大量虚警即可接受,Fβ 帮团队在安全场景正确权衡精度与召回。
数据的真实化比模型更重要:接入真实 predictions.jsonl 后,BadCase 分析质量质变——从”AI 说你错了”到”和真值对比,你真的错了”。