Skip to content

VLM 与 DINO:提示词驱动的视觉任务 ​

项目说明
适合谁需要验证长尾视觉需求的方案工程师、算法工程师和高级用户
完成后能做什么用 VLM 创建状态判断任务,用 DINO 创建开放类别检测任务,并用正负样本评估结果
使用前提已会配置通道、区域、参数和运行策略;运行环境已安装对应模型,或已有兼容的远程 VLM 服务
预计时间45–70 分钟
是否需要设备本地 Qwen VLM 需要 Sophon 后端及匹配模型;DINO 需要与当前后端匹配的模型;远程 VLM 还需要网络与服务凭据
最终验收结果VLM 对固定正负样本给出可复测判断,DINO 在目标位置输出检测框,视频与事件记录符合任务定义

本页从一个任务问题开始:如何用提示词定义一个可验证的视觉规则?

消防柜、围挡、城墙、垃圾桶和楼道等长尾视觉状态示例

例如:

  • 楼道中是否有垃圾?
  • 消防柜门是否关闭?
  • 垃圾桶是否满溢?
  • 施工围挡是否倾倒?
  • 城墙表面是否有明显人为破坏?

这些需求通常难以直接对应一个固定类别模型。VLM 和 DINO 可以用于低成本可行性验证,但“无需训练即可试验”不等于“无需样本即可上线”:仍要定义边界、准备正负样本并记录误报、漏报、时延和资源占用。

1. 先选择正确的能力 ​

能力最适合回答输出典型用途主要限制
传统检测/分类模型已知固定类别是否出现检测框、类别、分数人员、安全帽、车辆等高频任务新类别通常需要模型和数据适配
VLM画面是否符合一段语义描述是/否判断与事件门是否关闭、区域是否整洁、是否存在疑似破坏受提示词、画质、采样和模型随机性影响;本地 Qwen 当前依赖 Sophon
DINO某个开放类别在哪里检测框、类别、分数灭火器、垃圾、包裹等开放类别定位目标必须肉眼可辨;小目标、密集目标和抽象概念仍需实测

简单记忆:

  • 想判断“是不是某种可见状态”:先验证 VLM。
  • 想定位“某类目标在哪里”:先验证 DINO。
  • 要稳定地实时检测固定类别,且已有合适模型:优先传统模型。

适合先用 VLM 或 DINO 验证的需求:

  • 低频状态巡检;
  • 难以穷举形态的长尾目标;
  • 先用图片快速判断需求是否可行;
  • 业务方能够对正负样本形成一致标准。

不应只靠一句提示词直接上线的需求:

  • 精确计数、细粒度身份或连续动作识别;
  • 极小、严重遮挡或肉眼也难分辨的目标;
  • 需要确定性低时延或大规模并发,但尚未做目标硬件压测;
  • 安全关键自动闭环,没有人工复核或失效保护;
  • 业务方自己也无法一致判断哪些样本应该触发。

模板出现在页面上不代表模型文件已经安装。创建任务前先在 模型仓库 确认对应模型可用,确认设备内存、加速器内存和网络满足要求。不要沿用旧版文档中的固定“每帧几秒”“固定并发路数”等数值;这些结果取决于模型、分辨率、取帧频率、后端和设备,应在目标环境测量。

2. VLM:创建状态判断任务 ​

VLM 将画面或 ROI 与提示词一起输入模型,再把“是/否”结果交给事件上报。它通常不产生目标检测框,因此验收重点是回答、抓拍图和事件,不是 OSD 框。

2.1 理解节点流程 ​

以“河道漂浮物识别”为例,打开 任务配置 → 场景任务 → 河道漂浮物识别 → 算法编排。

在场景任务中打开河道漂浮物识别的算法编排

一个视频 VLM 任务通常包含:

  1. 视频解码:取得视频帧;业务目标必须在图像中肉眼可见。
  2. 数据预处理:按取帧频率选择帧,并按配置裁剪 ROI。
  3. 语言视觉大模型:把图像和提示词提交给本地或远程模型。
  4. 事件上报:把命中结果、抓拍图和时间保存到系统。

点击 语言视觉大模型 节点打开配置面板。

VLM 节点的模型、取帧频率、模式和提示词设置

2.2 正确使用普通与高级提示词模式 ​

完整句子必须开启高级提示词模式

高级提示词模式默认关闭。关闭时,系统会把输入自动包装成“判断图片中是否存在【输入内容】目标,回答是或者否……”。因此关闭模式时只能输入目标短语,例如 河面漂浮垃圾。

