Advertisement

【文献阅读】FastFlow: Unsupervised Anomaly Detection and Localization via 2D Normalizing Flows

阅读量:

FastFlow: Unsupervised Anomaly Detection and Localization via 2D Normalizing Flows

摘要

  1. 简述问题背景:当采集和标记足够的异常数据是不可行的时候,无监督的异常检测和定位对实际应用至关重要
  2. 前人方法存在的问题:现有的大多数representation-base的方法 都是通过深度卷积神经网络提取正常图像特征,并通过非参数估计 的方法刻画相应的分布。通过计算测试图像 的特征与估计分布 之间的距离来计算异常分数。然而,目前的方法:1不能有效地将图像特征映射为可处理的基分布 ,2忽略了局部特征和全局特征 之间的关系,而这对识别异常很重要。
  3. 我们提出的方法:提出了使用2D normalizing flowFastFLow ,并使用它来估计概率分布。具体来说,FastFLow 可以作为plug-in 模块,与任意的深度特征提取器(如ResNet和Vision Transformer)一起使用,用于无监督异常检测和定位。在训练阶段,FastFlow学习将输入的视觉特征 转化为可处理的分布 ,并在测试阶段得到异常的似然(即概率)。
  4. 得到的结果:在MVTec AD数据集上的大量实验结果表明,fastflow在准确性和推理效率方面超过了以往的先进方法。该方法具有较高的推理效率,异常检测AUC达到99.4%。

1 Introduction

\qquad 计算机视觉中的异常检测与定位的目的是确定异常图像,以及定位异常,广泛应用于工业检测缺陷,医学影像检查,安全检查等领域。然而,由于异常的概率密度低,正常与异常数据通常表现出严重的长尾分布,甚至在某些情况下没有异常样本。这一现实的缺点使得在实践中很难收集和注释大量的异常数据来进行监督学习。为了解决这一问题,提出了一种无监督异常检测方法,即 one-class 分类或 out-of-distribution 检测方法。也就是说,我们在训练中只使用正常样本但是在测试中要可以检测出异常。
\qquad 一种很有前途的无监督异常检测方法是利用深度神经网络获取正态图像的特征,并用一些统计方法对其分布进行建模,然后检测具有不同分布的异常样本该方法包括两个主要部分:特征提取 module和分布估计 module。

\qquad 在分布估计模块上,以往的方法都是采用非参数方法 对正态图像的特征分布进行建模。例如,通过计算特征的均值和方差估计多维高斯分布 ,或者使用聚类算法,通过标准聚类 估计这些正常样本的特征。最近,一些工作开始使用normalizing flow 来估计分布。通过最大化正态图像特征的对数似然 的可训练过程,他们将正态图像特征嵌入到标准正态分布中,并使用概率来识别和定位异常。然而,原有的一维归一化流模型需要将二维输入特征平面化为一维向量来估计其分布,这破坏了二维图像固有的空间位置关系,限制了流模型的能力。除此之外,这些方法需要通过滑动窗口法 对图像中大量的 patch 进行特征提取,并对每个 patch 进行异常检测,从而获得异常定位结果,这导致推理复杂度高 ,限制了这些方法的实用价值。\qquad 为了解决上述问题,我们提出了FastFlow ,将原来的归一化流扩展到二维空间。我们在流模型中使用全卷积网络作为子网 ,它可以保持空间的相对位置 ,提高异常检测的性能。同时支持对整幅图像进行端到端推理,直接将异常检测和定位结果一次性输出,提高了推理效率。

\qquad对于异常检测中的特征提取模块,除了使用CNN的一些backbone如ResNet 获取判别特征外,大部分现有工作重点研究如何合理利用多尺度特征在不同尺度和语义层次识别异常,并通过滑动窗口方法实现像素级异常定位。全局信息与局部异常相关性 的重要性无法充分利用,而滑动窗口方法需要测试大量的图像patch,计算复杂度高。为了解决这些问题,我们使用FastFlow通过端到端 测试阶段来获得全局和局部特征分布的可学习建模,而不是设计复杂的多尺度策略和使用滑动窗口方法。我们在两种backbone上进行了实验:Vision Transformers和CNN。与CNN相比,Vision Transformers可以提供一个全局的接受域,更好地利用全局和局部信息,同时保持不同深度的语义信息。因此,我们在Vision Transformers中只使用某一层的特征。用Vision Transformers替换CNN似乎微不足道,但我们发现,在其他方法中执行这个简单的替换实际上会降低性能,但我们的2D流在使用CNN时获得了具有竞争力的结果。我们的FastFlow具有更强的全局和局部建模能力,所以它可以更好地发挥Transformers的有效性。

\qquad如图1所示,在我们的方法中,我们首先通过特征提取器 提取视觉特征,然后将其输入到FastFlow中来估计概率密度 。在训练阶段,我们的FastFlow用正常图像进行训练,以二维方式将原始分布转化为标准正态分布。在推理中,我们使用二维特征上每个位置的概率值作为异常得分。

