来源:市场资讯

(来源:小白 小白学视觉)

今天给大家带来的是来自计算机视觉顶级会议的一篇新成果。本文针对语义分割任务中常见的类别不平衡以及图像间的类别分布不一致的问题,提出了一种新的并且很有效的解决办法——扩展上下文感知分类器。

论文信息

题目: Classifier Enhancement Using Extended Context and Domain Experts for Semantic Segmentation

基于扩展上下文与领域专家的分类器增强用于语义分割

作者:Huadong Tang, Youpeng Zhao, Min Xu, Jun Wang, Qiang Wu

一、核心问题:普通分类器的困境

在语义分割的任务里,模型的最后一部分一般就是一个分类器,它的作用就是给每一个像素点打上一个语义标签。该分类器一般为一个简单的线性层,在训练之后就固定住了它的权重。

但是该设计存在着两个固有的问题。其次,它不能够去适应每一张输入图片所具有的不同类别的分布情况。比如一张街道的照片里会有天空、建筑物、人和车,另一张室内照片里面则会有很多家具、电器以及地面。固定好的分类器参数很难同时去优化这两种完全不同的场景。

第二个问题是类别不平衡。在ADE20K这样的数据集里,天空、墙壁等类别的像素数量很多,但是浴缸、公告板之类的类别却很少。模型自然地会偏向于学习和优化大多数类别特征,从而使得对于少数类别的识别能力非常差。

目前的方法,比如加权损失函数或者基于原型的方法虽然有一定的效果但是不能从根本上解决问题,并且还会增加额外的计算量。本文就是针对上述问题进行研究的。

二、核心思想:融合全局与局部上下文

论文的主要创新之处就是提出了一个可以扩大上下文感知分类器的方法。这个想法很直观:由于单个分类器参数很难处理各种各样的图像内容以及类别分布的变化,所以我们可以给它提供更多的背景信息来让它动态地学习。

第一,我们要建立一个记忆库。记忆库在所有的数据集中进行学习,并且给每个语义类别分配一个代表性的特征向量,即该类别的整个世界的平均脸。它提供的是全局的数据集级别的上下文信息。

图3
打开网易新闻 查看精彩图片
图3

记忆库更新的过程。它是用一种基于动量的方法来不断整合每一个训练批次里各种类别的特征中心,进而产生一个稳定的、完整的数据集级别的类别表示。*

第二步就是把每张图片的类别中心都提取出来。对于一个给定的输入图像,我们会计算出它所包含的所有类别平均特征。这是局部的、关于图片级别的上下文信息,表示出这张图片中各种物体的样子。

最后我们把两个信息源合并在一起。将记忆库中全局类别的表示以及当前图像局部类别中心进行拼接,在此基础上使用一个轻量级的投影网络就可以得到一个针对当前图像的动态分类器。该分类器具有普遍性的类别知识,并且还包含了当前场景具体的信息。

三、关键技术:师生网络与精细校准

如果只是一般的合并的话,在推理的时候仍然存在一个问题,即我们不能得到真实的标签来进行准确的图像级别的类别中心计算。论文用师生网络范式来解决这个问题。

教师网络在训练的时候就是开着挂的,可以利用真实像素级别的标签来得到非常准确的类别中心。该中心和记忆库结合在一起就形成了一个强大的教师分类器。

学生网络就是我们要用到的实际模型。它没有真实的标签,只能根据模型本身最初分隔的结果(一般比较粗糙)来估计类别的中心。该估算值和一个记忆库一起被整合起来,从而产生出学生的分类器。

图2
打开网易新闻 查看精彩图片
图2

ECAC方法的大致结构如下。包括了动态记忆库、师生网络结构和输出校正模块等部分,一起组成了一个加强版的分类器。*

训练主要依靠的是知识蒸馏。使学生的分类器输出尽量和老师的分类器输出相似。这样学生模型就学会了一种方法,在没有真实的标签的情况下也可以产生出接近开挂老师水平的增强型分类器。这就相当于把领域专家(教师)的知识迁移到了实用模型(学生)上。

另外,该文还设置了两个巧妙的微调方法。

一个是输出校准。在分类器产生预测分数之后,再添加一个可以学习的线性变换层来对每一个类别的缩放因子以及偏移量进行学习。可以动态地改变最后输出的逻辑值,从而有效地减轻由于类别样本数量不平衡所造成的预测偏差。

另外一个是类内方差损失。它使学生模型学到的特征在类别内和教师模型学到的一样紧凑。从而提高特征的区分能力,使得同一种类别的像素特征更加集中,不同的类别之间的特征被分开来。

四、实验结果:显著且通用的性能提升

该方法被设计成一个可以轻松插入到各种主流分割模型中的轻量级模块,比如FCN、PSPNet、DeepLabV3+以及UperNet等。

在ADE20K、COCO-Stuff10K以及Pascal-Context等众多权威基准数据集上进行的实验结果表明,ECAC模块可以带来明显的性能提高。

表1
打开网易新闻 查看精彩图片
表1

  • 在不同的骨干网络以及数据集上得到的量化的结果。加入ECAC模块之后,模型的平均交并比指标有全方位、显著性的提高。*

另外,这样的提高对一些类别更为显著。如上表所示,在ADE20K数据集里,对于样本较少的类别,ECAC所带来的是最大的性能提升,这也进一步证实了它在处理类别不平衡方面所起的作用。

表8
打开网易新闻 查看精彩图片
表8

ADE20K数据集中按照类别频率进行分组之后的性能分析。ECAC对于中等以及少数类别的提升效果最好。*

从视觉效果上来看,ECAC可以更加精确地分隔出细节以及稀有物体。比如,在下图中用虚线框出来的部分,基线模型常常把少数类物体错误地分类或者分割得很模糊,但是加上ECAC之后,分割的结果就变得很清楚了。

打开网易新闻 查看精彩图片

ADE20K数据集上定性的比较。ECAC可以更准确地把毛巾架、画等细节物体分开来。*

打开网易新闻 查看精彩图片

COCO-Stuff10K数据集上定性的比较。ECAC对于冲浪板、网球拍等物体的分割效果更好一些。*

五、方法优势与未来展望

本文工作所取得的成绩十分显著。它以分类器本身为切入点,利用动态融合多层次上下文信息的方式提高模型尤其是对于难例的区分能力。整个框架的设计很优美,增加的参数以及计算开销都非常少,性价比很高。

表6
打开网易新闻 查看精彩图片
表6

计算复杂性分析。和其它类似的算法相比,ECAC用很少的额外计算量就得到了很大的精度提高。*

但是所有的办法都有它的局限性。我们还提到,在遇到极端长尾分布或者带噪标签的情况之下,目前的记忆库方式仍然存在一定的局限性。未来的方向可以是探索更加灵活的记忆更新策略、或者使用对比学习来提高特征的鲁棒性。

六、总结

本文提出了一种新的方法来提高语义分割分类器的效果。它用一个动态的记忆库来保存全局的知识,再把图像的局部信息和全局的知识结合起来就形成了一个动态的分类器,最后用师生蒸馏以及精细的校正损失来改善整个的学习过程。实验已经证明了它的有效性和普适性以及高效率。

该任务属于语义分割,在其他的类别不平衡的视觉任务中也可以使用。它告诫我们,在模型最后一步的设计上做足功夫的话,也会得到出乎意料的好结果。