这里写自定义目录标题

工业质检和图片异常定位方法概述深度学习的缺点无监督异常检测**RSDDs铁轨表面缺陷**数据上面实验的效果

工业质检和图片异常定位方法概述

随着深度学习的发展,对图片进行异常检测的方法也变得越来越多越来越强,比如卷积神经网络CNN,标注好异常的图片,收集好样本,经过有监督的训练可以获得很好的效果,在数据的加持下,深度学习有一统天下的趋势;还有就是降噪自编码器,可以直接给他正常样本,训练一个自编码器恢复原图片,对比图片发生变化的位置就可以定位缺陷的位置,GAN模型也同理,通过重建正样本,找到缺陷位置。

深度学习的缺点

1.比如使用深度学习的目标检测算法进行有监督的训练,可以获得不错的结果,但是这个结果是建立在拥有足够样本的前提下,当数据样本不够,或者存在较大的长尾分布的时候,效果常常就不理想。但是在工业质检或者叫做异常检测的情况下面,正样本恰恰存在收集困难,缺陷位置和类型非常的复杂和多样,这样也就给深度学习带来比较大的挑战。正如我前面参与面板厂商某东方的屏幕质检的项目中,深度学习定位的效果非常不理想,就是由于在屏幕上面存在非常多样样的缺陷,并且屏幕还经常出现这次出品A屏幕,后面又出现B屏幕,导致收集的样本无法适应后续的情况。而且深度学习的目标检测部署成本也是一个不小的成本。特别是工厂规模的加持下,成本也是下不来。 2.自编码器和GAN这些生成模型,可以部分克服样本不够的情况,因为在异常检测的情况下面,最不缺的就是正常的图片,但是在面对场景变换的情况下面,利用A产品训练的模型,无法适应B产品的情况,也就是因为产品之间的图片分布不一致,导致模型需要更新频繁

小结:结合起来就是深度学习的推理成本和训练成本都很高,在工厂化的规模下,成本居高不下,还有就是收集样本的成本比较高,正样本手机难度大,经常出现新的异常情况,这在有监督的情况下效果比较差,因为有监督拟合的是他的训练数据,在完全不一样的异常情况出现时,泛化能力比较差。这些正是我参与某面板厂商的屏幕质检的项目中得到的经验。

无监督异常检测

下面介绍一种方法,虽然存在一定的局限性,但是由于它不需要深度学习那种依赖GPU计算的模型,并且不需要训练,也就不存在收集样本的问题,完美cover不同情况下面的异常检测。不多说,直接进入正题。最终的实现代码和图片https://github.com/tangdong1994/PHOT:我放在了最后面,有兴趣的大家可以帮忙点个star。

原理就是:首先对图片进行傅立叶变换,得到他的频谱图。 原图的红色部分是我圈出来的存在缺陷的位置,由于网上找的图,所以还有水印,也被当作的缺陷。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEp0erHA-1677236152587)(null)] 然后对频谱图进行幅值归一化,然后对归一化后的频谱图进行傅立叶逆变换,得到如下所示的示意图,可以看到两个椭圆的位置已经比较突出了,好了后面的关键步骤来了。

虽然上面的图片已经把两个椭圆的缺陷位置突出来了,但是还有不少干扰的部分,别急,我们后面的步骤才是关键。

然后对上面的图片进行高斯模糊处理,处理噪声,效果图如下右图:这一步很关键,这一步高斯噪声我用的是kernel size为7,标准差为3的核函数;这里的核函数可以根据自己的需求进行修改实现,大小和标准差都可以变化,经过这一步处理之后,最终结果将少很多的噪声。 接下来就是对模糊处理的图片进行归一化(也就是减去自己的均值再处以他自己的标准差),然后对像素每个位置的像素和马氏距离4比较得到一个二分图。这里要说明一下,由于对图片进行了归一化,所以可以理解这个变成了量纲一致的马氏距离,根据论文里的实现,选择4的效果最好,但是可以根据自己的情况实验。结果如下图: 最后对这个二分图使用opencv进行轮廓查找就行。最终得到下面: 。

RSDDs铁轨表面缺陷数据上面实验的效果

图一:

图二:

上面无监督的实现虽然存在一定的限制,但是在一些工业质检和周期性比较明显的图片上面,找缺陷还是非常准的。

实现代码:https://github.com/tangdong1994/PHOT

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: