ANOMALYCLIP: OBJECT-AGNOSTIC PROMPT LEARNING FOR ZERO-SHOT ANOMALY DETECTION 论文阅读

论文链接:AnomalyCLIP: Object-agnostic Prompt Learning for Zero-shot Anomaly Detection | OpenReview

论文代码链接:zqhang/AnomalyCLIP: Official implementation for AnomalyCLIP (ICLR 2024)

一、论文动机

零样本异常检测(ZSAD)中,传统的预训练视觉语言模型(VLMs)在面对不同领域的异常检测时,由于其侧重于学习前景对象的类别语义,而不是图像中的异常性,导致 ZSAD 性能较弱。

二、论文方法

 (1)对象无关提示学习

  1. CLIP 中常用的文本提示模板,主要关注对象语义。因此,它们无法生成捕获异常和正常语义的文本嵌入来查询相应的视觉嵌入。
  2. 设计具有特定异常类型的模板,但异常的模式通常是未知且多样的,因此实际上很难列出所有可能的异常类型。因此,使用通用异常语义定义文本提示模板非常重要。
  3. 于是,采用文本 damaged [cls] 来覆盖全面的异常语义。然而,使用此类文本提示模板在生成通用异常区分文本嵌入方面带来了挑战。这是因为 CLIP 最初的预训练侧重于与对象语义保持一致,而不是图像中的异常和正常性。为了解决这一限制,引入可学习的文本提示模板,并使用辅助 AD 相关数据调整提示。在微调过程中,这些可学习的模板可以包含广泛而详细的异常语义,从而产生在正常和异常之间更具区分性的文本嵌入。

螺母和金属板上的划痕、晶体管和 PCB 的错位以及各种器官表面的肿瘤等异常情况都可能具有类似的异常模式。 准确的 ZSAD 的关键是识别这些通用异常模式,而不管不同对象的语义如何。因此,对于 ZSAD,在对象感知文本提示模板中包含对象语义通常是不必要的。它甚至会阻碍检测在学习过程中未见的类中的异常。 更重要的是,从文本提示模板中排除对象语义可以使可学习的文本提示模板专注于捕获异常本身的特征,而不是对象。 引入与对象无关的提示学习,目的是捕捉图像中的一般正常和异常,而不管对象语义如何。

(2)全局和局部上下文优化

  1. 为了有效地学习与对象无关的文本提示,设计了一种联合优化方法,该方法能够从全局和局部视角进行正常和异常提示学习,即全局和局部上下文优化。
  2. 全局上下文优化旨在确保与对象无关的文本嵌入与不同对象图像的全局视觉嵌入相匹配。这有助于从全局特征角度有效地捕获正常/异常语义。
  3. 局部上下文优化是为了使与对象无关的文本提示除了全局正常/异常特征之外,还能专注于视觉编码器的 M 个中间层中的细粒度局部异常区域。
  4. 通过最小化以下全局-局部损失函数来学习文本提示

相关知识:

全局视觉嵌入: 从整体图像的角度出发,对图像进行编码后得到的一个特征向量。这个向量综合了图像中各个部分的信息,反映了图像的整体特征。

局部视觉嵌入: 将图像划分成多个小的区域,对每个小区域进行编码得到的特征。这些局部特征能够捕捉到图像中细微的、局部的信息,比如图像中某个物体的局部纹理、特定部位的细节等。在检测图像中物体的异常时,局部视觉嵌入就显得尤为重要,因为异常往往体现在一些局部的细节变化上,如产品表面的小瑕疵、医学影像中病变组织的局部特征等。

分割图生成: 计算原理:在零样本异常检测(ZSAD)任务中,模型需要判断图像中哪些区域是正常的,哪些是异常的,分割图就是用于呈现这种判断结果的一种方式。通过将文本提示的计算扩展到局部视觉嵌入来生成分割图。 对于每个局部视觉嵌入 ,分别计算它与表示正常和异常的文本提示相似度得分。 ,这两个得分分别表示该局部区域属于正常和异常的概率。

结果呈现:通过对图像中每个局部区域都进行这样的计算,得到一系列的概率值,这些概率值构成了分割图 。在分割图中,每个像素点的数值就代表了该位置属于正常或异常的概率。比如,在一个工业产品图像的分割图中,如果某个像素点在异常分割图中的值接近 1,就表示模型认为该位置很可能存在异常;如果在正常分割图中的值接近 1,则表示模型认为该位置是正常的。通过这种方式,分割图能够直观地展示出图像中不同区域的异常情况,帮助人们快速定位和分析图像中的异常部分。

(3)文本提示调优和 DPAM

通过文本提示调整和 DPAM(对角突出注意力图)来优化 CLIP 在文本和局部视觉空间中的提示学习,使模型能够更好地关注异常图像区域。

1.文本提示调优

通过在 CLIP 的文本编码器中添加额外的可学习令牌嵌入,来优化 CLIP 原本的文本空间。这是因为 CLIP 原始的文本空间在用于异常检测时可能不够精确,无法充分捕捉异常和正常的语义差异。

可学习令牌被添加到 CLIP 文本编码器特定层的向量。在文中的文本提示调优环节,随机初始化的可学习令牌嵌入被添加到 CLIP 文本编码器的第m层。它和原始令牌嵌入连接后参与前向传播,能融合进新的信息,让模型学习到更适配异常检测任务的文本表示,提升文本空间区分正常和异常语义的能力。

相关知识:

令牌:在自然语言处理和涉及文本的深度学习模型中,令牌通常是指将文本分解后的基本单元,是一种基本的数据表示单元。比如,对于句子 “A photo of a dog”,可以将每个单词看作一个令牌。在 CLIP 的文本编码器中,文本提示(如 “A photo of a [cls]”)会被转化为一系列的令牌嵌入,每个令牌都有对应的嵌入向量,这些向量携带了文本的语义信息。在处理文本时,模型会基于这些令牌的嵌入来理解和处理文本的含义。

原始令牌嵌入: 原始令牌嵌入是 CLIP 文本编码器在处理文本时产生的基础特征表示,是 CLIP 模型对文本进行理解和处理的关键组成部分。

生成过程:在 CLIP 模型中,输入的文本(如常用的文本提示 “A photo of a [cls]” )首先会被分词,将文本分割成一个个单独的令牌(token)。然后,文本编码器会对这些令牌进行处理,为每个令牌生成对应的向量表示,这些向量就是原始令牌嵌入。这一过程是 CLIP 理解文本语义的基础,通过将文本转化为数值化的向量,模型能够在后续的计算和处理中对文本信息进行操作。

作用:原始令牌嵌入包含了文本的语义和语法等信息。模型会基于这些嵌入进行各种任务相关的计算,例如在零样本识别任务中,计算文本嵌入与视觉嵌入的相似度。在文中的研究场景下,原始令牌嵌入会与可学习令牌嵌入连接,共同参与后续的前向传播过程,以得到更符合异常检测任务需求的文本表示。它为整个文本表示提供了基础信息,后续添加可学习令牌嵌入等操作都是在其基础上进行优化和改进,以增强模型在特定任务(如异常检测)中的性能。

2.DPAM(局部视觉空间的细化)

由于 CLIP 的视觉编码器最初是预先训练的,以对齐全局对象语义,因此 CLIP 中使用的对比损失使视觉编码器产生具有代表性的全局嵌入以进行类识别。 通过自我注意机制,视觉编码器中的注意力图集中在图 b 中红色矩形内突出显示的特定标记上。尽管这些标记可能有助于全局对象识别,但它们会破坏局部视觉语义,这直接阻碍了与对象无关的文本提示中细粒度异常的有效学习。

论文凭经验发现,对角线突出的注意力图有助于减少来自其他标记的干扰,从而改善局部视觉语义。因此,提出了一种称为对角线突出注意力图的机制来优化局部视觉空间,将视觉编码器中原来的 Q-K 注意力替换为对角线突出的注意力 自注意力方案。

### Task-agnostic 视频语言模型 (VLM) 的预训练及其在视频理解中的应用 #### 定义与背景 Task-agnostic 视频语言模型(VLM)是一种能够处理多任务场景的通用型模型,旨在通过联合建模视频和文本数据来捕捉跨模态的信息交互。这种类型的模型通常通过对大规模未标注或多标签的数据集进行自监督学习完成预训练阶段[^2]。相比传统的任务特定模型,Task-agnostic VLM 更加灵活,在多个下游任务中表现出色。 #### 预训练方法概述 预训练的核心目标是从大量无标记或弱标记的多媒体数据中提取有用的特征表示。对于视频语言模型而言,常见的做法是将视频序列分解为离散的时间步,并将其映射到高维向量空间中。具体来说,给定一段视频片段 \( v \),以及对应的自然语言描述 \( t \),可以通过以下方式实现: 1. **Token化**: 将视频帧转换为一系列 token 嵌入,这一步骤可能涉及使用冻结的视觉编码器(如 ResNet 或 Swin Transformer)提取每帧的空间特征。 2. **时间建模**: 利用可训练的 MLP 层或其他结构进一步捕获帧间关系,从而得到最终的视频 token 表示。 3. **对比学习框架**: 在许多情况下,采用基于对比损失的目标函数优化模型参数,使得正样本对之间的相似度最大化而负样本最小化[^3]。 #### 应用于视频理解的具体案例分析 以 Meta AI 和 CMU 提出的任务无关视频语言模型为例,该架构展示了如何有效地结合来自不同源域的知识来进行广泛的视频理解和生成任务。此外,还有其他研究尝试比较不同类型 VLM 架构的效果差异,例如 BLIPBASE 和 XVLMCLIP 这两类分别代表了编解码器网络混合模式和平行流模式的设计理念。 当涉及到实际应用场景时,像 SeeDo 系统那样利用预先训练好的大型多模态语言模型去解析真实世界的演示录像成为一种新兴趋势[^1]。它不仅继承了传统模仿学习技术的优点——即把复杂的操作拆分成更易于管理的小单元;同时还引入了先进的 NLP 技术支持更加多样化的动作执行形式。 ```python import torch from transformers import VideoMAEModel, AutoTokenizer def extract_video_features(video_frames): video_encoder = VideoMAEModel.from_pretrained('videomae-base') tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') with torch.no_grad(): frame_embeddings = video_encoder(video_frames).last_hidden_state text_input_ids = tokenizer("A man is playing basketball", return_tensors="pt")['input_ids'] # Hypothetical fusion mechanism between visual and textual embeddings. fused_representation = combine_visual_textual(frame_embeddings, text_input_ids) return fused_representation def combine_visual_textual(vis_emb, txt_id): pass # Placeholder for actual implementation details. video_data = ... # Preprocessed input data structure containing frames. result = extract_video_features(video_data) print(result.shape) ``` 上述代码片段展示了一个简单的例子说明怎样加载现成工具包里的组件并组合起来形成初步解决方案雏形。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力发光的小丝瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值