CLIP-S^4:Language-Guided Self-Supervised Semantic Segmentation论文阅读笔记

摘要

作者提出了CLIP-S4,借助自监督像素表示学习和V-L模型实现各种语义分割任务,不需要使用任何像素级别标注以及未知类的信息。作者首先通过对图像的不同增强视角进行像素-分割对比学习来学习像素嵌入。之后,为进一步改善像素嵌入并实现基于自然语言的语义分割,作者设计了由V-L模型指导的嵌入一致性以及语义一致性。与SOTA的无监督/基于语言的语义分割方法相比,作者的方法在四个benchmarks上取得了突出的表现,且在未知类别识别方面显示出了大幅度的优越性。

方法

截屏2023-05-22 11.22.15.png
文章的主要方法实际上就是借助自监督对比学习以及CLIP的指导来训练一个输出为pixel embedding的函数。

Pixel-Segment Contrastive Learning

embedding function将每个像素p投影为d维空间的一个向量zp,之后对向量进行聚类得到|S|个区域,区域的embedding vs表示为该区域所有向量的平均,同时进行归一化处理。对于每个像素p,所有的segment分为两个集合S+以及S,其中S+包含所有和p在同一视觉连贯区域内的segment,这里的视觉连贯区域可以由超像素等方法得到。作者这里还使用了数据增强,使模型根据不同的增强图像生成一致的pixel embedding。因此,不同增强图像中和像素在同一个区域的segment也都属于S+,其它所有segment属于S。对比损失如下:

Lt(p)=logSS+exp(sim(zp,vs)κ)SS+Sexp(sim(zp,vs)κ)

Vision-Language Model Guided Consistency

为了得到语言驱动的分割模型,同时改善pixel embedding的质量,作者使用CLIP指导embedding function的训练,使其output space与CLIP的embedding space尽可能接近,考虑的一致性分为如下两种:
Embedding Consistency
作者首先通过MaskCLIP的方式对CLIP的image encoder进行修改得到clip-i(·),直接使用CLIP的text encoder作为clip-t(·),之后获取不同增强图像的pixel embedding(具体实现是先获取pixel embedding,然后对pixel embedding施加增强效果),最后最小化CLIP embedding space与segment embedding space的距离,目的是缓解CLIP的pixel embedding的噪声带来的影响。最终,通过最大化每个segment对应的segment embedding(vs)与CLIP embedding(is=psclipi(s)/|s|)从而使两个空间相一致。
Semantic Consistency
semantic consistency的作用是让模型给出与CLIP相同的语义类别预测结果(根据语义类别进行聚类可以生成更好的pixel embedding),整体思想与伪标签类似,对于每个segment使用CLIP生成目标类别的伪标签(包括已知类和未知类),伪标签通过比较segment embedding与类别在CLIP embedding space的原型的相似度得到,即ys=argmaxlL(sim(is,cl)),损失使用CE计算:Ls(s)=H(ys,ψ(vs)),其中ψ(vs)=softmax(sim(vs,C))
Target Class Prototypes
类别原型是类别在embedding space的表示,由已知类Ck={c0,...ck1}和未知类Cu={ck,...ck+u1}(论文原文这里的表示有点问题)。
对于已知类,一个自然的想法是使用text embedding,然而CLIP的text embedding和对应的image/pixel embedding在整个embedding space中仍然有很大的差距。因此,作者使用CLIP pixel embedding的原型来表示每个已知类,首先得到一系列的text embedding,之后通过修改后的encoder得到CLIP pixel embedding,将pixel embedding聚类为segment再取平均,得到每个segment的embedding is^,之后对于每个类别,计算该类的text embedding与所有segment embedding的相似度,取相似度最大的m个作为该类的原型。
对于未知类,作者通过采样所有segment embedding来随机初始化未知类的原型。在训练期间,通过最小化分配到该类的segment与原型的距离来对原型进行更新。
截屏2023-05-23 11.54.53.png

训练与推理

训练期间通过三个损失来更新模型的参数。推理时使用训练好的模型生成pixel embedding,用于各种下游任务。

实验

实验主要进行了三部分:Language-Driven Semantic Segmentation、Unsupervised Semantic Segmentation以及Instance Mask Tracking。
以Language-Driven Semantic Segmentation为例:
截屏2023-05-23 12.47.37.png
需要注意的是这里对比的GroupViT等方法的训练策略与文章方法有所不同,作者直接选取了这些方法最好的结果进行对比。同时,作者将Pascal Context的数据按照类别划分为四个fold来模拟unknown class的情景:

截屏2023-05-23 12.51.07.png
embedding的分布:
截屏2023-05-23 13.03.02.png

消融实验:
截屏2023-05-23 13.11.27.png
截屏2023-05-23 13.12.29.png

posted @   脂环  阅读(337)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
主题色彩