来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: VL4AD: Vision-Language Models Improve Pixel-wise Anomaly Detection

创新性


  1. 提出VL4AD模型用于解决语义分割网络难以检测来自未知语义类别的异常的问题,避免额外的数据收集和模型训练。
  2. VL4AD将视觉-语言(VL)编码器纳入现有的异常检测器,利用语义广泛的VL预训练来增强对离群样本的感知,还加入max-logit提示集成和类别合并策略用于丰富类别描述。
  3. 提出了一种新的评分函数,可通过文本提示实现无数据和无训练的离群样本监督。

VL4AD


视觉文本编码器

视觉编码器 \(\mathcal{E}_\text{vision, vis-lang}\) 是与文本编码器 \(\mathcal{E}_\text{text}\) 共同预训练,解码器 \(\mathcal{D}_\text{vis-lang}\) 处理多尺度的视觉和文本嵌入,生成两种类型的输出:掩码预测分数 \(\mathbf{s} \in [0, 1]^{N\times H\times W}\) 和掩码分类分数 \(\mathbf{c} \in [0, 1]^{N\times K}\) ,其中 \(N\) 表示对象查询的数量。

对象查询是可学习的嵌入,类似于目标检测网络中的先验框。掩码预测分数以类别无关的方式识别物体,而掩码分类分数计算掩码属于特定语义类别的概率。

基于编码后的视觉嵌入 \(\mathbf{v}_i\) ( \(i=1, \dots, N\) )和ID类别文本嵌入 \(\mathbf{t}_j\) ( \(j=1, \dots, K\) )之间的余弦相似性计算掩码分类分数:

\[\begin{equation}
\mathbf{c}_{i} = \text{softmax}\Big(1/T
\begin{bmatrix}
\text{cos}(\mathbf{v}_i, \mathbf{t}_1), &
\text{cos}(\mathbf{v}_i, \mathbf{t}_2), &
\ldots, &
\text{cos}(\mathbf{v}_i, \mathbf{t}_{K})
\end{bmatrix}
\Big)
\end{equation}
\]

在架构上, \(\mathcal{E}_\text{vision, vis-only}\) 和 \(\mathcal{E}_\text{vision, vis-lang}\) ,以及 \(\mathcal{D}_\text{vis-only}\) 和 \(\mathcal{D}_\text{vis-lang}\) 是相当相似的,区别在于 \(\mathcal{E}_\text{vision, vis-lang}\) 在预训练后保持不变,仅对视觉-语言解码器 \(\mathcal{D}_\text{vis-lang}\) 进行微调。通过这种方式,将零样本CLIP在图像级别的竞争性OOD检测性能转移到像素级任务中。

Max-Logit提示集成于类合并

优化ID类文本嵌入可以使其更好地与相应的ID视觉嵌入对齐,提高IDOOD类别之间的可分离性,但盲目地微调文本编码器可能导致灾难性遗忘。

为此,论文通过max-logit提示集成在文本提示中引入概念词汇多样性和具体化,显著提高模型对OOD输入的敏感性。词汇多样性包括同义词和复数形式,而具体化涉及更好地与CLIP预训练对齐的分解概念。例如,使用概念{vegetation, tree, trees, palm tree, bushes}来表示类vegetation

max-logit集成考虑给定类 \(k\) 的所有替代概念,替换内容为视觉嵌入 \(\mathbf{v}_i\) 与所有 \(l\) 个替代文本嵌入 \([\mathbf{t}_{k}^{1}, \ldots, \mathbf{t}_{k}^{l}]\) 的最大余弦相似度:

\[\begin{equation}
\max\Big(
\begin{bmatrix}
\text{cos}(\mathbf{v}_i, \mathbf{t}_{k}^{1}), &
\text{cos}(\mathbf{v}_i, \mathbf{t}_{k}^{2}), &
\ldots, &
\text{cos}(\mathbf{v}_i, \mathbf{t}_{k}^{l})
\end{bmatrix}\Big).
\end{equation}
\]

此外,单靠在 \(K\) 类维度上的最大像素级得分可能导致次优性能,因为在两个ID类之间的边缘像素的不确定性较高,尤其是当类别数量增加时。

为了解决这个问题,将相关的ID类合并为超类。通过在测试期间将各个语义类的文本提示作为不同的替代概念连接到超类中来实现,而无需重新训练。然后,可以使用max-logit方法获得超类的不确定性。

通过OOD提示实现无数据、无训练异常监督

通过视觉-语言预训练,通常能够很好地检测到与ID类不同的语义OOD类(远OOD类)。但当OOD类与ID类非常相似的情况(近OOD类),则更具挑战性。例如,在CityScapes类别中,OOD类大篷车在城市驾驶场景中可能在视觉上与ID类卡车相似。

利用视觉-语言模型的开放词汇能力,论文引入了一种新的评分函数,旨在更好地检测这些近OOD类,而不需要额外的训练或数据准备。

为了在测试时整合 \(Q\) 个新的OOD概念,需要通过 \(Q\) 个额外的项 \(\text{cos}(\mathbf{v}_i, \mathbf{t}_{K+1}), \ldots, \text{cos}(\mathbf{v}_i, \mathbf{t}_{K+Q})\) 扩展公式1中的掩码分类得分 \(\mathbf{c}_i\) 。遵循公式2,即通过将 \(\mathbf{c} \in \left[0, 1\right]^{N\times (K+Q)}\) 的前 \(K\) 个通道与掩码预测得分 \(\mathbf{s} \in \left[0, 1\right]^{N\times H\times W}\) 进行组合,获得最终的不确定性得分 \(\mathbf{u} \in \mathbb{R}^{H\times W}\) :

