当前位置: 首页 > news >正文

【CVPR2024-工业异常检测】PromptAD方法(CLIP和提示学习)

  1. Preliminaries

3.1. CLIP and Prompt Learning(CLIP和提示学习)

CLIP核心机制

输入:未知图像 + 多组文本提示(如 “a photo of [class]”)
操作

  1. 图像编码:视觉编码器 f(·) 提取图像特征 f(i)
  2. 文本编码:文本编码器 g(·) 提取每个文本提示 s_k 的特征 g(s_k)
  3. 相似度计算:计算图像特征与所有文本特征的余弦相似度
  4. 概率分布:通过softmax生成图像属于各文本提示的概率分布

输出:图像属于每个文本提示的概率分布,实现零样本分类。


举个栗子🌰
• 输入文字提示:“狗”、“猫”、“汽车”
• 计算相似度得分:8(狗)、5(猫)、1(汽车)
• Softmax处理后:
• 狗:95%
• 猫:4.7%
• 汽车:0.3%
👉 结论:这张图大概率是狗!


Prompt Learning(提示学习)步骤

目标:自动学习更有效的文本提示,提升CLIP在下游任务的表现。

输入:少量正常样本(小样本设置)
操作

  1. 设计可训练提示模板
    • 模板形式:[P1][P2]...[PE_P][class_k]
    [P1]...[PE_P] 为可训练的token,[class_k] 为固定的类别名称
  2. 对比学习优化
    • 通过对比损失(如交叉熵)调整提示参数,使正常样本特征与正常提示特征对齐
  3. 生成最终提示
    • 学习后的提示模板直接用于推理

输出:优化后的文本提示,提升分类或检测性能(如异常检测)。


例子背景

任务:训练模型区分图片是“猫”还是“狗”
传统方法:需要大量标注数据训练模型
Prompt Learning方法:只改提示模板,不修改CLIP模型本身,用少量数据优化提示。


Prompt Learning步骤

输入

• 少量标注图片(如5张猫、5张狗)
• 初始模板:“a photo of [class]”([class]替换为“猫”或“狗”)

操作
  1. 定义可训练模板
    • 原始模板:[P1][P2] a photo of [class]
    [P1][P2]可训练的token(模型自动学习的“魔法词语”)
    [class]固定类别名称(直接替换为“猫”或“狗”)
    • 例如训练后的模板可能是:"清晰特写 毛茸茸的 a photo of 猫"

  2. 训练过程
    • 输入一张狗图片,计算它与优化后提示的相似度:
    ◦ 狗的提示:[P1][P2] a photo of 狗
    ◦ 猫的提示:[P1][P2] a photo of 猫
    目标:让狗图片与狗的提示相似度 远高于 猫的提示
    • 通过对比损失(如交叉熵)更新[P1][P2]的向量值

  3. 生成最终提示
    • 训练完成后,固定[P1][P2]的参数
    • 推理时直接使用模板:
    ◦ 输入狗图片 ➔ 计算与[P1][P2] a photo of 狗的匹配概率

输出

• 优化后的提示模板,例如:
• 狗:“特写镜头 草地上的 a photo of 狗”
• 猫:“室内环境 窗边的 a photo of 猫”
效果:使用优化后的提示,分类准确率从70%提升到90%!


关键点

  1. 可训练token([P1][P2])
    • 相当于“自动学习的神奇修饰词”,比如“特写镜头”、“毛茸茸的”
    • 模型通过少量数据调整这些词的含义,让提示更匹配任务需求

  2. 固定类别([class])
    • 直接使用“猫”、“狗”等真实类别名,不修改
    • 保证语义明确,避免模型混淆


类比理解

传统方法:让模型从头学习“猫狗是啥”(费时费力)
Prompt Learning
• 相当于给模型一个填空题模板:
[学来的修饰词] 一张照片的 [猫/狗]”
• 模型只需要填对修饰词,就能更准确定义类别!

关键点
  1. CLIP优势:无需训练数据,直接通过文本提示实现零样本分类。
  2. Prompt Learning作用
    • 自动优化提示模板,减少人工设计成本
    • 在少样本场景下提升模型对特定任务(如异常检测)的适应能力
  3. 对比学习核心:通过正负样本对比(如正常 vs 异常提示),增强语义区分性。

示例应用
在异常检测中,通过学习正常提示 [P1][P2][obj] 和生成异常提示 [P1][P2][obj][flaw],使模型区分正常与异常特征。

相关文章:

  • HTML5响应式使用css媒体查询
  • 基于灵动微单片机SPIN系列的两轮车解决方案
  • 【记录】使用 Docker 搭建 MongoDB 分布
  • windows 平台编译openssl
  • Web开发-JS应用原生代码前端数据加密CryptoJS库jsencrypt库代码混淆
  • unityAB包(1/2)
  • Arduino示例代码讲解:Multiple tone player 多音播放器
  • 【优选算法】二分算法模板总结及应用
  • 图解AUTOSAR_CP_SOMEIP_Transformer
  • Datawhale大语言模型-Transformer以及模型详细配置
  • BFS--------N叉树的层序遍历
  • WPF的主题切换
  • 基于视觉的核桃分级与套膜装置研究(大纲)
  • 深度学习 Deep Learning 第5章 机器学习基础
  • 使用自定义指令实现css样式层叠
  • DeDeCMS漏洞
  • Matrix-Breakout-2-Morpheus靶场通关心得:技巧与经验分享
  • 机器学习-手搓KNN算法
  • 小程序API —— 54 路由与通信 - 编程式导航
  • Mistral AI发布开源多模态模型Mistral Small 3.1:240亿参数实现超越GPT-4o Mini的性能
  • 工人日报:应对“职场肥胖”,健康与减重同受关注
  • 多个“首次”!上市公司重大资产重组新规落地
  • 丰富“互换通”产品类型,促进中国金融市场高水平对外开放
  • “女硕士失踪13年生两孩”案进入审查起诉阶段,哥哥:妹妹精神状态好转
  • 特朗普访中东绕行以色列,专家:凸显美以利益分歧扩大
  • 极限拉扯上任巴西,安切洛蒂开启夏窗主帅大挪移?