原始文档:https://www.yuque.com/lart/papers/ssn
本文的思想很简单,传统的超像素算法是一种有效的低/中级的图像数据的表达,极大地降低了后续图像任务的基元(image primitives)数量。但是现存的超像素算法由于使用的是最邻近算法,一般都是不可微的,这就导致很难将它们集成到端到端的深度网络中,所以文章就改进提出了一种可微分的超像素算法,也就是文章提出的超像素采样网络(Superpixel Sampling Network),这可以学习任务特定的有着灵活的损失函数的超像素,并且具有快速运行时间(runtime)。
超像素是通过基于低级图像属性对图像像素进行分组而形成的图像的过分割。它们提供了图像内容感知上有意义的细分,从而减少了后续图像处理的图像基元的数量。由于它们的代表性和计算效率,超像素已经成为一种既定的低/中级图像表示,并广泛应用于计算机视觉算法,如物体检测,语义分割,显着性估计,光流估计,深度估计,跟踪等等。超像素尤其广泛用于传统的能量最小化框架,其中少量图像基元极大地降低了优化复杂度。
近年来,广泛的计算机视觉问题都开始采用深度学习。除了一些方法(例如,[Superpixel convolutional networks using bilateral inceptions,SuperCNN: A superpixelwise convolutional neural network for salient object detection,Recursive context propagation network for semantic scene labeling]),超像素几乎不与现代深度网络结合使用。这有两个主要原因。
这项工作通过提出一种新的深度可扩展的超像素分割算法来缓解第二个问题。
首先重新讨论广泛使用的简单线性迭代聚类(SLIC)超像素算法,并通过放松SLIC中存在的最近邻居约束将其转换为可微分算法。这种新的可微分算法允许端到端训练,使得能够利用强大的深度网络来学习超像素,而不是使用传统的手工设计特征。这种深度网络与可微分SLIC的结合形成了超像素采样网络(SSN) 的端到端可训练超像素算法。
图1显示了所提出的SSN的概述。
整个网络是端到端的可训练的。SSN的可微分性允许使用灵活的损失函数来学习特定于任务的超像素。图1显示了一些SSN生成的超像素样本。
与现有的超像素算法相比,所提出的SSN具有以下有利特性:
传统的超像素算法可以被大致分为基于图的和基于聚类的方法。
本文提出的方法也是基于聚类的方法。但是,与现有技术不同,这里利用深度网络通过端到端的训练框架来学习超像素聚类的功能。
正如最近的一篇调查论文[36]所详述的,其他技术被用于超像素分割,包括分水岭变换,几何流,图形切割,均值漂移和爬山算法(watershed transform, geometric flows, graph-cuts, mean-shift, and hill-climbing)。然而,这些方法都依赖于手工设计的特征,将深度网络融入这些技术并非易事。最新的SEAL技术[Learning superpixels with segmentation-aware affinity loss]提出了一种不可微的超像素算法通过绕过梯度来为超像素分割学习深度特征的方法。与我们的SSN框架不同,SEAL不是端到端可微分的。
受到监督任务深度学习成功的启发,有几种方法研究了深度网络在无监督数据聚类中的应用。
在本文提出了一种基于深度学习的聚类算法。与以前的工作不同,本文的算法是针对超像素分割任务而定制的,其中使用特定于图像的约束。此外,该框架可以轻松地结合其他视觉目标函数来学习任务特定的超像素表示。
SSN方法核心是一种可微分的聚类方法,受SLIC超像素算法启发。这里简单介绍下SLIC算法。SLIC算法是最简单最广泛使用的超像素算法之一,它很容易实现,有着较高的运行时(runtime),并且可以生成较为紧凑和均匀的超像素。尽管已经有数种SLIC算法的变体,在SLIC的原始形式中,SLIC是一种K均值聚类算法,针对图像像素的五维特征空间(XY LAB)进行聚类。
对于超像素计算的任务而言,其最终目的是要对每个像素分配一个超像素标号,假设要分成m个超像素,且给定一个图像I,它是一个nx5的集合,有n个像素,每个像素是5维(XY LAB)向量,SLIC算法的主要操作流程如下所述。
采样初始的m个聚类中心(超像素中心)S0,其是mx5的集合。该采样通常在像素网格上均匀地进行,并且基于图像梯度进行一些局部扰动。给定这些初始的超像素中心后,SLIC算法可以开始反复迭代下面的两步:
这两个步骤构成了SLIC算法的核心,并且一直重复直到收敛或者达到固定次数的迭代。因为在所有像素和超像素之间计算公式1中的距离D是耗时的,该计算通常被约束到每个超像素中心周围的固定邻域。最后,根据应用,有一个可选步骤,强制每个超像素簇中的像素之间的空间连接。[SLIC superpixels compared to state-of-the-art superpixel methods]
途中的箭头是双线性插值上采样,多个输入会被拼接起来送入卷积。卷积使用的都是3x3卷积,每一层输出为64通道,除了最后一层的输出为k-5,因为要和原图像的XYLab特征向量进行拼接,一起生成一个k维的特征张量集合。
k微特征被送入两个可微的SLIC模块,迭代更新关联与聚类中心v步,整个网络端到端训练。
首先分析为什么SLIC不可以微分。仔细观察SLIC中的所有计算,_像素-超像素关联_的计算产生不可微分性,其涉及不可微分的最近邻操作。这个最近邻计算也构成了SLIC超像素聚类的核心,因此无法避免这种操作。
可微分的SLIC的关键在于转换这种不可微分的最近邻操作为可微分的计算。由于前面的SLIC算法中的这种硬性关联H存在不可微的特性,那么就将其软化,这里有点类似于阶跃函数和Sigmoid函数的关系。后者也可以看做是前者的一个软化。
这里提出一种计算soft-associations Q(nxm)的方法。对于迭代过程中第t步的像素p和超像素i,这里替换最近邻操作用以下的关于距离的钟型函数权重的形式来表达:
因为这里对于超像素与像素的关联实际上就是一中距离上的关系,原本是直接限定了最近的,相当于直接截断了整图像素与超像素中心的距离关联。这里不用截断操作。
式子4通过1加权的形式计算了新的超像素中心。这里的是一个归一化约束,实际上就是对于Q的列归一化,表示为,于是式子4可以写作((mxn)x(nx5))。因为对于计算所有的像素和超像素之间的距离仍然是一件计算昂贵的事情,所以这里进行了约束,只计算像素和9个周围的像素,如下图中的红色和绿色框所示。
对于绿色框中的像素,在计算关联的时候只考虑红色框里周围的超像素。这将Q从nxm变为了nx9,一定程度上降低了计算和存储的消耗。在Q计算中的近似有些相似于SLIC中的最近邻搜索。
现在,每个SLIC迭代中的计算都是完全可微分的,将这种修改后的算法称为可微分SLIC(_ differentiable SLIC_)。根据经验,观察到用可微分SLIC中的软关联替换SLIC中的硬关联不会导致任何性能下降。由于这种新的超像素算法是可微分的,因此可以轻松地集成到任何深度网络架构中。
可以利用深度特征提取器而不是手工设计的超像素特征Ip,并且端到端的对整个网络进行训练。换句话说,将上面的式3和4中的图像特征Ip替换为深度网络得到的k维像素特征Fp(nxk)。将深度网络与可微分SLIC的耦合称为超像素采样网络(SSN)。
算法1概述了SSN中的所有计算步骤。
对于使用超像素的一些下游应用程序,像素表示被映射到超像素表示,以及反过来。
值得注意的是,由SSN生成的软像素-超像素关联也可以容易地用于像素和超像素表示之间的映射。
因此像素-超像素特征映射关系可以使用简单的矩阵乘法来进行描述,并且这是可微的。
端到端可训练SSN的主要优点之一是损失函数的灵活性,可以使用它来学习任务特定的超像素表示。
与任何CNN一样,可以将SSN与任何特定于任务的损失函数相结合,从而学习针对下游计算机视觉任务进行优化的超像素。
在这里,专注于优化超像素的表现效率,即学习可以有效地表示场景特征的超像素,例如语义标签,光流,深度等。例如,如果想要学习超像素用于下游语义分割任务,期望产生遵循语义边界的超像素。为了优化表示效率,作者发现任务特定的重建损失和紧凑性损失的组合表现良好。
用超像素表示我们想要有效表示的像素属性为R(n×l)。例如,R可以是语义标签(独热编码后的)或光流图。重要的是要注意,我们在测试时是不能无法获取R,即SSN仅使用图像数据来预测超像素。只用R来训练,以便SSN可以学习预测适合的表示R的超像素。可以使用列标准化关联矩阵Q,将像素属性映射到超像素上。然后使用行标准化关联矩阵Q,将得到的超像素表示映射回像素表示R*(n×1)。可以得到重建损失为:
而这里的L表示的是任务特定的损失函数,针对分割任务使用交叉熵函数来作为L,使用L1范数损失来应对光流任务。这里的Q表示的是可微分SLIC的最终迭代之后关联矩阵Qv。为了方便,忽略了v。
除了上面的损失,也使用了一个紧凑性损失来鼓励超像素实现空间上的紧凑性。也就是在超像素簇内部有着更低的空间方差。
紧凑损失可以使用如下的L2损失表示:
这个损失鼓励超像素有着更低的空间方差。
SSN的灵活性允许使用许多其他的损失函数。这份工作中使用了前面的重建损失与这里的紧凑性损失的组合损失:
其中的系数lambda为1e-5。
BSDS500数据集:BSDS500 consists of 200 train, 100 validation, and 200 test images. Each image is annotated with ground-truth (GT) segments from multiple annotators. We treat each annotation as as a separate sample resulting in 1633 training/validation pairs and 1063 testing pairs.
为了学习附着到真值分割的超像素,在重建损失(式子5)中使用真值分割标签,也就是将真值分割标签表达为one-hot编码向量,并且使用其作为像素属性R,用在重建损失中。在式子5中使用交叉熵损失作为L,注意这里与真值标签具有意义的语义分割任务不同,这个数据集里的真值标签并不带有什么语义信息。这对网络的学习设置没有任何问题,因为SSN和重建损失都与像素属性R的含义无关(agnostic)。重建损失使用给定输入信号R及其重建版本R*生成损失值,并不考虑是否在图像中保留了R的含义。
超像素在各种视觉任务中都很有用,并且存在用于评估超像素的若干度量。
在这项工作中,将可实现的分割准确度(Achievable Segmentation Accuracy,ASA)视为主要指标,同时还报告边界指标,如边界召回(BR)和边界精度(BP)指标。
在补充材料中更详细地解释了这些指标。这些得分越高,分割结果越好。通过改变生成的超像素的平均数量来报告平均ASA和边界度量。对边界精度和召回的公平评估期望超像素在空间上连接。因此,为了进行无偏比较,遵循计算硬聚类的可选后处理,并在SSN超像素上实施空间连通性(算法1中的第7-8行)。
图4中可以看出来,SSNlinear就已经实现了远高于基线的ASA和BR得分,这显示了损失函数和通过超像素算法反向传播损失信号的重要性。SSNdeep进一步提升了ASA和BR得分。可以看到,k越高,往往也就有着更高的得分,v也是这样。
出于计算的考虑,这里之后的SSNdeep都指代k=20和v=10。
图上可以看到,SSNpix效果接近于SLIC算法,这也反映出来当放松最近邻约束的时候SLIC的性能并不会损失。
请注意,SSNdeep超像素平滑地跟随对象边界,并且也更集中在对象边界附近。
使用的数据集:Cityscapes和Pascal VOC。
我们使用NVIDIA Tesla V100 GPU计算GPU运行时。SSNpix和SSNdeep之间的运行时比较表明SSN计算时间的很大一部分是由于可微分SLIC。运行时表明SSN比几个超像素算法的实现快得多。
这里与上一部分的差异主要在于语意标签的使用和重建损失。鼓励SSN学习附着于语义分割的超像素。
图8中a的曲线显示了不同技术的ASA得分,这里没有分析在这个数据集上的边界得分,因为真值语义边界被用忽略标签给扩展了。这里同时评估了使用BSDS训练的模型,也就是图中的SSNdeep-BSDS模型,可以看出,相较于当前数据集训练的模型,只有少量的得分损失。这也体现出了SSN在不同数据集上的泛化能力和鲁棒性。
图7中有些图片示例。
进行了一个额外的实验,将SSN插入到[Superpixel convolutional networks using bilateral inceptions]的下游语义分割网络中,[Superpixel convolutional networks using bilateral inceptions]中的网络具有双边inception层(bilateral inception layer),利用超像素进行远程数据自适应信息传播,跨过中间CNN表示。
表2显示了在测试数据上评估的该联合模型的IoU得分。与这篇论文中使用的原始SLIC超像素相比,IoU的改进表明SSN还可以为使用超像素的下游任务网络带来性能改进。
使用的数据集是MPI-Sintel:The MPI-Sintel dataset consists of 23 video sequences, which we split intodisjoint sets of 18 (836 frames) training and 5 (205 frames) validation sequences.
To this end, we experiment on the MPI-Sintel dataset and use SSN to predict superpixels** given a pair of input frames**.
为了证明SSN对回归任务的适用性,进行了概念验证实验,学习了遵循光流边界的超像素。使用真值光流作为像素属性R,用在重建损失中,使用L1损失作为L,鼓励SSN来生成有效表示光流的超像素。
这里使用相同的方法来计算ASA得分。对于每个超像素内部的像素,指定平均真值光流来产生一个分割光流,图9中显示了一些分割光流的结果。之后计算真值光流和分割光流的欧氏距离,这称为终点误差(end-point error EPE)。该值越低,超像素越能更好的表示光流。
图9中的结果表明,SSNdeep超像素相比其他超像素,对于真值光流的变化更好地对齐。图8b显示了现有超像素技术的平均EPE值,可以看出SSNdeep相较于现存的超像素技术表现出色。这显示了SSN在学习任务特定的超像素中的有用性。
提出了一种新颖的超像素采样网络(SSN),它利用通过端到端训练学到的深层特征来估计任务特定的超像素。这是第一个端到端可训练的深度超像素预测技术。
相信这项工作开辟了利用深层网络中的超像素的新途径,并激发了使用超像素的新深度学习技术。