一、质检落地,先看缺陷能不能拍清楚
很多项目一上来就说要上视觉检测,实际第一步该做的是:把缺陷拍出来。
划痕在反光面上拍不到,凹陷在正面光下拍不平,细小异物在低分辨率下只剩几个像素。拍不到就检不出,模型再好也没用。
视觉质检落地,第一步不是选模型,是判断缺陷能不能拍清楚。
我见过一个项目,缺陷是零点二毫米的划痕,用普通工业相机拍出来几乎没有对比度。模型再强也救不回来。
先做一件事:把所有缺陷类型列出来,逐个问「这个在图上是什么样子」。答不上来的,先补成像方案。
二、成像方案比模型重要
三件事决定成像质量:
一、光源角度。低角度侧光最能拉出划痕,同轴光适合平整表面。
二、分辨率与视野的换算。要看最小缺陷尺寸,算每毫米需要多少像素。
三、触发与定位。产线在动,取样时机错了,拍到的就是模糊图。
这三件定完,再谈算法。
成像方案比模型重要。光源角度差十五度,同一个缺陷可能从清晰变成看不见。
三种常用打光:明场看表面、暗场看划痕、同轴看平面反光件。
我的经验是先做打光实验,拍一批样本给质检员看,他们认可的图才值得训练。
三、样本的分布决定上限
正常品几百张、缺陷品十几张,这种数据训出来的模型只会说"全部合格"。
收集阶段就要按缺陷类型分层,每类至少几十张,且要覆盖不同光照、不同角度、不同批次。
成像方案比模型重要,这句话不是夸张。光源角度差十五度,同一个缺陷可能从清晰变成看不见。
常用的三种打光:明场看表面、暗场看划痕、同轴看平面反光件。三种各有各的适用面。
我的经验是先做打光实验,拍一批样本给质检员看,让他们挑「这张能判」。他们认可的图,才值得拿去训练。
四、模型在这类场景里的位置
分两段:检测和判定。
检测负责框出可疑区域,用轻量模型就够;判定负责分类和打分,可以复杂一些。
两段分开的好处是:误检多的时候只调第二段,不用整条重训。
样本分布决定上限。缺陷样本少,模型就只能学会「猜」。
补样本的办法有两种:真实采集和合成。前者贵但真,后者便宜但偏。
我的做法是先真实采集,再用合成补长尾,比例控制在三成以内。
五、上线后的三个指标
一、漏检率。这是底线,别用准确率糊弄。
二、误检率。直接决定产线愿不愿意用。
三、复核工作量。每班需要人工看多少张。
上线后看三个指标:漏检率、误检率、复判率。
漏检是致命的,一批货流出去就是事故;误检是成本,多了产线会抵触;复判率反映模型的不确定程度。
三个指标里,我优先压漏检。宁可多误检,不可漏一件。这个取舍要提前和产线谈清楚。
六、和产线系统怎么接
接口要简单:给一张图,返回是否合格、缺陷类型、置信度、位置。
判定为可疑的直接推给复核工位,不要自动放行。这条规矩能挡住大部分事故。
和产线系统对接,最容易被忽略的是「判完之后干什么」。
报警、剔除、标记待复判,三条路径要提前定。只报警不剔除,现场会当噪音忽略。
还有一个细节:模型输出的置信度要保留。产线可以根据置信度分级处理,高置信直接判,低置信送人工。这比一刀切好用得多。
上线后看三个指标:漏检率、误检率、复判率。
漏检是致命的,一批货流出去就是事故。误检是成本,多了产线会抵触。
三个里我优先压漏检。宁可多误检,不可漏一件,这个取舍要提前和产线谈清楚。
补一句现实:产线不会为算法停。所以质检系统的部署方式,必须是「旁路」。
旁路意味着它不影响生产,只做提示。这一条决定了项目能不能落地。
再补一句:样机阶段一定要让产线的人参与。他们知道哪里最容易出问题。
这个信息比数据珍贵,而且免费。
延伸参考
流程和接口的细节,BackendWiki 上有成体系的条目。
留一句:视觉质检的胜负手在打光,不在模型大小。