要输入包含条件和排除项的完整问题,必须开启 高级提示词模式。系统会保留完整前半段,只追加“回答是或者否”的输出约束。把完整句子填入关闭状态会形成重复、语义错误的提示词。

两种正确写法:

模式提示词输入系统实际用途
普通模式(关闭高级模式)河面漂浮垃圾快速判断图片中是否存在该目标
高级模式(开启)判断河面区域是否存在塑料袋、瓶子、成片树叶或其他明显漂浮杂物,忽略水面反光和细小波纹使用完整业务条件与排除项进行是/否判断

一个可操作的高级提示词包含:

  1. 观察对象:河面、消防柜、作业区等。
  2. 可见条件:漂浮物、柜门打开、人员倒地等。
  3. 排除项:水面反光、阴影、正常风化等。
  4. 单一结论:能够回答“是”或“否”。

河道示例的期望:

输入预期结果
河面上有清晰可见的塑料瓶、垃圾袋或成片杂物是,并满足事件规则
只有水波、倒影或零散不可辨识小点否,不产生该类事件

2.3 选择本地或远程推理 ​

选择 VLM 原子模型和生成风格

当前 语言视觉大模型 节点包含:推理模式、原子模型或 OpenAI 兼容配置、取帧频率、高级提示词模式、提示词和生成风格。

本地原子模型 ​

选择 本地原子模型,再选择已经导入的 Qwen3VL 原子模型。当前本地实现依赖 Sophon 后端和匹配的模型、分词器资源。模型体积较大,首次初始化可能比后续推理慢;实际时间以目标设备日志和测量为准。

OpenAI 兼容 API ​

选择 OpenAI API 后填写兼容服务配置。

把 VLM 推理模式切换到 OpenAI 兼容 API

填写 OpenAI 兼容 VLM 服务连接参数

页面字段当前配置键说明
base_urlopenai.base_url服务根地址,例如自建服务的 /v1 地址
api_keyopenai.api_key服务凭据;仅在本地服务明确关闭鉴权时留空
modelopenai.model远程服务实际暴露的模型名
endpointopenai.endpoint默认 /chat/completions
timeout_msopenai.timeout_ms请求超时,当前页面默认 60000
max_tokensopenai.max_tokens最大输出 token 数,当前页面默认 256

不要把真实密钥写入教程、截图、Pipeline 导出文件或版本库。远程模式还要评估网络稳定性、调用费用、图像数据出域合规性、服务端日志保留和失败重试。接口能返回一次结果不等于视频任务已验收。

取帧频率与生成风格 ​

  • 取帧频率单位为 fps,当前节点默认 1,范围由页面约束为 0.01–1000,且不应高于上游帧率。0.1 表示约每 10 秒取一帧。先按业务允许的发现延迟使用低频,再基于资源测量调整。
  • 严谨 / 标准 / 发散控制生成随机性。需要稳定的二元判断时优先比较“严谨”和“标准”。
  • 自定义会显示 do_sample、top_k、top_p、temperature。一次只改一项,并把值写入验证记录。

2.4 把河道任务绑定到视频 ​

  1. 使用项目 v1.0-videos 标签中的河道素材或经授权的现场样本。

  2. 打开 视频接入 → 添加,创建离线视频通道,然后进入 场景任务分配。

    为河道素材创建离线视频通道并进入任务分配

  3. 从所有服务中选择 河道漂浮物识别,新增区域。

    选择河道漂浮物识别并新增检测区域

  4. 默认区域可以是全屏。为减少河岸、天空和文字水印干扰,收紧 ROI,只覆盖需要判断的水面。

    为河道漂浮物 VLM 任务绘制水面 ROI

  5. 在 参数设置 中配置事件间隔,在 运行策略 中保证当前时段有效,然后保存启动。

    设置 VLM 任务事件参数并保存

2.5 查看实时结果和事件 ​

打开 实时展示,选择通道和 河道漂浮物识别 叠加层。

在实时展示中选择河道漂浮物 VLM 任务

VLM 不画目标框是正常现象。视频应持续播放;当模型回答“是”并满足事件规则时,右侧事件面板显示抓拍和结果。

河道漂浮物 VLM 判断形成实时事件

打开 事件中心 → 检测/分析,按通道、任务和时间范围查询。

在事件中心查询 VLM 判断记录

打开事件详情,核对抓拍图、判断结果和时间戳。

查看 VLM 事件抓拍和判断详情

通过标准:正样本片段产生预期判断,负样本片段不产生该类事件,抓拍图来自正确 ROI 和时刻,持续运行时没有反复初始化失败、远程超时或资源不足。

