POC Report · 2026-07-30
用少量带框图,生成可复用的视觉检测「模型」
本 POC 验证:不训练检测权重,而是用 VLM 把 few-shot 框样本固化成外观描述卡(model_id), 再对新图做 bounding box 定位。数据来自手持/桌面物体视频抽帧(0730),共 10 类有效主体。
1. 实验设置
数据:0730.zip · 视频抽帧 · 手工时间分组剔除空景/转场
数据与划分
| 项 | 值 |
|---|---|
| 图片总数 | 329 JPEG · 640×480 |
| 有效主体组 | 10 类(剔除 empty / transition) |
| Train / Test | 每组按帧序前 1/2 · 后 1/2 |
| 规模 | train 161 · test 156 |
| Few-shot | 每类取 train 前 3 张建 model |
| 评测真值 | qwen3.8-max-preview(Token Plan)全量框 |
10 类主体
| 类别 | n | test |
|---|---|---|
| 长毛黑白猫 | 36 | 18 |
| 黑色头戴式耳机 | 33 | 16 |
| 红色可乐罐 | 35 | 17 |
| 黑色玩具车 | 42 | 21 |
| 绿黑手柄开瓶器 | 23 | 11 |
| 绿黄条纹小盒 | 31 | 15 |
| 白色胶带卷 | 28 | 14 |
| 水母造型玩具 | 34 | 17 |
| 三眼仔 ABC 公仔 | 31 | 15 |
| 银色玩具车 | 24 | 12 |
原始样本一览
点击可放大








