WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation(WinCLIP:零/少射异常分类和分割)

Abstract

视觉异常分类与分割是实现工业质量检测自动化的关键。该领域先前研究的重点是为每个质量检测任务训练定制模型,这需要特定于任务的图像和注释。作者试图克服这一缺陷,能够在不需要特殊的标注和图像就可以实现zore-shot和few-normal-shot的异常分类(AC)和异常分割(AS)。同时作者观察到,CLIP模型具有巨大的潜力,但是在AC和AS方面表现不足。因此,作者提出了WinClip,它具有两个特点:

(1)text部分由状态词和提示词两个部分组成。(a compositional ensemble on state words and
prompt templates)

(2)通过不同的窗口提取到不同等级的特征,将这些特征融合,并于text特征对其。(efficient extraction and aggregation of window/patch/image-level features aligned with text)

此外,作者还提出了WinClip+模型,在WinClip的基础上,利用了正常图像的信息为AC和AS提供帮助。

Introduction

作者提出了两个大问题:

(1)异常检测中,可能出现的异常很多,但是收录在数据集的异常有限。有一些无监督的方法,通过将正常图像中的某些区域发送偏离。在由足够的正常图像时,能够实现高精度。数据不足的时候,表现欠佳。

(2)针对某个或某些的模型,不具备可扩展性。因此,作者想通过zore-shot或few-shot的方式实现AC和AS,达到可扩展的目的。但是异常是相对与正常图像的,模型起码需要知道什么是正常的才能够具有一定的判断能力。

使用Clip模型似乎可能将上面的问题解决,因为Clip模型可以通过文本提示,让模型学习知识,并且具有泛化能力。

但是,单纯的移植Clip模型出现下述问题:

(1)文本对于模型的性能影响很大。检测目标的状态包括了“normal”和“anomalous”。但是,上下文对结果是有影响的,作者提出一个例子:“布上的洞”对于破旧时装是异常和普通时装可能是正常的。并且只使用正常和异常进行分类也不见得有效。

(2)CLIP只在图像和文本全局进行跨模态对齐,但是对于异常分割,追求的是像素级的分类。

(下面这段是直接翻译)

因此,我们提出了一种新的基于窗口的CLIP (WinCLIP),在保证视觉语言对齐的同时提取和聚合多尺度特征。所使用的多个尺度如图2(b)所示。为了利用在少量正常镜头设置中可用的正常图像,我们引入了WinCLIP,它聚合了来自语言驱动的WinCLIP的补充信息和来自正常参考图像的视觉线索,如图2(c)所示。我们强调,我们的零射击模型不需要针对个别情况进行任何调整,并且仅限少数正常设置不使用任何分割注释,从而促进了在广泛的视觉检查任务中的适用性。

总而言之,我们的主要贡献是:

(1)引入了一个组合提示集合。

(2)利用预训练的CLIP模型,我们提出了WinCLIP模型,该模型可以有效地提取和聚合与语言对齐的多尺度空间特征,用于零点异常分割。据我们所知,我们是第一个探索语言引导的零射击异常分类和分割。

(3)提出了一种简单的参考关联方法,并将其应用于多尺度特征图中,用于基于图像的少量异常分割。WinCLIP结合了语言引导和视觉方法,用于少量正常镜头异常识别。

(4)通过在MVTec-AD和VisA基准测试上进行的大量实验表明,我们提出的方法WinCLIP/WinCLIP在零/几次异常分类和分割方面优于最先进的方法。

4.1  Language-driven zero-shot AC

 Two-class design.

作者引入了一个binary zero-shot anomaly classification framework 。 CLIP的提示为两类:“normal [o]” 和 “anomalous [o]”,[0]是对象级别的标签。作者还通过仅使用正常提示s_= " normal [o] "来测试单分类设计,异常得分为“-<f(x),g(s_)>”。通过实验,作者将文本提示对性能的影响呈现在表3中。

Compositional prompt ensemble (CPE).
与对象级分类器不同,CLIP-AC在给定对象的两种状态之间执行分类,即“正常”或“异常”,这是主观的,根据任务有不同的定义。例如,“丢失的晶体管”对于电路板来说是“反常的”,而“破裂”对于木材来说是“反常的”。为了更好地定义对象的两种抽象状态,作者提出了一个组合提示集合来生成每个标签的状态词和文本模板的预定义列表的所有组合,而不是自由地编写定义。状态词包括大多数对象共享的公共状态,例如,“完美无瑕”表示正常/“损坏”表示异常。此外,作者还可以选择性地添加任务特定的状态词,给定缺陷的先验知识(例子:““bad soldering” on PCB”)。如图4左上角所示,在获得状态和模板的所有组合之后,我们计算每个标签的文本嵌入的平均值,以表示正常和异常类。

-------------------------------------------------------------------------------------

后续的WinCLIP for AS和WinClip+不能够做到非常了解,难以写成文字以做分析根据个人的理解,在最后做简单的描述。

其中的Win CLIP最重要的变化是窗口的设计。在下面这个图中可以大致的了解作者是如何设计窗口的。作者通过选定一个尺寸的窗口,让原图只露出这个窗口的区域图像,其他区域都不可见。每次移动都会产生一张图,经过窗口移动后的图组成一个列表,一起经过image encoder 产生特征。作者设计了三种不同的窗口 image-scale、mid-scale、small-scale,将不同尺寸的窗口提取的特征进行融合,并进行像素级的异常评分,得到异常分割结果。

WinClip+ 在我的理解中,它通过一种正常的图像通过不同尺寸窗口产生的特征作为memory为提示。

作者并没有提供源码,GitHub上有一些大牛对论文代码的部分复现。链接如下:
https://github.com/mala-lab/WinCLIP.git

https://github.com/caoyunkang/WinClip.git

https://github.com/zqhang/Accurate-WinCLIP-pytorch.git

以上是个人对这个论文的学习感悟。学习的非常浅薄,期待有大佬能够为这个论文写一个更为精彩的博客或是指出我的错误。更加期望,有大佬能够更加完善的实现这个论文的代码,不提供源码的论文,让本人非常苦恼。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值