[业界/制造] [Anomaly Detection]PaDim:一种用于异常检测和定位的patch分布建模框架

[复制链接]
查看7 | 回复0 | 昨天 23:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×

论文名称:

PaDiM: a Patch Distribution Modeling Framework for Anomaly Detection and Localization

下载地址:

https://arxiv.org/pdf/2011.08785

代码地址:

https://github.com/xiahaifeng1995/PaDiM-Anomaly-Detection-Localization-master

简介
人类能够在一组同质的自然图像中检测到异质或意外的模式,这个任务被称为异常检测,在视觉工业检测中有大量的应用。但是在生产线上异常是很少的,人工检测很繁琐。因此异常检测自动化将通过简化人类操作员的工作来实现持续的质量控制。本文关注于异常检测,特别是异常定位,主要是工业检测方向。在计算机视觉领域,异常检测对图像给出异常分数,异常定位是一项更复杂的任务,它为每个像素或每个像素块分配一个异常分数,输出异常图。因此,异常定位可以产生更精确和可解释的结果。本文的方法生成的异常图示例,用于定位MVTec异常检测(MVTec AD)数据集图像中的异常。
234209f000b576.png
异常检测是一个正常和异常类别的二分类,但是不可能为这个任务使用全监督训练一个模型,因为异常样本经常是缺少的,另外异常有意想不到的类型。
最近,几个方法被提出来将异常定位和检测任务合并为单类学习的方法,但是它们需要深度网络训练,或者在整个训练数据集上使用KNN算法,KNN算法的复杂度是线性的,随着训练数据集的数量的增加,时间和空间复杂度随之增加,这两个可扩展性可能会阻碍异常定位算法在工业环境的部署。
为了缓解上述问题,本文提出了一个新的异常检测和定位的方法,叫做PaDiM,它使用预训练模型进行embedding提取,有以下两个特性:
1)每个patch位置由多元高斯分布来描述;
2)PaDim考虑预训练CNN特征的不同语义层级的相关性。
因为这些新颖而有效的方法,PaDiM超过了当前在MVTec AD上进行异常检测和定位的SOTA方法。另外,在测试时间上,它有低的时间和空间复杂度,与数据集训练尺寸无关,这在工业应用上是一个有利条件。
相关工作
异常检测和定位方法可以被归类为基于重建或者基于相似度方法。
基于重建的方法  被广泛用于异常检测和定位,AE,VAE或者GAN,被训练用于重建正常训练图像,异常图像因为不能被很好的重建,从而被定位到异常。在图像级别,最简单的方法是将重建错误作为异常分数,另外来自隐空间、中间激活层,或者判别器的额外信息能够帮助去更好的识别异常图像。为了定位异常,基于重建的方法能够使用像素级别的重建错误作为异常分数。另外异常响应可以是来自隐空间的视觉注意力响应。尽管基于重建的方法是很直观和可解释的,它们的性能受到限制,因为异常图像有时也可以得到好的重建效果。
基于相似度的方法  使用深度神经网络来提取整个图像描述的向量用于异常检测,或者图像的patch用于异常定位。基于相似度的方法进行异常检测可以给出较好的结果,但是缺少可解释性,因为不可能去知道异常图像的哪个部分对应高异常分数。异常分数是测试图像的embedding向量和训练集表征的正常参考向量的距离。正常参考可以是包含正常图像、高斯分布参数或整个正常embedding向量集的n维球体的中心。在测试时,在一系列的正常embedding向量上运行KNN算法,推理复杂度随着数据集训练容量线性增加,这可能会阻碍这个方法的工业部署。
PaDiM为异常定位生成patch embedding,类似上面提到的方法。但是PaDiM的正常类别通过一系列的高斯分布来描述,这些分布也模拟了所使用的预训练CNN模型的语义层级之间的相关性。本文使用ResNet,Wide-ResNet或者EfficientNet。因为这些模型,PaDiM超过了当前的SOTA方法。另外它的时间复杂度很低,且与预测阶段的训练数据集尺寸相独立。