2. 用 Qwen3.8-Max-Preview 制作 GT
权威真值走阿里云 Token Plan 的旗舰预览版;比同系开源档更有说服力
GT · 3.8 Max
Token Plan qwen3.8-max-preview 对 329 张全量出框(仅思考模式)。
坐标换算
0–1000 归一化 → 原图像素 xyxy;无效/空主体记 found=false。
分组与落盘
按时间段归入 10 类主体;导出 JSON / 叠加图,供半集划分与对比评测。
Endpoint:https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1。模型仅支持思考模式。产出目录 0730_tokenplan_38_gt_compare/gt_38max/:出框 326 / 空主体约 3(纯色空景)。
坐标约定:bbox 按 0–1000 归一化换算回原图像素。最长边缩放推理时,框再映射回原图坐标系。
分组:按录像时间连续段切成猫/耳机/可乐等 10 组,并赋予 canonical 中文名。空景与转场单独标出,后续不进 train/主评测。
GT 叠加框样例
3. 以 3.8 Max 为 GT 的模型对比
有效主体 318 张 · 对比 27B / 35B-A3B / VL-8B · 详见 compare-38gt.html
总体指标(vs qwen3.8-max-preview)
| model | mean | median | IoU@0.5 |
|---|---|---|---|
qwen3.6-27b | 0.975 | 0.983 | 100% |
qwen3.6-35b-a3b | 0.975 | 0.983 | 99.4% |
qwen3-vl-8b-instruct | 0.948 | 0.967 | 98.1% |
这是相对旗舰预览版 GT 的框定位一致性,不是对人标注精度。27B 与 35B 持平;8B 低约 2.7 点,短板多在水母等。
35B-A3B 分组 mean IoU(相对 3.8 Max)
难例对照(绿=3.8 Max GT · 橙=对比模型)
4. 怎么「训练」模型
不是梯度训练:GT 分组 → 半集划分 → few-shot 出描述 → 固化 model_id → 在测试半集上预测
端到端流水线
下面是本 POC 实际做的事。接口上对应 POST /train(生成描述卡)和
POST /predict(按描述卡找框)。
全量出框
用旗舰预览版 qwen3.8-max-preview 给每张图打 bbox,作为真值。
按时间切主体
视频抽帧按时间连续段归类:猫 / 耳机 / 可乐…共 10 组;丢掉 empty、transition。
每组前半 / 后半
组内按帧 id 排序:前 1/2 = train,后 1/2 = test(奇数时 train 多 1)。
半集 → 描述卡
从该组 train 半集取 3 张带 GT 框的图,让 VLM 描述框内物体并聚合,得到 model_id。
测后半集
用 model_id 对同组 test 半集(未见过的帧)定位 bbox,与 GT 算 IoU。
①–③ 数据准备(以「猫」为例)
- GT:帧 0–35 都被标上猫的像素框。
- 分组:这 36 帧同属
cat(时间上连续的一段录像)。 - 划分:前 18 张 → train;后 18 张 → test。
- 建模型时只用 train;评测只用 test,避免「看见答案再考试」。
④ 「训练」到底在干什么
这里的 train 不是更新神经网络权重,而是:
- 取出该组 train 半集前 3 张图 + 对应 GT bbox(也可人工框)。
- 调用
POST /train:VLM 根据框内区域写出外观描述(颜色、形状、材质、姿态)。 - 把 3 条描述聚合成一张检测描述卡,落盘并返回
model_id。 - 之后预测只带
model_id,不再上传训练图。
⑤ 预测时如何用这张「模型」
输入
model_id + test 半集里的新图(本实验每组后半全部跑一遍)。
过程
把描述卡塞进 prompt,让同一套 VLM 在新图上做 grounding,输出 0–1000 框再映回原图像素。
评测
预测框 vs 3.8 Max GT 算 IoU。这是相对旗舰预览版的一致性,不是对人标注精度。
建议 few-shot 2–4 张;本实验每类固定 train 半集前 3 张。train 耗时约 (1.5–2.5s)×张数。
真实描述卡摘录(猫 · 从 train 半集 3-shot 生成)
半集可视化:Train(建描述) / Test(只评测)
5. 对新图预测
/predict · /predict/batch:携带 model_id + 新图 → 按描述定位 bbox
输入
model_id + 一张/多张未见过的图。可选 return_image 叠加画框。
过程
最长边缩到 ≤1280 → VLM grounding → 0–1000 框映射回原图像素。
输出
bbox_xyxy、label、confidence;未找到时 found=false。
预测叠加样例
端到端 API 压测产物 · 点击放大
6. 端到端与选型依据
Few-shot 管线延迟 + 以 3.8 Max 为 GT 的开源档定位精度
框定位精度(vs qwen3.8-max-preview)
| 有效主体 | 318 |
| 27B / 35B-A3B mean IoU | 0.975 / 0.975 |
| VL-8B mean IoU | 0.948 |
| IoU ≥ 0.5(27B) | 100% |
接口管线延迟
| /train(3 张) | mean ~4.9s · p90 ~8s |
| /predict 单图 | mean ~2.0s · p50 ~1.6s · p90 ~3.2s |
| /predict/batch ×6 | 墙钟 ~3.3s(并发 6) |
7. 推理成本(硅基流动)
单价取自控制台 / 定价页 · 用量按本数据集 640×480 predict 实测 token
单价(¥ / K tokens)
| 模型 | 输入 | 输出 |
|---|---|---|
qwen3-vl-8b-instruct | 0.0005 | 0.0020 |
qwen3.6-35b-a3b | 0.0018 | 0.0108 |
qwen3.6-27b | 0.0030 | 0.0180 |
实测单次 predict 约 512 prompt + 67 completion tokens(关 thinking)。 成本几乎全在图片输入;分辨率升高会明显涨价。
百张图纯 /predict 费用
| 模型 | 单张 | 百张 | 相对 35B |
|---|---|---|---|
VL-8B | ¥0.00039 | ¥0.039 | 0.24× |
35B-A3B | ¥0.00165 | ¥0.165 | 1× |
27B | ¥0.00274 | ¥0.274 | 1.67× |
318 张测试集约:8B ¥0.12 / 35B ¥0.52 / 27B ¥0.87。 few-shot train(3 张裁剪描述)相对可忽略。批推只影响墙钟,按次计费与串行相同。
8. 结论与建议
选型
- GT / 抽检锚点:qwen3.8-max-preview
- 检测主路径:优先 35B-A3B(与 27B 精度持平、单价更低)
- 成本敏感:VL-8B(约 35B 的 1/4)主推 + 难例升档;27B 性价比最差
工程
- 生产以
/predict/batch为主;few-shot 建议 2–4 张 - 空景/转场产品侧过滤,不进 train/主评测
- 流程:3.8 Max GT → 分组半集 → 描述卡 model_id → test 半集预测