\qquad 综上所述,本文的主要贡献是:

  1. 我们提出了一种二维归一化流FastFlow来进行异常检测和定位,该流采用全卷积网络和二维损失函数来有效地模拟全局和局部 分布。
  2. 我们为FastFlow设计了一种轻量级的网络结构,所有步骤都采用大卷积核和小卷积核交替叠加。该方法采用端到端的推理阶段,具有较高的效率。
  3. 提出的FastFlow模型可以作为plug-in模型使用各种不同的特征提取器。在MVTec异常检测数据集上的实验结果表明,我们的方法在准确性和推理效率方面都优于以往最先进的异常检测方法。

3 Methodology

在本节中,我们将介绍方法的pipeline和FastFlow的架构,如图2所示。首先建立了无监督异常检测的问题定义 ,并介绍了基于表示方法的可学习概率密度估计 模型的基本方法。然后分别对特征提取器FastFlow模型 进行了详细描述。
在这里插入图片描述

3.1 Problem Definition and Basic Methodology

无监督异常检测也称为one-class分类或out-of-distribution检测,需要模型来判断测试图像是正常还是异常。异常定位需要一个更细粒度的结果,给出每个像素的异常标签。在训练阶段,只观察到正常图像,但在 测试中正常图像和异常图像同时出现。主流方法之一是基于表示的方法,即从正常图像或正常图像patch中提取判别特征向量,构造分布,并根据测试图像的embedding与分布的距离计算异常得分。该分布的典型特征是 :正常图像的中心为n-sphere ,正常图像呈高斯分布 ,或者从KNN中获得存储在存储库中的正常embedding聚类。
(为了看得清楚,另起一段来写)
\qquad在提取训练数据集D={x_1,x_2,···,x_N}的特征之后,其中x_i,i=1,2,··,N是来自分布p_X(x)(正常图像特征的分布)的样本,基于表示的异常检测模型P=\{P_θ:θ∈Θ\}(可以理解为一个映射)旨在学习在参数空间Θ中的参数θ,以将来自原始分布p_X(x)的所有x_i映射到同一分布p_Z(z),其中异常像素或实例映射在分布外。在我们的方法中,我们遵循这一方法,提出了FastFlow P_θ将从backbone中提取的正常图像的高维视觉特征投影到标准正态分布中。

3.2 Feature Extractor

在整个过程中,我们首先通过ResNet或Vision Transformer从输入图像中提取具有代表性的特征。正如第一节中提到的,异常检测任务中的一个重大挑战是把握全局关系,以将这些异常区域与其他局部部分区分开来。因此,在使用Vision Transformer(ViT)时,我们只使用某一层的特征,因为ViT具有更强的捕捉局部patches和全局特征之间关系 的能力。对于ResNet,我们直接使用前三个block中最后一层的特征,并将这些特征放入三个对应的FastFlow模型中。

3.3 2D Flow Model(老实讲我觉得论文这一部分写的没有很详细,建议先去看看Normalizing Flows的相关知识)

我们的2 flow f:X→Z用于投影图像特征X∈p_X(x)进入隐藏变量z∈具有双射可逆映射的p_Z(z)。对于该双射函数,X的分布可以这样得出:
具体参考标准流的介绍
我们可以通过以下方式从p_Z(z)出发来估计图像特征的对数似然:
在这里插入图片描述
其中z\sim N(0,1),并且上述的分式为双射可逆流模型雅可比行列式,z=f_\theta(x)并且x=f_\theta^{-1}(z)\theta是2D流模型的参数。在测试阶段,异常图像的特征应该是分布之外的,因此具有比正常图像更低的似然,并且该似然可以用作异常分数。具体来说,我们对每个通道的二维概率求和,以获得最终的概率图,并使用双线性插值将其上采样到输入图像分辨率。在实际实现中,我们的流模型f_{2d}通过将多个可逆转换块f_{i}堆叠在一个序列中来构建,该序列:
在这里插入图片描述
并且:
在这里插入图片描述

其中2D flow模型为:
在这里插入图片描述
即一共有K个映射block,每个转换块由多个步骤组成。按照那篇文献的研究,我们在每个块中使用仿射耦合层,每个步骤的公式如下:
在这里插入图片描述
其中 s(y_a)b(y_a) 是两个神经网络的输出。split()concat()函数沿通道维度执行拆分和串联操作。在原归一化流模型中,两个子网s()b()通常被实现为全连接网络,需要对从2D到1D的输入视觉特征进行faltten和squeeze,破坏了特征图中的空间位置关系。为了将原始归一化流转换为2D方式,我们在默认子网中采用二维卷积层来保留流模型中的空间信息,并相应地调整损失函数。特别地,我们采用了一个3×3卷积和1×1卷积交替出现的全卷积网络,它在流模型中保留了空间信息。