3. 用图片分析验证一个全新 VLM 需求 ​

“城墙破坏检测”用于演示如何先验证需求定义,再接视频。低频事件不适合直接在视频中等待;图片分析可以固定输入,快速比较提示词版本。

3.1 创建图片分析任务 ​

  1. 打开 场景任务,点击 新建任务。

    在场景任务页面新建城墙破坏检测任务

  2. 数据源类型选择 图片分析。

    为城墙任务选择图片分析数据源

  3. 填写任务名称并确认。

    确认创建图片分析任务

  4. 打开 算法编排 → 操作 → 添加组件 → 语言视觉大模型。

    在图片分析 Pipeline 中添加语言视觉大模型

  5. 最小图片分析 Pipeline 只需要一个 VLM 节点连接输入与输出。

    只包含语言视觉大模型的图片分析 Pipeline

  6. 配置模型,开启高级提示词模式,填写完整问题并保存。

    在图片 VLM 节点中开启高级模式并填写提示词

建议第一版:

text
判断图中的人是否有明显刻画、凿击、喷涂或其他人为破坏墙面的行为,忽略正常参观、触摸、自然风化、阴影和已有旧损伤

如果只想判断破坏痕迹而不要求画面中出现人,应改成“判断墙面是否出现新鲜、明显的人为刻画、凿击或喷涂痕迹……”。这两个定义不是同一任务,不能混用样本验收。

3.2 上传固定样本并记录结果 ​

打开 图片分析,选择新建任务。

在图片分析页面选择城墙破坏检测任务

上传一张已标注预期结果的图片。

上传城墙场景测试图片

点击 开始分析。首次请求可能触发模型初始化,等待任务明确完成或返回错误。

启动 VLM 图片分析

分析完成后,先看“存在/不存在”结果。

VLM 图片分析完成并显示二元结果

打开命中图片详情,核对逻辑结果和页面提供的置信或附加信息。

查看 VLM 图片判断的结果详情

首次基线至少准备:

  • 5 张清晰正样本;
  • 5 张清晰负样本;
  • 现场常见的反光、遮挡、夜间、游客触摸、自然风化和相似纹理等困难样本。

这不是生产精度评估的充分样本量,但足以暴露模型不可用、问题定义错误和明显误判。保存每张图片的预期标签、实际结果、模型、模式、提示词版本和生成参数,修改后对同一批图片复测。

3.3 迭代提示词 ​

漏报时,把“问题”改成可见特征:

text
不清楚:城墙有没有问题?
更明确:判断城墙表面是否有明显裂缝、缺损、涂鸦、刻画或凿击痕迹,忽略光影

误报时,增加范围和排除项:

text
范围过宽:判断城墙有没有被破坏
更明确:判断城墙表面是否有明显的人为刻画、凿击或新鲜喷涂痕迹,忽略自然风化、旧修补和阴影

结果不稳定时:

  1. 固定模型、生成风格和同一批图片。
  2. 收紧 ROI,减少天空、游客和其他背景。
  3. 一个提示词只判断一个可见结论。
  4. 对同一图片重复测试并记录分歧,而不是挑选一次正确结果。
  5. 再比较“严谨”与“标准”,需要时才调整自定义采样参数。

好问题与坏问题示例:

可验收问题不可直接验收的问题原因
楼道地面是否有明显垃圾?描述一下楼道情况开放式输出不可直接作为事件规则
地面是否有可见积水或水洼反光?地面湿不湿?“湿”可能不可见或与材质混淆
消防器材柜门是否完全关闭?消防柜有没有问题?“有问题”没有视觉边界
指示灯是否为红色?设备有几个指示灯?精确计数不是该 VLM 判断链路的强项
城墙表面是否有人为刻画痕迹?城墙坏了吗?“坏”包含自然风化等多种含义

3.4 图片基线通过后接入视频 ​

  1. 创建或打开视频分析任务,使用同一模型、提示词模式和已验证提示词。
  2. 设定取帧频率;例如 0.1 约为每 10 秒一帧,但是否满足业务发现时延必须由验收决定。
  3. 分配到城墙监控通道。
  4. ROI 只覆盖城墙主体。
  5. 设置事件参数和运行策略,保存并启动。
  6. 用包含正负片段的视频复测,并观察持续运行资源和错误日志。

4. DINO:创建开放类别检测任务 ​

DINO 的提示词是要定位的目标名称,输出是检测框。它适合“人员和垃圾在哪里”,不直接回答“楼道是否整洁”或“车辆是否违停”等包含业务规则的问题。

4.1 定义目标与参数 ​

当前 DINO 节点使用英文句号分隔多个目标。例如:

text
person.garbage

在检测视觉大模型节点中输入 DINO 目标名称

当前节点的基础字段包括:

参数当前默认值说明
选择原子模型无必须选择已经安装且与后端匹配的 DINO 模型
取帧频率1 fps不应高于上游帧率;按业务发现时延和资源测量调整
提示词空使用具体英文名词;多个名称用英文句号分隔
目标置信度0.25检测框候选的置信标准
文字置信度0.3图像目标与文本类别匹配的标准

不要同时调低两个阈值。先用单一目标和固定图片确定文本是否匹配,再逐项调整并观察框的数量和位置。

4.2 绑定通道、区域和事件 ​

  1. 打开 视频接入,进入目标通道的 场景任务分配。

    从视频接入进入 DINO 场景任务分配

  2. 选择使用 检测视觉大模型 的 DINO 任务并新增区域。

    选择 DINO 任务并新增检测区域

  3. 调整区域,只覆盖需要定位人员和垃圾的平台或楼道。

    为 DINO 任务绘制检测区域

  4. 设置事件参数和运行策略,保存并启动。

    设置 DINO 任务参数并保存

4.3 查看检测框和事件 ​

打开 实时展示,选择通道和 DINO 叠加层。

DINO 在实时画面中输出开放类别检测框

检测框可能晚于原始视频更新,尤其在低取帧频率或高推理负载下。以带时间信息的抓拍和事件核对,不凭一次视觉印象判断同步性。

DINO 检测结果满足规则后形成实时事件

打开 事件中心,按通道和任务查询上报记录。

在事件中心查询 DINO 检测事件

期望结果:人员标为 person,肉眼可辨识的垃圾标为 garbage,背景没有大量同类框,目标进入区域并满足事件条件后有对应记录。如果多词不稳定,先分别测试 person 和 garbage。

4.4 DINO 目标词速查 ​

中文目标首选英文词验证提醒
人员person与人形海报和屏幕画面做负样本
车辆car 或 vehiclevehicle 范围更广,两者分别测试
垃圾garbage 或 trash不要把“区域脏乱”直接作为目标词
灭火器fire extinguisher远距离小目标需单独验证
猫 / 狗cat / dog遮挡、夜间和小目标需困难样本
箱子 / 包裹box / package分别测试,避免一次堆叠近义词
椅子chair密集摆放时检查重复框
烟雾smoke与云雾、蒸汽、曝光异常做负样本
火焰fire 或 flame与灯光、反光、屏幕画面做负样本

5. CV、VLM 与 DINO 的选择路径 ​

  1. 当前内置场景已有对应任务且结果满足要求:使用传统模型。
  2. 没有对应任务,需要判断一个单帧可见状态:用图片先验证 VLM。
  3. 需要开放类别检测框:用图片或单路视频先验证 DINO。
  4. 需要高频、确定性、精确计数、多路并发或安全关键闭环:在目标硬件上做量化比较,必要时使用专用模型和规则 Pipeline。

传统模型、VLM、DINO 和定制模型的能力选择路径

对比项传统检测/分类VLMDINO
规则来源固定模型类别与 Pipeline一段目标短语或完整问题一个或多个目标名词
主要输出框、类别、分数和规则结果是/否判断与事件框、类别和分数
场景切换更换模型、标签或规则修改提示词并重新验证修改目标词并重新验证
最适合高频固定类别和成熟业务长尾可见状态判断长尾目标定位
画面表现通常有检测框或业务叠加通常无检测框有检测框,但更新取决于抽帧和推理
上线证据标注集指标、性能和业务规则验收固定正负/困难样本、稳定性、事件和资源框的位置与类别、误检漏检、事件和资源

三者互补,不是按“新技术一定替代旧模型”排序。

6. 提示词模板与验证记录 ​

6.1 VLM 参考模板 ​

以下完整问题都要求开启 高级提示词模式:

场景参考提示词预期输出ROI 建议
垃圾桶满溢判断垃圾桶内垃圾是否已达到桶口或明显溢出,忽略桶外正常摆放物品是 / 否只覆盖垃圾桶和桶口
消防柜门状态判断消防器材柜门是否完全关闭,忽略玻璃反光是 / 否覆盖柜门边缘和锁扣
门禁状态判断门扇是否处于明显开启状态是 / 否覆盖门扇与门框
指示灯判断设备指示灯是否为红色是 / 否紧贴指示灯区域
通道堵塞判断消防通道地面是否被箱子、车辆或成堆杂物明显堵塞,忽略行人短暂经过是 / 否覆盖通道地面
工位状态判断该工位座位或操作位置是否有人值守是 / 否覆盖座位与操作区域