Patch分布建模
Embedding提取
预训练CNN模型能够为异常检测提供有价值的特征,因此本文选择避免繁琐的神经网络优化,仅仅使用预训练模型来生成patch embedding向量。PaDiM中patch embedding过程与SPADE相似,如图2所示。在训练阶段,每个正常图像patch都与预训练的CNN激活图中其空间对应的激活向量相关联。来自不同层的激活向量被连接起来去获取包含来自不同语义层级和分辨率的信息,为了编码细粒度和全局上下文。因为激活响应比输入图像有更低的分辨率,许多像素有相同的embedding,然后在原始图像分辨率形成无重叠的像素patch。输入图像被划分为W*H,每个patch位置(i,j)与embedding向量xij相关联。
生成的patch embedding向量可能包含冗余信息,因此本文实验性的研究减少他们尺寸的可能性。本文注意到随机选择少量维度比传统的PCA算法更加有效。简单的随机维度减少显著的降低了模型的训练和测试时间的复杂度,同时保持SOTA的性能。
234210d921cbbe.png
正常图像的学习
为了学习正常图像在位置(i,j)的特性,本文首先计算N张正常训练图像在(i,j)位置的一系列patch embeding向量,Xij={xkij, k<[1,N]}。为了概括上述集合的信息,假设Xij由多元高斯分布生成,uij是样本均值,Σij是样本协方差,公式如下:
23421000d3279b.png
其中,正则化使得样本协方差矩阵满秩且可逆。最后每个可能的patch位置与多元高斯分布相关。
patch embedding向量包含来自不同语义层级的信息,因此每个估计的多元高斯分布N (μij , Σij )捕获来自不同层级的信息,Σij层间相关性。本文的实验表明,针对预训练的CNN的不同语义层级之间的关系进行建模可以帮助提升异常定位性能。
推理:异常响应的计算
本文使用马氏距离M(xij)来计算测试图像的(i,j)位置的patch的异常分数。M(xij)可以被解释为测试path embedding xij与学习的分布N (μij , Σij )的距离,公式如下:
2342102a8f7b71.png
因此,马氏距离矩阵M = (M (xij ))1<i<W,1<j<H形成异常响应,响应中的高分数表明是异常区域。整个图像的最终异常分数是异常响应M的最大值。最终在测试时间上,本文方法没有基于KNN方法的扩展性问题,因为本文不需要去对一个很大容量的距离值去计算和排序。

实验
数据集和指标
指标  为了评估定位性能,本文计算两个独立的阈值特征。本文使用AUROC,它表征异常区域像素占总像素的占比。因为AUROC偏向于大的异常,本文也应用PRO-score,它包括为每个连通分量绘制一条曲线,该曲线表示正确分类像素率的平均值随假阳性率在0到0.3之间的变化情况。PRO分数是这条曲线的归一化积分,高的PRO-score意味着大和小的异常都被很好的定位。
数据集  本文在MVTec AD上评估PaDimM模型,MVTecAD被设计用于测试异常定位算法,它包含15类,原始图像分辨率在700x700和1024x1024之间,包括10个目标类和5个纹理类。目标已经进行居中和对齐处理,如图1所示。对原始数据集,为了在更加真实的环境下测试异常定位模型的性能,本文创建了一个MVTec AD的修改版本,称作Rd-MVTec AD,使用随机旋转(-10,10)和随机裁剪(从256x256到224x224)对所有的训练集和测试集。修改版本的MVTec AD可以更好的描述用于质量控制的异常定位的实际使用情况,感兴趣目标并不总是居中和对齐的。
实验配置
本文使用不同的backbone训练PaDiM,ResNet18, Wide ResNet-50, EfficientNet-B5,所有的网络在ImageNet上进行预训练。当backbone是ResNet时,patch embedding向量从前三层提取,为了结合不同语义层的信息,同时为定位任务保持足够高的分辨率。基于这个想法,本文从EfficientNet-B5中的第7层,第20层,和第26层中提取patch embedding向量。本文使用随机维度减少,使用WR50重构了SPADE模型。对应SPADE和PaDiM,本文使用相同的预处理。被我弄将MVTec AD缩放到256x256,并且居中裁剪224x224。

结果
消融实验
层间相关性
234210b31e5891.png
维度减少
234211a614dacb.png
与SOTA的比较
234211443565c0.png 234211779f2dd5.png 2342116a1bba3c.png
2342129edeffde.png
可扩展性
时间复杂度
2342128551d493.png
内存复杂度
23421225b7685e.png
结论
本文为异常检测和定位提出了一个框架叫做PaDiM,它在MVTec AD和STC数据集上达到了SOTA性能。另外本文将评估规则扩展到没有对齐的数据,结果表明PaDiM可以在更加实际的数据上具有稳定性。PaDiM的低内存和低时间消耗,且使用简单,使得它适合大量应用,比如视觉工业控制。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

hdy

222

主题

317

回帖

639

积分

二级逆天

积分
639