没有合适的资源?快使用搜索试试~ 我知道了~
工业异常检测中的冷启动问题与PatchCore方法
143180工业异常检测中的全面回忆0Karsten Roth 1,�,Latha Pemula 2,Joaquin Zepeda 2,Bernhard Schölkopf 2,Thomas Brox 2,Peter Gehler 201 Tübingen大学 2 亚马逊AWS0摘要0能够发现有缺陷的零件是大规模工业制造中的一个关键组成部分。我们在这项工作中解决的一个特殊挑战是冷启动问题:仅使用正常(非有缺陷)的示例图像来拟合模型。虽然可以针对每个类别使用手工制作的解决方案,但目标是构建能够同时自动处理多个不同任务的系统。最佳性能的方法是将ImageNet模型的嵌入与异常检测模型相结合。在本文中,我们延伸了这一工作,并提出了PatchCore,它使用最大程度代表性的正常补丁特征存储库。PatchCore在实现竞争推理时间的同时,实现了检测和定位的最新性能。在具有挑战性的广泛使用的MVTecAD基准测试中,PatchCore的图像级异常检测AUROC得分高达99.6%,与次佳竞争者相比,错误减少了一半以上。我们还在其他两个数据集上报告了竞争性结果,并在少样本情况下获得了竞争性结果。代码:github.com/amazon-research/patchcore-inspection。01. 引言0在图像中检测异常模式的能力是人类认知中根深蒂固的特征。人类只需看到少量正常实例后,就能区分数据中的预期变异和异常值。在这项工作中,我们解决了这个问题的计算版本,即冷启动1异常检测用于工业图像数据的视觉检查。在许多工业场景中,易于获取正常示例的图像,但在完整指定预期缺陷变化方面成本高且复杂。这个任务自然地被视为一个分布外检测问题,模型需要区分从训练数据分布中抽取的样本和其支持范围之外的样本。工业视觉缺陷分类尤其困难,因为错误可能会0� 在亚马逊AWS的研究实习期间完成的工作。1通常也被称为单类分类(OCC)。0图1.MVTec基准数据集的示例。在图像上叠加了Patch-Core的分割结果。橙色边界表示实际分割地图中异常轮廓,例如破碎的玻璃、划痕、烧伤或蓝-橙色渐变中的结构变化。0从细微的划痕到较大的结构缺陷,缺陷的变化范围很大[5]。MVTecAD基准测试中的一些示例以及我们提出的方法的结果如图1所示。现有的冷启动工业视觉异常检测工作依赖于通过自动编码方法[12,36,44]、GANs[2,39,43]或其他无监督适应方法[42,56]学习正常分布的模型。最近,[4,10]提出了利用ImageNet分类的常见深度表示,而无需适应目标分布。尽管缺少适应性,这些模型在异常检测性能甚至缺陷的空间定位方面都表现出色。这些技术的关键原则是在测试样本和正常样本之间进行特征匹配,同时利用深度特征表示的多尺度特性。高分辨率特征覆盖了微小的细粒度缺陷分割,而结构偏差和完整的图像级异常检测应该由更高抽象级别的特征覆盖。这种方法的固有缺点是在更高抽象级别上的匹配置信度有限:ImageNet训练的高级抽象特征与143190工业环境中所需的抽象特征。此外,这些方法在测试时可用的标准上下文受限于可提取的高级特征表示的数量有限。在本文中,我们提出了PatchCore作为一个有效的解决方案,通过(1)在测试时最大化可用的标准信息,(2)减少对ImageNet类别的偏见,以及(3)保持高推理速度。PatchCore利用局部聚合的中级特征补丁实现了这一目标,依赖于一个事实,即只要一个补丁是异常的,图像就可以被归类为异常[14,56]。中级网络补丁特征的使用使得PatchCore能够在高分辨率下以最小的ImageNet类别偏见进行操作,而对局部邻域进行特征聚合确保保留足够的空间上下文。这导致了一个广泛的内存库,使得PatchCore能够在测试时最佳地利用可用的标准上下文。最后,为了实际应用的可行性,PatchCore还引入了贪婪的核心集子采样[1]作为标准特征库的关键元素,既减少了提取的补丁级内存库中的冗余,又显著降低了存储内存和推理时间,使得PatchCore在实际工业用例中非常有吸引力。在多样化的MVTec AD[5]和专门的磁贴缺陷(MTD)[26]工业异常检测基准上进行的彻底实验展示了PatchCore在工业异常检测中的强大能力。它在MVTecAD和MTD上实现了最先进的图像级检测得分,MVTecAD的得分接近完美(AUROC高达99.6%),将先前方法的检测错误减少了一半以上,并实现了最先进的工业异常定位性能。PatchCore在保持快速推理时间的同时,无需对手头数据集进行训练,使其在实际工业异常检测中非常有吸引力。此外,进一步的实验证明了PatchCore的高样本效率,与现有的异常检测方法在性能上相当,同时只使用了一小部分标准训练数据。02. 相关工作0大多数异常检测模型依赖于学习与标准数据固有的表示能力。例如,可以通过使用自动编码模型[44]来实现。为了更好地估计标准特征分布,已经提出了基于高斯混合模型[60]、生成对抗训练目标[2, 39,43]、对预定义物理增强的不变性[25]、隐藏特征对重构的鲁棒性[29]、原型记忆库[21]、注意力引导[52]、结构目标[7,59]或受限表示空间[38]的扩展。0提出。其他无监督表示学习方法也可以被利用,例如通过GANs [13],学习预定义几何变换 [20]或通过正则化流[42]。给定相应的标准表示和新的测试表示,异常检测可以简单地通过重构误差 [44]、与k个最近邻的距离[18]或在这些特征之上微调一个单类分类模型(如OC-SVMs [46]或SVDD [50,56])来实现。对于这些方法的大多数,基于像素的重构误差自然地导致异常定位,可以使用基于显著性的方法(如GradCAM [47]或XRAI [28])进行异常分割[42, 45, 52]。0工业异常检测。尽管关于通过学习的标准表示进行一般异常检测的文献非常丰富,但工业图像数据具有自身的挑战[5],最近的研究从[4]开始表明,使用在大型外部自然图像数据集(如ImageNet[16])上预训练的模型而无需对手头的数据进行任何调整,可以实现最先进的检测性能。这催生了其他依赖于更好地重用预训练特征的工业异常检测方法,例如使用包含各种特征层次结构的内存库进行细粒度的基于kNN的异常分割和图像级异常检测的SPADE [10],以及最近提出的PaDiM[14],它利用了局部约束的特征包方法[8],估计补丁级特征分布矩(均值和协方差)用于补丁级马氏距离度量[33]。这种方法类似于在完整图像上研究的[40]。为了更好地考虑自然预训练和工业图像数据之间的分布偏移,可以进行后续的适应,例如通过学生-教师知识蒸馏[24],如[6,45]或在预训练网络特征之上训练的正则化流[17, 30]。0PatchCore中使用的具体组件与SPADE和PaDiM最相关。SPADE利用从预训练的骨干网络中提取的名义特征的内存库,分别用于图像级和像素级异常检测。PatchCore同样使用内存库,但关键是使用邻域感知的补丁级特征,以实现更高的性能,因为保留了更多的名义上下文并融入了更好的归纳偏差。此外,内存库经过核心集合子采样,以确保在更高性能下低推理成本。核心集合在基本的kNN和kMeans方法[22]或混合模型[19]中长期以来一直被使用,通过找到最佳近似某个可用集合的结构的子集,可以以显著降低的成本进行近似解决方案的查找[1,9]。最近,基于核心集合的方法也已经应用于深度学习方法,例如网络修剪[34]、主动学习[48]和增加有效数据。We thus propose to use a memory bank M of patch-levelfeatures comprising intermediate or mid-level feature repre-sentations to make use of provided training context, avoid-ing features too generic or too heavily biased towards Im-ageNet classification. In the specific case of ResNet-likearchitectures, this would refer to e.g. j ∈ [2, 3]. To formal-ize the patch representation we extend the previously intro-duced notation. Assume the feature map φi,j ∈ Rc∗×h∗×w∗to be a three-dimensional tensor of depth c∗, height h∗ andwidth w∗. We then use φi,j(h, w) = φj(xi, h, w)c∗143200改进GAN训练[49]或表示学习[41]的小批量覆盖率。后三者通过使用贪婪的核心集合选择机制取得了成功。由于我们的目标是近似内存库特征空间的覆盖率,因此我们同样采用贪婪的核心集合机制来适应PatchCore。最后,我们在图像级异常检测和异常分割中采用了基于补丁级别的方法,与PaDiM的目标是鼓励更高的异常检测灵敏度。我们使用一个高效的补丁特征内存库,所有在测试时评估的补丁都可以同等访问,而PaDiM则限制了每个补丁的特定马氏距离测量的补丁级别异常检测。通过这样做,PatchCore不再依赖图像对齐,同时使用更大的名义上下文估计异常。此外,与PaDiM不同,输入图像在训练和测试期间不需要具有相同的形状。最后,PatchCore利用局部感知的补丁特征分数来考虑局部空间变化并减少对ImageNet类别的偏见。03. 方法0PatchCore方法由几个部分组成,我们将依次描述:将局部补丁特征聚合到内存库(§3.1),使用核心集合减少计算量(§3.2),最后通过完整算法得出检测和定位决策(§3.3)。03.1. 局部感知的补丁特征0我们用XN表示训练时所有名义图像的集合(�x∈XN:yx=0),其中yx∈{0,1}表示图像x是名义(0)还是异常(1)。因此,我们定义XT为测试时提供的样本集,其中�x∈XT:yx∈{0,1}。根据[4]、[10]和[14],PatchCore使用在ImageNet上预训练的网络φ。由于特定网络层次的特征起着重要作用,我们使用φi,j=φj(xi)来表示预训练网络φ的图像xi∈X(具有数据集X)和层次级别j的特征。除非另有说明,根据现有文献,j索引来自ResNet-like[23]架构的特征图,例如ResNet-50或WideResnet-50[57],其中j∈{1,2,3,4}表示相应空间分辨率块的最终输出。特征表示的一种选择是网络特征层次结构中的最后一级。这在[4]或[10]中已经完成,但会引入以下两个问题。首先,它会丢失更多的局部名义信息[14]。由于在测试时遇到的异常类型事先不知道,这对下游异常检测性能是有害的。其次,ImageNet预训练网络中非常深和抽象的特征偏向于自然图像分类任务,与冷启动工业异常检测任务和手头评估的数据只有很少的重叠。0用来表示位置h∈{1,...,h�}和w∈{1,...,w�}处的c�维特征切片。假设每个φi,j的感受野大小大于1,这实际上与图像块特征表示相关。理想情况下,每个块表示在足够大的感受野大小上操作,以考虑到有意义的异常上下文对局部空间变化的鲁棒性。虽然这可以通过步幅池化和进一步深入网络层次结构来实现,但由此创建的块特征变得更加ImageNet特定,因此对于当前的异常检测任务来说不太相关,同时训练成本增加,有效特征图分辨率下降。这激发了在组合每个块级特征表示时进行局部邻域聚合,以增加感受野大小和对小空间偏差的鲁棒性,同时不丢失空间分辨率或特征图的可用性。为此,我们扩展了上述符号φ i,j (h,w),以考虑不均匀的块大小p(对应于考虑的邻域大小),并结合邻域中的特征向量0N ( h,w ) p = { ( a, 0b ∈ [ w - � p/2 �, ..., w + � p/2 � ] },(1)0并在位置(h,w)处具有局部感知特征0φ i,j � N ( h,w ) p � = f agg � { φ i,j ( a, b ) | ( a, b ) ∈ N (h,w ) p } �,(2)其中f agg 是邻域N ( h,w ) p中特征向量的聚合函数。对于PatchCore,我们使用自适应平均池化。这类似于对每个单独的特征图进行局部平滑,结果是在预定义维度d上的(h,w)处的单个表示,这对于所有的(h,w)对(其中h∈{1,...,h�}和w∈{1,...,w�})都保留了特征图分辨率。对于特征图张量φi,j,它的局部感知块特征集合P s,p ( φ i,j ) 是0P ) |0h, w mod s = 0, h < h�, w < w�, h, w ∈ N },(3)0使用可选的步幅参数s,我们将其设置为1,除了在§4.4.2中进行的消融实验中。根据经验和类似于[10]和[14],我们发现聚合NPs,p(φj(xi)).(4)143210图2.PatchCore概述。正常样本被分解为具有邻域感知的块级特征的内存库。为了减少冗余和推理时间,通过贪婪的coreset子采样对该内存库进行降采样。在测试时,如果至少一个块是异常的,则将图像分类为异常,并通过对每个块特征进行评分生成像素级异常分割。0图3.比较:coreset(顶部)与随机子采样(底部)(红色)对于从多模态(a)和均匀分布(b)中采样的2D数据(蓝色)。从视觉上看,coreset子采样更好地近似了空间支持,随机子采样在多模态情况下错过了聚类,并且在(b)中不够均匀。0多个特征层次结构可能会带来一些好处。然而,为了保持所使用特征的通用性以及空间分辨率,PatchCore仅使用两个中间特征层次结构j和j+1。这可以通过简单地计算P s,p ( φi,j +1)并将每个元素与其在最低层次结构(即最高分辨率)上使用的相应块特征进行聚合来实现,我们通过双线性地重新缩放P s,p ( φ i,j +1 )以使|P s,p ( φ i,j +1 )|和|P s,p ( φ i,j)|匹配来实现。最后,对于所有正常训练样本x i ∈ XN,PatchCore内存库M简单地定义为0M =03.2. 减少coreset的补丁特征内存库0对于增加的XN的大小,M变得非常大,推理时间和所需存储空间也随之增加。这个问题已经在用于异常分割的SPADE[10]中注意到,它使用低级和高级特征图。由于计算限制,SPADE需要对像素级异常检测的特征图进行预选择0基于弱图像级异常检测机制,该机制依赖于全图像的深度特征表示,即最后一个特征图的全局平均值。这导致从完整图像计算得到的低分辨率、ImageNet偏向的表示可能会对检测和定位性能产生负面影响。这些问题可以通过使M对于更大的图像尺寸和数量具有可搜索性来解决,从而实现基于补丁的比较,这对于异常检测和分割都有益处。这要求在M中保留编码的名义特征覆盖。不幸的是,随机子采样,尤其是几个数量级的子采样,将丢失在M中编码的名义特征的重要信息(参见§4.4.2中进行的实验)。在这项工作中,我们使用coreset子采样机制来减少M,我们发现这样可以减少推理时间同时保持性能。从概念上讲,coreset选择旨在找到一个子集S �A,使得在S上计算的问题解决方案可以最接近并且尤其更快地近似于在A上计算的问题解决方案[1]。根据具体的问题,感兴趣的coreset会有所不同。由于PatchCore使用最近邻计算(下一节),我们使用最小最大设施位置coreset选择,参见[48]和[49],以确保在补丁级特征空间中M-coresetMC 的覆盖与原始内存库M相似0M � C = 使得 M C �M 的最小值的 M C ,其中 m是 M 中的元素0计算 M � C的精确计算是NP-Hard问题[54],我们使用[48]中建议的迭代贪婪逼近方法。为了进一步减少coreset选择时间,我们遵循[49]的方法,利用Johnson-Lindenstrauss定理[11]通过随机线性投影ψ:Rd →Rd�将M中的元素m的维度降低。算法1总结了内存库的减少过程。我们使用PatchCore − n%来表示百分比n,表示将原始内存库减少到的大小endM ← MCs =m∥2143220原始内存库已经被子采样到,例如PatchCore −1%,将M减少了100倍。图3以视觉方式展示了贪婪coreset子采样与随机选择的空间覆盖的差异0算法1: PatchCore 内存库0输入: 预训练的φ,层次结构j,名义数据XN,步长s,补丁大小p,coreset目标l,随机线性投影ψ0输出: Patch级别的Memory bankM。算法: M ← {} 对于每个 x i ∈ X N,执行以下操作0M ← M ∪ P s,p ( φ j ( x i )) end //应用贪婪coreset选择 M C ← {} 对于每个 i ∈ [0 ,..., l − 1] 执行以下操作0m i ← 使得 ψ ( m ) − ψ ( n ) 的欧氏距离最大的 m03.3. 使用 PatchCore 进行异常检测0通过最大距离得到测试图像x test 的图像级异常分数s ∈R,其中 x test 的补丁集合P ( x test ) = P s,p ( φ j ( x test)),m � 是P ( x test )中与之最近的邻居m的最大距离得分s �0m test , � , m � = 在P ( x test )中使得 m test ∈Px test ) 的最的最小值的 0通过计算距离得到s,其中 m test0s � = 通过公式(6)计算得到的值,其中 m test是测试样本,m � 是最近的邻居0为了得到s,我们对s �进行缩放以考虑邻居补丁的行为:如果与异常候选m test , �, m �最接近的内存库特征与邻近样本相距较远,并且已经是一个罕见的名义出现,我们增加异常分数0�01 − exp ∥ m test , � − m � ∥2 �0�0∙ s � , (7)0其中 N b ( m � ) 是测试补丁特征 m � 在 M 中的 b个最近补丁特征。我们发现这种重新加权比仅使用最大补丁距离更稳健。给定 s,分割直接进行。方程式7中的图像级异常分数(第一行)需要通过 arg max操作计算每个补丁的异常分数。可以通过相同的步骤计算分割图,类似于[14],通过根据它们各自的空间位置重新对齐计算的补丁异常分数。为了匹配原始0输入分辨率(我们可能希望使用中间网络特征),我们通过双线性插值将结果放大。此外,我们使用宽度为σ =4的高斯平滑结果,但没有优化此参数。04. 实验04.1. 实验细节0数据集。为了研究工业异常检测的性能,我们的大多数实验都是在MVTec异常检测基准测试[5]上进行的。MVTecAD包含15个子数据集,总共有5354张图像,其中1725张在测试集中。每个子数据集都被分为仅包含正常样本的训练数据和包含正常和异常样本的测试集,用于特定产品的各种缺陷类型以及相应的异常真值掩码。与[10, 14,56]一样,图像被调整大小并居中裁剪为256×256和224×224。我们没有应用数据增强,因为这需要对保留类别的增强有先验知识。我们还研究了更专业的工业异常检测任务。为此,我们利用了[42]中使用的磁贴缺陷(MTD)数据集[26],该数据集包含925个无缺陷和392个异常磁贴图像,具有不同的照明水平和图像尺寸。与[42]中一样,20%的无缺陷图像在测试时进行评估,其余用于冷启动训练。最后,我们还突出了PatchCore在非工业图像数据上的潜在适用性,通过在Mini Shanghai Tech Campus(mSTC)上进行冷启动异常定位的基准测试,如[52]和[14]所做的那样。mSTC是原始STC数据集[32]的子采样版本,仅使用每五个训练和测试视频帧。它包含来自12个不同场景的行人视频。训练视频包括正常的行人行为,而测试视频可能包含不同的行为,如打架或骑车。为了比较我们的冷启动实验,我们遵循已建立的mSTC协议[14,52],不使用任何异常监督,并将图像调整为256×256。评估指标。通过使用生成的异常分数,通过接收器操作特征曲线下的面积(AUROC)来衡量图像级异常检测性能。根据之前的工作,我们在MVTec上计算类平均AUROC[2, 10,14]。为了衡量分割性能,我们首先使用像素级AUROC和PRO指标,都遵循[6]的方法。PRO分数考虑了连接的异常组件的重叠和恢复,以更好地考虑MVTecAD中不同大小的异常,详见[6]。04.2. 在MVTec AD上的异常检测0在MVTec上进行图像级异常检测的结果如表1所示。对于PatchCore,我们报告了各种变体的结果-143230表1. MVTec AD上的异常检测性能(AUROC)[5]。PaDiM�表示[14]中的结果,具有问题特定的骨干选择。误分类总数是根据F1最优阈值给出的假阳性和假阴性预测的总和。由于没有竞争方法的个别异常分数,因此只能为PatchCore计算此数字。0方法SPADE [10] PatchSVDD [56] DifferNet [42] PaDiM [14] Mah.AD [40] PaDiM � [14] PatchCore-25% PatchCore-10% PatchCore-1%0AUROC ↑ 85.5 92.1 94.9 95.3 95.8 97.9 99.1 99.0 99.00错误率 ↓ 14.5 7.9 5.1 4.7 4.2 2.1 0.9 1.0 1.00错误分类 ↓ - - - - - - 42 47 490表2. MVTec AD [5]上的异常分割性能(像素级AUROC)。0方法AE SSIM [5] γ-VAE + grad. [15] CAVGA-R w [52] PatchSVDD [56] SPADE [10] PaDiM [14] PatchCore-25% PatchCore-10% PatchCore-1%0AUROC ↑ 87 88.8 89 95.7 96.0 97.5 98.1 98.1 98.00错误率 ↓ 13 11.2 11 4.3 4.0 2.5 1.9 1.9 2.00图4.本地感知和网络特征深度与检测性能的关系。PRO得分结果见补充材料。0不同级别的内存库子采样(25%,10%和1%)。对于所有情况,PatchCore在所有子数据集上都实现了显著更高的平均图像异常检测性能(详见补充材料B进行详细比较)。请注意,从PatchCore-25%的错误率从2.1%(PaDiM)降低到0.9%意味着错误率降低了57%。在工业检查环境中,这是一个相关且显著的降低。在MVTec的最佳F1阈值下,只有42张图片被错误分类,所有类别中有三分之一完美解决。在补充材料B中,我们还展示了与SPADE和PaDiM相比,在F1最佳工作点和完全召回时,分类错误也较低。使用PatchCore,不到50张图像仍然被错误分类。此外,PatchCore实现了最先进的异常分割,无论是通过像素级AUROC(表2,PatchCore为98.1,PaDiM为97.5)还是PRO指标(表3,PatchCore为93.5,PaDiM为92.1)进行衡量。图1中的样本分割提供了准确的异常定位印象。0此外,由于我们的核心集合内存子采样的有效性,我们可以在更高分辨率的图像上应用PatchCore-1%(例如280/320而不是224),并且在默认分辨率下保持小于PatchCore-10%的推理时间。这使我们能够进一步推动图像和像素级异常检测。0如表4所示(详细结果见补充材料),在某些情况下,错误率再次减少了一半以上(例如,图像级AUROC从1%减少到0.4%)。04.3. 推理时间0我们感兴趣的另一个维度是推理时间。我们在表5中报告了结果(实现细节见补充材料A),与可能使用WideResNet50和GPU上的操作重新实现的SPADE [10]和PaDiM[14]进行比较。这些推理时间包括通过主干网络的前向传递。如表所示,PatchCore-100%(无子采样)的图像和像素级异常检测的推理时间低于SPADE[10],但性能更高。通过核心集合子采样,PatchCore甚至可以更快,推理时间比PaDiM还要低,同时保持最先进的图像级异常检测和分割性能。最后,我们使用近似最近邻搜索(IVFPQ[27])来检查PatchCore-100%与降低推理时间的正交方法(也可以应用于SPADE,但其性能已经明显低于PatchCore-1%)。我们发现性能下降,尤其是图像级异常检测,而推理时间仍然高于PatchCore-1%。尽管性能有所降低,但PatchCore-100%上的近似最近邻搜索仍然优于其他方法。核心集合和近似最近邻的组合将进一步减少推理时间,使其适用于更大的数据集。04.4. 实验研究0我们对局部感知的补丁特征和coreset减少方法进行了消融实验。补充实验显示了在不同主干网络(§C.2)上的一致性,随着图像分辨率的增加而扩展性(§C.3),以及剩余错误的定性分析(§ C.4)。04.4.1 局部感知的补丁特征和层次结构0我们通过评估异常检测的变化来研究局部感知的补丁特征的重要性(§ 3.3)essultsLrec(mi) =pj∥ pk22,(8)143240表3. 在MVTec AD [5]上的异常检测性能,以PRO [ % ] [5, 10]表示。0方法 AE SSIM [5] Student [6] SPADE [10] PaDiM [14] PatchCore − 25% PatchCore − 10% PatchCore − 1%0PRO↑69.4 85.7 91.7 92.1 93.4 93.5 93.10误差↓30.6 14.3 8.3 7.9 6.6 6.5 6.90表4.PatchCore-1%与更高分辨率/更大的主干网络/集成模型。coreset子采样允许在保持快速推理的同时进行计算密集型设置。0指标 → AUROC pwAUROC PRO0DenseN-201 & RNext-101 & WRN-101(2+3),图像尺寸3200得分↑99.6 98.2 94.90误差↓0.4 1.8 5.60WRN-101(2+3),图像尺寸2800得分↑99.4 98.2 94.40误差↓0.6 1.8 5.60WRN-101(1+2+3),图像尺寸2800得分↑99.2 98.4 95.00误差↓0.8 1.6 5.00表5. 在MVTecAD上每张图像的平均推理时间。得分为(图像AUROC,像素AUROC,PRO指标)。0方法 PatchCore − 100% PatchCore − 10% PatchCore − 1%0得分(99.1, 98.0, 93.3)(99.0, 98.1, 93.5)(99.0, 98.0, 93.1)0时间(s)0.6 0.22 0.170方法 PatchCore − 100% + IVFPQ SPADE PaDiM0得分(98.0, 97.9, 93.0)(85.3, 96.6, 91.5)(95.4, 97.3, 91.8)0时间(s)0.2 0.66 0.190图5. 不同子采样器的性能保留,PRO得分的结果请参见补充材料。0在公式1中,对不同邻域大小的性能进行了比较。图4上半部分的结果显示了基于补丁的异常预测在局部性和全局上下文之间存在明显的最佳选择,因此支持邻域大小p=3。通过向下移动网络层次结构(例如参见[10,14]),也可以获得更多的全局上下文,但代价是分辨率降低和更重的ImageNet类别偏差(§3.1)。将前三个WideResNet50块进行索引,使用1-3,图4(底部)再次突出显示了高度局部化预测、更多全局上下文和ImageNet偏差之间的最佳选择。可以看出,层次结构级别2的特征已经可以实现最先进的性能,但从后续层次结构级别(2+3)中获取的额外特征图会带来更多好处,这也是默认设置。04.4.2 Coreset子采样的重要性0图5比较了不同的内存库M子采样方法:贪婪的coreset选择、随机子采样和学习一组与子采样目标百分比p target相对应的基础代理。对于后者,我们从P � R d中采样代理pi,其中|P|=p target∙|M|,然后让它们最小化基础重构目标。0mi −0e ∥ mi − pk∥ 20为了找到最能描述内存数据 M 的 N 个最佳代理。在图 5中,我们比较了三种设置,并发现基于coreset的子采样优于其他可能的选择。无子采样的性能与coreset减少的内存库相当,但后者的大小要小两个数量级。我们还发现子采样的内存库包含的冗余要少得多。我们记录了在测试时使用的内存库样本的百分比,对于非子采样和coreset子采样的内存库。最初只使用不到30%的内存库样本,coreset子采样(到1%)将这个因子增加到近95%。对于某些子采样间隔(大约在50%和10%之间),我们甚至发现与非子采样的PatchCore相比,异常检测和定位的联合性能在某种程度上有所提高。最后,通过增加步幅来减小内存库大小M(参见公式3)会导致性能下降,因为分辨率上下文减少,步幅s=2的图像异常检测AUROC为97.6%,步幅s=3的AUROC为96.8%。04.5. 低样本异常检测0对于现实世界的检查来说,只有有限的正常数据是一个相关的设置。因此,除了在完整的MVTecAD上报告结果外,我们还研究了在较少的训练样本下的性能。我们将训练样本的数量从1(相当于总正常训练数据的0.4%)变化到50(21%),并与使用相同骨干(WideResNet50)重新实现的SPADE [ 10 ]和PaDiM [ 14]进行比较。结果总结在图6中,详细结果可在补充材料§C.1中找到。如图所示,只使用五分之一的正常训练数据,PatchCore仍然可以达到先前最先进的性能。此外,与[ 42]中进行的16-shot实验进行比较,我们发现PatchCore优于他们的方法,该方法在143250图6.PatchCore比竞争对手具有更高的样本效率,只需使用一小部分正常训练数据即可达到先前最先进的性能。请注意,为了可比性,PaDiM和SPADE使用了WideResNet50进行重新实现。0表6. 在mSTC [ 32 , 52 ]上的异常分割和在MTD [ 26]上的异常检测与[ 42 ]中报告的结果进行比较。0mSTC CAVGA-R u [ 52 ] SPADE [ 10 ] PaDiM [ 14 ] PatchCore − 100像素级AUROC [ % ] 85 89.9 91.2 91.80MTD GANomaly [ 2 ] 1-NN [ 35 ] DifferNet [ 42 ] PatchCore − 100AUROC [ % ] 76.6 80.0 97.7 97.90与[ 10]中的图像级内存方法相比,我们发现只使用5/1个正常样本即可实现匹配的定位和检测性能。04.6. 在其他基准上的评估0我们在另外两个异常检测性能基准上对PatchCore进行了基准测试:上海科技校园数据集(STC)[ 32]和磁砖缺陷数据集(MTD)[ 26 ]。如§4.1所述,对STC的评估遵循[ 52 ]、[ 14 ]和[ 10]。我们在STC视频数据的子采样版本(mSTC)上报告了无监督的异常定位性能,图像大小调整为256×256 [ 14]。由于检测上下文与ImageNet中可用的自然图像数据非常接近,我们使用更深层次的网络特征图在层次3和4上,但对PatchCore不进行任何超参数调整。表6(顶部)中的结果显示了最先进的异常定位性能,这表明PatchCore对这些领域的良好可转移性。最后,我们研究了MTD,其中包含尺寸各异的磁砖缺陷图像,无法直接应用像PaDiM这样的空间刚性方法。在这里,正常数据已经表现出与异常样本相似的高变异性[ 42 ]。我们按照[ 42]中提出的协议来测量图像级别的异常检测性能,并发现性能与[ 42 ]相匹配(甚至稍微优于)(表6,底部)。05. 结论0本文介绍了PatchCore算法,用于冷启动异常检测,只需了解正常数据即可。0在测试时,必须利用初始示例来检测和分割异常数据。PatchCore通过使用内存库来在测试时保留最大数量的正常上下文,该库包含从ImageNet预训练网络中提取的局部感知的正常补丁级特征表示,并通过核心子采样实现最小运行时间。结果是在工业异常检测基准测试中具有低计算成本的最先进的冷启动图像异常检测和定位系统。在MVTec上,我们实现了超过99%的图像异常检测AUROC,在相关的小训练集范围内具有最高的样本效率。更广泛的影响。自动化工业异常检测是计算机视觉最成功的应用之一,通过PatchCore获得的改进对于该领域的从业者来说可能是非常有趣的。由于我们的工作专注于工业异常检测,负面社会影响有限。虽然基本方法可能潜在地被应用于更具争议的领域的检测系统,但我们不认为我们的改进足够显著以改变这些系统的社会应用。局限性。虽然PatchCore在工业异常检测中表现出很高的效果,而无需特定地适应手头的问题领域,但适用性通常受到利用的预训练特征的可转移性的限制。可以通过将PatchCore的效果与所使用特征的适应性相结合来解决这个问题。我们将这个有趣的扩展留给未来的工作。0致谢0感谢Yasser Jadidi和AlexSmola对我们的计算基础设施的支持。K.R.感谢国际智能系统最大计划研究学校(IMPRS-IS)和欧洲学习和智能系统实验室(ELLIS)博士项目的支持。143260参考文献0[1] Pankaj Agarwal,Sariel Har,Peled Kasturi和R Varadara-jan。通过Coresets进行几何逼近。组合与计算几何,52,2004年11月。2,40[2] Samet Akcay,Amir Atapour-Abarghouei和Toby PBreckon。Ganomaly:通过对抗训练进行半监督异常检测。在亚洲计算机视觉会议上,第622-637页。Springer,2018年。1,2,5,8,40[3] Jerone Andrews,Thomas Tanay,EdwardMorton和LewisGrif�n。用于异常检测的转移表示学习。2016年7月。40[4] Liron Bergman,Niv Cohen和YedidHoshen。深度最近邻异常检测。CoRR,abs/2002.10445,2020年。1,2,30[5] Paul Bergmann,Michael Fauser,DavidSattlegger和Carsten Steger。Mvtecad-一个用于无监督异常检测的全面真实世界数据集。在IEEE/CVF计算机视觉和模式识别会议论文集中,2019年6月。1,2,5,6,7,40[6] Paul Bergmann,Michael Fauser,DavidSattlegger和CarstenSteger。不知情的学生:具有判别潜在嵌入的学生-教师异常检测。在IEEE/CVF计算机视觉和模式识别会议论文集中,2020年6月。2,5,7,40[7] Paul Bergmann,Sindy L¨owe,Michael Fauser,DavidSattlegger和CarstenSteger。通过将结构相似性应用于自动编码器改进无监督缺陷分割。第14届国际计算机视觉、图像和计算机图形学联合会议论文集,2019年。20[8] Wieland Brendel和MatthiasBethge。用局部特征模型逼近CNN在
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功