4 Experiments

4.1 Datasets and Metrics

\qquad我们在三个数据集上对所提出的方法进行了评估:MVTec AD,BTAD和CIFAR-10。MVTec AD和BTAD都是带像素级注释的工业异常检测数据集,用于异常检测和定位。CIFAR-10是为图像分类而建立的,我们使用它来进行异常检测。在前人工作的基础上,我们选择其中一个类别为正常,其余类别为异常。这些工业数据集的异常比CIFAR-10中的异常要细,而且CIFAR-10中的异常更多地与语义高层信息有关。例如,MVTec AD中的异常被定义为小区域,而CIFAR-10数据集中的异常被定义为不同的对象类别。在无监督的情况下,我们使用每个类别的正常图像来训练我们的模型,并在包含正常图像和异常图像的测试图像中对其进行评估。
\qquad该方法和所有可比方法的性能通过图像或像素级的接收工作特性曲线(AUROC)下的面积来衡量。对于检测任务,需要评估模型输出每个输入测试图像的单一分数(异常分数)。在定位任务中,方法需要输出每个像素的异常分数。

4.2 Complexity Analysis

从推理速度、附加推理时间和附加模型参数三个方面对FastFlow等方法进行了复杂性分析,“附加”是指不考虑主干本身。用于测试的机器的硬件配置是…SPADE和PatchCore在每张图像patch的特征上面进行KNN聚类,以及储存图像的patch的特征,它们不需要引入主干以外的参数。CFlow避免了耗时的k近邻搜索过程,但仍需要以切片窗口的形式执行测试阶段。FastFlow采用端到端的推理阶段,推理效率高。分析结果如表1所示,我们 可以知道我们的方法比其他方法快10倍。与同样使用流动模型的CFlow相比,我们的方法可以获得1.5倍的加速比和以及2倍的参数减少。当使用ViT作为特征提取器时,我们的FastFlow可以达到99.4图像级的异常检测AUC,优于CFlow和Patch Core。从额外推理时间的角度来看,我们的方法比Cflow减少了4倍,比Patch Core减少了10倍。在使用ResNet模型作为特征提取器的情况下,我们的FastFlow仍然具有很好的性能。

4.3 Quantitative Results

略(关于CIFAR-10数据集上的表现,该文章的auc并不高,目前已知的最高是97.5,不知道作者为什么要写这个数据集,cifar-10和mvtec数据集本就差异性很大,不适合作为同一个任务来处理)

4.4 Ablation Study

简要概括就是在不同backbone下比较了3x3和1x1交替以及只用3x3的卷积核的速度和AUC。

4.5 Feature Visualization and Generation.

我们的FastFlow模型是一个双向可逆的概率分布转换器。在正向过程中,将来自backbone的特征图作为输入,将其原始分布转化为二维空间中的标准正态分布 。在逆向过程中,FastFlow的逆可以从特定的概率采样变量 生成视觉特征。为了从FastFlow的角度更好地理解这种能力,我们可视化了正向(从视觉特征到概率图)和反向(从概率图到视觉特征)过程。

如图4所示,我们提取了属于皮革类的输入图像的特征,异常区域见红色箭头。通过FastFlow模型进行转发,得到概率图。我们的FastFlow成功地将原始分布转换为标准正态分布。然后,在概率图中用黄色箭头表示的特定空间区域添加噪声干扰,并利用逆Fastflow模型从污染概率图中生成皮革特征张量。在该特征张量中,我们可视化了一个通道的特征图,可以观察到在相应的污染位置出现了新的异常。通过FastFlow模型后,得到概率图 。我们的FastFlow成功地将原始分布转换为标准正态分布 。然后,在概率图中用黄色箭头表示的特定空间区域添加噪声干扰 ,并利用逆Fastflow 模型从干扰后的概率图中生成皮革图特征tensor。在该特征张量中,我们可视化了一个通道的特征图,可以观察到在相应的污染位置出现了新的异常。
在这里插入图片描述
图:FastFlow的双向可逆过程。“FE”是特征提取器,“FF”是我们的FastFlow模型,“FF^{−1}”是FastFlow的逆。红色和黄色箭头分别指向原始异常和噪声干扰后引入的新异常。

5 Conclusion

本文提出了一种新的无监督异常检测和定位方法FastFlow。我们的主要观察结果是,异常检测和定位需要综合考虑全局和局部信息,采用一种可学习的分布建模方法和高效的推理过程,而这些都是现有方法所忽略的。为此,我们提出了一种具有轻量级结构的二维流模型FastFlow,用于在训练时将正态图像的特征分布投影到标准正态分布,并将这些概率作为测试中的异常得分。FastFlow可以插件的形式用于典型的特征提取网络,例如ResNet和VIT。在MVTec AD数据集上的大量实验结果表明,FastFlow在准确率和推理效率方面优于现有的方法。

全部评论 (0)

还没有任何评论哟~