【图像异常检测】SimpleNet: A Simple Network for Image Anomaly Detection and Localization 论文阅读

中文标题:SimpleNet:一个简单的图像异常检测和定位网络
文章信息:
在这里插入图片描述
发表于:CVPR 2023
原文链接:https://arxiv.org/abs/2303.15140
源代码:https://github.com/DonaldRR/SimpleNet

Abstract

我们提出了一种简单且易于应用的网络(称为SimpleNet)来检测和定位异常。SimpleNet由四个组件组成:(1)预训练的特征提取器,用于生成局部特征,(2)浅层特征适配器,用于将局部特征转移到目标领域,(3)简单的异常特征生成器,通过向正常特征添加高斯噪声来模拟异常特征,以及(4)二元异常鉴别器,用于区分异常特征和正常特征。在推断过程中,异常特征生成器将被丢弃。我们的方法基于三个直觉。首先,将预训练特征转换为目标导向的特征有助于避免域偏差。其次,在特征空间中生成合成异常更加有效,因为缺陷在图像空间中可能没有太多共性。第三,一个简单的鉴别器更加高效和实用。尽管简单,SimpleNet在定量和定性上都优于先前的方法。在MVTec AD基准测试中,SimpleNet实现了99.6%的异常检测AUROC,相比下一个表现最佳的模型,错误率降低了55.5%。此外,SimpleNet比现有方法更快,在3080ti GPU上具有高达77 FPS的帧率。此外,SimpleNet在一类新奇性检测任务的性能上显示出显著改进。代码:https://github.com/DonaldRR/SimpleNet。

1. Introduction

图像异常检测和定位任务旨在识别异常图像并定位异常子区域。检测感兴趣的各种异常的技术在工业检查等领域有着广泛的应用[3, 6]。在工业场景中,异常检测和定位尤其困难,因为异常样本很少,并且异常可能从细微的变化(如细小的划痕)到较大的结构缺陷(如缺失部件)都有所不同。MVTec AD基准测试[3]中的一些示例以及我们提出的方法的结果如图1所示。这种情况使得监督方法无法适用。

在这里插入图片描述

当前的方法以无监督方式解决了这个问题,即在训练过程中仅使用正常样本。基于重构的方法[10, 21, 31]、基于合成的方法[17, 30]和基于嵌入的方法[6, 22, 24]是解决这个问题的三个主要趋势。基于重构的方法,如[21, 31],假设仅用正常数据训练的深度网络不能准确重构异常区域。像素级重构误差被视为异常定位的异常分数。然而,这种假设并不总是成立,有时网络可以"泛化"得如此之好,以至于它也能很好地重构异常输入,导致误检测[10, 19]。基于合成的方法[17, 30]通过在无异常图像上生成合成异常来估计正常和异常之间的决策边界。然而,合成的图像不够真实。来自合成数据的特征可能远离正常特征,使用这样的负样本训练可能导致一个松散边界的正常特征空间,这意味着模糊的缺陷可能被包含在分布特征空间中。

最近,基于嵌入的方法[6, 7, 22, 24]取得了最先进的性能。这些方法使用ImageNet预训练的卷积神经网络(CNN)来提取广义的正常特征。然后,采用统计算法,如多元高斯分布[6]、正规化流[24]和记忆库[22],将正常特征分布嵌入。通过将输入特征与学习到的分布或记忆的特征进行比较来检测异常。然而,工业图像通常与ImageNet具有不同的分布。直接使用这些偏置特征可能会导致不匹配的问题。此外,统计算法通常受到高计算复杂度或高内存消耗的困扰。

为了缓解上述问题,我们提出了一种新颖的异常检测和定位网络,称为SimpleNet。SimpleNet利用了基于合成和基于嵌入的方法,并进行了几项改进。首先,我们建议使用特征适配器生成目标导向的特征,而不是直接使用预训练特征,从而减少域偏差。其次,我们提出在特征空间中向正常特征添加噪声来生成异常特征,而不是直接在图像上合成异常。我们认为,通过适当调整噪声的规模,可以获得一个紧密边界的正常特征空间。第三,我们通过训练一个简单的鉴别器简化了异常检测过程,这比前述基于嵌入的方法采用的复杂统计算法要更加计算高效。具体来说,SimpleNet利用预训练的主干网络进行正常特征提取,然后使用特征适配器将特征转移到目标领域。接着,通过向适配后的正常特征添加高斯噪声来简单地生成异常特征。然后,一个由几层MLP组成的简单鉴别器在这些特征上进行训练以区分异常。

SimpleNet易于训练和应用,性能出众且推断速度快。基于广泛使用的WideResnet50主干网络,提出的SimpleNet在MVTec AD数据集上达到99.6%的AUROC,运行速度达到77帧每秒,超过了先前公布的最佳异常检测方法,在准确性和效率上均有显著提升,详见图2。我们进一步将SimpleNet引入到一类新奇性检测任务中,以展示其普适性。这些优势使SimpleNet能够弥合学术研究和工业应用之间的鸿沟。代码将公开提供。

2. Related Work

异常检测和定位方法可以主要分为三种类型,即,基于重构的方法、基于合成的方法和基于嵌入的方法。

基于重建的方法认为,异常图像区域不应该能够被正确地重建,因为它们不存在于训练样本中。一些方法[10]利用生成模型,如自动编码器和生成对抗网络[11]来编码和重建正常数据。其他方法[13,21,31]将异常检测视为修复问题,其中图像中的补丁被随机掩蔽。然后,神经网络被用来预测删除的信息。集成结构相似性指数(SSIM)[29]损失函数广泛用于训练。异常图被生成为输入图像与其重建图像之间的逐像素差异。然而,如果异常与正常训练数据共享共同的组成模式(例如局部边缘),或者解码器对于解码一些异常编码来说“太强”,则图像中的异常可能会被很好地重建[31]。

基于合成的方法通常在无异常图像上合成异常。DRBRM [30]提出了一种网络,该网络以端到端的方式对合成生成的刚出分布模式进行区分训练。CutPaste [17]提出了一种简单的策略来生成用于异常检测的合成异常,该策略剪切图像补丁并粘贴在大图像的随机位置。CNN被训练来区分图像与正常和增强的数据分布。然而,合成异常的出现与真实的异常并不十分吻合。在实践中,由于缺陷是各种各样的和不可预测的,生成包括所有离群值的异常集是不可能的。而不是合成图像上的异常,与所提出的SimpleNet,负样本在特征空间中合成。

基于嵌入的方法最近取得了最先进的性能。这些方法将正常特征嵌入压缩空间。异常特征在嵌入空间中远离正常聚类。典型的方法[6,7,22,24]利用在ImageNet上预先训练的网络进行特征提取。通过预训练的模型,PaDiM [6]通过多元高斯分布嵌入提取的异常补丁特征。PatchCore [22]使用标称贴片特征的最大代表性存储库。在测试中采用马氏距离或最大特征距离对输入特征进行评分。然而,工业图像通常具有与ImageNet不同的分布。直接使用预先训练的特征可能会导致不匹配问题。此外,计算协方差的倒数[6]或搜索存储体中的最近邻居[22]限制了实时性能,特别是对于边缘设备。

CS-Flow [24],CFLOW-AD [12]和DifferNet [23]提出通过归一化流(NF)[20]将正态特征分布转换为高斯分布。由于标准化流程只能处理全尺寸的特征图,即,向下采样是不允许的,耦合层[9]消耗的内存是普通卷积层的几倍,这些方法都是内存消耗。蒸馏方法[4,7]训练学生网络,以匹配固定的预训练教师网络的输出,只有正常样本。在给出异常查询的情况下,应检测学生和教师输出之间的差异。由于输入图像必须经过教师和学生,因此计算复杂度加倍。

SimpleNet克服了上述问题。SimpleNet使用特征适配器对目标数据集执行迁移学习,以减轻预训练CNN的偏差。SimpleNet建议在特征空间中而不是直接在图像上合成异常。SimpleNet在推理方面遵循单流方式,完全由传统的CNN块构建,便于快速训练,推理和工业应用。

3. Method

本节精心介绍了提出的SimpleNet。如图3所示,SimpleNet包括一个特征提取器、一个特征适配器、一个异常特征生成器和一个鉴别器。异常特征生成器仅在训练过程中使用,因此SimpleNet在推断时遵循单一流程方式。下面将按顺序描述这些模块。
在这里插入图片描述

3.1. Feature Extractor

特征提取器获取局部特征,如[22]中所述。我们重新表述该过程如下。我们将训练集和测试集分别表示为 X t r a i n \mathcal{X}_{train} Xtrain X t e s t \mathcal{X}_{test} Xtest。对于训练集和测试集中的任意图像 x i ∈ R H × W × 3 x_i ∈ \mathbb{R}^{H×W×3} xiRH×W×3,预训练网络 ϕ ϕ ϕ从不同的层次提取特征,通常使用类似ResNet的主干网络完成此任务。由于预训练网络偏向于其所训练的数据集,因此选择目标数据集的层次结构的子集是合理的。形式上,我们定义了包含用于提取特征的层次索引的子集 L L L。层次 l ∈ L l ∈ L lL的特征图被表示为 ϕ l , i ∼ ϕ l ( x i ) ∈ R H l × W l × C l ϕ^{l,i} ∼ ϕ^l(x_i) ∈ \mathbb{R}^{H_l×Wl_×C_l} ϕl,iϕl(xi)RHl×Wl×Cl,其中 H l H_l Hl W l W_l Wl C l C_l Cl分别为特征图的高度、宽度和通道大小。对于位置 ( h , w ) (h,w) hw处的条目 ϕ h , w l , i ∈ R C l ϕ^{l,i}_{h,w} ∈ \mathbb{R}^{C_l} ϕh,wl,iRCl,其尺寸为 p p p的邻域被定义为:
在这里插入图片描述
利用聚合函数 f a g g f_{agg} fagg(这里使用自适应平均池化),在邻域 N p h , w \mathcal{N}^{h,w}_p Nph,w内聚合特征,得到局部特征 z h , w l , i z^{l,i}_{h,w} zh,wl,i,

在这里插入图片描述
为了将来自不同层次的特征 z h , w l , i z^{l,i}_{h,w} zh,wl,i组合起来,所有的特征图都被线性调整到相同的尺寸 ( H 0 , W 0 ) (H_0,W_0) H0W0,即最大特征图的尺寸。简单地按通道级别进行连接,得到特征图 o i ∈ R H 0 × H 0 × C o_i ∈ \mathbb{R}^{H_0×H_0×C} oiRH0×H0×C。这个过程定义为:
在这里插入图片描述
我们将 o h , w i ∈ R C o^i_{h,w} ∈ \mathbb{R}^C oh,wiRC 定义为 o i o_i oi 在位置 ( h , w ) (h,w) (h,w) 处的条目。我们简化上述表达为
在这里插入图片描述
其中 F ϕ F_ϕ Fϕ 是特征提取器。

3.2. Feature Adaptor

由于工业图像通常具有与背景预训练中使用的数据集不同的分布,因此我们采用特征适配器 G θ G_θ Gθ 将训练特征转移到目标领域。特征适配器 G θ G_θ Gθ 将局部特征 o h , w o_{h,w} oh,w 投影到适应特征 q h , w q_{h,w} qh,w 上。
在这里插入图片描述
特征适配器可以由简单的神经模块组成,如全连接层或多层感知器(MLP)。我们通过实验证明,单个全连接层可以产生良好的性能。

3.3. Anomalous Feature Generator

为了训练鉴别器以估计样本正常的可能性,最简单的方法是采样负样本,即缺陷特征,并将其与正常样本一起优化。缺乏缺陷使得采样分布的估计变得棘手。而 [17, 18, 30] 依赖额外数据合成缺陷图像,我们在特征空间的正常样本上添加简单噪音,声称这种方法的性能优于那些受操纵的方法。

异常特征是通过在正常特征 q h , w i ∈ R C q^i_{h,w} ∈ \mathbb{R}^C qh,wiRC 上添加高斯噪声生成的。形式上,会对噪声向量 ϵ ∈ R C ϵ ∈ \mathbb{R}^C ϵRC 进行采样,其中每个条目都遵循独立同分布的高斯分布 N(µ, σ2)。异常特征 q h , w i − ∈ R C q^{i-}_{h,w} ∈ \mathbb{R}^C qh,wiRC 被融合为
在这里插入图片描述
图4说明了异常特征对四类MVTec AD的影响。我们可以看到,适应特征沿每个维度的标准差趋于一致。因此,当区分异常特征和正常特征时,特征空间趋于紧凑。
在这里插入图片描述

3.4. Discriminator

鉴别器 D ψ D_ψ Dψ 作为一个正常性评分器,直接估计每个位置 ( h , w ) (h,w) hw的正常性。由于负样本是与正常特征 { q i ∣ x i ∈ X t r a i n } \{q^i|x_i ∈ \mathcal{X}_{train}\} {qixiXtrain} 一起生成的,在训练期间它们都被馈送给鉴别器。鉴别器期望正常特征产生正的输出,而异常特征产生负的输出。我们简单地使用一个2层多层感知器(MLP)结构,就像普通的分类器一样,将正常性估计为 D ψ ( q h , w ) ∈ R D_ψ(q_{h,w}) ∈ \mathbb{R} Dψ(qh,w)R

3.5. Loss function and Training

简单的截断 L1 损失被推导为:
在这里插入图片描述
t h + th^+ th+ t h − th^− th 是阈值项,用于防止过拟合。它们默认设置为 0.5 和 -0.5。训练目标是:
在这里插入图片描述
我们将在实验部分通过实验评估所提出的截断 L1 损失函数与广泛使用的交叉熵损失的性能。训练过程的伪代码如算法1所示。
在这里插入图片描述

3.6. Inference and Scoring function

在推断阶段,异常特征生成器被丢弃。需要注意的是,剩余的模块可以堆叠成一个端到端的网络。我们将每个 x i ∈ X t e s t x_i ∈ X_{test} xiXtest 依次输入到前述的特征提取器 F ϕ F_ϕ Fϕ 和特征适配器 G θ G_θ Gθ 中,以获取适应特征 q h , w i q^i_{h,w} qh,wi,如方程5所示。异常分数由鉴别器 D ψ D_ψ Dψ 提供:
在这里插入图片描述
在推理期间用于异常定位的异常图被定义为:
在这里插入图片描述

然后,对 S A L ( x i ) S_{AL}(x_i) SAL(xi) 进行插值,使其具有输入样本的空间分辨率,并使用 σ = 4 σ = 4 σ=4 进行高斯滤波以获得平滑的边界。由于对于任何大小的异常区域都存在最响应的点,因此将异常图的最大分数视为每个图像的异常检测分数。
在这里插入图片描述

4. Experiments

4.1. Datasets.

我们在MVTec异常检测基准数据集[3]上进行了大部分实验,这是异常检测和定位领域中的著名数据集。MVTec AD包含5个纹理和10个对象类别,源自制造业,共有5354张图像。该数据集由用于训练的正常图像以及用于测试的正常和带有各种缺陷类型的异常图像组成。它还为有缺陷的测试图像提供了像素级注释。典型的图像如图1所示。与[6, 22]中一样,图像被调整大小并居中裁剪为256 × 256和224 × 224。没有应用数据增强。

我们遵循一类分类协议,也称为冷启动异常检测,在该协议中,我们针对每个类别的正常训练样本训练一个单类分类器。我们在CIFAR10 [16]上进行一类新颖性检测,该数据集包含50K训练图像和10K测试图像,分辨率为32 × 32,共有10个类别。在一类新颖性检测设置下,一个类别被视为正常数据,其他类别被用作新颖性数据。

4.2. Evaluation Metrics.

图像级别的异常检测性能通过标准的接收器操作特性曲线下的面积来衡量,我们将其表示为 I-AUROC,使用生成的异常检测分数 SAD(方程11)。对于异常定位,异常图 SAL(方程10)用于评估逐像素的AUROC(表示为P-AUROC)。与之前的研究[6, 22]保持一致,我们在MVTec AD上计算了检测和定位的类平均AUROC以及所有类别的平均AUROC。比较基线包括AE-SSIM [3]、RIAD [31]、DRÆM [30]、CutPaste [17]、CS-Flow [24]、PaDiM [6]、RevDist [7]和PatchCore [22]。

4.3. Implementation Details

本节描述了本文实验的配置实现细节。实验中使用的所有骨干网络都是使用ImageNet [8]进行预训练的。当骨干网络采用ResNet-like架构时,如方程3中的l′ ∈ [2, 3]所示,特征提取器中使用骨干网络的第2和第3个中间层,与[22]中的实现相同。默认情况下,我们的实现使用WideResnet50作为骨干网络,并将特征提取器中的特征维度设置为1536。后续的特征适配器本质上是一个无偏置的全连接层。适配器中的FC层的输入和输出特征维度相同。异常特征生成器将独立同分布的高斯噪声 N ( 0 , σ 2 ) N(0,σ2) N(0σ2)添加到正常特征的每个条目中。默认情况下, σ σ σ设置为0.015。随后的鉴别器由一个线性层、一个批归一化层、一个Leaky ReLU(斜率为0.2)和一个线性层组成。在方程7中, t h + th^+ th+ t h − th^− th 都设置为0.5。使用Adam优化器,将特征适配器和鉴别器的学习率分别设置为0.0001和0.0002,并将权重衰减设置为0.00001。每个数据集的训练时期设置为160,批大小为4。

4.4. Anomaly detection on MVTec AD

在MVTec AD上的异常检测结果如表1所示。图像级别的异常分数由异常图的最大分数给出,如方程11所示。SimpleNet在15个类别中有9个类别的得分最高。对于纹理和对象,SimpleNet分别达到了99.8%和99.5%的I-AUROC,创造了新的SOTA。SimpleNet实现了显着更高的平均图像异常检测性能,即I-AUROC分数为99.6%。请注意,从PatchCore [22](在相同的WideResnet50骨干网络下的下一个最佳竞争对手)的0.9%的错误减少到SimpleNet的0.4%的错误,意味着错误减少了55.5%。在工业检测设置中,这是一个相关且显著的降低。
在这里插入图片描述

4.5. Anomaly localization on MVTec AD

异常定位性能通过像素级AUROC(记为P-AUROC)来衡量。与最先进方法的比较如表1所示。SimpleNet在MVTec AD上实现了最佳的异常检测性能,P-AUROC为98.1%,同时在对象类别上实现了新的SOTA,P-AUROC为98.4%。SimpleNet在15个类别中有4个类别的得分最高。我们在图8中展示了异常定位的代表性样本。

4.6. Inference time

除了检测和定位性能之外,推断时间是工业模型部署时最重要的考虑因素。与最先进方法在推断时间上的比较如图2所示。所有方法在相同硬件上进行测量,包含一块 Nvidia GeForce GTX 3080ti GPU 和一颗 Intel® Xeon® CPU E5-2680 v3@2.5GHZ。图表清楚地显示了我们的方法既实现了最佳性能,同时也具有最快的速度。SimpleNet几乎比PatchCore [22]快了8倍。

5. Conclusion

在本文中,我们提出了一种简单而高效的方法,名为SimpleNet,用于无监督的异常检测和定位。SimpleNet由几个简单的神经网络模块组成,易于训练和应用于工业场景。尽管简单,SimpleNet在MVtec AD基准测试中相较于先前的最先进方法实现了最高的性能以及最快的推断速度。SimpleNet为填补学术研究与异常检测和定位的工业应用之间的差距提供了新的视角。

阅读总结

方法很简单,所带来的网络参数量应该就不大,有时间复现一下论文,后续再更新

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值