语义分割|Rethinking Semantic Segmentation: A Prototype View

论文地址:https://arxiv.org/abs/2203.15102

代码地址: https://github.com/tfzhou/ProtoSeg

前言

当前语义分割方式大都基于FCN或注意力机制的网络设计和基于参数化的softmax或像素查询的掩码解码策略,可以被归结为使用参数可学习模型(像是通过softmax学习或者Transformer中使用的向量查询,其参数都是可学习的),但是参数学习方式存在一定的局限性,本文提出基于不可学习圆形的非参数化替代方式。本文模型将每个类别表示为一组不可学习的原型,完全依赖于该类别中几个训练像素的平均特征,通过与原型接近程度的非参数化检索来实现密集预测,可以使模型能够直接塑造像素嵌入空间,并通过优化嵌入与原型之间的排列,使得恒定数量的参数处理任意数量的类别。

摘要 

现有的基于FCN的模型通常在像素级特征上应用Softmax参数进行密集预测;基于Transformer的“非FCN”模型则遵循标准的掩码解码机制,通过墨迹的视觉嵌入估计softmax分布,甚至有研究者推测学习的查询向量以捕获类属性,但是该方式缺乏深入分析。

作者提出值得注意的问题:

1、基于FCN和基于Transformer的方式存在的关系和区别是什么?

从基于softmax到基于像素查询,从基于FCN到基于注意力,都属于一个大类:基于可学习原型的参数化模型。考虑一个有C个语义类别的分割任务。大多数现有的努力都是为了直接学习C类的原型--softmax权重或查询向量--用于参数化、像素化的分类。(摘要内的回答)

2、基于Transformer的可学习的查询向量的确能捕获数据的部分内在属性,能否有更好的实现方式?

3、基于参数化范式的可学习原型的局限性是什么?

①每个类只有一个单一的原型被学习,不足以描述丰富的类内差异,只依靠完全参数化的方式学习该类,导致其代表性不足。

②若要将H×W×D的图像处理为H×W×C的图像,至少需要D×C的参数,导致模型的泛化性不好。

③使用交叉熵损失的时,只关注类内和类间距离的相对关系,而忽视类内紧凑性(像素和原型之间的实际距离)

4、如何解决这些问题问题3的局限性?

文章提出一种基于不可学习原型的非参数分割框架。每个类由一组原型代表,很好地捕捉类特征和类内差异;非参数化的学习使得模型的可解释性被增强,泛化能力也被增强;通过原型代表的度量学习,像素嵌入空间的构造会更好,有利于分割。

语义分割模型现有参数化的原型学习方法

softmax参数化投影:几乎所有基于FCN和Transformer结构采用,主要包括两个可学习得部分:用于密集视觉特征提取的编码器φ;将像素特征投射到语义分割标签空间的分类器ρ,对于每一个像素例子i,它的嵌入i∈RD,从φ中提取,输入ρ进行C-way分类, 其中p(c|i)∈[0,1]是i被分配到类c的概率,ρ是一个像素级线性层,参数化为W= [w1,···,wC],为简洁起见,省略了偏置项:

像素查询:更加Transformer的模型,学习一组查询向量,并生成概率分布。

 基于原型的分类:基于原型的分类很早就被研究,方法直观通过对比样本与原型来获得类别的度量函数,一般是L2距离。

 以上方法的参数都是可以学习的,除了不同的距离度量方式,基于像素查询的方法可以将查询馈入交叉注意解码器进行跨类上下文狡猾,而不是基于softmax的方法只利用softmax层内学习的类权重。

但参数化学习存在以下被忽视的问题:

1、基于原型的学习,原型应该是类的典型,但现有算法通常只通过一原型来描述每个类,因此缺少类内变化,对类内存在的差异性不够友好,此外,原型以完全参数化的方式直接学习,没能考虑其代表性。

2、可学习参数会随着类数的增加而增长,阻碍模型扩展性。

3、现有算法通常通过直接优化像素级预测的准确性(例如交叉熵损失)来监督密集分割表示,忽略了已知的归纳偏差,阻碍特征学习。

