【导读】一直以来,尽管语义分割、实例分割以及全景分割任务之间都有某种潜在的联系,但它们通常采用不同的网络框架来解决。本文首次探讨了语义分割中的卷积核概念是否同样适用于实例分割,以及更广泛的全景分割。为此,商汤&南洋理工大学提出了一个统一、简单、有效的框架K-Net。具体而言,它可以通过一组动态权重更新的卷积核来对实例和语义类别信息进行正确分割,然后,采用互相匹配的策略为每个卷积核分配学习目标,并进行端到端的训练。K-Net在全景分割任务上超越了所有当前最先进的单模型,并在MS COCO上实现了52.1% PQ,在语义分割任务上也超越了所有的单模型,并在ADE20K上实现了54.3% mIoU。最后,在实例分割任务上,它在MS COCO数据集上的性能表现与Cascade Mask R-CNN相当,但是,推理速度却比它快60%-90%。
在本文中,我们首次尝试利用卷积核的概念来构建一个统一而有效的框架,该框架可以连接看似不同的图像分割任务(语义、实例和全景)。我们的方法称为K- net(“K”代表核)。它从一组随机初始化的卷积核开始,卷积核根据当前的分割任务进行更新学习,即不断学习到语义类别信息的语义卷积核和实例信息的实例卷积核(如图1-(b))。此外,将语义卷积核和实例卷积核进行简单组合,自然地可以进行全景分割任务(如图1-(c))。在神经网络前向传递中,卷积核通过对输入特征图像进行卷积操作,得到相应的分割预测结果。K-Net的通用性和简洁性主要通过两个新颖的模块实现的。
我们主要基于一种通用的卷积核视角来考虑各种分割任务。我们提出的K-Net可以使用一组卷积核将每个像素分配给一个潜在的实例或一个语义类别。为了增强卷积核的识别能力。本文主要使用以下两个策略:
尽管在各种分割任务上,我们对“具有语义信息的组”的定义不同,但基本上都是将每个像素分配给预定义的某个具有语义信息组。通常假设图像中的组数是有限的,所以我们可以将一个分割任务的最大组数设为N。例如,在语义分割中有N个预定义的语义类别信息组;在实例分割中最多有N个对象实例;在全景图像分割,N是图像中物体类别和实体的总数。因此,我们可以使用N个卷积核将一幅图像划分为N组,每个卷积核负责找到属于其对应信息组的像素。具体而言,给定B张输入图片,对于由深度神经网络生成的特征图,我们只需要N个卷积核与F进行卷积就可以得到相应的分割预测:
在语义分割中,每个卷积核负责在图像中找到所有相似类别信息的像素。而在实例分割中,每个像素组对应一个对象。但是,在这之前,实例分割是通过其它组件或者后处理等方式来对实例对象进行分割。这里,我们使用的是卷积核来对实例对象进行分割。所以,本文也是首次探讨语义分割中的卷积核概念是否同样适用于实例分割,以及更广泛的全景分割。与此同时,要使用卷积核来进行实例分割,K-Net中的每个卷积核最多只能分割图像中的一个对象(如图1-(b))。通过这种方式,K-Net就可以同时对实例进行识别和分割,无需额外的步骤,一次完成。为了简单起见以及便于区分,我们将用于语义分割和实例分割的卷积核分别称为语义卷积核和实例卷积核。最后,通过将实例卷积核和语义卷积核进行简单组合自然可以解决全景分割的问题(如图1-(c))。
尽管K-Net很简洁,但直接通过卷积核来对实例进行分割并非易事。首先实例卷积核需要区分图像内和图像之间在尺度和外观上不同的对象。由于实例卷积核没有语义类别这样的通用显式特征,因此需要比静态卷积核更强的区分能力。为了克服这一问题,我们提出了一种方法,如图2所示,通过更新Kernel update head,可以使得卷积核能够自适应的对应到其匹配的像素组去。Kernel update Head 主要包含三个关键步骤:组特征融合、自适应卷积核更新和卷积核交互。
首先,利用掩模预测来对每个像素组特征进行融合;由于可以使用每个像素组的内容来进行区分,所以,我们可以使用来自适应的更新它们对应的卷积核,然后,卷积核之间进行交互,并对图像上下文进行整体建模。最后,得到的Group-Aware卷积核再与特征映射进行卷积,得到更准确的掩模预测。这个过程可以反复迭代进行,因为更精细的划分通常会降低每组特征中的噪声,从而产生更多的具有较强判别能力的卷积核。这个过程可以表述为:
值得注意的是,kernel update head和迭代优化是通用的,因为它不依赖于卷积核的特性。所以,它不仅可以增强实例卷积核,还可以增强语义卷积核。
下面我们将详细介绍了Kernel update head的三个步骤。
kernel update head首先将每个组的特征进行融合,然后基于分组的卷积核便具有了初步感知能力。由于中每个卷积核的掩码本质上定义了一个该像素是否属于卷积核的相关组,所以我们可以通过将特征图与相乘聚合得到属于卷积核的特征图:
kernel update head使用上一步得到的来更新卷积核,从而提高卷积核的表示能力。由于掩码可能不准确,所以每组的特征也可能包含其它组像素引入的噪声。为了减少噪声对分组特征的影响,我们设计了一种自适应的卷积核更新策略。具体来说,我们首先将和进行按元素相乘:
上式中和 代表线性变换, 然后head可以设置两个门机制,即和,它们可以分别对更新后的特征图和卷积核进行了调整。并更新卷积核为:
卷积核之间的交互对于每个卷积核感知来自其它组的上下文信息是非常重要的。这些信息允许卷积核隐式地建模和利用映射组之间的依赖关系。为此,我们添加了一个卷积核交互模块对上一步出了更新得到的卷积核进一步处理,最终得到新的卷积核。首先采用多头注意力,然后是前馈神经网络,这在以前的工作中被证明是有效的。最后利用卷积核交互的输出用于生成新的掩码预测,具体表达式如下:。也将用于预测实例和全景分割的分类性能。
因为每个语义卷积核都可以分配给一个固定的语义类别,但是,目前却没有明确的规则来为实例卷积核分配不同数量的实例对象。在这项工作中,我们采用了互相匹配策略,设置了预测损失,并以端到端的方式来训练实例卷积核。不同于以往依赖box(边界框)的工作,实例卷积核的学习是基于mask驱动的,因为K-Net的推理自然是box-free的。其中设置的预测损失函数如下所示:
代表Focal loss, 和 分别表示CrossEntropy (CE) loss 和Dice loss
如表1所示:
K-Net作为唯一的box-free和num-free的方法,比Mask R-CNN、SOLO、SOLOv2和CondInst具有更好的性能和更快的推理速度.
K-Net通过使语义卷积核具有动态性可以适应不同的框架。比如,K-Net显著提高了FCN (6.6 mIoU)。这种组合比PSPNet和UperNet分别高出0.7和0.9 mIoU,并达到了与DeepLab v3相当的性能。
此外,K-Net的有效性并没有在非常强的模型表示下达到饱和,即使与使用Swin Transformer的UperNet相比,它仍然带来了显著的改进(1.4 mIoU)。
最后我们从Head Architecture,Positional Information,Number of Stages,Number of Kernels这四个方面做了消融实验分析,具体如下表所示: