VL4AD:让语义分割认识未知类别,无需额外数据和训练的OOD语义分割 | ECCV'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处
论文: VL4AD: Vision-Language Models Improve Pixel-wise Anomaly Detection

创新性
- 提出
VL4AD模型用于解决语义分割网络难以检测来自未知语义类别的异常的问题,避免额外的数据收集和模型训练。 VL4AD将视觉-语言(VL)编码器纳入现有的异常检测器,利用语义广泛的VL预训练来增强对离群样本的感知,还加入max-logit提示集成和类别合并策略用于丰富类别描述。- 提出了一种新的评分函数,可通过文本提示实现无数据和无训练的离群样本监督。
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\) )之间的余弦相似性计算掩码分类分数:
\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视觉嵌入对齐,提高ID和OOD类别之间的可分离性,但盲目地微调文本编码器可能导致灾难性遗忘。
为此,论文通过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}]\) 的最大余弦相似度:
\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}\) :
\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的更多相关文章
- Android 解析未知格式的json数据
1.递归一有的时候我们需要解析未知的json.或者说是动态的json.那么我们并不知道key具体是多少,或者说key不是固定的.这时候就需要解析动态key的方法. 这个方法是我在实现解析前台传入的js ...
- seaborn 数据可视化(二)带有类别属性的数据可视化
Seaborn的分类图分为三类,将分类变量每个级别的每个观察结果显示出来,显示每个观察分布的抽象表示,以及应用统计估计显示的权重趋势和置信区间: 第一个包括函数swarmplot()和stripplo ...
- DataPipeline CTO陈肃:构建批流一体数据融合平台的一致性语义保证
文 | 陈肃 DataPipelineCTO 交流微信 | datapipeline2018 本文完整PPT获取 | 关注公众号后,后台回复“陈肃” 首先,本文将从数据融合角度,谈一下DataPipe ...
- 【安富莱专题教程第4期】SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码
说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...
- 机器学习基础:(Python)训练集测试集分割与交叉验证
在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...
- SQL Server 分割字符串和合并多条数据为一行
分割字符串函数 create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20) ...
- win10算hash值,md5,sha256等,无需额外下载工具
# windows_cmd certutil -hashfile .\文件名 SHA256 可选哈希算法:md2/md4/md5/sha1/sha256/sha384/sha512
- 机器学习之KNN原理与代码实现
KNN原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9670187.html 1. KNN原理 K ...
- Python机器学习笔记 K-近邻算法
K近邻(KNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一. 所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.KNN算法的 ...
- 论文阅读笔记(一)FCN
本文先对FCN的会议论文进行了粗略的翻译,使读者能够对论文的结构有个大概的了解(包括解决的问题是什么,提出了哪些方案,得到了什么结果).然后,给出了几篇博文的连接,对文中未铺开解释的或不易理解的内容作 ...
随机推荐
- linux下开发编辑器vim常用指令
1.vim的3种模式:编辑模式.插入模式.命令行模式(最后一行模式) 编辑模式:对代码的修改(复制.粘贴.剪切 插入模式:用户编辑代码等等) 命令行模式:保存 退出 另存为等 vim3种模式的切换 最 ...
- 【爬虫实战】——利用bs4和正则表达式,简单实现爬取数据
前言 好久没有写博客了,由于一直比较忙,感觉快荒废了学习的步伐,最近由于需要利用爬虫爬取数据,总结一下,以便以后查阅. 目录 一.bs4的安装 二.bs4解析器 三.定位查找标签 四.转换格式 五.提 ...
- 【YashanDB知识库】用户密码带@字符时exp和imp无法使用
[问题分类]数据导入导出 [关键字]YAS-00404.数据导入导出.密码.特殊字符@.exp.imp [问题描述] 当用户密码带@字符时,使用exp和imp导入导出数据,使用转义符仍然出现报错 且y ...
- linux 环境中cat命令进行关键字搜索
在linux环境中通过关键字搜索文件里面的内容 1.显示文件里匹配关键字那行以及上下50行 cat 文件名 | grep -C 50 '关键字' 2.显示关键字及前50行 cat 文件名 | grep ...
- Go runtime 调度器精讲(二):调度器初始化
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 上一讲 介绍了 Go 程序初始化的过程,这一讲继续往下看,进入调度器的初始化过程. 接着上一讲的执行过程,省略一些不相关的代码,执行到 runt ...
- SQL Server – Soft Delete
前言 Soft Delete 中文叫 "逻辑删", "软删除". 对比的自然就是 Hard Delete. 这篇想聊一聊它的好与坏, 什么时候可以考虑用它. H ...
- ASP.NET Core 单元测试
前言 单元测试是好, 但是也很花时间. 有些功能封装好了以后也不怎么会再打开, 所以通常就是徒手测试一下, 过了就过了. 但是往往就是那么神奇, 就是会有需求漏掉. 后来要加, 又由于不想潜水, 对自 ...
- RabbitMQ——死信队列介绍和应用
死信和死信队列的概念 什么是死信?简单来说就是无法被消费和处理的消息.一般生产者将消息投递到broker或者queue,消费者直接从中取出消息进行消费.但有时因为某些原因导致消息不能被消费,导致消息积 ...
- 下载 Youtube 上的视频的方法
事件起因: 某项目组同事需要下载 Youtube 上的视频作为参考视频 解决办法: https://www.converto.io/ -= 实测有效 =- 我个人一直在用该网站可以下载,非常好用,下 ...
- 深入理解Android MTP之存储映射分析
深入理解Android MTP之UsbService启动分析 分析了MTP的服务端的启动,本文来分析切换MTP模式后,存储中的数据(文件.目录)是如何映射到PC端的. 首先你得知道如何切换MTP模式. ...