Advertisement

【Anomaly Detection论文阅读记录】CutPaste: Self-Supervised Learning for Anomaly Detection ...(CVPR-2021)-理论

阅读量:

CutPaste****模型(CVPR-2021

**.**前景知识

1.One-class问题:所谓的一类检测问题就是异常检测,啥意思呢,就是只有好品,一个类别。而常规的缺陷检测都是二分类或者多分类的,训练集中至少有两个类别。此后不再赘述这个一分类检测问题概念,一类缺陷检测问题是图像异常检测的一个特例。

2.pretext tasks:“前置任务”或“代理任务”。pretext task 通常是指这样一类任务:该任务不是目标任务,但是通过执行该任务可以有助于模型更好的执行目标任务。其本质可以是一种迁移学习:让网络先在其他任务(pretext task)上训练,使模型学到一定的语义知识,再用模型执行目标任务)对于自监督表示学习至关重要,其本质是迁移学习。

3.自监督学习(self-supervised learning):不需要人工标注的类别标签信息,直接利用数据本身作为监督信息,学习样本数据的特征表达

**.**异常检测问题

1.很难获得大量的异常数据(无论是标记的还是未标记的)

2.正常和异常数据之间的差异通常是细粒度的(缺陷在高分辨率图像中可能很小而微)

三、论文的核心贡献

自监督学习中pretext task的思路分为two-stage:

1.基于自监督学习和 CutPaste 数据增强的图像表示学习,对正样本采用CutPaste生成图像,训练一个二分类CNN,识别正常样本,及添加CutPaste后的图像。

2.在异常检测及定位阶段,CNN用来提取特征,高斯概率密度估计(GDE)使用CNN提取的特征计算异常分数,图像级别的异常检测可以使用GradCAM大致定位异常区域;patch级别的异常定位,对原图分割成若干patch,分别送到CNN--GDE计算异常分数,得出更细粒度异常热力图。

3.论文本质:训练模型识别这些局部的不规则性,期望它能够在测试时推广到未见过的真实缺陷

**.CutPaste****方法的工作原理**

1.CutPaste 伪造图像:

  • 从正常训练图像中裁剪出一个小的矩形区域,裁剪区域的大小和长宽比是可变的。
  • (可选)对裁剪出的补丁进行旋转或像素值抖动。
  • 将补丁随机粘贴回图像的一个随机位置。

2.学习表示的任务

预测被切割区域的内容:通过切割和粘贴的操作,模型的目标变为预测被切割的区域会是什么样子。通过这种方式,模型在训练过程中不仅学会了如何识别异常区域,还学会了图像中正常区域的结构。例如,训练模型去辨别哪些地方是"切割后粘贴"的内容,哪些是没有改变的区域。这帮助模型捕捉到图像中的空间结构和纹理信息,从而能够有效识别和定位异常。

3.局部异常得分(Localization Score)

异常得分的计算与传播:在测试时,模型通过一个滑动窗口(例如步幅为4的窗口)对图像进行扫描,计算每个窗口区域的异常得分。然后,通过高斯平滑等方法,模型可以将这些局部异常得分传播到整个图像,最终得到缺陷的定位结果。

4.ProjectionNet模型结构:

├── ResNet18 (feature extractor):

│ ├── Conv1: 7x7, 64, stride=2

│ ├── Layer1: [64, 64, 64] (3 blocks)

│ ├── Layer2: [128, 128, 128] (4 blocks)

│ ├── Layer3: [256, 256, 256] (6 blocks)

│ └── Layer4: [512, 512, 512] (3 blocks)

├── MLP Head:

│ ├── Linear(512, 512) ─┐

│ ├── BatchNorm1d(512) ─┘

│ ├── ReLU(inplace=True)

│ ├── Linear(512, 512) ─┐

│ ├── BatchNorm1d(512) ─┘

│ ├── ReLU(inplace=True)

│ ├── Linear(512, 512) ─┐

│ ├── BatchNorm1d(512) ─┘

│ ├── ReLU(inplace=True)

│ ├── Linear(512, 512) ─┐

│ ├── BatchNorm1d(512) ─┘

│ ├── ReLU(inplace=True)

│ ├── Linear(512, 512) ─┐

│ ├── BatchNorm1d(512) ─┘

│ ├── ReLU(inplace=True)

│ ├── Linear(512, 512) ─┐

│ ├── BatchNorm1d(512) ─┘

│ ├── ReLU(inplace=True)

│ ├── Linear(512, 128) ─┐

│ └── BatchNorm1d(128) ─┘

└── Final Linear Layer:

└── Linear(128, num_classes)

模型流程

  1. 输入数据 :输入图像经过 ResNet18 网络提取特征,得到一个 512 维的特征向量。
  2. MLP****头部 :特征向量接着通过 MLP 网络进行处理,将维度逐渐降低,最终输出一个128维的特征向量。
  3. 分类层 :128 维的特征通过一个线性层(Linear(128, num_classes))映射到最终的类别预测,得到 logits(未激活的类别分数)。

全部评论 (0)

还没有任何评论哟~