2022/10/24-10/29周报

周报内容:

  1. CVPR2021论文《CutPaste:Self-Supervised Learning for Anomaly Detection and Localization
  2. 使用PP-YOLOE+M模型进行PCBA板缺陷检测
  3. CutPaste方法复现论文《Self-Supervised Predictive Convolutional Attentive Block for Anomaly Detection》
  4. 下周工作计划

学习产出:

一、论文笔记

CutPaste: Self-Supervised Learning for Anomaly Detection and Localization

1.介绍

构建了用于缺陷检测的高性能模型,该模型可以检测没有异常数据的图像的未知异常模式。设计了一种增强策略——“CutPaste”以通过正常样本创建异常数据。然后,我们训练模型以识别这些特征,希望它可以在测试时推广到看不见的真实缺陷。

2.具体实现

(1)异常检测:

第一阶段

我们从正常数据中学习深度表示,通过CutPaste提出的数据增强策略可剪切图像Patch并粘贴在图像的随机位置创建异常数据进行训练

2022/10/24-10/29周报_第1张图片

CutPaste增强方式:

  1. 从普通训练图像中切出一个大小和纵横比可变的小矩形区域。
  2. 可选地,我们在补丁中旋转或改变像素值。
  3. 将补丁粘贴回随机位置的图像

我们将所提出的自监督表示学习的训练目标函数定义如下:

 X 是正常数据集,CP(·) 是一个 CutPaste 增强,g 是一个由深度网络参数化的二元分类器。CE(·,·)是指交叉熵损失。

第二阶段:

使用学习图像表示构建分类器通过分类器计算异常分数,这里我们使用了参数高斯密度估计器(GDE),其对数密度计算如下

在测试阶段,通过该异常分数判断是否为异常样本。

(2)缺陷定位:

测试时若图片判断为异常,我们将对缺陷进行定位。

我们以给定的步幅对原图分割成若干patch。对于每个patch,我们评估其异常得分,并使用高斯平滑将得分传播到每个像素 [32]得到Patch热图。

2022/10/24-10/29周报_第2张图片

3.结论:

展示了来自训练模型的表征的 t-SNE 图

2022/10/24-10/29周报_第3张图片

发现:CutPaste 几乎与真实缺陷示例(异常)不重叠,但它却很好地拉远了正常样本和异常样本在特征空间上的距离。 

它表明 (1) CutPaste 仍然不是对真实缺陷的完美模拟,(2) 但是从中学习以发现不规则性可以很好地概括不可见的异常。

二、基于PP-YOLOE+的PCBA缺陷检测

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时:

原标注:

2022/10/24-10/29周报_第4张图片

实际测试结果:

2022/10/24-10/29周报_第5张图片

Epoch=40时:

实际测试结果:

在训练过的板子上:

2022/10/24-10/29周报_第6张图片

在没有训练过的板子上:

2022/10/24-10/29周报_第7张图片

结果分析:在没有训练过的板子上,有一个短路和立碑没有检测出来,

     尝试将测试集的图片进行翻转,看能否检测出新的缺陷区域。

2022/10/24-10/29周报_第8张图片

2022/10/24-10/29周报_第9张图片

2022/10/24-10/29周报_第10张图片

结果分析:我们发现,测试效果的确跟图片翻转有关。但还是有缺陷没有检测出来的状况。

但可以考虑每次检测某张样本图片时,将其进行翻转,取其检测结果的并集作为最终结果

Epoch=60时:

改进方法:

  1. 改进数据集

制造的缺陷数据集拉尖不好判断,考虑去掉该缺陷;

清理pcb板,在标注时发现板子上没有元器件的地方有多余小焊珠,以及发黑的助焊剂,可能会影响检测。

    2.增加epoch

三、结合CutPaste方法复现论文《SSPCAB》

本项目为百度论文复现赛《Self-Supervised Predictive Convolutional Attentive Block for Anomaly Detection》中的代码使用了SSPCAB结合CutPaste(CutPaste论文没有官方开源代码)的方法效果如下:

2022/10/24-10/29周报_第11张图片

我们对其进行复现:

1.用MVTec AD-train数据集中的209张bottle图片(正常样本)进行训练

2.MVTec AD-test数据集中的83张bottle图片(有正常有缺陷)进行验证

2022/10/24-10/29周报_第12张图片

3.进行模型预测,结果正确

 

 思路

我们创建正常数据集,让机器自己学习,进行无监督训练(目前工业中,大部分为正常样本)

因此将我们PCBA数据集中的图片进行裁剪(只将正常的部分裁剪出来),得到31张正常样本,再进行数据增强,最终得到含有248张正常样本的训练集。

放入该模型进行训练

Epoch=15时:

(1)train:

 2022/10/24-10/29周报_第13张图片

结果:Loss很大

(2)val:

2022/10/24-10/29周报_第14张图片

结果:Kl散度很大(val集需要将按缺陷类型分类放置,但实际一张图中可能有多种缺陷,因此可能导致kl过大)

(3)test:

2022/10/24-10/29周报_第15张图片

结论:容易被判断为异常样本效果不佳

解决方案:

  1. 增加epoch
  2. 整理好val集,试图减低KL散度

再次训练,设置Epoch=30时:

(1)train:

2022/10/24-10/29周报_第16张图片

结果:loss依旧很大

(2)val

 结果:Kl散度有所下降,但依旧很大,而且AUC也减小了

(3)test

2022/10/24-10/29周报_第17张图片

结果:异常样本容易被误判为正常样本

原因分析:

  1. CutPaste方法可能不适合目标较小的工业检测?
  2. 所谓正常样本可能也不太严格,例如,像这种没有元器件的,可能模型以为它是开路?

2022/10/24-10/29周报_第18张图片

   3.学习到的都是裁剪过的图片,而测试的是整张图片,导致效果不佳?

   4.正常样本太少,导致模型学习不充分?  --增加数据增强的次数

 四、下周工作计划

1.无监督方法可能不太能行得通,但还是打算再用Padim试一下。

2.或者,之前读到过一篇ChangeChip(18条消息) 2022/9/26-9/30 周报_嘿!947的博客-CSDN博客),

该论文需要在相同的成像环境中捕获两个输入图像,并保持成像条件尽可能相同对比两个PCB板(相同板子,一个有缺陷,一个无缺陷)的差异。现在我们有了样板(有缺失元器件),并制造了它们的缺陷,也许可行。

难点:光照问题——正常样板是之前拍的,可能光照、成像条件不能完全满足

你可能感兴趣的:(周报,人工智能,深度学习,计算机视觉)