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

图片速览 OOD用于零样本 OOD 检测的 CLIPN:教 CLIP 说不

PAPERCODE
https://arxiv.org/pdf/2308.12213v2.pdfhttps://github.com/xmed-lab/clipn

文章创新 以往由CLIP驱动的零样本OOD检测方法,只需要ID的类名,受到的关注较少。 本文提出了一种新的方法,即CLIP说“不”(CLIPN),它赋予了CLIP中说“不”的逻辑。

主要动机 我们的主要动机是使 CLIP 能够使用积极语义提示和否定语义提示来区分 OOD 和 ID 样本。

实现方法 具体来说,我们设计了一种新颖的可学习的“不”提示和“不”文本编码器,以捕获图像中的否定语义。随后,我们引入了两个损失函数:图像文本二进制相反的损失和文本语义相反的损失,我们用它来教导 CLIPN 将图像与“否”提示相关联,从而使其能够识别未知样本。此外,我们提出了两种无阈值推理算法,利用来自“no”提示和文本编码器的否定语义来执行 OOD 检测。

实验结果 在9个基准数据集(3个ID数据集和6个OOD数据集)上用于OOD检测任务的实验结果表明,基于ViT-B-16的CLIPN在ImageNet-1K上零样本OOD检测方面,在AUROC和FPR95方面比7种常用算法至少高出2.34%和11.64%。

        标准OOD检测算法和所提出的CLIPN之间的特征空间的玩具比较图。我们的方法涉及一个“否”逻辑,它提供了一个新的特征空间(黄色区域)来直接识别 OOD 样本。定性实验可视化如图所示。

在这里插入图片描述

        用于确定原始 CLIP 缺少“否”逻辑的示例插图。如图(a)所示,给定一个狗图像和一个猫图像,我们设计了四组提示。两组包含带有(with,of,having)狗(或猫)的照片的类提示,而另外两组使用“no()”提示的照片。我们在 CLIP 上进行了一项实验,将图像与四个提示相匹配。不幸的是,结果显示 CLIP 无法准确匹配图像,这意味着它缺乏“无”逻辑;

在这里插入图片描述

        CLIPN 的推理流水线。它由三个网络组成:图像编码器、文本编码器和带有可学习的“no”提示 ρ 的“no”文本编码器。在推理阶段,使用两个文本编码器共同确定结果。这里的 ID 类是牛、猫、鱼,OOD 类是狗。

        (1)图像编码器 φ φ φ: CLIPN 的图像编码器φ与预训练 CLIP 的图像编码器保持相同的结构和参数。(2)文本编码器 ψ ψ ψ: CLIPN的文本编码器ψ与预训练的CLIP的文本编码器保持相同的结构和参数。(3)“no”文本编码器 ψ " n o " ψ^{"no"} ψ"no": 由预训练的CLIP的文本编码器初始化。但与ψ的区别在于我们设置了 ψ " n o " ψ^{"no"} ψ"no"可学习。

在这里插入图片描述

在这里插入图片描述

        匹配 x 和 t " n o " t^{"no"} t"no" 的图示。绿色和粉红色框分别表示标准文本 t 和“否”文本 t " n o " t^{"no"} t"no" m ( x i , t j " n o " ) = 1 m(x_i, t_j^{"no"}) = 1 m(xitj"no")=1 表示它们匹配但不相关(即,“no”文本不是错误的描述,但在语义上无关紧要)。 m ( x i , t j " n o " ) = 0 m(x_i, t_j^{"no"}) =0 m(xitj"no")=0 表示它们是反向匹配的(即,“no”文本与图像具有相反的语义)。

在这里插入图片描述
Image-Text Binary-Opposite Loss (ITBO) 此损失函数可帮助模型将图像特征与正确的“否”文本特征进行匹配。第 i 个图像和第 j 个“no”文本之间的匹配度可以定义如下:

在这里插入图片描述
        其中 m(x, t) = 0 表示它们反向匹配,m(x, t) = 1 表示它们匹配但不相关。然后我们驱动CLIPN 来匹配图像和no文本,以匹配性为指导。损失表述为:

在这里插入图片描述
Text Semantic-Opposite Loss (TSO) 在特征空间中,g也应该彼此相距较远:
在这里插入图片描述

http://www.lryc.cn/news/263153.html

相关文章:

  • a16z:加密行业2024趋势“无缝用户体验”
  • C# WPF上位机开发(属性页面的设计)
  • macOS 安装 oh-my-zsh 后 node 报错 command not found : node
  • AI 绘画 | Stable Diffusion 视频数字人
  • 《代码随想录》--二叉树(一)
  • shell编程-数组与运算符详解(超详细)
  • Vim入门
  • 动态加载库
  • React中渲染html结构---dangerouslySetInnerHTML
  • 计网02-计算机网络参考模型
  • 模块测试:确保软件质量的关键步骤
  • Postman接口测试之Postman常用的快捷键
  • keil自动分配SDRAM空间设置使用
  • TikTok获客怎么做?可以定制一个获客工具!
  • 数据结构(Chapter Two -02)—顺序表基本操作实现
  • SQL语句整理二--Mysql
  • oracle与gbase8s迁移数据类型对照
  • Flink系列之:集合操作
  • STL:string的常见用法
  • GBASE南大通用 ADO.NET 中的事务
  • App(Android)ICP备案号查询——————高仿微信
  • 修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)
  • Educational Codeforces Round 160 (Div. 2) A~C(D,E更新中...)
  • 【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题
  • C# WPF上位机开发(知识产权ip保护)
  • 【Jenkins】Pipeline 语法解析(声明式Pipeline)
  • 二叉树的最大深度(LeetCode 104)
  • 03-数据结构-栈与队列
  • 功能测试转向自动化测试 。10 年 心路历程——愿测试人不再迷茫
  • VIM ——Vimtutor 个人总结【从入门到精通】