今年年初,广东东莞一家休闲食品厂找到我们。他们生产坚果和膨化类零食,日产能大概10万包,两条包装线靠4个工人灯检挑异物。

问题说穿了就一句话:人眼看久了会花。工人盯传送带盯了一个小时后,头发丝、塑料片、小石子这些东西就很容易漏过去。最严重的一次,有客户在袋子里吃出了塑料片,直接投诉到食药监,工厂被罚了款还停了半天产线整顿。

老板年初就下了死命令:今年必须上视觉检测方案。

这篇文章不是什么成功学案例,就是记录我们实际做了些什么、踩了哪些坑、最后效果怎么样。

一、现场情况摸底

去车间看了两次,记录了几个关键问题:

这几个条件决定了方案设计的方向:检测精度要高、但要能扛住车间恶劣环境、最好不需要连云端——万一断网了检测不能停。

二、方案设计

最终方案分三层:采集成像层、边缘AI推理层、异常处置层。

成像系统:相机+光源方案

比对了几种方案后,选定了线阵工业相机加高亮LED条形光源的组合:

这里有个细节花了点时间:包装袋是半透明的铝箔材质,背光打过去袋子内容物的纹理和异物混在一起,AI根本分不清。后来改成正面打光+暗色背景,异物和内容物之间的对比度才拉出来。

边缘AI推理:本地实时检测

在产线旁边装了一台边缘AI网关,不依赖云端:

之所以选边缘网关而不是上云,主要是三个原因:产线不能停,万一断网检测还得继续;每天17万张图片全传云端流量太大;检测延迟必须控制在200ms以内,云方案的网络抖动不靠谱。

异常处置:自动剔除+人工复核

检测到异物包之后,系统做两件事:

人工复核的原因很简单:初期AI误报率肯定不低,直接废掉所有报警包浪费太大。人工看一眼确认一下,是假阳性就放回传送带,是真阳性就记录归档。

三、实施过程

第一周:成像系统搭建和打光调优

硬件安装本身两天就搞定了——架暗箱、装相机、拉电源线,不算复杂。但打光调试花了整整三天。

第一天照着光学厂家的推荐方案布光,拍了500张测试图,发现两个问题:

调整方案:把条形灯从45度改成60度(更倾斜),加装偏振片减少反光。同时把相机曝光时间从2ms降到0.8ms,抑制过曝。前后换了4种打光角度组合才找到相对合适的配置。

踩坑教训:打光比选相机重要得多。我们之前花了很多时间挑相机参数,后来发现光源角度和安装位置才是决定检测精度的关键因素。如果重来一次,我会先花三天做光学测试,再定方案。

第二周:数据集构建和模型训练

自己拍了大约1万张产线真实图片做基础数据集。然后做了几件事:

这里遇到一个实际困难:很多异物太小了(头发丝不到1mm粗),在图像里只有十几个像素宽。YOLOv8n对这种极小目标检测效果一般。后来我们做了一件事:在模型前加了一个超分辨率模块(用FSRCNN做了2倍放大),把小目标的像素撑大后再送检测模型。代价是推理时间从30ms涨到了45ms,还在可接受范围内。

第三周:联调和上线试运行

模型+系统联调阶段遇到的问题比较多:

踩坑教训:不要一上来就追求高检出率。先把阈值调高跑几天,让工人适应系统,再逐步降低到可接受的误报率。工厂现场最怕的是"狼来了"效应——误报多了工人就不信系统了。

第一个月:调优和参数微调

上线第一个月大方向是对了三件事:

四、实际效果

系统上线稳定运行2个月后,统计了几个关键数据:

检出异物:累计32次真阳性
包括头发丝14次、塑料片8次、焦糊粒6次、小石子4次。这些如果漏过去就是客户投诉或食药监处罚。
误报率:稳定期约5%
每天约200-300个报警包需要人工复核,占日产能的0.2%-0.3%,在可接受范围内。
漏检率:约0.01%
2个月内记录了4次漏检——都是非常小的片状异物。比之前人工灯检的漏检率有明显改善。

另外有几个非预期的效果:

五、遇到的问题和解决办法

除了前面提到的,还有几个值得单独说的问题:

问题一:包装袋规格变化带来的模型退化

工厂有十几种产品规格,包装袋大小、颜色、材质都不一样。模型在一种规格上训练得好,换到另一种就容易误报。试过统一训练集混着训,效果也有起伏。

解决方式:每个产品规格做一个独立的模型文件,换产时手动切换模型。虽然笨,但在当前的条件下反而是方法。后续考虑做一个自动模型选择模块——根据当前产品条码自动加载对应模型。

问题二:春季回南天导致的镜头起雾

广东3-4月回南天,车间湿度很高,相机镜头镜片起雾,图像模糊了整整两天才发现。后来给检测暗箱加了密封圈和除湿包,并在软件里加了图像质量检测——发现清晰度下降超过阈值就推送告警给维护人员。

问题三:气吹剔除装置偶尔漏吹

检查发现是电磁阀响应时间不稳定。换了一款响应速度更快的电磁阀后解决。这个跟AI系统无关,但提醒了我们:检测准了但剔除环节掉链子也是白搭。

六、个人的思考

这个项目做完以后,我自己的几个感受:

AI视觉落地工厂,光学方案比模型选型重要得多。我们团队做软件出身,刚开始一门心思扑在模型精度上。后来发现同样一个模型,换个打光角度精度能从0.7跳到0.85。光源、角度、偏振、暗箱——这些硬件层面的东西才是工厂场景下的决定性因素。

模型精度不是唯一指标,稳定性才是。在实验室里跑mAP 0.9很容易,但放到产线上连续跑一周不出问题很难。振动、温湿度变化、包装袋批次差异——这些"脏"因素才是工厂场景的常态。让模型在这些条件下保持稳定的误报率和漏检率,比单纯刷精度要难得多。

人工复核环节短期内不会消失。AI在工业质检里目前还做不到100%可靠。设计流程时把人工复核当作系统的一部分而不是系统的补充——这样的架构才务实。与其追求"无人化",不如先做到"减人增效"。

数据是越早积累越好。2个月积累了千万级图像数据,这些数据本身的价值可能比当前的检测模型还大。有了这些数据,后续可以做更复杂的模型、针对特定异物做专项优化。工厂如果还在犹豫"什么时候上AI",答案就是现在开始攒数据。

七、给你的建议

如果你也在考虑类似的AI视觉检测项目,几点实在的建议:

  1. 先做光学测试,再定方案。花一周时间打光试拍,看看不同光源角度下的成像效果。这一步做完基本就知道项目能不能成。
  2. 从一条产线试点,别一上来就铺开。选一条问题产线先跑通,积累经验和数据后再横向复制。
  3. 留出至少3周的调优期。不要指望上线第一天就好用。误报率从50%降到5%需要至少两三周的持续调优。
  4. 让产线工人参与方案设计。他们最清楚"什么东西经常出现"、"什么时间容易出问题"。这些一线知识对模型训练和阈值设定很有帮助。
  5. 做好设备环境防护。工业相机在工厂环境里的寿命比想象中短——灰尘、高温、振动都会加速老化。选IP65以上的防护等级,定期做镜头清洁维护。