Unsupervised Continual Anomaly Detection with Contrastively-learned Prompt
代码链接:
UCAD代码
摘要
引入 基于增量训练的无监督异常检测(UAD)方法。
它的作用在于不需要依赖标记的异常数据。这对于工业图像异常检测尤为重要,因为工业图像中的异常难以预测,且难以获得大量的异常标记数据。
存在的问题
- 模型遗忘问题:UAD需要为不同类顺序训练单独的模型,这导致学习新任务时遗忘旧任务信息。
- 持续学习的挑战:想用持续学习解决UAD灾难性遗忘的问题,但由于缺少足够的异常样本,持续学习在UAD中的应用受限。
- 计算负担:随着类别增加,计算负担加重。
- 顺序训练时的持续学习能力:缺少在顺序训练期间持续适应频繁产品变更时保留先前学习知识的能力
解决方案
能够同时执行无监督持续 AD 和分割的方法UCAD
我们提出了UCAD框架,可以使用UCAD按顺序识别不同类别的异常,通过对比学习的提示解决持续学习的问题。UCAD框架包括:
- 持续提示模块(CPM):帮助计算机记住不同情况下的正常与异常。CPM通过记忆库存储自动选择的任务查询、任务适应提示和“正常”信息,新情况出现时,CPM会检查记忆库以确定是否正常。
然而,CPM 的性能受到限制,因为冻结的骨干(ViT)无法提供跨各种任务的紧凑特征表示。为了克服这一限制,引入了 SCL 以提取更具优势的特征表示
- 基于结构的对比学习(SCL):即把SAM生成的边界掩码看成是图片不同区域的标识,把有相似特征的图片区域放一起,跟有不同特征的图片区域分开。从而能快速学习图片各个区域的特征,识别出图片中的异常部分。SAM识别图像的不同区域,SCL则让计算机学习如何将相似区域放在一起,不同区域分开,以学习不同区域的图像特征。
- SAM能识别图像的不同区域,并把这些区域正确的拼在一起。SAM中用掩码作不同物体或区域的边界。
- SCL让计算机学习把相似的图片区域放一起,不同的图片区域放分开一些,帮助计算机学习不同区域的图像特征。
实验结果
对无监督连续异常检测和分割设置了基准
即使其他方法进行预演训练(学习新知识的同时回顾旧任务信息),UCAD的性能也优于其他方法
方法
持续提示模块(CPM)
设计目的:
想将持续学习应用到无监督异常检测UAD上遇到两个问题:
- 如何自动确定新图像的任务身份
- 如何在无监督的情况下 指导模型预测相关任务
为了解决这两个问题,提出持续提示模块(CPM),帮助动态适应新图像和指导无监督模型预测
架构
记忆空间M,用于构建一个包含 键(Key)、提示(Prompt)、知识(Knowledge) 的架构,简称为Ke, V, Kn
这个架构包含两个不同的阶段:
-
**任务识别阶段:**在这个阶段,我们需要自动识别新图像属于哪个任务。
- 用最远点采样方法从图像中选择代表性特征-》提取关键特征k,即任务身份,用单个图像的特征空间来代表整个任务
-
**任务适应阶段:**在这个阶段,我们需要指导模型如何适应并预测当前任务的相关性。
- 设计了可学习的提示V,将与任务相关的信息传递给当前图像
- 在每一层的输入特征中添加提示pi,以向当前图像传达任务信息。
- 传递任务的图像特征ki被用来在训练期间创建知识Kn
- 与测试图像特征进行比较Kn,来区分异常数据
通过为每个任务建立键-提示-知识的联系,把以前任务的知识迁移到新任务中
基于结构的对比学习(SCL)
使特征表示更加紧凑
图2:UCAD的框架主要包括持续提示模块(CPM)和基于结构的对比学习模块(SCL),并与SAM网络集成。在训练过程中,CPM建立了一个关键提示知识系统,有效地维护训练数据信息,同时也减少了内存和计算资源的使用。此外,UCAD还提出了一种使用SAM分割图的对比学习方法来增强特征表示。最后,通过比较当前特征和检索到的任务特定知识来完成异常检测。
- 如图2所示,对于训练集中的每张图像,我们使用SAM生成相应的分割图像Is,其中不同的区域代表不同的结构或语义。
- 在提示的指导下,获取每个区域的特征映射Fs,其中ki是前一节中的第i层特征。
- 将分割图像Is下采样,使其大小与Fs(在Cc×h×w中)相匹配,并调整对应位置以创建标签映射Ls
- 拉近同一区域的特征,并将不同区域的特征推得更远
实验与讨论
实验设置
数据集:
- MVTec AD
- VisA
方法
从每个范式中选择了最具代表性的方法来建立基准
度量
- AUROC/AUC:评估模型的异常分类能力
- AUPR/AP:评估像素级异常分割能力
- FM:评估模型防止灾难性遗忘的能力
培训细节和模块参数设置
- 预训练的viti -base patch16-224
快速训练
- 批量:8
- 采用Adam优化器
- 学习率为0.0005
- 动量为0.9
- 25 epochs
- 记忆库(key-prompt-knowledge) 23.28MB
-
- 大小为(15,196,1024)的浮点数组键
-
- 大小为(15,7,768)的浮点数组提示符
-
- 大小为(15,196,1024)的浮点数组知识
持续异常检测基准
在MVTec AD和VisA数据集上评估以下14种方法:
CFA,CSFlow,CutPaste,DNE(无监督连续 AD 中的 SOTA 方法),DRAEM,FastFlow,FAVAE,PaDiM,PatchCore(基于内存和统一方法的AD方法),RD4AD,SPADE,STPM,SimpleNet,UniAD(基于内存和统一方法的AD方法)
针对持续学习中的回放
对 PatchCore 和 UniAD 进行了基于重放的实验
- 提供一个能够存储 100 个训练样本的缓冲区
定量分析
表1:在最后一个子数据集上训练后,MVTec AD数据集上的图像级AUROC↑和相应的FM↓(Bergmann et al. 2019)。请注意,* 表示在训练期间使用缓存池进行排练,这在实际应用中可能是不可能的。最佳结果以粗体突出显示。
(表上的数据为:各个类别的AUROC和FM。按顺序从 Bottle类训练到 zipper类,到最后一个zipper类时,AUPOC上升。下面的表类似)
表2:在最后一个子数据集上训练后,MVTec AD数据集(Bergmann et al. 2019)的像素级AUPR↑和相应的FM↓。
表3:在最后一个子数据集上训练后,VisA数据集(Zou et al. 2022)上的图像级AUROC↑和相应的FM↓。
表4:在最后一个子数据集上训练后,VisA数据集(Zou et al. 2022)上像素级AUPR↑和相应的FM↓
定量分析结论:
1.如表1 - 4所示,在持续学习的情况下,大多数异常检测方法的性能都会显著下降。
2.使用重放,UniAD在MVTec AD数据集上超越了DNE,可以看到表1,2。
3.在VisA数据集上,即使没有回放(表格上无*),UniAD的表现也优于DNE,看表3。
4.在不重播的情况下,跟第二名方法UniAD比
在MVTec AD数据集上,UCAD在图像AUROC上领先0.026分,在像素AUPR上领先0.063分
在VisA数据集上,UCAD在图像AUROC上领先0,049分,在像素AUPR上领先0.017分。
5.在VisA数据集上,DNE的异常识别性能下降。UCAD方法不受影响。
总结:
UCAD在持续学习的设置下异常识别的性能比其他方法有明显的改进。
可以将 CPM与基于重建的 UAD 方法相结合
注释:
CPM:作为一个模块,帮助模型在连续学习的过程中记住不同任务的正常特征,并在新任务中帮助模型预测异常
UAD:训练模型重建输入数据(一般是正常数据),重建有异常的图片时,图片中的异常部分的重建损失会增大,从而识别出图片中的异常
CPM与基于重建的 UAD 方法相结合:让模型在处理新任务时,不仅利用重建技术来检测异常,还可以利用CPM中存储的先前任务的知识来提高检测的准确性和鲁棒性。
定性分析结论:
图3:持续异常检测的可视化示例。第一行为原始异常图像,第二行为地面真值注释,第三至第五行为本方法和其他方法的热图。
从图3可以看到,UCAD粗略预测异常的能力。与第3行的PatchCore方法和第4行的UniAD相比,UCAD有两个优势:
-
更精确定位异常,从下面的图像中可以看到,UCAD标记的异常部分更精确
-
最大限度地减少了正常图像分类中的误报。