先看结论做视觉项目容易把交付想成「模型准不准」。但站在工位旁的人不看模型,他看的是这块看板。
过程监控最终交给车间的,是一块看板,不是一堆图片
这块看板叫「工位过程监控看板」。左半屏是相机实时画面,右半屏是这个工位的工序进度和当班统计。它挂在工位旁边,不需要人去点、去查,抬头就看得见。
下面这段实录拍的就是产线上的它。一件产品的装配从头走到尾:四步工序逐个打钩,最后一轮闭环、计数加一。建议先整段看一遍,再往下读拆解。
影像 01看板运行实录,1280×720,1 分 07 秒,拍摄对象为工位 2。打开 / 下载
实录末尾的当班账目。一轮工序走完,操作次数与合格数各加一,合格率随即重算。
看板的四个区域各说什么
- 左半屏 · 实时画面。当前相机(实录里是工业相机 2)的画面。模型检出的区域用绿色轮廓直接叠在画面上,判定依据是看得见的,不是黑箱。
- 右上 · 身份与状态。面板头写着「工位 2 · 工业相机 2」,右上角一枚状态标在「单轮运行中」和「等料」之间切换——一眼分清是正在检,还是在等下一件上工位。
- 右中 · 工序进度。一行「当前工序」,旁边标「第 4/4 步 · 检出中」与「上轮:合格」,下面四张步骤卡:完成的变绿打钩,没到的写「待执行」。
- 右下 · 当班账目。操作次数、合格数、不合格数,加一个合格率圆环。
这篇文章其实只回答一件事:看板上每一个绿钩、每一个数字,在软件里是靠什么配出来的。
为什么用「变化」判定状态机前面还有个「事件探测」节点,说明写着「检测输入信号变化触发事件」。它盯的是掩膜从无到有、面积跨过阈值这类变化,不是单帧的静态状态。装配现场人手频繁进出,用变化触发才不会因一次遮挡就把已完成的步骤判回去。
那四张卡片不是画上去的,是状态机排出来的
看板上工位 2 的一轮工序被拆成四步:前三步各盯一样东西,第四步收尾。这个顺序就是状态机里配的状态迁移,看板只负责把它显示出来。
- 01检测到导热硅胶A已完成
- 02检测到导热硅胶B已完成
- 03检测到屏蔽罩已完成
- 04结束待执行
把这四张卡片看明白,过程监控和传统外观检测的分界线就清楚了。传统做法是「拍一张、判 OK/NG」,一次成像给一个结论;过程监控要回答的是这几件事有没有按顺序做完,所以必须有状态、有次序、有进度。
三个藏在卡片里的设计决定:
- 同一种物料按位置拆成 A 和 B。这个工位要涂两处导热硅胶,配置时没有笼统写一个「硅胶」,而是拆成「导热硅胶A」「导热硅胶B」。差别很实际:涂了一处、漏了另一处,看板能停在第 2 步告诉你漏在哪儿;合成一类就只能知道「涂过胶」。
- 「结束」也占一步。第 4 步不检任何物料,它管收尾:确认整轮走完、给出本轮合格与否、把计数加上去、复位等下一件。看板上那句「上轮:合格」就是它写的。
- 顺序是硬约束。只有前一步打钩,后一步才进入检出状态。跳步不会被算完成——这正是「盯过程」区别于「拍结果」的地方。
图 01 · 00:01第 1 步打钩。硅胶A 完成,后三步仍是「待执行」,账目为 99 次 / 合格 96。
图 02 · 00:30第 2 步跟上。硅胶B 完成,屏蔽罩那步才开始等——顺序约束在这里生效。
图 03 · 00:42前三步全绿。操作员还在工位上,屏蔽罩已被确认装上,只剩「结束」收尾。
图 04 · 01:05一轮闭环。卡片全部复位,99→100 次、96→97 合格;画面里那圈绿色轮廓是当帧的检出结果。
一个容易看漏的细节下拉框的标签写的是「缺陷类型」,类别名也都带着 NG1
前缀。这套字段本来是给外观检测设计的,过程监控直接把它借来登记「该出现的物料」。看着别扭,但省了另建一套配置——现场务实的做法往往如此。
它凭什么认出「硅胶」?因为类别名就是那道工序的物
每一步卡片背后都有一个语义分割模型,认的是画面里某一块像素属于什么。双击链路上的语义分割节点进标注页,顶部那个下拉框就是这条链路要认的目标。
图 05语义分割 1 · NG1 导热贴A(主板安装工位)。俯拍视角,粉色小块是导热贴所在区域,目标小、边界清楚。已标注 26 张。
图 06语义分割 4 · NG1 导热硅胶(散热器工位)。近景视角,硅胶是一条细长轨迹,得贴着走线涂。已标注 20 张。
注意这些名字:导热贴A、导热硅胶、屏蔽罩、打点标记,全是「这道工序该出现的东西」。过程监控要确认的从来不是「这件产品外观有没有瑕疵」,而是「这一步到底做了没有」。类别设计就是这个转变的落点。
现场的两处组织习惯值得照抄:
- 一个工位一个工程目录。路径形如
/opt/visionagent/image-proj/<工位>/<相机>/<日期批次>/6.jpg,工位、相机、批次三级分开。半个月后回头查「7 月 30 号那批判了什么」,不用翻。 - 目标形态决定工具和粒度。导热贴是块状,多边形勾轮廓最快;硅胶是细长条,用画笔顺着涂更贴合,画笔粗细(图里是 20)得跟着目标换,不能一套粗细走到底。
这不是效率优化三个工位加起来不到 80 张标注。传统项目要先攒几千张、标几周才敢上线——四个工位各自攒几千张,这项目根本立不起来。样本成本直接决定了多工位过程监控铺不铺得开。
教会它要多少张图?图库 1708 张,真正标的只有 33 张
这是本案例里最有说服力的一组对照。下面两张截的是同一条链路(语义分割 2 · NG1 打点标记),只差一个筛选条件:一个筛「全部」,一个筛「已标注」。
图 07筛「全部」:1708 张。运行期不停存图,图库自然越滚越大。
图 08筛「已标注」:33 张。同一帧上青、品红两个掩膜共存,一次示教两类目标。
标注页的用法也是围着「省力」转的:左边原图、右边结果图并排,打开「显示检测结果」,模型当下认成什么立刻能比出来,不用等训完再复盘。三组筛选各管一件事——图像状态(全部 / 已标注 / 未标)管进度,合格状态(良品 / 不良)管样本平衡,缺陷视图(选中缺陷 / 结果图)管当前只看哪一类。
| 链路 | 工位 | 相机 | 类别 | 已标注 |
|---|---|---|---|---|
| 语义分割 1 | 主板安装 | industrialcam_2 | NG1 导热贴A | 26 张 |
| 语义分割 2 | 目镜安装 | industrialcam_1 | NG1 打点标记 | 33 张 / 图库 1708 张 |
| 语义分割 4 | 散热器 | industrialcam_2 | NG1 导热硅胶 | 20 张 |
| 语义分割 3 | 同批配置的第四条链路,本次素材未截图 | |||
节点自带的说明工业相机写着「单个工业相机采集,16 路可选」;图像预处理是「去噪、增强、归一化」;语义分割标着「样本效果 2.5x、速度 -4.5x」,是用推理速度换样本效率的档位;状态机是「有限状态机 FSM 配置节点」;存图则「将图像保存到指定磁盘路径」。
四个工位同时盯:两台相机,四条链路,四台状态机
前面看的都是工位 2 这一条。把画布拉开,这套工程其实是四条链路并排在跑,每条从取图一直走到存图,各管一个工位。
图 09工作流总览。四条链路各自跑完整一串,前两行有相机节点,后两行直接从图像预处理接起。
值得留意的是前两行有相机节点,后两行没有。后两行复用上游相机的图像流——同一台相机能覆盖到的几个工位,不必各配一台相机,省授权也省带宽。看截图里的路径也能对上:主板安装和散热器都挂在
industrialcam_2 下,目镜安装在 industrialcam_1 下。
相机可以共用,判定必须分开。
四个工位各有自己的类别、自己的事件、自己的状态机、自己的存图目录,互不干涉。两个实操提醒:
- 按连线读,别按编号读。图上「工业相机 1」接的是「图像预处理 2 → 语义分割 2」,编号并不成套对齐——编号只是创建顺序,链路归属只看连线。排查问题时认错一条链,能白折腾半天。
- 四台状态机彼此隔离。目镜工位卡住,只拦它自己那件活,主板工位的进度照推。要是共用一台状态机,一个工位停机就会把整条线拖住。
一份数据,两个用途存图目录既是追溯档案,也是下一版模型的训练集。这两件事用同一份数据完成,是过程监控项目能持续变好的根本原因。
为什么越跑越准:那 1708 张,是它自己攒出来的
回头看 Q3 的反差——图库 1708 张,标注只有 33 张。这 1708 张不是上线前人工拍的,而是链路末端那个存图节点在运行期一张张落下来的。
存图常被当成附属功能(「留个证据吧」),其实它把整套系统接成了一个回路:
上线时标几十张先跑起来,运行中把判错、判得勉强的帧留下,隔一段回标注页挑着补,再点一次「迁移」。换批次、换机型、车间光照变了,走的都是这条回路,不用推倒重来。
另外别忽略看板上那个不合格数 3。它不是系统的失分项,恰恰是这套东西的产出——三件没按工序做完的活被当场拦住,没流到下工位。过程监控的价值就在这三件上:不是事后统计不良率,而是当场不让它过去。
不必一上来就四条四条链路是这个案例的规模。落地时可以先挑一个工位、一台状态机跑顺,把类别和阈值调稳,再把同一套结构复制到第二、第三个工位——画布上是并排四行,实施上是一行一行加。
回到那块看板
把五个追问的答案连起来,看板就完整了:状态机定出四步工序和顺序,语义分割认出每步该出现的物料,事件探测用变化而非静态状态来触发,四条并行链路让四个工位各自独立地跑,存图把跑过的一切变成下一轮的养料。看板上的绿钩、「上轮:合格」、97.0%,都是这五件事共同写出来的。
什么样的场景适合搬这套做法?三个判断依据:
- 工序有明确先后,而且漏做、跳步会造成实质后果——这是状态机能发挥价值的前提;
- 该出现的东西看得见,比如贴片、胶路、标记、罩壳,相机能拍到就能教模型认;
- 工位多、样本少,靠人工攒几千张图逐个工位建模不现实,需要几十张就能起步的路线。
反过来,如果只是判一件成品的表面好坏、并不关心中间过程,那用不着状态机,一次成像判 OK/NG 更省事。这两条路线不冲突,本来就是解决不同问题的。