大模型视觉 · VisionAgent / 落地实践
单机位、四项防护、一趟一结论——系统在人进门之前把「还差哪件」直接显示给本人,不卡顺序。
现场是一条狭长的更衣通道,通道口已有一台俯视相机。需求是在不改通道布局、不加穿戴传感器的前提下,判断人在进入工作区域之前四项防护是否穿到位,并且当场把结论给到本人。
01/6项目要求
更衣类场景很容易被默认成强制手顺问题——上一个洁净区项目就是这样。但这条通道的验收标准只有一句:进入工作区域时,发套、口罩、防护服、手套四项都在身上。
先戴手套还是先穿防护服,现场不关心。真按固定顺序卡,结果是人被反复拦下来重做,系统很快就被绕过去——约束加错了地方,比不加更糟。
所以这里刻意不上顺序状态机,改成一份可乱序完成的清单,另外用两个动作给流程划边界:开门作为这一趟的起点,展示双手作为收尾确认。约束强度是配置出来的,不是模型定死的——这一点决定了同一套能力能同时覆盖松要求和严要求的车间。
下面这张表是从上面那段录像里逐秒读面板状态得到的,不是示意值。注意第 77 秒那一行:手套已经判为完成,防护服还在待检测——乱序通过在现场是真的会发生,也确实被系统接住了。
| 时刻 | 面板变化 | 说明 |
|---|---|---|
| 0:05 | 开始(门把手)→ 已完成 | 门把手被单独圈出,这一趟开始计时 |
| 0:25 | 发套、口罩 → 已完成 | 此时人刚换完上身,两项先后落定 |
| 1:17 | 手套 → 已完成 | 防护服此时仍是待检测,顺序被允许颠倒 |
| 1:46 | 防护服 → 已完成 | 四项凑齐,清单只剩收尾项 |
| 1:47 | 结束(双手)→ 已完成 | 绿色横幅:穿戴合格,可以进入工作区域 |
| 1:50 | 六格复位为待检测 | 等下一个人,无需人工干预 |
| 现场约束 | 系统怎么满足 |
|---|---|
| 单机位俯视全程 | 直接接入既有 CCTV,尽量利旧 |
| 结论要在进门之前给出 | 本地实时推理,面板与横幅当场刷新 |
| 原始视频不出厂 | 推理在车间本地边缘设备完成,只出结论与留证 |
| 操作人员不接受培训 | 六格清单+一句放行提示,看颜色就知道还差哪件 |
| 穿戴要求会加项 | 加一项=补几张现场帧+清单加一格,不重训模型 |
02/6张量流
整套配置的骨架是一张张量流画布。实施人员从左侧算子库拖出算子、按数据流向连线、在节点里填参数,不写一行代码。先看完整的一张,后面三节讲的都是双击某个节点之后的事。
| 算子 | 配什么 | 为什么单独成一层 |
|---|---|---|
| 视频流相机 | RTSP/HTTP 流地址、点位 | 利旧现有 CCTV,视频只在本地流转 |
| 图像预处理 | 去噪、增强、归一化 | 通道内外光照差异大,先拉平再进模型 |
| 语义分割 | 每类最小面积、检出置信度、防抖帧数 | 「看见」只在这里训,每类 1–10 张现场帧起步 |
| 事件探测 | E0–E5 的判定逻辑 | 把轮廓翻译成业务语言,纯配置 |
| 状态机 | 轮次起止与清零 | 只管一趟的边界,改动成本最低 |
| 存图 | 触发时机、保存路径 | 留可复核的关键帧,不进控制回路 |
加一项穿戴(比如鞋套):分割节点补一行类别、补几张现场帧,事件探测加一个事件和一路引用,状态机不动。改成强制手顺:只动状态机,检测层与模型都不动。换一条通道:整条流复制过去,类别沿用。
03/6语义分割
为什么用像素级轮廓而不是画框:这条通道狭长,人侧身、弯腰、半穿是常态,防护服与墙面同为浅色,手套和裸手轮廓接近。只给一个方框,判不出这件东西在不在该在的位置上。轮廓给出的是形状和位置,判定层才有东西可用。
| 编号 | 类别名 | 在流程里的角色 | 现场难点 |
|---|---|---|---|
| 1 | 开始(开门) | 流程起点,触发这一趟计时 | 把手细长、金属反光,需贴合轮廓而非方框 |
| 12 | 发帽 | 清单第一项 | 与深色头发对比弱,俯视下可见面积小 |
| 13 | 口罩 | 清单独立一项 | 侧脸时可见面积小,靠面积阈值放宽 |
| 16 | 手套 | 清单独立一项 | 与裸手轮廓接近,穿戴过程中形态变化大 |
面板上写的是「发套」,检测类别叫「发帽」,这不是笔误——清单项属于业务口径,检测类别属于模型口径,两者由判定层做映射。想改叫法、想把两个类别并成一项验收、想把一项拆成两个类别分别判,都只在配置里动。
04/6事件判定
分割只负责看见像素,业务要的是「发套戴上了」「可以放行了」这种可判定事件。判定逻辑在事件编排器里搭:从原语库拖判定积木、在节点属性里选目标类别,再用「与/或/非」组合成成立条件。
| 原语 | 怎么配 | 本项目用在哪 |
|---|---|---|
| 物体存在 | 目标类别(可多选)+检测区域 | E0–E4:开门、发套、口罩、防护服、手套;E5 的「双手」 |
| 事件引用 | 引用事件+引用方式(本轮锁存/当前结果) | E5:四项穿戴各引一路,全取本轮锁存 |
| 与/或/非 | 连线组合多个原语 | E5:五路条件全部成立才放行 |
| 物体不存在 | 必选 1 个类别,无则触发 | 「中途摘掉口罩」这类倒退动作,暂未启用 |
| 数量检测 | 比较模式+阈值 | 手套需左右各一;俯视机位会互相遮挡,暂未启用 |
容易配错的地方:最小面积、检出置信度、防抖帧数是语义分割节点上的参数,不是事件的参数。调参顺序必须是先把分割调稳,再动事件的连线与引用方式——分割不稳的时候在事件层加条件,是在用逻辑补模型的账,越调越乱。
05/6轮次边界
事件层已经把四项穿戴收成一个「放行确认」,剩下的问题只有一个:这一趟从哪一刻算开始、到哪一刻算结束、什么时候清零重来。这件事交给状态机。它是整套配置里最薄的一层——薄到只有三个圈,而这正是把顺序交给事件层之后省下来的复杂度。
E0 开门确认 开一轮,E5 放行确认 收一轮。四项穿戴一个都没出现在这张图上:它们已经在事件层用本轮锁存消化掉了。回到
S0 也不是图上的一条边,而是状态机节点的重置端口在轮次结束时清零,录像里第 110 秒六格复位就是这一下。右侧「状态-动作张量」里除了 3 个状态,还挂着唯一一个动作 A0 存图 ·
放行,绑在 S2 上。| 状态 | 进入条件 | 这一状态下在做什么 | 离开条件 |
|---|---|---|---|
| S0 待机 | 系统启动,或上一轮结束后重置 | 只等门被拉开这一个信号 | E0 开门确认 |
| S1 更衣中 | E0 开门确认 | 四项穿戴各自锁存,面板逐格转绿 | E5 放行确认 |
| S2 穿戴合格 | E5 放行确认 | 触发 A0 存图,给出放行结论 | 重置端口清零,回到 S0 |
三个状态本身没什么可调的,真正要和车间确认的是拿什么当一趟的起点和终点。这个项目选了开门和双手出通道,理由很实际:两者都是稳定、单一、不会中途反复出现的视觉事件,用它们划轮次,统计出来的每趟耗时才有可比性。如果现场的门常开、或者一次进多人,起点就得换成别的锚点(比如站定在指定区域)——换的是 E0 这一个事件的判定逻辑,状态图不动。
06/6现场落地
这套东西不涉及生产网改造。整个部署对甲方 IT 来说是一次性配合,之后的维护落在业务侧的配置界面里。
| 项 | 说明 | 谁负责 |
|---|---|---|
| 相机流地址与只读账号 | 按点位给出流地址,只读即可 | 甲方 IT |
| 边缘服务器 | 带 GPU,放在视频能到达的机柜 | 甲方采购或由我们提供 |
| 现场显示终端 | 通道内一块屏,给操作人员看清单与放行提示 | 甲方提供位置与电源 |
| 网络策略 | 只拉视频、只推结论,不需要外网 | 甲方 IT |
| 门禁联动(可选) | 放行信号以旁路方式给出,不进控制回路 | 双方确认 |
| 存储与备份 | 留证保留周期、配置文件备份策略 | 双方确认 |
一台边缘智能体可同时承载多路相机、多条张量流:多条更衣通道、缓冲间、不同车间共用一台设备和一套配置界面。新增工位主要是加相机、复制流、补少量现场帧。
07项目体会
这个项目我印象最深的是「别把顺序卡死」。前一个洁净区项目要求六步一步不能颠倒,这条通道只要求进门前一件不少——同样是更衣,约束强度差很远。
两个项目用的是同一套东西:同样的语义分割、同样的事件编排器、同样的状态机节点。差别只在编排方式:洁净区把事件逐个挂到状态机的转移上,跳步不推进;这条通道把事件用本轮锁存并进一个「放行确认」,谁先谁后都行。检测层完全不动。
能不能把这种差别做成配置项,而不是每次重做一套系统,是我判断一套视觉平台好不好用的标准。现场的人改得动,系统才留得下来。
另一个体会是结论给谁看。这个项目把结论直接给到本人:面板上少哪件是绿的一眼就看出来,不用等管理人员到场复核。约束只卡在真正要卡的地方,不制造无谓的拦停——现场愿意用,数据才是真的。
Leo
计算机视觉博士 · VisionAgent 方案与交付
计算机视觉方向博士,研究方向为少样本分割与视频行为理解;12 年工业视觉一线经验,累计交付 30+ 条产线、100+ 工位。
当前关注边缘 GPU 推理优化、跨域泛化与现场数据闭环——让同一套配置方式在不同工厂、不同工艺之间可复制。本篇记录更衣通道穿戴合规检测项目实施中的实际配置、判断逻辑与现场结果。
点击任意处关闭