大模型视觉 · VisionAgent / 落地实践

医药行业:B 级洁净室更衣行为识别项目落地实践

六步手顺、五类防护用品、一个动作事件——系统实时核对每一步做没做、顺序对不对,全程只在车间本地推理

本篇要点

  • 关键矛盾。更衣的验收标准不是「画面里有没有口罩」,而是「六件事按顺序做完」——单帧检测答不了带记忆的流程问题。
  • 拆成两件事。大模型只负责看见,状态机负责判顺序。改 SOP 时改的是状态机配置,不是重训模型。
  • 一条张量流串起来。七个算子在画布上拖出来连好:相机 → 预处理 → 两路语义分割 → 事件探测 → 状态机 → 存图,全程零代码。
  • 少样本起步。整个项目 12 张现场帧、5 个类别,平均每类两三张;新增一类目标 1–10 张、数分钟完成配置。
  • 不改现场。利旧已有 CCTV,边缘 GPU 本地推理,视频不出厂;AI 做旁路观察层,不进控制回路、不改原报警策略。
案例 01画面里的彩色掩膜与类别名都是系统实时输出:防护口罩、头罩、连体衣、目镜、手套逐件识别,「系鞋带」这类动作单独成事件。 这段是 38 秒精华,按更衣顺序取了五个片段;完整 11 分钟连续记录未做剪辑。

制药工厂 B 级洁净室的更衣间已有 CCTV。需求是在不改生产工艺、不改原有声光报警的前提下,对更衣顺序和防护用品穿戴结果做实时识别、记录与预警,形成可追溯的审计数据。

01/6项目要求

把「按规范更衣」翻译成机器能核对的规则

客户提的是一句话:进 B 级区之前要按规范穿好防护用品。这句话定了目标,但系统还需要知道识别哪几类物品、按什么顺序核对、哪些情况算漏步、结果怎么留存。项目真正的工作量在这次翻译上。

更衣不是「检测一个东西」,是「按顺序做完六件事」。传统 AOI 和目标检测擅长回答「画面里有没有口罩」,而验收标准是「口罩→头罩→连体衣→系鞋带→目镜→手套,一步不能少、一步不能颠倒」。前者是单帧判断,后者是带记忆的流程判断。

所以系统按这个矛盾拆成两件事:大模型负责看见状态机负责判顺序。这一刀决定了后面所有的维护成本——改验收标准时改的是状态机的一份配置,不需要重新训练模型。

现场约束 系统怎么满足
已有 CCTV/NVR RTSP 直接取流,尽量利旧;细粒度点位再补近景
不改工艺与报警策略 AI 做旁路观察层,不进控制回路
原始视频不出厂 车间本地边缘 GPU 推理,只输出事件与证据
事件可追溯、可复核 关键帧+短视频+置信度+命中的事件与规则
SOP 会变,不能返厂 改顺序改配置;新增识别目标 1–10 张现场帧起步

边界立项时就把能做和不做写在纸上

这一步看着像自我设限,实际是验收不扯皮的前提。视觉能力有明确的物理边界,含糊过去,后面每一次复核都要重新吵一遍。

能做

  • 更衣步骤顺序与漏步
  • 口罩/头罩/连体衣/目镜/手套是否穿戴
  • 系鞋带等关键动作
  • 未穿好即进入洁净区
  • 摸脸/靠墙/坐操作台

部分能做

  • 手消毒:能见喷壶动作,不见是否出液
  • 口罩覆盖是否到位、头发外露:需脸部特写镜头

明确不做

  • 洁净服效期日期
  • 拉链/袖口是否收紧
  • 口罩反戴、落地继续使用
  • 「大幅度转身」这类无法量化的主观要求

02/6张量流

七个算子在画布上连成一条流

整套配置的骨架是一张张量流画布。实施人员从左侧算子库拖出算子、按数据流向连线、在节点里填参数,不写一行代码。先看完整的一张,后面三节讲的都是双击某个节点之后的事。

张量流编辑器界面:左侧算子库按全部、相机、大模型、外设、逻辑、输出分类,画布上视频流相机、图像预处理、语义分割·防护用品、语义分割·动作区、事件探测、状态机、存图七个节点连成一条主线加一条动作支线
界面 01本项目配好的张量流。主线是视频流相机 → 图像预处理 → 语义分割 → 事件探测 → 状态机,状态机的「状态变化」输出再接一个存图节点留关键帧。预处理之后分出两个语义分割节点:上面那个认五类防护用品,下面那个只分割「系鞋带动作区」——动作事件看的是速度与持续帧数,和「物体存在」不是一套判法,混在一个节点里调参会互相干扰。图中蓝框选中的是「语义分割·防护用品」,双击进界面 02。
算子 配什么 为什么单独成一层
视频流相机 RTSP 地址、取流帧率、点位 利旧现有 CCTV,视频只在本地流转
图像预处理 去噪、增强、归一化 更衣间光照差异大,先拉平再进模型
语义分割·防护用品 5 类目标的最小面积、检出置信度、防抖帧数 「看见」只在这里训,每类 1–10 张现场帧起步
语义分割·动作区 只分割系鞋带动作区 动作靠速度判,与物体存在分开调参
事件探测 E0–E5 的判定逻辑 把像素翻译成业务语言,纯配置
状态机 状态、转移、动作 顺序与验收标准都在这里,改动成本最低
存图 触发时机、保存路径 留可复核的关键帧,不进控制回路

