少或零样本异常检测最新研究跟踪
少或零样本异常检测旨在给定少量几张正常样本或不给定任何样本实现对未见类别的异常检测。该方向的很多研究成果发表在最近一年内,主要得益于视觉语言模型(CLIP)的强大泛化能力。
基于视觉语言模型的方法
- CVPR 2023, WinCLIP
该方法首次证实视觉语言的基础模型在零样本异常检测任务上仍然保持强的泛化性。该方法首先为正常和异常分别设计了多个文本提示,将该提示表征对和图像表征计算相似度然后以 softmax 归一化获得图像级的异常得分。为进一步提升性能,提出以滑动窗口的方式在输入图像上获取不同尺度的Patch,然后将提示表征和密集的Patch 表征计算相似度获得 Patch 级的异常得分。最终的结果是将图像级和Patch级的异常得分做平均获得异常预测。此外,为充分利用少量正常样本,该方法将这些样本提取视觉特征和待测图像的特征对比获得一个额外的异常预测,该做法显著提升了异常分割的性能。
核心贡献:首次证实视觉语言的基础模型在零样本异常检测任务上仍然保持强的泛化性;
不足之处:提示模版需要人工设计,非常工程化;滑动窗口的方式带来大的计算开销;
论文没有开源代码和模型,第三方的复现(https://github.com/zqhang/Accurate-WinCLIP-pytorch)可获得接近原始论文的结果。
- ICLR 2024, AnomalyCLIP
该方法使用一个辅助的异常检测数据集(包括正常和异常样本且带有mask标注)学习正常和异常的样本提示来实现异常分割。由于使用了辅助数据集来学习提示特征,这避免了原始CLIP model 中间视觉特征和提示特征无法对齐的问题,因此可以充分利用不同层的视觉特征。最后将多层级的视觉特征和学习到提示特征计算相似度来获取异常的预测。
核心贡献:极大地简化了WinCLIP中提示工程和密集滑窗;学习到的提示表征具有通用性,可以泛化不同的数据集,如工业和医疗领域的异常检测。
不足之处:需要精确标注的异常检测数据集;其泛化性一定程度上受辅助数据集的影响。
- CVPR 2024, InCtrl
同AnomalyCLIP 一样,该方法也需要辅助数据集来预先训练并利用CLIP model 中间层的特征。不同之处在于其在建模过程中充分利用正常样本并构建了基于Normal-Query 对数据输入方式,在图像级和Patch级分别对 Normal-Query 对的特征建模。为加强模型的性能,保留WinCLIP中文本提示特征和视觉特征异常预测。
核心贡献:建模过程中充分利用正常样本,在测试时只需少量几张未见类别的正常图像就可以实现未见类别的异常检测;
不足之处:需要精确标注的异常检测数据;其泛化性一定程度上受辅助数据集的影响;该方法最终的Loss 只在图像级,因此像素级的异常分割效果可能不太理想(论文也未做该评估和对比)。
- CVPR 2024, PromptAD
该方法提出语义串联,即将正常提示与异常后缀连接起来,从而实现正常提示到异常提示的转变,因此可以构建大量负样本,用于在一类设置中指导提示学习。此外,为了减轻由于缺乏异常图像而带来的训练挑战,该方法引入了显式异常间隔的概念,它用于通过超参数显式控制正常提示特征和异常提示特征之间的间隔。
核心贡献:如何基于一类设置中指导提示学习的方法;引入了显式异常间隔的概念,减轻了由于缺乏异常图像而带来的训练挑战。
不足之处:类似WinCLIP,提示需人工设计,且每一类别都需要定制化的提示模版;
基于测试数据先验的方法
这类方法不需要任何训练图像,仅需要一个批次或全量的测试数据实现异常检测。一个主要事实是: 在异常检测领域,异常图像或像素的占比通常很低,尤其在像素级。尽管这类方法号称零样本,但需要使用测试数据的先验,因此在隐私保护或online的测试场景,这类方法并不适用。
- NeurIPS 2023, ACR
该方法提出了自适应中心表示,它结合了两个简单想法:批量归一化和元训练。该方法假设总体一个随机采样的批次中通常正常比异常具有更多的样本。元训练基于正常样本和合成的异常样本,主要用于保障模型具有中心化表征的能力。测试时只要统计测试批次样本的均值和方差两个统计量,然后使用批量归一化实现异常检测。
核心贡献:批量归一化和元训练相结合进行异常检测的想法是新颖的。
不足之处:方法背后潜藏很多Tricks(实际实现), 不易于扩展。
- ICLR 2024, MuSc
该方法提出了无标签图片互打分的工业异常检测与分割新方法,其核心思想是基于正常区域与正常区域较为相似,异常区域与大多数区域都不相似的基本假设。该方法仅使用测试数据中未标记图像来获得高质量的patch级异常分数。该方法在本质上可以理解为一个粗暴(没有CoreSet)的PatchCore, 因此直接使用 PatchCore 在整个测试数据集上应该有类似的结果。
不足之处:测试阶段需要预先获得整个测试数据;推理阶段涉及较大的计算量,一张图像的预测涉及整个测试数据的前向推理;
本文转自 AI生成未来 ,作者:高斌斌