1.介绍
构建了用于缺陷检测的高性能模型,该模型可以检测没有异常数据的图像的未知异常模式。设计了一种增强策略——“CutPaste”以通过正常样本创建异常数据。然后,我们训练模型以识别这些特征,希望它可以在测试时推广到看不见的真实缺陷。
2.具体实现
(1)异常检测:
第一阶段:
我们从正常数据中学习深度表示,通过CutPaste提出的数据增强策略可剪切图像Patch并粘贴在图像的随机位置创建异常数据进行训练。
CutPaste增强方式:
我们将所提出的自监督表示学习的训练目标函数定义如下:
X 是正常数据集,CP(·) 是一个 CutPaste 增强,g 是一个由深度网络参数化的二元分类器。CE(·,·)是指交叉熵损失。
第二阶段:
使用学习到的图像表示构建分类器,通过分类器计算异常分数,这里我们使用了参数高斯密度估计器(GDE),其对数密度计算如下:
在测试阶段,通过该异常分数判断是否为异常样本。
(2)缺陷定位:
测试时,若图片判断为异常,我们将对缺陷进行定位。
我们以给定的步幅对原图分割成若干个patch。对于每个patch,我们评估其异常得分,并使用高斯平滑将得分传播到每个像素 [32],得到Patch热图。
3.结论:
展示了来自训练模型的表征的 t-SNE 图:
发现:CutPaste 几乎与真实缺陷示例(异常)不重叠,但它却很好地拉远了正常样本和异常样本在特征空间上的距离。
它表明 (1) CutPaste 仍然不是对真实缺陷的完美模拟,(2) 但是从中学习以发现不规则性可以很好地概括不可见的异常。
1.将自己制作的缺陷样本进行数据增强扩大数据集。
数据增强方式(每张图片增强6次,方式至少为以下的一种):
(1)裁剪(需改变bbox)
(2)平移(需改变bbox)
(3)旋转角度(需要改变bbox)
(4)镜像(需要改变bbox)
(5)cutout
序号为678-707的30张图片数据增强后得到180张图片加入到训练集
序号为707-718的12张图片数据增强后得到72张图片加入到验证集
序号为719-724的6张图片作为测试
2.将该数据集放入PP-YOLOE+模型进行训练
Epoch=20时:
原标注:
实际测试结果:
Epoch=40时:
实际测试结果:
在训练过的板子上:
在没有训练过的板子上:
结果分析:在没有训练过的板子上,有一个短路和立碑没有检测出来,
尝试将测试集的图片进行翻转,看能否检测出新的缺陷区域。
结果分析:我们发现,测试效果的确跟图片翻转有关。但还是有缺陷没有检测出来的状况。
但可以考虑每次检测某张样本图片时,将其进行翻转,取其检测结果的并集作为最终结果。
Epoch=60时:
改进方法:
制造的缺陷数据集拉尖不好判断,考虑去掉该缺陷;
清理pcb板,在标注时发现板子上没有元器件的地方有多余小焊珠,以及发黑的助焊剂,可能会影响检测。
2.增加epoch
本项目为百度论文复现赛《Self-Supervised Predictive Convolutional Attentive Block for Anomaly Detection》中的代码,使用了SSPCAB结合CutPaste(CutPaste论文没有官方开源代码)的方法。效果如下:
我们对其进行复现:
1.用MVTec AD-train数据集中的209张bottle图片(正常样本)进行训练
2.用MVTec AD-test数据集中的83张bottle图片(有正常有缺陷)进行验证
3.进行模型预测,结果正确
我们创建正常数据集,让机器自己学习,进行无监督训练(目前工业中,大部分为正常样本)
因此将我们PCBA数据集中的图片进行裁剪(只将正常的部分裁剪出来),得到31张正常样本,再进行数据增强,最终得到含有248张正常样本的训练集。
放入该模型进行训练
Epoch=15时:
(1)train:
结果:Loss很大
(2)val:
结果:Kl散度很大(val集需要将按缺陷类型分类放置,但实际一张图中可能有多种缺陷,因此可能导致kl过大)
(3)test:
结论:容易被判断为异常样本效果不佳
解决方案:
再次训练,设置Epoch=30时:
(1)train:
结果:loss依旧很大
(2)val
结果:Kl散度有所下降,但依旧很大,而且AUC也减小了
(3)test
结果:异常样本容易被误判为正常样本
原因分析:
3.学习到的都是裁剪过的图片,而测试的是整张图片,导致效果不佳?
4.正常样本太少,导致模型学习不充分? --增加数据增强的次数
1.无监督方法可能不太能行得通,但还是打算再用Padim试一下。
该论文需要在相同的成像环境中捕获两个输入图像,并保持成像条件尽可能相同。对比两个PCB板(相同板子,一个有缺陷,一个无缺陷)的差异。现在我们有了样板(有缺失元器件),并制造了它们的缺陷,也许可行。
难点:光照问题——正常样板是之前拍的,可能光照、成像条件不能完全满足