现场要改的东西几乎都落在某一个节点的参数里:换机位改第一个,调灵敏度改语义分割,改判定标准改事件探测,改手顺改状态机,互相不牵连。

03/6语义分割

让系统看见防护用品

为什么用像素级分割而不是画框:更衣间里人是侧身、弯腰、半穿状态,防护服和墙面同为浅色,手套和裸手轮廓接近。框回归在这种场景很容易把「拿在手上」当成「穿在身上」。分割给出的是掩膜,可以再用面积位置把这两种情况分开。

语义分割标注界面:顶部缺陷类型选为 NG3 防护连体衣,左侧为画笔、多边形、擦除等标注工具,中间左窗格是人工标注的橙色掩膜、右窗格是模型给出的彩色掩膜与类别名,右侧图像列表共 12 张图像 5 个类别,底部为保存标注、迁移、检测按钮
界面 02配「看见」的全部界面就是这一个。选好缺陷类型(图中是 NG3 防护连体衣),用多边形圈出目标,点检测。左窗格是人工标注的橙色掩膜,右窗格是模型跑出来的结果——绿色连体衣掩膜、青色头罩掩膜和红色类别名都是系统自己画的,取自本项目运行录像 t=371.0s 的真实帧。留意右上角计数:整个项目 12 张图像、5 个类别,平均每类两三张就够起步。操作顺序:建 5 类 → 在现场帧上涂掩膜并保存 → 点「迁移」增量训练 → 点「检测」回看这批帧。
分割类别 掩膜 判什么 难点
NG1 防护口罩 洋红 存在性 侧脸时可见面积小,靠面积阈值放宽
NG2 防护头罩 存在性 与连体衣同色系,靠位置在头部区域区分
NG3 防护连体衣 绿 穿戴完整性 「拿着」与「穿好」按掩膜与人体重合度区分
NG4 防护目镜 存在性 反光强,需覆盖不同光照的样本
NG5 防护手套 蓝紫 存在性(左右各一) 内外层形态相近,靠颜色+数量区分

依托 Transformer 少样本能力,新增一类目标只要 1–10 张现场帧,数分钟完成配置并看到结果;补样本后点「迁移」做增量优化,不必推倒重训。换更衣间时类别与样本可以迁移复用——这也是同一套系统能覆盖多工位、多产线的原因。

04/6事件判定

把像素翻译成「这一步做完了」

分割只负责看见像素,业务要的是「头罩戴好了」「连体衣穿上了」这种可判定事件。判定逻辑在事件编排器里搭:从原语库拖判定积木、在节点属性里选目标类别,再用「与/或/非」组合成成立条件。改判定只动参数和连线。

GPU 事件编排器界面:左侧原语库按全部、关系、逻辑、判定、信号分类,中间画布上两个物体存在原语经与门组合成防护连体衣确认事件,右侧为更衣 SOP 的六个事件清单与节点属性
界面 03双击张量流的「事件探测」节点进入。图中在配 E2 防护连体衣确认:连体衣存在头罩仍然存在,两个「物体存在」原语经「与 (AND)」组合,所以右侧 E2 一行标着「3个原语」。为什么要加第二个条件——只判连体衣的话,先脱头罩再穿衣也会算通过,而这是现场真实会发生的走样;把前提锁进事件,比事后补规则更稳。每个原语只有三个参数:目标类别直接引用标注界面里的 NG1–NG5,检测区域可把头罩限定在头部,切图框决定是否只把这一块送进后续算子。
原语 怎么配 本项目用在哪
物体存在 目标类别(可多选)+检测区域+切图框 E0–E2、E4:口罩/头罩/连体衣/目镜
物体不存在 必选 1 个类别,无则触发 「摘掉头罩」这类倒退动作
数量检测 比较模式+阈值 E5:手套需左右各一,数量 = 2
速度检测 运动速度阈值(px/s)+持续帧数 E3:系鞋带这类动作事件
与/或/非 连线组合多个原语 E2:连体衣存在 头罩存在

一个事件只判一件事;先把分割调稳再动阈值。误报优先加防抖帧数,漏报优先降最小掩膜面积与检出置信度。

05/6状态机

顺序强制藏在「图上没有的东西」里

顺序不靠额外写 NG 规则,而是靠非预期事件一律自环:只有「当前状态 × 对应事件」这一格填了目标状态,流程才前进一步。跳步不推进,缺步永远走不到终点。需要报警或写记录时,把动作挂在对应转移上。

状态图编辑器界面:画布上七个圆形状态节点串成更衣手顺,由六条带事件标签的转移连接,更衣完成状态挂一个记 OK 存关键帧的动作,右侧为事件张量与状态-动作张量两个面板
界面 04双击张量流的「状态机」节点进入。7 个状态串成一条链,没有任何分叉:从 S0 等待口罩一路到 S6 更衣完成,六条转移分别挂 E0E5,画布上的圆圈可以随手拖到顺眼的位置,事件标签跟着连线走。从 S0 出去只有 E0 一条边,此时哪怕连体衣先穿好、E2 已经成立,也没有任何一条边能走,流程原地不动——顺序就是这么强制的。建转移在画布上按住 Shift 从 A 拖到 B 再选事件;切到「▦ 规则表」页签能看到同一份配置的矩阵形式,只有对角线上 6 格填了目标状态,其余一律自环。右侧「状态-动作张量」里除了 7 个状态,还挂着唯一一个动作 A0 记 OK · 存关键帧,绑在 S6 上。
状态 等待的事件 事件怎么判 走通后
S0 等待口罩 E0 防护口罩确认 物体存在(防护口罩) → S1
S1 等待头罩 E1 防护头罩确认 物体存在(防护头罩) → S2
S2 等待连体衣 E2 防护连体衣确认 连体衣存在 头罩存在 → S3
S3 等待系鞋带 E3 系鞋带确认 动作区速度+持续帧数 → S4
S4 等待目镜 E4 防护目镜确认 物体存在(防护目镜) → S5
S5 等待手套 E5 防护手套确认 手套存在 数量 = 2 → S6
S6 更衣完成 记 OK,写入耗时与关键帧 终点

插一步(比如加手消毒):加一个状态+一个事件,去事件编排器搭判定逻辑,再在规则表里改两格。调顺序:只改规则表里绿字格的位置。换更衣间:状态机整份复制,分割类别沿用,补少量现场帧做迁移。全过程不动模型,也不需要算法人员到现场。

06/6现场落地

IT 要准备的是一张一次性清单

这套东西不涉及生产网改造。整个部署对甲方 IT 来说是一次性配合,之后的维护落在业务侧的配置界面里。

说明 谁负责
RTSP 地址与只读账号 按点位给出流地址,只读即可 甲方 IT
边缘服务器 带 GPU,放在视频能到达的机柜 甲方采购或由我们提供
网络策略 只拉视频、只推事件,不需要外网 甲方 IT
存储与备份 证据保留周期、配置文件备份策略 双方确认
账号权限 操作员/复核员/管理员三级 甲方指定+平台配置

一台边缘智能体可同时承载多路相机、多条张量流:更衣间、缓冲间、无菌操作台共用一台设备与一套配置界面。新增工位主要是加相机、复制张量流、补少量现场帧,不需要再上一套系统。

07项目体会

需求定义清楚,后面每一步才稳

回头看,这个项目真正花时间的不是模型,是把一句话的要求拆成三层能落地的定义:

  1. 业务要求:进 B 级区之前按规范穿好防护用品,漏步和顺序错误要能被发现。
  2. 判定规则:核对口罩、头罩、连体衣、系鞋带、目镜、手套六个步骤,逐步记录状态并给出结论。
  3. 软件配置:七个算子搭一条张量流,再用 S0–S6 状态机规定推进关系。

三层对齐之后,图像采集、模型训练、张量流配置和验收口径才有共同的基准。定义越清楚,后面越不用返工。

另一个体会是把改动成本放在哪里。这套系统里最容易变的是 SOP,最难改的是模型,所以设计时刻意让 SOP 落在状态机的一张表上,让模型只承担「看见」。现场的人改得动,系统才留得下来。

四个问题贯穿了整个实施:系统看什么、什么时候算这一步做完、什么情况直接判不合格、结果怎么留存。答清楚这四个,剩下的都是配置工作。

LEO

Leo

计算机视觉博士 · VisionAgent 方案与交付

计算机视觉方向博士,研究方向为少样本分割与视频行为理解;12 年工业视觉一线经验,累计交付 30+ 条产线、100+ 工位。

当前关注边缘 GPU 推理优化、跨域泛化与现场数据闭环——让同一套配置方式在不同工厂、不同工艺之间可复制。本篇记录医药行业 B 级洁净室更衣行为识别项目实施中的实际配置、判断逻辑与现场结果。