基于非参数语义分割的非可学习原型

非参数分割模型,通过一组不可学习的类原型进行密集预测,并通过原型锚定的度量学习方案直接监督像素嵌入空间。

 基于非可学习原型的像素分类:该非可学习模型中,loss可以是用来让像素嵌入更接近其类原型,但是仅仅使用单一的loss是不够的,只考虑了像素与类的距离,忽视了类内的像素-原型关系,例如,对于嵌入像素,只会使其靠近对应的原型,但是并不会关注此类内的其他像素嵌入,或者说会与此类内的其他像素(因为原型不应该只有一种)尽可能地远离,这样模型只会在原型这一个点周围嵌入,此类内的其他具有代表性的原型周围并未嵌入任何像素(当前讨论的是每个类只有一个原型的情况);由于像素-类距离在所有类之间被归一化,所以只会优化类内和类间距离的相对关系,而不是直接正则化像素和类之间的余弦距离,例如,当类内距离相比于类间距离较小时,惩罚就会很小,但是类内距离的真实值可能仍然不尽人意。

类内在线聚类:将同一类中的像素样本分配给属于该类的原型,然后根据分配更新原型,这会迫使模型发现类内区分模式,同时丢弃特定于实例的细节。由此选出的原型就是对应集群中心相应类的典型。在线进行聚类因为可以扩展到大量数据,相对于需要在整个数据集上进行多次传递以进行特征计算的离线聚类更加适合数据量大的任务。通过像素的 one-hot 编码进行像素间的相似度最大化以匹配相对应的原型并进行优化,同时作者在其中加入了 unique assignment constraint 以确保每个像素只被分配给一个类内的原型,此外还加入了 equipartition constraint ,对batch内的数据做均分,以确保类内的每个原型都有被分配到batch 带来的像素,防止平凡解,即所有输入的嵌入像素都被分配给一个类内的原型。之后,又加入了soft assignment,即嵌入的像素保留了对所有分类的概率。

 像素原型对比学习:经过了上面的处理,像素会被分配到对应类的特征空间中,因此我们很自然地需要一个对应于原型分配的训练目标,最大化原型分配的后验概率,这可以视为像素原型对比学习。就是使像素与其正样本更加相似,与负样本更加不相似,相比于之前的模型,作者的模型只需要原型参与计算,也就是说不需要那么多的负样本,能够减少计算量。

像素-原型距离优化:上文介绍了减小像素-类之间相对距离与像素-原型之间绝对距离的惩罚项,增加了类间、簇间的差异性,但是并没考虑到簇内的改进措施,来让同一原型的像素特征更加紧凑,因此在这里增加了直接减小嵌入像素与其对应类原型之间距离的惩罚措施,可以加强原型周围像素嵌入的紧密型,让不同的类原型(同类/异类)之间距离更远,能让模型更好地应对异常值,增强鲁棒性。

网络学习与原型更新:整个模型是一种非参数化的方法,通过直接优化像素嵌入空间来学习语义分割,之所以称为非参数是因为其直接从训练样本像素本身构建原型表示,因此,通过最小化所有训练样本的组合损失(SGD Optimizer),就可以训练出特征提取器的参数。同时,不可学习的原型在SGD更新中不会被学习,而是作为簇中心参与损失计算(原型来自在线聚类的结果,而不是SGD优化的结果),而且在每次在线聚类后,都会让原型不断演化。有了原型,那么分割就可以视为根据像素与原型的距离相似度来分配种类的过程。

总结

以前的模型多数都是为了学习参数化的模型,来进行逐像素分割,本文的模型相反,使用了一个非参数化的框架,将嵌入空间中的一些典型点选择为原型,并使用其进行分割。

具有如下优势:

  1. 原型具有显示的表示,易于理解
  2. 非像素的方式更加具有泛化性
  3. 直接针对嵌入空间的优化,简单易懂

参考:https://zhuanlan.zhihu.com/p/551922401

猜你喜欢

转载自blog.csdn.net/weixin_64064486/article/details/128031936