KAUST & Meta AI 新作 | ZeroSeg: 无需语义标签和文本信息,开放词汇语义分割一把梭哈!

导读

论文:《Exploring Open-Vocabulary Semantic Segmentation without Human Labels》

TL;DR : 今天主要为大家介绍一种名为ZeroSeg的新方法,用于训练开放词汇的零样本(zero-shot)语义分割模型。该方法的特点在于无需使用人工标注的数据进行模型训练,因此可以扩展至大型未标注的数据集。

概述ZeroSeg模型采用预训练的视觉-语言模型(如CLIP)作为"教师模型 ",将其学习到的视觉概念提炼到一组分割令牌(segment tokens)中,每个 token 都概括了目标图像的一个局部区域。这个过程不需要任何人工标签,因此能够将 CLIP 等模型的知识直接迁移到语义分割任务上。

模型结构和优化方法 :ZeroSeg 模型在处理像素级别的监督问题上,提出了一个有效的像素分组和分类方法。该方法通过自动化地将像素分组到更有意义、形状不规则的 segment 中,从而更容易地从 CLIP 视觉编码器中提取和提炼语义信息。此外,为了提高训练效率,模型还引入了一个掩码自编码器(MAE)。

模型性能 :使用仅 ImageNet 1k 数据集进行训练的 ZeroSeg,其性能与那些使用人工标签训练的模型相当。在 PASCAL VOC 2012,PASCAL Context,和 COCO 数据集上的表现分别达到了 40.8,20.6 和 20.4 的 mIoU,这些结果与那些在 26M 和 20M 图像-文本对上进行预训练的模型如 GroupViTMaskCLIP 相当。此外,ZeroSeg 在更大词汇量(1000类)的语义分割任务上也有良好的表现。

总的来说,这项研究为开放词汇的语义分割问题提供了一种有效的解决方案,该方案既无需人工标签,又能通过对预训练的视觉-语言模型的知识提炼,实现了零样本(zero-shot)的语义分割。此外,该模型还具有训练效率高、性能优越等特点。

方法

总体架构 : ZeroSeg 是一种用于进行语义分割的网络结构。其主要通过蒸馏 从预训练的视觉-语言模型CLIP中获取的知识来执行任务。ZeroSeg的主要组成部分包括一个ViT编码器和两个头部,包括解码器头部分割头部

ViT 编码器 : 当给定图像时,编码器将其分为非重叠的patch。编码器从每个补丁中选择一部分视觉令牌作为输入,并生成相应的潜在表示。

解码器头部 : 解码器利用潜在表示重构被 masked 的图像像素,即 MAE,通过最小化重构图像和原始图像之间的均方误差(MSE)进行训练。

分割头部 : 分割头部的输出被转化为 segment token,用于通过蒸馏进行语义分割的学习。具体来说,ZeroSeg 从预训练的 CLIP 视觉编码器中提取多尺度图像特征 ,并将它们蒸馏到这些 st 中。这里主要使用两种蒸馏方法:多尺度特征蒸馏损失分割匹配损失

多尺度特征蒸馏损失: 基于 L1 蒸馏损失,其操作在全局特征和多尺度视觉特征之间。它通过把输入图像划分为多尺度视图(如2x2和3x3网格)并将这些视图传递给预训练的 CLIP 视觉编码器以产生视觉特征。

分割匹配损失: 这是一种用于执行局部区域特征和段令牌之间蒸馏的方法。对于每个 st,这种损失函数搜索其最近的局部区域,并最小化它们之间的 L1 距离,从而增加分割部分和视觉概念之间的语义一致性。

实验

可以看出,ZeroSeg 只需依赖再 ImageNet-1k 上预训练的 ViT 权重,而无需具体语义标签,借助 CLIP 等现有的视觉-语言模型即可获得性能优异的零样本分割性能。

从消融实验的结果来看,多尺度特征提取在其中起到举足轻重的作用,本质上还是学习一副图像的不同视图。

可视化结果也能突出多尺度匹配的作用,避免因感受野覆盖不足而引起的"空洞"问题。

与其它现有的同类分割器相比,对复杂场景的语义剖析能力也是杠杠的!

总结

本文展示了一个不依赖人工标签,只通过从预训练模型中蒸馏知识就能进行高效语义分割的模型。总的来说,作者通过 ZeroSeg 证明了可以通过从预训练的通用视觉-语言模型中传递知识来有效地训练语义分割模型,同时希望这将为如何利用最近的基础模型研究成果来帮助像语义分割这样的像素级下游任务开辟一条新的途径。

然而,我们可以容易看出一个弊端,因为该模型依赖于预训练的大型视觉语言模型,这些模型可能会在训练数据中存在的偏见。因此,如小心筛选训练数据等缓解措施对于确保我们模型的合规使用至关重要。

写在最后

欢迎对计算机视觉相关研究感兴趣的童鞋扫描屏幕下方二维码或者直接搜索微信号 cv_huber 添加小编好友,备注:学校/公司-研究方向-昵称,与更多小伙伴一起交流学习!

相关推荐
tinker在coding1 分钟前
Coding Caprice - Linked-List 1
算法·leetcode
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_5 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子5 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡5 小时前
滑动窗口 + 算法复习
数据结构·算法
Lenyiin5 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码6 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
scan7246 小时前
LILAC采样算法
人工智能·算法·机器学习
菌菌的快乐生活6 小时前
理解支持向量机
算法·机器学习·支持向量机