大模型视觉 · 装配过程监测

家电行业:防静电布贴装过程监测项目落地实践

一个手工工位:先贴一张标签,再贴四块防静电布。系统盯住每一块有没有真的贴上去,四块齐出 OK,缺件出 NG 并指出缺的是哪一块,全程在产线本地推理。

本篇要点

  1. 要判的不是零件外观,是贴附动作有没有发生。防静电布贴上去就和背板同色同形,静态终检看不出漏没漏,只能在贴的那一刻抓。
  2. 五个类别(贴标签 + 四个位置的贴防静电布)各用 1–10 张样本图标注。缺件要指名道姓说缺哪一块,所以四块布按位置分成四个类别。
  3. 整条链路配在一张画布上:分割认得出、事件探测确认位置和稳定性、状态机累计到齐出结果,三层各改各的,互不影响。
  4. 判定规则全部落在状态图上,不在模型里,可以按客户现场规则定制,不重训、不改代码。
01Scene

现场是什么样

装配线上的一个手工工位。工件带金属背板,随线体到位后,工人先在指定处贴一张标签,再把四块防静电布分别贴到背板上四个位置。贴完随线走,下一件接上。

视频工位实拍。画面左侧是工作流列表,中间是相机实时画面,右上是当前这件的进度,右下是逐件的检测记录。绿色轮廓是系统识别到的贴附动作区域,轮廓上的数字是贴附件类别号。
02Problem

关键矛盾:漏一块当场看不出来

防静电布贴在金属背板上,作用是把装配、搬运、包装过程中积累的静电导走。少贴一块,静电就有一条泄不掉的路径,最容易受伤的是背板后面那些敏感器件。

麻烦在于这种失效不当场暴露。工件继续往下走,整机点亮正常、功能测试也过,问题往往到老化测试甚至到用户手里才以花屏、黑屏、随机死机的形式出现。到那一步,追溯要翻整批,返修要整机拆解,成本和工位上贴一块布的成本完全不在一个量级。

所以这道工序的性质是:失效后果高,工位本身却没有任何防错手段。布是手撕手贴的,没有扭矩、没有计数、没有到位传感器;贴完位置很快被后续零件和上盖遮住,静态终检看不见;靠工人自检等于没有校验,抽检又覆盖不到每一件。

剩下唯一能在"贴的那一刻"确认的手段,就是看着它被贴上去。这是引入视觉的直接原因——不是为了替代终检,是因为终检根本看不到这一项。

于是判定规则收敛成很窄的两条:四块齐 = OK;工件走了还缺 = NG,并且要说清楚缺的是哪一块。下面几节就是把这两条拆成平台里的具体配置。

产出长这样

先看结果,再看怎么做出来的。运行界面上,右上是当前这件贴到了哪几块,右下是逐件记录。

平台运行界面:左侧工作流列表,中间实时监控画面,右上工作流程进度,右下检测记录表
图 1运行界面。中间画面里的绿色轮廓是实时识别到的贴附动作。右上"工作流程"是当前这件的进度:贴标签作为起点单独一张卡,四块布贴到一块点亮一块。右下"检测记录"逐件给结论,第 10 件是 NG,缺的是记为"第一步"的那一块,其余三块和标签都正常——不是整件报废,而是明确指出去补哪个位置。
03Pipeline

张量流:一条流水把画面变成记录

平台里所有配置都落在一张画布上。画面从左边进来,一路走到右边出记录和存图,中间每个方块是一个算子,连线就是数据流向。这张图配好了,工位就跑起来了——没有脚本,没有编译,改完保存即生效。

张量流编辑器:视频流相机、图像预处理、语义分割、事件探测、状态机、存图、串口设备七个算子连成一条流
图 2这个工位的张量流。左边是算子库,画布上是本工位实际用到的七个算子。选中的是"语义分割·贴附件"节点。状态机的输出分两路:一路给存图(NG 留证据),一路给串口设备(现场声光提示、或把结果推给产线系统)。
算子在这个工位做什么关键参数
视频流相机接工位上方相机的 RTSP 流1080p / 25 fps
图像预处理抑制线体反光和车间顶灯的频闪去噪、归一化
语义分割·贴附件逐帧圈出贴标签和四块布的贴附区域5 类
事件探测把分割结果翻成"某块贴到了"这样的事件7 个事件
状态机管起点、累计块数、判齐不齐、出记录4 状态 / 3 动作
存图NG 时自动存下当时的画面仅 NG
串口设备把 OK/NG 送到工位灯和产线系统RS485

整条流跑在产线旁边的一台边缘 GPU 上。视频不出车间,也不依赖厂区网络的稳定性——网络断了,工位照常判、照常记,恢复后补传。

