异常检测论文(一):CutPaste

CutPaste: Self-Supervised Learning for Anomaly Detection and Localization

(基于自监督学习的图像异常检测的定位方法)

1 摘要

       一个高性能的缺陷检测模型,能够在没有异常数据的情况下检测出未知的异常缺陷(即没有异常数据标签也可以学习到检测异常的能力)。该篇论文提出了一个两阶段框架:首先学习到自监督的深度表示,然后在学习到的表示上构建一个单分类器one-class classifier.

2 具体框架

       深度表示的学习:通过CutPaste!!CutPaste流程:对于一个输入样本,

  1. 先随机cut一个小的任意大小的矩形区域patch
  2. 选择性的对该patch进行旋转或改变像素值操作
  3. 将改变后的patch paste到原样本的任意一个地方

经过CutPaste之后可以得到一个假定的异常样本,此假定的异常样本和真实的异常样本相似,相当于可以构建异常样本的数据集进行学习训练。CutePaste的具体流程可见下图2.1

10异常检测论文(一):CutPaste_第1张图片

图2.1 同一个CNN判别网络,可将CutPaste之后的图像判别为异常

创建了完整的有正常有异常的样本之后,再利用神经网络进行学习,目标函数为:

其中CP表示CutPaste, g表示经过神经网络学习之后的判别分类器,CE表示交叉熵损失,即LCP可以表示该分类器鉴别正常与异常的能力,LCP越小,能力越强。

以上流程是完整的训练过程,通过CutPaste创建异常数据进行训练,但是注意CutPaste虽然与一些缺陷很类似,但是并不能完全代替所有缺陷,只是在训练过程中,将经过CutPaste之后的样本放入神经网络中学习到的embeding与异常样本的embeding有同样的异常性。即第一阶段只是学习正常和异常的深度表示,即embeding!

       第二阶段,解决如何正确判别embeding是正常还是异常:DGEGaussian Distribution Estimination,利用GDE计算异常分,某个值以下的判定为异常。此阶段指针对测试阶段。

3 缺陷定位

       若图片判断为异常,则将其cut成多个patch,然后对patch计算异常得分,异常的patch中则有缺陷的存在。

参考文章:https://blog.csdn.net/qq_34809969/article/details/119183149

参考代码(非官方):https://github.com/Runinho/pytorch-cutpaste

你可能感兴趣的:(python,目标检测,深度学习,人工智能,计算机视觉)