首页 > 其他分享 >CLIP-S^4:Language-Guided Self-Supervised Semantic Segmentation论文阅读笔记

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

时间:2023-05-23 13:23:01浏览次数:48  
标签:Segmentation Semantic CLIP space 像素 embedding segment pixel

摘要

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

\[\mathcal{L}_t(p)=-log\frac{\sum_{S\in\mathcal{S^+}}exp(sim(z_p,v_s)κ)}{\sum_{S\in\mathcal{S^+}∪\mathcal{S^-}}exp(sim(z_p,v_s)κ)} \]

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(\(v_s\))与CLIP embedding(\(i_s=\sum_{p\in s}clip-i(s)/|s|\))从而使两个空间相一致。
Semantic Consistency
semantic consistency的作用是让模型给出与CLIP相同的语义类别预测结果(根据语义类别进行聚类可以生成更好的pixel embedding),整体思想与伪标签类似,对于每个segment使用CLIP生成目标类别的伪标签(包括已知类和未知类),伪标签通过比较segment embedding与类别在CLIP embedding space的原型的相似度得到,即\(y_s=argmax_{l\in L}(sim(i_s,c_l))\),损失使用CE计算:\(\mathcal{L}_s(s)=H(y_s,\psi(v_s))\),其中\(\psi(v_s)=softmax(sim(v_s,C))\)
Target Class Prototypes
类别原型是类别在embedding space的表示,由已知类\(C_k=\{c_0,...c_{k-1}\}\)和未知类\(C_u=\{c_{k},...c_{k+u-1}\}\)(论文原文这里的表示有点问题)。
对于已知类,一个自然的想法是使用text embedding,然而CLIP的text embedding和对应的image/pixel embedding在整个embedding space中仍然有很大的差距。因此,作者使用CLIP pixel embedding的原型来表示每个已知类,首先得到一系列的text embedding,之后通过修改后的encoder得到CLIP pixel embedding,将pixel embedding聚类为segment再取平均,得到每个segment的embedding \(i_{\hat{s}}\),之后对于每个类别,计算该类的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

标签:Segmentation,Semantic,CLIP,space,像素,embedding,segment,pixel
From: https://www.cnblogs.com/lipoicyclic/p/17424347.html

相关文章

  • clip-path 剪切不规则路径后,阴影不生效问题
    正常来说:我们使用box-shadow都是能够生效的,但由于使用了clip剪切功能,使用阴影被剪切了所以我们在使用clip的时候只需要超出path就行了,比如:height:50px;width:100px;background:antiquewhite;clip-path:polygon(50%10%,0%100%,100%100%);box-......
  • 在ubuntu 下怎么将eclipse添加到应用,同时有可以通过终端打开。
    1:将ubuntu添加到应用程序的方法:在终端中敲入:sudogedit/usr/share/applications/Eclipse.desktop在打开的GEdit中输入以下文本[DesktopEntry]Name=EclipseComment=Eclipse3.42IDEExec=/usr/java/eclipse/eclipse   <—这里改成你的eclipse的安装位置Icon=/usr/java/ecli......
  • Zclip:复制页面内容到剪贴板兼容各浏览器
    WEB开发中,要让用户复制页面中的一段代码、URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,只需要轻轻一点这个复制按钮,内容将会被复制,然后用户可以粘贴到想粘贴的地方。 本文将结合实例讲解如何使用一款基于jQuery的插......
  • 【开发者指南】如何在MyEclipse中编辑HTML或JSP文件?(一)
    MyEclipsev2022.1.0正式版下载MyEclipse技术交流群:742336981欢迎一起进群讨论如果您有HTML或JSP文件要编辑,这里将介绍如何编辑。查找以下信息:编辑源代码大纲和属性视图参数页面该功能在MyEclipse中是可用的。一、HTML/JSP编辑器要编辑HTML或JSP文件,请执行以下操作当......
  • Eclipse使用mybatis generator自动生成代码
    一、写在前面           Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。通过在Eclipse中集成mybatis-generater插件,自动生成Mybatis相关的model、dao、Mapping......
  • GDI-ExtSelectClipRgn将指定区域与当前剪辑区域组合在一起
     HRGNhrgn1;HRGNhrgn;HRGNhrgn2;HRGNhrgn3;HDChdc;HBRUSHhbr;voidCGdiPlusDlg::OnBnClickedButton10(){hdc=::GetDC(m_hWnd);hrgn1=CreateRectRgn(10,10,200,200);//创建矩形区域intn=SelectClipRgn(hdc,hrgn1);//选择剪切区域......
  • GDI-OffsetClipRgn移动剪辑区域
     HRGNhrgn1=CreateRectRgn(10,10,200,200);//创建矩形区域HDChdc=::GetDC(m_hWnd);intn=SelectClipRgn(hdc,hrgn1);//选择剪切区域intn1=::OffsetClipRgn(hdc,50,0);//移动剪辑区域/*参数1:HDChdc设备环境句......
  • GDI-IntersectClipRect创建一个新的剪裁区域,他是前一个剪裁区域与一个矩形的交集
     HRGNhrgn1=CreateRectRgn(10,10,200,200);//创建矩形区域HDChdc=::GetDC(m_hWnd);intn=SelectClipRgn(hdc,hrgn1);//选择剪切区域intn1=::IntersectClipRect(hdc,100,100,300,300);//创建一个新的剪裁区域,他是前一个剪......
  • GDI-ExcludeClipRect创建一个新的剪辑区域,该区域由现有剪辑区域减去指定的矩形组成
     HRGNhrgn1=CreateRectRgn(10,10,300,300);//创建矩形区域HDChdc=::GetDC(m_hWnd);intn=SelectClipRgn(hdc,hrgn1);//选择剪切区域intn1=::ExcludeClipRect(hdc,200,200,300,300);//创建一个新的剪辑区域,该区域由现有剪......
  • 创建支持eclipse的多模块maven项目
    Maven命令行来创建项目[url]http://everlook.iteye.com/blog/1446672[/url]一些命令说明:直接创建mavenweb项目[color=blue]mvnarchetype:create-DgroupId=cn.everlook.myweb-DartifactId=myweb-DarchetypeArtifactId=[b]maven-archetype-webapp[/b......