bai lian Few-shot 视觉检测 POC · 2026-07-30
Lynx Vision POC

POC Report · 2026-07-30

用少量带框图,生成可复用的视觉检测「模型」

本 POC 验证:不训练检测权重,而是用 VLM 把 few-shot 框样本固化成外观描述卡(model_id), 再对新图做 bounding box 定位。数据来自手持/桌面物体视频抽帧(0730),共 10 类有效主体。

GT:qwen3.8-max-preview 对比:27B / 35B-A3B / VL-8B “train” ≠ 梯度训练
35B / 27B vs 3.8 Max GT
0.975
有效主体 318 · 两档持平
VL-8B vs 3.8 Max GT
0.948
median 0.967 · IoU@0.5 = 98.1%
单图预测延迟
~2.0s
few-shot 管线实测量级
有效主体 / 测试半集
10 / 156
全库 329 张 · 640×480

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 类主体

类别ntest
长毛黑白猫3618
黑色头戴式耳机3316
红色可乐罐3517
黑色玩具车4221
绿黑手柄开瓶器2311
绿黄条纹小盒3115
白色胶带卷2814
水母造型玩具3417
三眼仔 ABC 公仔3115
银色玩具车2412

原始样本一览

点击可放大

2. 用 Qwen3.8-Max-Preview 制作 GT

权威真值走阿里云 Token Plan 的旗舰预览版;比同系开源档更有说服力

STEP 01

GT · 3.8 Max

Token Plan qwen3.8-max-preview 对 329 张全量出框(仅思考模式)。

STEP 02

坐标换算

0–1000 归一化 → 原图像素 xyxy;无效/空主体记 found=false。

STEP 03

分组与落盘

按时间段归入 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 归一化换算回原图像素。最长边缩放推理时,框再映射回原图坐标系。

bbox_pixel = [ x1/1000 * W, y1/1000 * H, x2/1000 * W, y2/1000 * H ]

分组:按录像时间连续段切成猫/耳机/可乐等 10 组,并赋予 canonical 中文名。空景与转场单独标出,后续不进 train/主评测。

GT 叠加框样例

绿框 = qwen3.8-max-preview

3. 以 3.8 Max 为 GT 的模型对比

有效主体 318 张 · 对比 27B / 35B-A3B / VL-8B · 详见 compare-38gt.html

总体指标(vs qwen3.8-max-preview)

modelmeanmedianIoU@0.5
qwen3.6-27b0.9750.983100%
qwen3.6-35b-a3b0.9750.98399.4%
qwen3-vl-8b-instruct0.9480.96798.1%

这是相对旗舰预览版 GT 的框定位一致性,不是对人标注精度。27B 与 35B 持平;8B 低约 2.7 点,短板多在水母等。

35B-A3B 分组 mean IoU(相对 3.8 Max)

难例对照(绿=3.8 Max GT · 橙=35B-A3B)

4. 怎么「训练」模型

不是梯度训练:GT 分组 → 半集划分 → few-shot 出描述 → 固化 model_id → 在测试半集上预测

端到端流水线

下面是本 POC 实际做的事。接口上对应 POST /train(生成描述卡)和 POST /predict(按描述卡找框)。

① GT

全量出框

用旗舰预览版 qwen3.8-max-preview 给每张图打 bbox,作为真值。

② 分组

按时间切主体

视频抽帧按时间连续段归类:猫 / 耳机 / 可乐…共 10 组;丢掉 empty、transition。

③ 划分

每组前半 / 后半

组内按帧 id 排序:前 1/2 = train后 1/2 = test(奇数时 train 多 1)。

④ /train

半集 → 描述卡

从该组 train 半集取 3 张带 GT 框的图,让 VLM 描述框内物体并聚合,得到 model_id

⑤ /predict

测后半集

model_id同组 test 半集(未见过的帧)定位 bbox,与 GT 算 IoU。

①–③ 数据准备(以「猫」为例)

  1. GT:帧 0–35 都被标上猫的像素框。
  2. 分组:这 36 帧同属 cat(时间上连续的一段录像)。
  3. 划分:前 18 张 → train;后 18 张 → test。
  4. 建模型时只用 train;评测只用 test,避免「看见答案再考试」。
全库:10 组有效主体 · train 161 · test 156。空景/转场不参与训练与主评测。

④ 「训练」到底在干什么

这里的 train 不是更新神经网络权重,而是:

  1. 取出该组 train 半集前 3 张图 + 对应 GT bbox(也可人工框)。
  2. 调用 POST /train:VLM 根据框内区域写出外观描述(颜色、形状、材质、姿态)。
  3. 把 3 条描述聚合成一张检测描述卡,落盘并返回 model_id
  4. 之后预测只带 model_id,不再上传训练图。
{ "model_id": "be5b6e1d…", "label_zh": "长毛黑白猫", "description": "一只长毛猫,身体呈灰白相间…", "sample_count": 3, "vlm_model": "qwen3.6-27b 或 qwen3.6-35b-a3b" }

⑤ 预测时如何用这张「模型」

输入

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 IoU0.975 / 0.975
VL-8B mean IoU0.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-instruct0.00050.0020
qwen3.6-35b-a3b0.00180.0108
qwen3.6-27b0.00300.0180

实测单次 predict 约 512 prompt + 67 completion tokens(关 thinking)。 成本几乎全在图片输入;分辨率升高会明显涨价。

百张图纯 /predict 费用

模型单张百张相对 35B
VL-8B¥0.00039¥0.0390.24×
35B-A3B¥0.00165¥0.165
27B¥0.00274¥0.2741.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 半集预测