那时候觉得,传统机器视觉加几个算子,搞定尺寸、缺陷,不香吗?后来脸被打得啪啪响。❗
记得第一次拿卷积神经网络跑缺陷检测,效果惊到我:那些个划痕、凹坑,以前调阈值调到吐,它竟然全给揪出来了。但兴奋没持续三天——模型一上线,误报多得像圣诞树上的灯,产线差点被逼停。这就是现实。
为什么传统视觉那套突然不灵了?
不是不灵,是应用场景变得越来越刁钻。以前检测手机外壳,平整、反光,二值化一下就能分割。现在呢?汽车零部件上的细微裂纹,陶瓷基板的隐性崩边,还有纺织品上的随机纹理——规则算法根本写不过来。💡
深度学习厉害在哪?它不是靠规则,而是让数据自己说话。可这恰恰埋下了最大的坑。

深度学习落地,数据才是大爹
这句话,业内人耳朵都听出茧子了,对吧?但真正理解它,我花了三年。
起初我迷信模型结构,ResNet、DenseNet换了个遍,结果没啥差别。直到一次,产线上新来了一批料,外观几乎没变,但工艺参数微调了——模型直接瞎了。查了三天才发现:训练集里根本没见过那种特定的水渍纹路。那感觉,就像你教小孩认苹果,只给了红富士,突然来个黄元帅,他就懵了。
问:我们厂现在数据很少,就几十张缺陷图,能搞深度学习吗?
答:能,但别指望直接训练。可以试试迁移学习,拿ImageNet预训练模型,固定前面几层,只微调后面。另一个招儿:数据增强。翻转、加噪、模拟光照变化,硬生生把几十张变成几千张。不过要注意,增强得符合物理规律——你给金属表面加个椒盐噪声,那跟灰尘不是一回事,反而误导模型。❗
还有,造假数据也不是万能的。我吃过亏:用GAN生成了一些缺陷,看着挺像,但真实产线一跑,检出率反而掉了。后来发现,GAN生成的纹理在高频细节上总有点“假”,模型捕捉到了那种微妙差异,导致误判。这就是现实世界的细腻啊。

模型部署的那些破事儿

训出来一个好模型,只是万里长征第一步。真正的噩梦,是把它塞进产线的那台破工控机里。
要求呢:毫秒级响应,模型不能大于100兆,还得稳定跑上几个月不崩。你试过把PyTorch模型转到TensorRT吗?各种算子不支持,自定义层重写成C++,debug到凌晨三点……第二天产线一启动,因为一个rounding error,检测结果偏差了0.5个像素,客户直接一个电话追过来。
后来学乖了:做工业部署,模型结构越简洁越好。MobileNet、ShuffleNet虽然精度低一丢丢,但推理快啊。而且别盲目相信量化——int8是好,可某些层量化后精度雪崩,你得一层层地测试。
问:深度学习检测速度跟得上产线吗?我那条线一秒要过20个零件。
答:完全有可能。我们现在用的模型,轻量级UNet,在Jetson Xavier上跑,每帧推理12毫秒。加上图像采集和IO通信,一个节拍30毫秒内搞定。前提是,你得舍得裁剪通道,还有——提前做好图像的ROI定位,别拿全图送进网络。工业上,很多背景是固定的,先用传统算法锁定区域,深度学习只处理重点区块,速度就上去了。😄
我真的需要Transformer吗?

这两年,Vision Transformer炒得火热。一问周围,好几个厂开始尝试。但说实话,在工业缺陷检测里,Transformer性价比不高。
它需要更多数据——你想想,工业场景的数据量,大多几百张算多的。Transformer那多头注意力,没海量数据根本喂不饱,容易过拟合。而且它对硬件更挑剔,边缘设备上跑起来功耗感人。
不过,有一种场景我喜欢用注意力机制:当缺陷很小,且上下文很重要时。比如PCB板的微短路,得结合周围的走线走向判断,这时候全局感受野就有优势。所以,别盲从,看你的缺陷长什么样。
我曾固执地堆了个Swin Transformer,结果产线误报率反而升了。后来老老实实换回ResNet-34,加了几个注意力模块,效果拔群。不要迷信大模型,真的。有时候,一个简单的sobel算子预处理,比多复杂的网络都有用。
问:那怎么判断一个项目能不能用深度学习?
答:问自己三个问题:一,缺陷定义够清晰吗?如果人都很难界定“OK”和“NG”,那机器更学不会。二,能采到足够且有代表性的图吗?如果三个月才出一个不良品,那深度学习不是首选。三,产线环境稳定吗?如果光照、震动变来变去,你得先上硬件稳定措施。这三条通不过,趁早换方案,不然就是烧钱烧时间。
说到底,深度学习只是工具。在工业领域,工艺理解和工程化能力,比算法重要得多。我曾帮一个轴承厂调模型,废品率降了0.3%,他们觉得太神了;后来发现,其实我把检测阈值放宽了点,而前道的磨削工序才是根本原因——深度学习只是照出了真相。✅
到现在,我再也不夸口说“AI赋能”之类的话。老老实实蹲在产线旁,看那些油污、反光、飞屑……然后回来改数据、改模型、调后处理。这就是深度学习的工业落地——朴素,甚至枯燥,但每一次误报下降,都让人踏实。