如果希望普通模式自动包装,只填写目标短语,例如 消防柜门打开,不要把上表完整句子填入普通模式。

6.2 每个任务的验证记录 ​

项目要记录的内容
任务定义一句话说明什么条件应该触发
提示词版本模式、完整文本和修改时间
输入样本正样本、负样本和困难样本的固定集合
运行条件模型、设备后端或远程服务、ROI、取帧频率、生成风格和阈值
实际结果每张图或每段视频的判断、检测框和事件
接受标准可接受的漏报、误报、时延、费用和资源占用

新任务至少确认:

  • [ ] 图片分析已覆盖至少 5 张清晰正样本和 5 张清晰负样本。
  • [ ] 已加入现场常见困难样本,而不是只测试理想图片。
  • [ ] 使用相同配置对同一批图片复测,结果差异已记录。
  • [ ] ROI 排除了无关背景。
  • [ ] 取帧频率与允许发现时延一致,并经过资源测量。
  • [ ] 视频正负片段、事件抓拍和持续运行均通过。

7. 常见问题 ​

VLM 没有结果 ​

  1. 确认原子模型和分词器已经安装,而不是只有任务模板。
  2. 本地模型确认运行在支持的 Sophon 后端;远程服务确认网络、地址、模型名、端点和凭据有效。
  3. 先用单张清晰图片测试,排除视频抽帧与 ROI。
  4. 查看模型初始化、内存不足、请求超时和响应解析日志。
  5. 图片模式通过后再恢复视频任务。

VLM 完整提示词结果异常 ​

检查 高级提示词模式。如果关闭,系统会把完整句子再次包装为“是否存在【完整句子】目标”;开启后才会按完整问题执行。修正模式后必须对原固定样本全部复测。

VLM 结果不稳定 ​

  1. 固定模型、模式、生成风格和样本。
  2. 将模糊问题拆成一个可见、单一的判断。
  3. 加入关键视觉特征和明确排除项。
  4. 收紧 ROI。
  5. 使用严谨风格或在受控记录下减少采样随机性。
  6. 相同输入仍无法达到标准时,改用专用模型或人工复核。

远程 VLM 超时或偶发失败 ​

检查 CosmoEdge 到远程地址的 DNS、路由、TLS 和代理,比较服务端日志与 timeout_ms,并确认服务模型名和 /chat/completions 兼容性。降低取帧频率避免请求堆积。不要通过无限增大超时掩盖服务不可用。

DINO 没有框或框太多 ​

  1. 确认目标足够大且肉眼可辨。
  2. 每次只测试一个具体英文名词。
  3. 同义词分别记录,不要一次堆叠多个近义词。
  4. 检查 ROI、目标置信度、文字置信度和模型资源。
  5. 固定高频类别应比较传统检测模型的稳定性和成本。

目标定义本身含糊 ​

让业务方先独立标注一组“应该触发”和“不应该触发”的图片。如果人员之间无法达成一致,提示词或模型也无法形成稳定验收标准。先定义业务边界,再选择技术。

完成验收 ​

  • [ ] 已说明为什么选择 VLM、DINO 或传统模型。
  • [ ] VLM 普通模式只使用目标短语,完整问题已开启高级提示词模式。
  • [ ] 本地或远程推理配置已记录,密钥没有进入文档和版本库。
  • [ ] VLM 使用固定正负和困难样本完成图片验证。
  • [ ] DINO 在预期目标位置输出类别和检测框。
  • [ ] 视频任务的区域、频率、参数和运行策略已记录。
  • [ ] 事件中心结果与任务定义一致。
  • [ ] 已完成持续运行观察,没有未解释的模型、网络或资源错误。

下一步 ​

阅读算法编排,把输入、模型、规则和输出组织成可维护的 Pipeline。

引擎代码采用 Apache-2.0 许可证。模型与依赖遵循各自许可。

CosmoEdge / 项目咨询

聊聊你的边缘 AI 项目。

模型部署、设备选型或系统对接,都可以从你眼前的问题开始。

商务与项目咨询

hello@cosmowander.ai

安装使用与开源问题前往社区讨论
邮件中可以介绍哪些信息?

先介绍已掌握的部分,其余信息可以在沟通中补充。

  • 应用场景

    想识别什么,事件如何使用

  • 已有条件

    已有的模型、设备或系统

  • 处理需求

    视频路数、频率与时延要求

  • 项目进展

    项目阶段,以及眼前的问题