\[\begin{equation}
\mathbf{u}_{h,w} = -\max_{k}\sum_{i=1}^{N} \mathbf{s}_{i, h, w} \cdot \mathbf{c}_{i, k}\ \ .
\end{equation}
\]

通过这一整合, \(Q\) 类中的OOD对象将(在大多数情况下)正确分配到其相应的类别。如果没有这一整合,它们可能会被错误地分配到与其实际OOD类别相似的ID类。相反,如果输入中不存在OOD对象,额外的 \(Q\) 类的影响将保持微不足道。

主要实验






如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

VL4AD:让语义分割认识未知类别,无需额外数据和训练的OOD语义分割 | ECCV'24的更多相关文章

  1. Android 解析未知格式的json数据

    1.递归一有的时候我们需要解析未知的json.或者说是动态的json.那么我们并不知道key具体是多少,或者说key不是固定的.这时候就需要解析动态key的方法. 这个方法是我在实现解析前台传入的js ...

  2. seaborn 数据可视化(二)带有类别属性的数据可视化

    Seaborn的分类图分为三类,将分类变量每个级别的每个观察结果显示出来,显示每个观察分布的抽象表示,以及应用统计估计显示的权重趋势和置信区间: 第一个包括函数swarmplot()和stripplo ...

  3. DataPipeline CTO陈肃:构建批流一体数据融合平台的一致性语义保证

    文 | 陈肃 DataPipelineCTO 交流微信 | datapipeline2018 本文完整PPT获取 | 关注公众号后,后台回复“陈肃” 首先,本文将从数据融合角度,谈一下DataPipe ...

  4. 【安富莱专题教程第4期】SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码

    说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...

  5. 机器学习基础:(Python)训练集测试集分割与交叉验证

    在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...

  6. SQL Server 分割字符串和合并多条数据为一行

    分割字符串函数 create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20) ...

  7. win10算hash值,md5,sha256等,无需额外下载工具

    # windows_cmd certutil -hashfile .\文件名 SHA256 可选哈希算法:md2/md4/md5/sha1/sha256/sha384/sha512

  8. 机器学习之KNN原理与代码实现

    KNN原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9670187.html 1. KNN原理 K ...

  9. Python机器学习笔记 K-近邻算法

    K近邻(KNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一. 所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.KNN算法的 ...

  10. 论文阅读笔记(一)FCN

    本文先对FCN的会议论文进行了粗略的翻译,使读者能够对论文的结构有个大概的了解(包括解决的问题是什么,提出了哪些方案,得到了什么结果).然后,给出了几篇博文的连接,对文中未铺开解释的或不易理解的内容作 ...

随机推荐

  1. 前后端分离使用mp遇到问题

    <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-s ...

  2. freertos总结

    freertos学习总结:(别人的)https://blog.csdn.net/qq_39397153/article/details/123997346 freertos学习笔记:(别人的)http ...

  3. Nano 编辑器入门

    按键映射 ⌃: Control M: Meta (Alt) 编辑文件: nano MyFile.txt 退出并保存: ⌃-X 退出(此时 nano 会提示你要不要保存,按 Y 保存) Nano 提示输 ...

  4. 编译器实现之旅——第十六章 代码装载、链接器、全局变量与main函数

    在上一章的旅程中,我们已经实现了函数调用的代码生成器分派函数,但在上一章的末尾,我们留下了三个问题: 我们需要为全局变量压栈 main函数需要在程序启动时被自动调用 我们需要实现一个链接器,以将所有的 ...

  5. python pyqt6 设定logo图标

    如果是Window self.setWindowIcon(QIcon(get_icon('logo.png'))) 如果是Dialog self.login_dialog.setWindowIcon( ...

  6. Maven的下载安装配置

    Maven的下载安装配置 Maven是什么 Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工 ...

  7. java-GUI编程之布局类型介绍

    java使用AWT和Swing相关的类可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库,这个GUI库提供了一 ...

  8. C#整合Ollama实现本地LLMs调用

    前言 近两年AIGC发展的非常迅速,从刚开始的只有ChatGPT到现在的很百家争鸣.从开始的大参数模型,再到后来的小参数模型,从一开始单一的文本模型到现在的多模态模型等等.随着一起进步的不仅仅是模型的 ...

  9. RS485与ModbusRTU

    前言 大家好!我是付工. 每次听到别人说RS485通信协议,就很想去纠正他. 今天跟大家聊聊关于RS485的那些事. 接口标准 首先明确一点,RS485不是通信协议,而是一种接口标准,它还有2个兄弟: ...

  10. 上架难、买量贵?即构 Web 端 1v1 方案全力加速泛娱乐出海

    1v1 视频社交以其功能简洁.互动性强.匹配效率高等特点,在陌生人社交玩法中饱受用户欢迎,平台仅需让两个用户通过匹配.选择等形式连通后,用户即可在房内进行 1v1 视频社交,且在社交的同时又极具私密性 ...