摘要:图像异常检测(IAD)是工业制造(IM)中的一个新兴且重要的计算机视觉任务。近年来,许多先进算法已经被提出,但它们在不同的工业制造设置中表现差异较大。我们意识到,缺乏统一的工业制造基准正在阻碍IAD方法在现实世界应用中的发展和使用。此外,研究人员在没有统一基准的情况下难以分析IAD算法。为了解决这一问题,我们首次提出了一个统一的工业制造基准,用于评估这些算法的表现,其中包括不同监督水平(无监督与全监督)、学习范式(少样本学习、持续学习和带噪声标签)以及效率(内存使用和推理速度)。接着,我们构建了一个全面的图像异常检测基准(IM-IAD),该基准包括在七个主要数据集上以统一设置进行的19种算法。对IM-IAD的广泛实验(共17,017次)为IAD算法的重新设计或选择提供了深入的见解。此外,提出的IM-IAD基准对现有算法提出了挑战,并建议了未来的研究方向。为保证可重复性和可访问性,源代码已上传到网站。
IAD(图像异常检测)是工业制造(IM)应用中的一个重要计算机视觉任务,如工业产品表面异常检测、纺织品缺陷检测和食品检测等。然而,很少有IAD算法被用于真实的工业制造中,因此迫切需要一个统一的IAD基准,以缩小学术研究与实际应用之间的差距。尽管如此,目前计算机视觉领域的研究主要集中在无监督学习上,较少关注工业需求。因此,建立一个统一的工业制造基准至关重要且紧迫。
首先,由于商业隐私的原因,难以收集大量正常样本进行训练。如果训练样本数量有限,IAD算法的性能很难满足工业制造的要求。其次,大多数现有IAD算法缺乏持续学习能力,容易出现灾难性遗忘。最后,由于缺陷的微小尺寸,错误的标注在所难免,训练数据集中一些异常样本被标记为正常样本。带噪声的训练数据集会导致算法性能下降,但大多数现有的IAD算法并未考虑这一问题。因此,我们提出的IM-IAD基准使研究人员意识到学术界与工业界的差距,并为未来的改进提供了更深入的见解。
另外,现有的一些工作,如ADBench,主要关注表格和图结构数据,而没有在基准上评估IAD算法。例如,最近的一项工作仅在两个数据集上评估了无监督IAD算法。相比之下,我们构建了一个全面的基准IM-IAD,包含七个工业数据集和19种算法。IM-IAD的目的是推动IAD方法在实际场景中的应用,因为现有的基准无法准确反映工业制造的需求。
IM-IAD与现有基准的主要区别在于:首先,先前的研究主要集中在监督水平上的IAD方法评估,而忽略了现实的工业制造需求,如持续学习、少样本学习以及带噪声标签的IAD,特别是在精度与效率的权衡上。这一点尤为重要,因为大多数现有的IAD算法无法满足这些需求。
在本文中,我们通过广泛的实验解决了IAD中的上述问题。主要结论如下:
主要贡献总结如下:
本文的其余部分组织如下:第二节回顾了IAD方法和主流学习范式的文献;第三节提供了我们提出的统一基准IM-IAD;第四节详细给出了全面的实验评估,并讨论了在各种工业制造场景中的高级模型性能;最后,第五节总结了我们的工作。
本节回顾了当前的IAD方法,并在表I中总结了五种设置,这些设置在图1中可视化,并在第III-A节中定义。
无监督IAD的方法主要分为两类:[52]特征嵌入方法和重构方法。具体来说,特征嵌入方法可以进一步分为四类,包括教师-学生模型、归一化流、内存库和单类分类。最典型的方法是教师-学生模型和基于内存库的模型。
在教师-学生模型中,教师模型在训练阶段提取正常样本的特征,并将知识传递给学生模型。对于异常图像,在测试阶段,教师网络提取的特征可能与学生网络的特征存在偏差。因此,寻找异常的基本规则是教师-学生网络具有不同的特征。至于基于内存库的方法 [16][50][43],模型捕捉正常图像的特征并将其存储在特征内存库中。在测试阶段,测试样本的特征查询内存库中的k个最近邻特征点。如果测试特征与最近邻特征点之间的距离超过特定阈值,则该测试样本被视为异常。然而,这两种方法都严重依赖于教师网络的能力或内存库的大小,这可能限制其在实际工业中的泛化能力。
重构方法近年来被广泛采用,包括使用自编码器 [6][97][11]、生成对抗网络 [86][28]、变换器 [94][89] 和扩散模型 [56][102]。这些方法需要大量的训练时间,但其性能仍然落后于特征嵌入方法,使得满足实际工业生产的需求变得具有挑战性。
在设置上,无监督IAD与全监督IAD的区别在于是否使用异常图像进行训练 【49】[15]【26】。全监督IAD方法 [80]【61】 专注于高效利用少量异常样本,以区分异常样本与正常样本的特征。然而,一些全监督IAD方法在识别异常方面的性能却低于无监督方法,说明在使用异常样本的数据方面仍有很大的改进空间。
少样本(包括零样本)IAD非常有前景,因为它可以显著减少对大量标注数据的需求。然而,少样本学习仍处于起步阶段。GraphCore [84] 为少样本任务设计了高效的视觉等距不变特征,能够快速训练,并显著提高使用少量样本进行异常区分的能力。FastRecon [29] 在推理过程中存储正常样本的特征,以协助图像重构,从而在少样本学习场景中训练重构网络。WinCLIP [38] 将特征比较方法扩展到零样本场景,使用CLIP [64] 提取正常或异常描述的文本特征,并与测试图像的特征进行比较以进行异常检测。此外,Cao等人 [8] 利用基础模型的多模态先验知识(如Segment Anything [44])进行异常检测,在零样本设置下实现了可与多个基准相媲美的性能。最近,AnoVL [25] 和AnomalyGPT [31] 利用视觉语言模型的理解能力在零样本场景中取得了新的最先进的结果,但这些模型的体积过大,难以在实际生产线中部署。由于工业场景的真实需求,少样本学习仍然是异常检测未来的研究重点。
带噪声的学习是异常检测中的经典问题 [63]【12】。然而,在IAD领域,使用带噪声的数据进行训练在实际中是一个不可避免的问题。这种噪声通常来自固有的数据偏移或人为误判。为了解决这个问题,SoftPatch [41] 首次在无监督的情况下有效地在补丁级别去噪。在ReaCh [58] 中,通过学习图像内部关系增强模型的表征能力,即使在人工损坏的数据上训练,也能取得接近SOTA的结果。相比之下,其他方法很少讨论这种情况。带噪声的数据在IAD中需要更多的研究。
随着异常检测的发展,集成持续学习(CL)的方法逐渐增多。Li等人 [51] 提出了针对工业IAD的第一个CL基准,但其设置忽略了不同数据集之间的大域差距。LeMO [30] 关注于同一类别内的持续学习问题,但忽略了类别之间遗忘的问题。为了进一步探索IAD方法的能力,在这一设置下应加大努力。
在本节中,我们首先提出IM-IAD中五种设置的定义,然后总结基线方法的实现细节、主流数据集、评估指标和超参数。最后,我们指出从统一的角度研究IM-IAD的重要性。
IAD的目标是,在给定目标类别的正常或异常样本时,异常检测模型应该预测图像是否异常,并在预测结果为异常时定位异常区域。我们提供以下五种设置:
基线方法:表II列出了16种IAD算法(标记为紫色)。选择算法的标准是这些算法在监督级别(全监督和无监督)、抗噪能力、数据高效适应(少样本)和克服灾难性遗忘能力方面具有代表性。由于大多数算法在大多数工业图像数据集上都实现了最先进的性能,因此它们被称为原始方法,并在IM设置中进行比较。
数据集:为了进行全面的消融研究,我们在IM-IAD中使用了七个公共数据集,包括MVTec AD [3][1]、MVTec LOCO-AD [2]、MPDD [39]、BTAD [59]、VisA [104]、MTD [37]和DAGM [19]。表III提供了这些数据集的概述,包括样本数量(正常和异常样本)、类别数量、异常类型和图像分辨率。所有数据集都提供像素级注释。值得注意的是,DAGM是一个合成数据集,MVTec LOCO-AD提出了逻辑IAD,VisA提出了多实例IAD。
评估指标:在结构异常方面,我们使用接收者操作特征曲线下面积(AU-ROC/AUC)、精确度-召回率下面积(AUPR/AP)和PRO [1] 来评估异常定位的能力。对于逻辑异常,我们采用sPRO [5] 来衡量逻辑缺陷检测的能力。此外,我们使用遗忘测量(FM)[10] 来评估抵御灾难性遗忘的能力。相关公式见表IV。
超参数:表V显示了IM-IAD的超参数设置,包括训练轮次、批量大小、图像大小和学习率。我们在网站上共享源代码:GitHub: M-3LAB/open-iad。
提出的IM-IAD弥合了不同现有设置之间的联系,因为缺乏统一的评估基准。
在IM-IAD的设置中,以下是需要进一步研究的挑战性问题的总结。
本节探讨现有算法,并讨论所提议的统一设置的关键方面。每个部分描述实验设施,分析结果,并提供其他挑战和未来方向。
设置:
表 II 中展示了原始方法。非监督设置在第 III-A-1 节中进行了描述。
讨论
表 VI 的统计结果表明,并没有一个通用的最佳算法适用于所有数据集。此外,图 2(a) 和图 2(b) 显示在 GPU 精度、推理速度和内存方面没有明显的优势解决方案。具体而言,表 VI 指出,作为最先进的基于内存库的方法之一,PatchCore 在 MVTec AD 上的表现优于 MVTec LOCO-AD。这是因为 PatchCore 体系结构专注于结构异常,而非逻辑异常,MVTec AD 和 MVTec LOCO-AD 之间的主要区别在于异常类型。
逻辑异常的定义:
MVTec LOCO-AD 包含结构异常和逻辑异常。逻辑异常不是凹陷或划痕,而是由位移或缺失部分引起的。然而,MVTec AD 仅有结构异常。为了可视化结果,图 3 显示了每个 IAD 模型对不同类型异常的限制。例如,第五列的图像是螺钉袋,其缺陷是逻辑异常。具体而言,每个无缺陷的螺钉袋中恰好包含一个图钉。然而,缺陷的螺钉袋在盒子的右上角包含两个图钉。PatchCore 热图无法准确表示右侧的异常,而 RD4AD [24] 能够精确识别右上角的逻辑异常。
内存使用与推理速度:
从图 2 可以看出,在准确性、内存使用和推理时间方面,没有一种 IAD 方法占据主导地位。PatchCore 在图像 AUC 上实现了 SOTA 性能,但未能利用内存使用和推理时间。在实际场景中,必须充分考虑内存使用和推理速度。因此,当前的先进 IAD 算法无法满足 IM 的要求。
图像级别还是像素级别评估?
研究人员通常使用图像级别和像素级别的指标来评估 IAD 算法的分类性能。在实践中,图像级别指标用于判断整个产品是否异常,而像素级别指标则表示异常定位性能。具体而言,像素级别指标可以评估缺陷程度,这与产品的价格密切相关。缺陷程度越低,价格通常越高,反之亦然。根据表 VI,特定的 IAD 方法,如 PatchCore,在图像 AUROC 上表现良好,但在像素 AP 上表现不佳,反之亦然。这两种类型的指标代表了 IAD 算法的不同能力,对于 IM 都非常重要。因此,开发在图像级别和像素级别指标上都表现卓越的创新 IAD 算法是至关重要的。
挑战:
如何有效利用视觉异常的类型来选择和设计非监督算法?基于异常类型的算法选择至关重要,但在这一领域的研究仍然不足。由于产品线专家可以提供异常类型的信息,因此提前了解视觉异常的类型是合适的。换句话说,了解非监督算法中的异常类型可以视为监督信息。因此,算法设计者在开发算法时应考虑异常类型。
设置:
我们在 MVTec LOCO-AD 数据集上对原始的无监督 IAD 算法进行了基准测试。此外,我们还重新实现了基线逻辑 AD 方法 GCAD [2]。
讨论:
根据表 VII,基线方法 GCAD [2] 优于所有无监督 IAD 方法。GCAD [2] 的关键思想是通过瓶颈架构对每个像素的特征描述符进行编码,从而生成全局特征。现有的无监督 IAD 方法存在一个缺点,即其架构没有优化以获取全局特征。
挑战:
全局特征提取对于实现逻辑 IAD 任务的高检测性能至关重要。表 VII 中的统计结果突显了全局异常特征提取的重要性。最近的网络架构(如 Transformer [27] 和 Normalizing Flow [45])专注于长距离特征提取,这使得检测逻辑异常变得更容易。表 VII 的结果显示,基于 Normalizing Flow 的 CSFlow [70] 在逻辑异常方面表现出色,获得了第二好的性能,这表明其潜力。此外,瓶颈架构是捕获全局特征的另一种可行方法。如图 3 所示的逻辑异常数据集热图所示,RD4AD [24] 的瓶颈设计能够提取全局特征。
设置:
我们首先根据 [61]、[13]、[49] 中的设置对完全监督的 IAD 方法进行基准测试。根据第 III-A-2 节中完全监督 IAD 的定义,我们将异常训练样本的数量设置为 10。这里,我们与 PRN [100]、BGAD [90]、DevNet [61]、DRA [26]、SemiREST [49] 和 PatchCore [68] 进行了比较。
讨论:
完全监督的 IAD 算法使用测试样本与训练样本之间的距离来预测异常。核心思想是异常样本和正常样本的特征差异很大。例如,DevNet [61] 提出了使用偏差损失函数来强制所有异常样本与正常样本的统计偏差。从表 VIII 中可以看出,完全监督 IAD 方法在像素级别的表现远超无监督方法(如 PatchCore)。这证明了在训练中引入异常样本的有效性。
挑战:
提升完全监督 IAD 方法中异常样本的有效性至关重要。这是由于在实际应用中,与异常标签相关的高成本。平均而言,每位工作人员花费三个小时为每个图像完成像素标签。在后续研究中,研究人员需要开发一种具有更高效率的改进完全监督 IAD 算法。该算法应减少训练中异常样本的数量,同时保持 IAD 的准确性。
设置:
关于训练样本,我们选择了 1、2、4 和 8 来对原始 IAD 方法进行基准测试。具体细节可以在第 III-A-3 节的少样本设置中找到。此外,我们还与 RegAD [36] 进行了比较,后者是一个先进的元学习方法。
讨论:
图 4 显示,CutPaste、STPM 和 PatchCore 的性能与基线模型 RegAD 相当。受 [60] 和 [14] 的启发,我们尝试通过数据增强来提升 IM 少样本设置下的性能。表 IX 的统计结果表明,大多数数据增强方法都能有效提高少样本 IAD 的性能。此外,我们发现旋转是最优的增强方法,因为大多数实时工业图像 [3]、[39] 可以通过旋转转化为另一幅图像,例如金属螺母和螺丝。
挑战:
合成异常样本至关重要,但也很困难。之前,研究人员主要集中于为正常图像开发数据增强方法。然而,对于合成异常样本的研究却很少。由于工业环境中的无故障生产线,收集大量异常样本非常困难。未来,应更加关注异常合成方法,例如 CutPaste [48] 和 DRAEM [97]。
设置:
使用第 III-A-4 节中介绍的噪声设置,我们通过从原始测试集中注入多种异常样本创建了一个噪声标签训练数据集。具体来说,我们借用了 SoftPatch [41] 的设置。异常样本主要占所有训练数据的 20%(称为噪声比例)。噪声比例在 5% 到 20% 之间,步长为 5%。由于测试类别的数量有限,我们选择了最多 75% 的异常样本作为训练样本。在训练阶段,所有训练数据集中观察到的标签均为正常。在测试阶段,异常样本将不再被评估。在噪声设置下,我们对原始 IAD 基线方法 IGD [12] 进行了基准测试。
讨论:
根据表 X 中的统计结果发现,当处理有限的噪声水平(≤ 0.15)时,基于特征嵌入的方法比 IGD 更有效。为了找出原因,我们对具有代表性的基于特征嵌入的方法 PatchCore [68] 进行了深入研究。在训练阶段,目标是建立一个存储来自所有正常样本的邻域感知特征的内存库。构建特征内存的算法在算法 1 中进行了详细说明。默认情况下,使用 WideResNet-50 [96] 作为特征提取模型。为了平衡内存库的大小与 IAD 性能,使用了核心集采样 [74]。
在推理过程中,如果至少有一个补丁被预测为异常,则测试图像将被视为异常,像素级异常分割将通过每个补丁特征的得分计算得出。具体来说,使用正常补丁特征库
为了增强模型的鲁棒性,PatchCore 采用了重要性重加权 [53] 来调整异常得分 s:
其中
挑战:
样本选择对于提高 IAD 的鲁棒性至关重要。样本选择在未来具有很大的潜力,因为它可以与当前的 IAD 方法无缝集成。例如,Song 等人 [77] 创建了一个区分网络,以区分真实标签案例和噪声训练数据,即一个用于样本选择,另一个用于异常检测。
设置:
我们根据第 III-A-5 节中的持续设置,对原始方法和持续基线 IAD 方法 DNE [51] 进行了基准测试。
讨论:
表 XI 表明,基于内存库的方法在克服所有无监督 IAD 中的灾难性遗忘问题方面表现令人满意,尽管这些方法并不是专门为持续 IAD 设置而提出的。其主要思路是重放方法非常适合基于内存的 IAD 算法。当学习新任务时,基于内存库的方法可以轻松添加新内存以减少遗忘。理想情况下,内存库应适用于测试机制。在测试过程中,基于内存库的方法可以轻松结合最近均值分类器,以定位提供测试样本时的最近内存。
挑战:
在持续 IAD 设置中,限制内存数据库的大小以及最小化先前任务的干扰是至关重要的。在学习新任务时,仅仅添加更多的内存会显著降低推理速度并增加存储使用量。对于固定的存储需求,我们建议使用存储采样 [67] 来限制可以存储的实例数量。此外,新任务的内存可能与先前任务的内存重叠,从而导致 IAD 性能下降。因此,主要挑战在于设计新的约束优化损失函数以避免任务干扰。
设置:
我们在统一设置中对原始算法进行了基准测试,包括少样本、噪声和持续设置,详细信息请参见第 III-A 节。
讨论:
表 XIII 显示,PatchCore 在 IM-IAD 中达到了最先进的结果。然而,如图 2 所示,PatchCore 在 GPU 内存使用和推理时间方面不如其他 IAD 算法,这使得其在实际场景中的使用变得困难。此外,维护内存库的大小是现实部署中的关键问题,特别是当对象类别数量超过 100 时。因此,为了弥合学术研究与工业实践之间的差距,IAD 算法仍有许多机会。
挑战:
多目标神经架构搜索 (NAS) 是 IAD 中寻找最佳权衡架构的一个非常有前景的方向。如果 IAD 模型能够在实践中应用,则需要满足多个目标,例如推理速度快、内存使用低和持续学习能力。因为用于生产线的边缘设备的内存容量受到严格限制。此外,当测试样本在生产线中连续流入时,大多数 IAD 方法无法即时预测新测试样本的到达。
在本文中,我们介绍了 IM-IAD,这是迄今为止最完整的基于工业制造的 IAD 基准,包括 19 种算法、7 个数据集和 5 种设置。我们深入了解了部分标签对于完全监督学习的重要性、噪声设置中噪声比例的影响、持续学习的设计原则,以及全局特征在逻辑异常检测中的重要作用。基于这些,我们提出了几个关于工业 IAD 的引人入胜的未来研究方向。