对比语言-图像预训练(CLIP)在多种图像级任务上表现出强大的零样本分类能力,促使研究行人尝试将CLIP应用于像素级开放词汇语义分割,而无需额外训练。关键在于提升图像级CLIP的空间表征能力,例如,用自-自注意力图或基于视觉基础模型的自注意力图替换最后一层的自注意力图。
在本文中,作者提出了一种新颖的分层框架,命名为CLIPer,该框架分层提升了CLIP的空间表征能力。所提出的CLIPer包括早期层融合模块和精细补偿模块。作者观察到,早期层的嵌入和注意力图可以保留空间结构信息。受此启发,作者设计了早期层融合模块以生成具有更好空间一致性的分割图。随后,作者采用精细补偿模块利用扩散模型的自注意力图来补偿局部细节。
作者在七个分割数据集上进行了实验。CLIPer在这些数据集上实现了最先进的性能。例如,使用ViT-L,CLIPer在voc和COCO Object任务上的mIoU分别为和,分别比ProxyCLIP高出和。
代码与模型:https://linsun449.github.io/cliper
1. 简介
开放词汇语义分割旨在将图像划分为不同的组,并为每个组分配属于任意语义类别的标签。与传统语义分割相比,开放词汇语义分割是一个更具挑战性的分割任务。最近,研究行人主要探索使用视觉-语言模型进行开放词汇语义分割。相关方法可分为基于训练和无训练方法。与基于训练的方法相比,无训练方法更为简单。
对比语言-图像预训练(CLIP)模型在图像级分类任务上展现了强大的零样本能力,这得益于其在大规模图像-文本配对数据上的预训练。基于此,提出了几种方法来适配CLIP进行无需训练的开集语义分割。关键挑战在于提升图像级监督模型的空间表示能力,以用于像素级分割。
如图1(a)所示,一些方法通过引入自-自注意力图来修改最后一层的原始自注意力图,从而更好地保持局部空间信息。例如,MaskCLIP使用与最后一层自注意力图相同的自-自矩阵生成视觉块嵌入,而SCLIP和ClearCLIP则使用 Query - Query 或键-键注意力图来替换原始的自注意力图。不同于使用原始或自-自注意力图,ProxyCLIP从视觉基础模型(VFM)中提取自注意力图作为图1(b)中最后一层的自注意力图。这些方法在不进行额外训练的情况下提高了CLIP在开集设置下的分割性能。然而,这些方法主要关注提升CLIP最后一层的自注意力图。
在本文中,作者聚焦于两个因素以层级提升空间表征能力:
-
第一个因素是提升与现有方法[9, 16]相似的块级空间连贯性。作者观察到,在早期层级的块嵌入和注意力图中包含了丰富的空间结构信息。因此,作者旨在利用CLIP的早期层信息,而非在最后一层使用自注意力或基于VFM的注意力。
-
第二个因素是精细补偿。图像与文本之间的块级相似度图在局部细节上相对粗糙。为了改善分割,有必要进一步优化局部细节。
基于上述两个因素,作者提出了一种名为CLIPer的新型开放词汇语义分割层次化方法。CLIPer由一个早期层融合模块和一个细粒度补偿模块组成。如图1©所示,早期层融合模块通过整合早期层的块嵌入和注意力图来提高输出块嵌入的空间一致性。基于任意类别的输出块嵌入和文本嵌入,作者可以生成粗略的分割图。随后,细粒度补偿模块整合了Stable Diffusion的精细空间信息以补偿局部细节。作者在各种分割数据集上进行了实验。
作者的贡献和优点总结如下:
-
作者提出了一种新型的无需训练的基于CLIP的方法,该方法通过层次化提升CLIP在开放词汇语义分割中的空间表示能力。
-
引入早期层融合策略,通过整合早期层信息来提高CLIP中块 Level 的连贯性。
-
细粒度补偿模块利用扩散模型的精细细节信息来细化局部细节。
-
在CLIP中丢失的尾部,导致更精确的分割。CLIPer在各种分割数据集上实现了优越的性能。例如,使用ViT-L Backbone 网络,它在VOC和Object数据集上分别实现了mloU得分为69.8%和43.3%。
2. 本文方法
在此,作者首先介绍了CLIP、Stable Diffusion和注意力机制的初步概念。随后,作者阐述了研究动机以及CLIPer。
2.1. 初步的
CLIP模型包含图像编码器和文本编码器。图像编码器由一系列的Transformer模块组成,输入图像被分割成图块并通过这些模块进行处理。每个Transformer模块包含一个残差自注意力机制和一个残差全连接神经网络(FFN)。
最初,添加一个类别 Token 以聚合所有图像图块的信息,形成图像的全局表示。随后,每个Transformer模块处理一个输入嵌入,其中代表类别 Token 的嵌入,其余对应于图块 Token 的嵌入。最终,类别 Token 的输出嵌入与由文本编码器生成的嵌入进行对齐。
稳定扩散。图像扩散模型通过一系列降噪步骤从随机高斯噪声生成图像。通过在大规模数据集上进行训练,扩散模型稳定扩散[28]能够生成具有丰富细节的高质量图像。研究表明,稳定扩散中的特征能够精确捕捉局部细节信息。因此,作者探索使用稳定扩散来提升分割的局部细节。
注意力机制。CLIP和Stable Diffusion都利用了注意机制。具体来说,CLIP使用自注意力来建模图像块之间的关系。相比之下,Stable Diffusion结合了自注意力和交叉注意力,其中自注意力用于提取图像中的空间一致性,而交叉注意力允许模型结合外部条件信息(例如文本描述)来指导图像生成。注意机制(无论是自注意力还是交叉注意力)的输出是由 Query 、键和值通过以下方式计算的:
注意力图的表达式为:
其中 代表键 的特征维度。在自注意力机制中, Query 、 Key和Value 均来自图像的相同嵌入。相比之下,在交叉注意力机制中, Query 来自图像,而 Key和Value 则来自文本描述。
2.2.动机
为了将预训练的CLIP应用于开放词汇的分割,一种简单直接的方法是丢弃类别 Token ,仅使用 Patch Token 与文本嵌入生成像素级相似度图。然而,由于CLIP是在图像级分类任务上预训练的,这种简单方法通常由于 Patch 嵌入的弱空间一致性而实现较差的分割。为了解决这一问题,一些方法主要集中于修改最后一层以增强空间一致性。相比之下,作者提出从观察的两个方面出发,通过分层提升空间表示来优化分割效果。
作者观察到早期层的嵌入适合于提升空间一致性。首先,如图2(a)所示,早期层的patch嵌入保留了持续的空间信息。其次,如图2(b)所示,早期层嵌入与最后一层的嵌入具有相似性。这种相似性使得早期层和晚期层的信息融合变得有效。
预训练的Stable Diffusion能够生成高质量、细节丰富的图像。如图3所示,通过可视化CLIP和Stable Diffusion中的自注意力图,作者发现Stable Diffusion的注意力图能够有效地捕捉局部细节。这与CLIP中的注意力图形成对比,后者通常对更广泛的语义区域作出反应。这一关键观察表明,作者可以将Stable Diffusion中精细的空间信息整合,以提升CLIP生成的粗略分割质量。
2.3.框架
概述。受上述动机的启发,作者提出了一种新颖的分层方法用于开放词汇的语义分割。图4展示了CLIPer的整体架构,命名为CLIPer。CLIPer由两个互补的组件组成。
在第一个组件中,利用早期层融合模块生成具有更好空间一致性的块嵌入,然后根据块嵌入与文本编码器的文本嵌入之间的相似性生成粗分割图。在第二个组件中,作者使用Stable Diffusion的注意力图进行精细补偿。早期层融合。此模块旨在利用早期层的嵌入来提高空间一致性。
具体来说,对于一张图像,首先将其划分为块嵌入,然后将这些嵌入输入到一系列的Transformer块中。对于第个Transformer块,作者生成 Query 、Key 和Value 。
在此,LN表示层归一化,而投影 、 和 分别包含一个可学习的线性层。对于 Query 、Key 和Value ,第 个Transformer块的输出嵌入 通过以下方式计算得出:
FFN 。第n个transformer在方程6的注意力操作中生成的注意力图,记作。同样,作者可以生成所有transformer块(直到倒数第二层)的嵌入和注意力图,分别用两个集合表示:和。作者首先生成一个平均注意力图作为…
然后,作者将原始的最后一层的自注意力图替换为平均注意力图,然后将所有嵌入送入最后一层。与ClearCLIP类似,作者在最后一个transformer块中省略了 FFN 和残差连接,这样可以简化表示同时更好地对齐文本嵌入。因此,作者为不同层生成多个输出嵌入。
最后,作者计算了多个输出嵌入与CLIP文本编码器生成的文本嵌入之间的余弦相似度,并计算了平均相似度图。该平均相似度图被用作粗分割,通过将每个 Patch 嵌入映射到候选类别嵌入。
精细补偿。由CLIP生成的 Patch 级分割相对较粗糙,限制了分割精度。为了更好地补偿粗糙地图的局部细节,作者利用了Stable Diffusion的自注意力图,作者发现它在捕捉精细局部信息方面特别有效。这种局部保留特性对于细化 Patch 级分割的空间细节非常有益,提高了区分边界的能力。
具体而言,作者首先将图像与一个空的(空值)文本 Prompt 输入到Stable Diffusion中,获得了对应的高空间分辨率的多头自注意力图。作者称这些注意力图为,其中代表注意力头数,而表示Stable Diffusion中特征图的空间大小。然后,作者通过注意力头之间的矩阵链式乘法融合这些注意力图,其公式如下:
其中 表示第 个头的自注意力图。随后,作者利用融合的注意力图 对放大的粗糙分割图 进行细化。
最后,作者将上采样至输入图像的分辨率,得到精细粒度的像素级分割图。
3. 实验
在此,作者通过实验展示了CLIPer在多个数据集上的有效性。
3.1. 实验配置
数据集
作者在与大多数现有方法相似的七个数据集上评估CLIPer的性能:
-
考虑背景类别。作者使用PASCAL VOC(VOC)、PASCAL Context(Context)和COCO Object(Object);
-
不考虑背景类别。作者使用PASCAL VOC(VOC20)、PASCAL Context(Context59)、COCO-Stuff(Stuff)和ADE20K(ADE)。
在性能评估中,作者使用每个数据集的验证集。此外,对于弱监督语义分割,作者在VOC和COCO数据集的训练集上评估伪 Mask 生成性能。
指标。作者使用平均交并比(mIoU)来评估像素级分割精度。进一步地,作者采用平均精度(mAP)、F1分数、精确率(P)和召回率(R)来评估图像级分类性能。
实施细节
作者将在配备24G内存的单个RTX 3090上实施CLIPer。作者采用ViT-B和ViT-L作为 Backbone 网络,并使用Stable Diffusion V2.1 进行细致的补偿。
在Stable Diffusion中,作者从总共50个时间步中提取了45个时间步的注意力图。作者设置了包括与SCLIP和ProxyCLIP类似的类别描述文本 Prompt 。作者将所有输入图像的较短边调整至336像素,同时保持原始的宽高比,类似于ProxyCLIP。与[51]、[34]、[16]和[15]中使用滑动窗口策略不同,作者直接将整个图像输入到CLIP图像编码器,这提高了速度并简化了过程。
3.2. 与其他方法的比较
在mloU表中,作者对CLIPer与一些最先进的方法在各种数据集上的表现进行了比较。当使用ViT-B和ViT-L两种 Backbone 网络时,CLIPer几乎在所有这些数据集上都达到了最佳性能。
例如,在VOC数据集上使用ViT-L Backbone 网络时,SCLIP的mIoU得分为43.5%,ProxyCLIP的mIoU得分为60.6%,而CLIPer实现了mIoU得分69.8%。也就是说,CLIPer在VOC上比SCLIP和ProxyCLIP分别提高了26.3%和9.2%。
在ADE数据集上使用ViT-L Backbone 网络时,ClearCLIP和ProxyCLIP的mIoU得分分别为15.0%和22.6%,而CLIPer实现了mIoU得分24.4%。也就是说,CLIPer在ADE上相比ClearCLIP和ProxyCLIP分别提高了9.4%和1.8%。
关于类别分类和 Mask 预测。开放词汇语义分割可以看作是两个方面:类别分类和 Mask 预测。为了深入展示CLIPer在这两个方面上的优势,作者通过两个实验与其他方法进行了更多比较。
-
作者展示了图像 Level 的精确率和召回率对比,以显示识别图像中类别优势。
-
作者比较了在提供图像 Level 类别标签时的分割精度,展示了 Mask 预测的优势。
弱监督语义分割旨在基于训练集的图像 Level 类别标签训练模型。通过将CLIPer与弱监督方法进行比较,作者可以展示在 Mask 预测方面的方法优势。
在表2中,作者计算了所有方法在图像级分类上的得分,并使用mAP、F1、P和R来计算结果。CLIPer在所有这些指标上均取得了最佳性能。这表明,CLIPer在类别分类上表现更优,这对于开放词汇语义分割非常有用。
表3比较了CLIPer与一些用于伪 Mask 生成的弱监督语义分割方法,其中给出了 GT 图像 Level 的类别标签。
与这些弱监督语义分割方法相比,CLIPer实现了最佳性能。例如,CLIPer比CLIP-ES和iSeg分别高出6.1%和1.7%。这表明,CLIPer可以提高 Mask 预测,从而提升开放词汇语义分割。
推理时间。表4比较了推理时间和准确率。与ClearCLIP相比,CLIPer*具有更快的速度和更高的mIoU。与ProxyCLIP相比,CLIPer*具有更快的速度和可比的mIoU。此外,CLIPer*通过细粒度补偿显著提升了CLIPer*的性能。
定性结果。图5展示了在VOC、上下文和物体上的定性比较示例。与[9]、[15]、[16]等方法相比,CLIPer具有更精确的分割图和更准确的分类。
例如,CLIPer在自行车上具有更精细的分割,在第二列中对行人进行了正确的分类,以及在第五列中对沙发进行了精确分割。
3.3.消融研究
不同模块的影响。表5展示了将不同模块整合到 Baseline 模型中的结果。 Baseline 模型最终将原始自注意力图在最后一层替换为值到值注意力图,并移除了 FFN (FFN)和残差连接。在VOC、上下文和目标数据集上, Baseline 模型分别实现了mIoU得分、和。
当加入早期层融合(ELF)模块后,其在VOC、上下文和目标数据集上的mIoU得分分别达到、和,相较于 Baseline 模型分别提升了、和。仅使用细粒度补偿(FGC)模块时,其性能相较于 Baseline 模型分别提升了、和。
当将EFL和FGC模块整合后,三个数据集上的整体提升分别达到、和。这显著表明,作者提出的模块能够提升开放词汇分割的性能。
早期层融合效果。表6比较了早期层融合与一些自注意力操作。早期层融合模块融合了早期层的块嵌入和早期层的注意力图。在顶部部分,作者比较了早期层融合注意力与这些自注意力操作,它们都以上一层嵌入作为输入。与这些自注意力操作相比,早期层融合注意力具有最佳性能。
例如,在VOC、Context和Object数据集上, Query - Query 注意力实现了mIoU分数为50.1%、22.5%和28.7%,而早期层融合注意力实现了mIoU分数为58.6%、33.1%和38.4%。也就是说,早期层融合注意力分别比 Query - Query 注意力高出8.5%、10.6%和9.7%。
在底部部分,作者展示了将早期层嵌入传递给最后一层的影响。当将早期层嵌入整合到早期层注意力机制中时,在VOC、上下文和目标方面分别提升了2.6%、1.2%和1.2%。作者观察到,使用早期层嵌入还可以提升现有自注意力操作的性能。例如,当与值-值注意力结合时,在VOC、上下文和目标方面分别提升了3.6%、2.9%和1.1%。
细粒度补偿的影响。表7展示了在Stable Diffusion中融合多头注意力图以实现细粒度补偿的不同策略,包括单个头(Single)、平均所有头(Mean)以及通过矩阵乘法结合所有头(multiplication)。与 Baseline 相比,这三种策略都能提升性能,证明Stable Diffusion中的注意力图可以改善基于CLIP的分割。在这些策略中,矩阵乘法表现最佳,因此被选为作者最终的设置。
图6展示了细粒度补偿前后的可视化示例。在细粒度补偿之前,(b)中的注意力图提供了目标的大致空间结构信息。通过使用作者的细粒度补偿,(c)中的注意力图能够提供围绕目标轮廓的更准确响应。因此,与(d)相比,使用作者的细粒度补偿在(e)中得到的分割图更加精确。这表明,作者的细粒度补偿可以通过早期层融合来改善粗分割图的局部细节。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。