如何解决工业缺陷检测小样本问题?
共 4409字,需浏览 9分钟
·
2024-06-25 10:17
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达 ![]()
导 读
当前基于有监督的缺陷检测算法,在数据量充足的场景下已经逐步成功落地,但工业场景具有一定的离散性,大部分应用场景均为小样本检测场景,小样本问题的解决有助于将AI技术应用于千千万万工厂。本文简单总结介绍了两种从算法路径解决小样本问题的方法。
开源工业检测数据集汇总:10个开源工业检测数据集汇总
在工业生产制造中,由于生产过程是一个多因素耦合的复杂过程,生产过程中的任何异常都会导致产品缺陷产生,及时识别异常产品的缺陷模式是提高生产质量和生产效率的有效途径,所以缺陷检测具有十分重要的研究意义。
早期的产品缺陷模式识别主要是通过机器学习方法进行的,如支持向量机、反向传播网络等。这些方法与用肉眼直接对产品缺陷进行识别相比,大大降低了工作量。但是这些早期方法存在以下不足:识别准确率低且需要大量的标签数据对模型进行训练。近年来随着深度学习的发展,大量基于卷积神经网络的算法在视觉任务中大放异彩。由于卷积神经网络具有非常强大的特征提取能力,卷积神经网络在缺陷检测任务中得到了广泛的应用。
与传统的机器学习方法相比,基于卷积神经网络的深度学习方法在缺陷识别领域具有更高的识别准确率和工作效率。但是这种方法和机器学习方法具有同样的缺点,首先是模型训练需要大量的标签数据,而具有缺陷模式标签的图像是不容易获取的,因为获取带有产品缺陷模式标签的图像需要人工监督,即需要大量有经验的专业人员进行人工标注,这是非常昂贵且耗时的。
此外在某些高度自动化的生产场景中,产品的良率特别高,收集缺陷样本非常耗时,而当前的用于缺陷检测的深度学习方法大多是基于大量缺陷样本建立模型,缺陷样本的缺乏导致模型难以上线。针对某些行业比如汽车行业的多型号小批量生产场景(每种型号产品只生产几天),在完成缺陷样本收集前某种型号产品已经不再生产了,这种场景下大量的缺陷样本收集是不可能的。此外,由于缺陷是由生产过程中的非受控因素产生的,缺陷的形态是多种多样的,各种形态的样本很难收集完整,这也限制了深度学习在工业检测领域的应用。
01 小样本检测算法
为了拓展深度学习在工业检测领域的应用范围及提升易用性,小样本检测算法的研究成为必然。
解决工业检测小样本问题有两种路径,第一种是工程路径,第二种是算法路径。其中工程路径常见有两种方法,第一种是基于真实产品手动制造缺陷,第二种是基于真实图像手动仿真缺陷。
这两种方法的优势在于操作简单,产生的缺陷也与真实缺陷比较接近,但劣势也比较明显。基于真实产品手动制造缺陷会对产品造成不可逆的破坏,对于高价值产品破坏成本较高,而且,因为缺陷均由非受控因素产生,手动制造的缺陷不一定与实际缺陷情况完成吻合,会存在一些差异。而基于图像手动仿真缺陷则存在对操作人员要求高,产生速度慢的问题。
因此,使用工程路径解决小样本问题可以在一些比较紧急的情况下使用,比如项目初期需要紧急上线时。
02 算法路径基本思路
从算法路径解决小样本问题,基本的思路有两种,第一种是增加样本,第二种是减少算法对样本的依赖。
1、增加样本
基于第一种思路的算法研究方向有数据增广和缺陷生成,其中数据增广在深度网络训练时为了防止过拟合已成为一个标准手段,站在工业检测的视角上看,数据增广是一种性价比比较高的扩增样本的手段,但因为目前数据增广的方法大多是基于一些传统图像处理方法,所以能仿真缺陷的位置和一些简单纹理变化,但无法仿真缺陷的形状和复杂纹理,所以数据增广一般作为一个基础手段,可以解决一部分小样本问题,对于一些简单场景是有帮助的。而要解决更复杂场景的样本生成问题,需要用缺陷生成算法。
我们将缺陷生成算法的研究分为三个阶段:第一阶段是单一产品单一型号缺陷生成;第二阶段是单一产品多型号缺陷生成;第三阶段是实现跨产品缺陷的生成。
当前缺陷生成算法大致可以分为两种:一种是自动生成算法,整个生成过程完全不需要人工干预,第二种是半自动生成算法,需要一些简单的人工交互。
自动生成算法的典型算法有DCGAN[1] 、WGAN[2] ,输入一张缺陷图像可以直接生成多张真实的缺陷图像。半自动生成算法的典型算法有CGAN[3] 、CVAE[4] 、Pix2Pix[5] ,需要人工交互给定缺陷生成的类别或形状,然后根据给定信息生成指定类型缺陷。但当前无论是自动生成算法还是半自动生成算法,对训练样本的需求量虽然比监督算法少,但还是有一定要求,而且目前还没有一种能在所有数据上通用的解决方案,当前仍需要针对不同的场景制定不同算法版本。通用的缺陷生成算法会这个研究方向下一步的重点。
2、减少算法对样本的依赖
算法路径解决小样本问题的第二个思路是减少算法对样本的依赖,基于这个思路衍生出两条算法路线:
-
第一条路线是完全不需要缺陷样本的非监督学习算法,基于非监督算法训练模型时仅需要OK图像参与训练即可。
-
第二条路线仍基于有监督算法,对缺陷样本的需求量大大降低。
非监督算法实现的思路大体上分为两种:
-
一种是基于生成模型,基本思路是训练一个只能生成OK图像的生成网络,推理时针对输入的NG图像,找到一个与NG图像最接近的OK图像,然后求两张图的差异,根据差异大小判断是否为NG,典型算法有AE,VAE[6] ,Ano-GAN[7] 等。
-
另一种思路是基于特征表示,基本思路是找个一个较好的特征表示,将OK图和NG图分别映射到高维特征空间,OK图对应特征点的类内距离很小,推理时一张图对应特征点与OK图特征簇的中心距离很远就可以判定为NG,典型算法有SVDD[8] 、OCSVM、DeepSVDD[9] 等。
基于有监督算法减少样本依赖的思路分为两种:
-
一种是对输入数据进行归一化,降低不同缺陷样本之间的差异,归一化算法基于传统图像处理算法实现,需要针对不同场景做不同的算法设计,很难有通用性,因此仅作为一些临时处理手段。
-
另一种思路是基于迁移学习,典型的算法研发方向是域适应(Domain Adaption,DA)和域泛化(Domain Generation,DG)。
DA处理的问题要求可以获取一部分目标域的图像,且不能实现跨类别的迁移,因此适合用于处理跨产品型号的问题。DG在DA的基础上,放宽了对目标域数据的要求,可以不需要目标域数据,且可以实现跨类别迁移,因此可以实现跨产品、跨型号、跨缺陷类别的迁移。
DA算法当前研究的基本思路有三种,一是基于差异度量,核心思路是找一个差异度量函数,让源域与目标域样本的特征在这个度量函数下最小,代表算法为MMD[10] ;二是基于对抗,核心思路是通过构造对抗网络,训练一个分类器让判别器无法区分数据是来自源域还是目标域,这样就实现了源域和目标域的融合,代表算法为Dom Confusion[11] ;三是基于重构,核心思路是将构造源域和目标域的通用特征,仅利用通用特征去执行相应的任务,代表算法为Domain Separation Networks[12] 。
DG算法当前的研究思路也分为三种,第一种是推理时选取一个分布最近的源域的模型直接使用,第二种是通过拆解域相关与域无关的组件并进行组合来实现对目标域数据的处理,第三种是训练得到域不变的特征[13] 。
03 总结
当前基于有监督的缺陷检测算法,在数据量充足的场景下已经逐步成功落地,但工业场景具有一定的离散性,大部分应用场景均为小样本检测场景,小样本问题的解决有助于将AI技术应用于千千万万工厂。
虽然当前针对小样本问题有一些初步的解决思路,但该问题的彻底解决需要更深入的研究及更大的投入。阿丘科技将AI For Every Factory作为使命,会坚定不移地持续研究小样本问题,也希望可以和有志于研究工业AI检测问题的工业人一起交流进步,推动小样本问题的彻底解决。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~