04Segmentation

语义分割:告诉系统这块布贴上去长什么样

这一层解决"认得出"。做法是在标注工具里把几张现场帧上的贴附区域圈出来,给它一个类别号——不写规则,不调阈值,圈完就能训。

语义分割标注界面:左侧标注视图圈出橙色贴附区域,右侧检测结果视图显示绿色轮廓
图 3标注界面。左边是人工标注视图,橙色是圈出来的"贴防静电布4"区域;右边是同一帧的模型输出,绿色轮廓和轮廓上的类别号由模型给出。右侧列表是这个工程的样本,每张图标了它属于哪一类贴附件。

圈的是贴附这个动作的整体形态,不是那块布。手、正在按压的布、被贴的那块背板一起圈进去。只圈布,贴之前拿在手里和贴之后按在板上长得差不多;只圈手,四个位置又区分不开。

四块布之所以分成四个类别、而不是一个"防静电布"类加四个区域,原因很实际:NG 时要说清楚缺的是哪一块。工人拿着记录去补贴,需要知道去补哪个位置。四个位置的背板底纹、周边零件都不一样,模型区分起来也比想象中容易。加上贴标签,一共五类。

每类各标了几张。少样本能力在这里的实际意义是:一个新的贴附位从拿到现场图到能用,通常 1–10 张样本、几分钟配置。这决定了换机型时不需要把训练工程师再叫回现场——工艺员自己在标注界面上圈几张,点"检测"看效果,不行就再补两张。

调试期的判断标准很简单:拿一段没参与训练的现场录像回放,看五类轮廓是不是在该出现的时候出现、该消失的时候消失。轮廓抖、偶尔漏一两帧不用管,下一层会把它滤掉。

05Event

事件探测:手拿着布扫过去不算贴到

分割给出的是逐帧的"这里有个贴附形态"。要变成"第 4 块贴到了"这个判断,还差两个条件:位置对、稳得住。这一层就是干这个的,在事件编排器里配,不碰模型。

GPU 事件编排器:物体存在与速度检测两个原语通过与逻辑组合成贴防静电布事件
图 4事件编排器里"贴防静电布4"的配置。两个原语与在一起:物体存在要求该类别出现在"贴附位 4",速度检测要求它静止住而不是一掠而过。右侧是本工作流的七个事件,它们构成送给状态机的事件张量。

加上稳定性条件,是调试期实测出来的。早期只用"物体存在",工人从料盒取布、手越过背板时就会误触发——系统以为贴到了,实际布还在手上。这种误报最危险:它把漏贴件记成 OK,正好放过了这个项目要防的东西。用速度检测要求目标连续静止若干帧之后,这类误报消失。

"贴附位"这个检测区域同样重要。四块布长得一样,只有靠区域才能确认贴的是不是这个位置;另外相邻工位的工人偶尔会入画,不限定区域的话,别人的动作会被算到这一件上。区域是在这一页上画的框,改产线布局或换机型时改框就行。

事件触发条件用途
E0 贴标签标签类别 + 指定区域 + 稳定达标开始一件
E1 贴防静电布1布 1 类别 + 贴附位 1 + 稳定达标计入一块
E2 贴防静电布2同上,换类别和区域同上
E3 贴防静电布3同上同上
E4 贴防静电布4同上同上
E5 四块齐数量检测:已贴块数 = 4本件完成
E6 离开未齐物体不存在:工件离开工位,块数仍不足 4判 NG,存图并标出缺哪块

E6 用的是"物体不存在"这个原语——工件走出检测区就意味着这一件结束了,该结算了。用工件本身当结算信号,比任何外部触发都可靠,也不需要额外接线。

06State machine

状态机:一件的开始、累计和结算

到这一层,系统已经知道"哪一块贴到了"。剩下的是把这些事件攒成一件的结论。这件事完全由状态图决定,和模型无关。

状态图编辑器:四个状态,S1 上有一个自环用于累计四块布
图 5状态图编辑器。整张图只有四个状态。关键是 S1 上那个自环:E1–E4 任意一块贴到,都回到 S1 并让计数加一(A2),不推进到别的状态。四块齐(E5)走灰线到完成,工件离开时仍未齐(E6)走橙色虚线到 NG。

自环是这张图的核心写法。它把四块布当成一个集合来累计:每贴到一块,状态不变,只让计数加一;真正的判定推迟到"齐了没有"这一刻。整张图上 NG 只有一种成因——工件走了而集合没满,缺哪一块从已经计入的类别里一看就知道。

这样写还有一个好处:加减贴附位不动结构。多一个位置,就多一个类别、多一个事件,把它接进同一个自环,再把 E5 的数量改一下,图的形状不变。

状态在等什么离开条件
S0 等待贴标签本件的起点动作E0 → S1
S1 贴附中四块防静电布E1–E4 自环(A2 计数 +1)/ E5 四块齐 → S2 / E6 离开未齐 → S3
S2 本件完成出记录(A0),复位到 S0
S3 本件 NG出记录并存图(A1),复位到 S0
07Customization

规则按现场定制,不用重做一套

同样是贴四块布,换一家工厂、换一条线,要求可能完全不同——有的多一个贴附位,有的只有两块是必检项,有的允许工人当场补贴,有的只想要报警不想判 NG。这类差异不该靠重新开发一套程序来吸收。

前面三层的分工在这里体现出价值:模型只管认得出,区域和稳定性管准不准,而"什么算合格"全部集中在状态图这一张画布上。所以定制通常不涉及训练,也不涉及代码——都是在图上改几笔:

现场提出的要求怎么改影响面
多一个贴附位加一个类别和一个事件,接进 S1 的自环,改 E5 的数量加 1 类 1 事件,图形不变
只有两块是必检项改 E5 数量检测的判定条件和目标类别改 1 个事件参数
允许工人当场补贴从 S3 加一条回到 S1 的连线加 1 条连线
只报警不判 NG把 S3 上的动作从"出记录并存图"换成"仅提示"改 1 个动作
换一种结算信号把 E6 的原语从"物体不存在"换成产线到位信号改 1 个原语
多机型混线,贴附位不同一个机型一张工作流,按标签内容自动切换复制工作流后改区域

定制不只是判定规则。记录里带哪些字段、NG 存不存图、存多久、结果是推给工位灯还是写进产线系统的哪个字段,都是在配置里定的。这个工位最后的落地形态就是这么谈出来的:现场只要工位灯和逐件记录,MES 那边只收 OK/NG 和缺件位置,其余不推。

把规则做成可配置的代价,是配置项比一套写死的程序多。但换来的是同一套东西能跟着工艺走——这个工位的判定规则在项目期内按现场要求调整过两次,两次都是当班改完、当班恢复生产,没有停线,也没有重新训练。

08Deployment

上线要准备什么

从 IT 和自动化的角度,这个工位需要落实的东西不多,但每一项都要提前定。

项目要求说明
相机1080p 以上,25 fps,支持 RTSP机位要能俯视整个背板,四个贴附位都不被工人身体遮住
光照工作面照度稳定,避免直射反光金属背板反光是这个工位最常见的干扰源
算力产线本地一台边缘 GPU一台可带多个工位,按相机路数配置
网络相机与推理机同网段,千兆推理在本地完成,不依赖厂区骨干网
输出RS485 或以太网接工位灯/看板,或把逐件记录推给产线系统
数据留存NG 图本地存储,按天滚动只存 NG,容量压力很小

调试期建议留一周。第一天装机位、跑通视频流;第二到三天标注五个类别、看回放调分割;第四到五天画贴附位的区域框、调稳定性条件;剩下两天空跑对比人工记录,确认没有误报。

09Takeaways

复盘

一、把"认得出"和"判得准"分开,是这类项目能收敛的前提。模型只负责认贴附形态,位置、稳定性、结算规则全部放在模型外面配。现场调试时绝大部分时间花在后两层上,而它们改一次只要几分钟,不用等训练。

二、误触发比漏检危险得多。取料、手越过背板都可能让系统以为贴上了,把漏贴件记成 OK——正好放过这个项目要防的东西。解法不在模型里,而是在事件层加一个稳定性条件。

三、类别怎么分,取决于 NG 要怎么说。四块布分成四个类别,唯一的理由是缺件时要指名道姓说缺哪一块。先想清楚记录要长什么样,再回头定类别,比反过来省事得多。

四、把判定规则留在图上,是这套东西能跟着现场走的原因。加减贴附位、改必检项、换结算信号,都是改连线和参数。这一点在多工厂复制时的价值,比单点识别率高一两个点大得多。

这套方案适用于品类、工序、产线变化频繁,且缺陷"当场看不出来、流出去很贵"的手工工位。一台边缘 GPU 可以带多个工位、多条产线,配置方式在工位之间可以直接复制,规则再按各自现场调——这也是它比"为每个工位定制一套检测程序"更省的地方。

Leo

关于作者

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

当前关注边缘 GPU 推理优化、跨域泛化与现场数据闭环——让同一套配置方式在不同工厂、不同工艺之间可复制。文章记录项目实施中的实际配置、判断逻辑与现场结果。