图像语义分割是在图像中识别问题对象及其类别的问题(如人和汽车)。它与目标检测不同之处在于,输出是表示每个对象的形状的掩码,而不仅仅是一个边界框。
而它与语义分割的不同之处在于,研究目标不仅仅是使用标签(或背景)对每个像素进行分类,而且还要区分同一类别的各个实例。因此,标签空间是没有大小限制的(例如,假设有两个人和一辆车,可能会标记“人-1”,“人-2”和“车-1”)。
这个问题在诸如无人驾车、机器人、照片编辑等领域有许多实际应用。雷锋网了解到,谷歌研究院近日与UCLA合作,提出了一种新的语义实例分割方法:首先计算两个像素属于同一对象的可能性,然后将相似的像素分组在一起。其中,相似性度量是基于深度,完全卷积的嵌入模型,而分组方法是基于选择所有与一组“种籽点”足够相似的点,这个选择模型是一个深度的、完全卷积的评分模型。
据雷锋网了解,这个问题的常见解决方法是:首先使用一些机制来预测对象的边界框(例如,通过运行类别对象检测器,或者通过使用类别不可知框方法,如EdgeBoxes),然后在每个提出的框中运行分割和分类。最近还出现了一种“无盒”方法,即尝试直接预测每个对象的掩码。然而,这种方法要求整个对象实例符合在进行预测的单元的接收域中。 这对于许多细长结构的,可能跨越图像的像素来说是有些困难的。
谷歌及UCLA则采取了一种不同的方法,通过计算两个像素属于同一个对象实例的可能性,并使用这种可能性将相似像素分组在一起来实现实例分割。研究者明确了“正确”段是什么,即整个对象的空间范围。这避免了模棱两可的情况诸如是否将对象(例如,人的衬衫和裤子)的部分视为单独的片段,这种片段对无监督方法的评估是一种困扰。
团队建议使用深度嵌入模型来学习相似性度量。 这类似于其他方法,例如FaceNet ,其学习了两个边界框属于同一个实例(人)的可能性,除了学习如何预测像素的相似性,同时要考虑到它们原本的上下文。
谷歌及UCLA团队使用计算(在嵌入空间中)到一组K“种籽点”的距离; 这可以用张量乘法实现。要找到这些种籽点,需要学习一个单独的模型,预测一个像素做为好种籽的可能性; 我们称之为每个像素的“种籽”得分。这类似于先前方法中使用的“中心”分数,除了不需要识别对象中心; 相反,种籽分数是在这种情况下相对于其他像素的“典型性”的度量。在实践中只需要取得前100名种籽,就可以获得对图像中几乎所有对象的良好覆盖。
方法概述
谷歌及UCLA团队从预先训练语义分割的模型开始,然后通过添加两种不同类型的输出“端”来修改它来执行实例分割。 第一个输出端产生每个像素的嵌入矢量。理想情况下,类似的向量更可能属于同一对象实例。 在第二个端,该模型预测了以每个像素为中心的掩码的类别标签,以及可以使该像素创造掩码的良好的“种籽”的置信度分数。该团队勾画了图1中的整体模型,并给出了下面的细节。
图1:给定一个图像,使用该模型预测每个像素(网络的顶端)的嵌入矢量以及每个像素如果被选为种籽(网络的底端)将产生的掩模的类别分数。从类别分数得出种籽分数,并使用它们来选择图像中的哪个种籽点进行抽样。每个种籽点基于嵌入向量生成掩码; 然后将每个掩码与类别标签和置信度得分相关联。在这个图中,粉红色对应于“牛”类别,蓝色对应于“背景”类别。
一、嵌入模型
首先学习一个嵌入空间,使相对来说同一个对象实例的像素更相近,并且对应于不同对象(包括背景)的像素很远。网络的嵌入端将卷积特征提取器的特征图作为输入。 它输出一个[h, w, d]张量(如下图所示),其中h是图像高度,w是图像宽度,d是嵌入空间维度(该实验中使用64维嵌入)。
给定嵌入向量,则可以计算像素p和q之间的相似度如下:
可以看到,对于在嵌入空间中接近的像素对,有σ(p, q)= 2/(1 + e0) = 1,对于在嵌入空间中的像素对,有σ(p, q) = 2/(1 + e∞) = 0。
通过最小化以下的损失来训练网络:
其中S是选定的像素集合,yp是像素p的实例标签,ωpq是p和q之间相似性的损失的权重。权重ωpq被设置为与实例p和q所属的大小成反比的值,所以损失不会偏向更大的示例。 通过归一化权重,使Σp,q ωpq = 1。
在训练中,可以通过对图像中的每个对象实例随机抽取K个点来选择像素集S。 对于每对点,计算目标标签,如果它们来自相同的实例,则为1,否则为0,如图2所示。然后将|S|2集合点的横断面损失最小化。 整体程序与度量学习中[27]中使用的N对损失密切相关。
图2:通过对每个实例中的K个像素的嵌入向量进行采样来计算嵌入损耗,得到总共的NK嵌入向量,其中N是图像中的实例数。然后计算每一对嵌入矢量σ(ep; eq)之间的相似度,如公式1。属于同一个实例的一对嵌入向量的度量的返回相似度为1,属于不同实例的一对嵌入向量,相似度则为0。因此,可以根据嵌入矢量是否属于同一个实例,将地面实数值设置为0和1,为嵌入矢量之间的相似性增加了交叉熵损失
图3说明了少量示例图像的嵌入学习。 随机地将64d向量投影到RGB空间,然后可以看到生成的假彩色图像。可以看到,根据需要,相同类的实例(例如,两个人或两个摩托车)被映射到嵌入空间的不同部分。
二. 创建掩码
一旦有了一个嵌入空间,并因此有一个成对的相似性度量,可以以下列方式创建一组掩码。选择“种籽”像素p,然后通过找到与p有相似度并且大于阈值τ的所有其他像素q来“种植”种籽:m(p, τ) = {q: σ (p,q)≥ τ}。理想中,掩码中的所有像素属于与种子p相同的对象。通过改变τ,可以检测不同大小的对象。 在试验中使用τ∈{0.25, 0.5, 0.75} .(还使用图像的多种尺寸表示作为输入)
有效的实现方法如下。 首先,计算一个大小为[h, w, d]的张量A(其中h是图像的高度,w是宽度,d是嵌入维数),表示每个像素的嵌入矢量。 接下来,计算张量B[k, d],表示K个种籽点的嵌入向量。可以计算A中每个向量到B中每个向量的距离,使用 A2+ B2-2A⊙B。然后,可以通过对该距离矩阵进行阈值来选择与每个种籽足够相似的所有像素。
图4:可视化每个像素的相似度和每个图像中随机选择的种籽像素。随机选择的种籽像素由图像中的红色标记显示。每个像素和种籽像素之间的相似度是基于公式 1并显示在每张图片中。 可以对相似度值进行阈值生成二进制掩码。像素越亮,相似度越高
图5:采样种籽像素的可视化。该团队的方法将利用考察的距离度量和掩码分类分数来采样高质量的种籽像素,
因此具有高回调和精度的实例段
但是仍然需要一种选择种籽的机制。 谷歌团队建议学习一个“种籽”热图Sp,它可以展示,从p生长的掩模将是一个好掩码(一个与一些地面真值掩码重叠多于IoU阈值)的可能性。 下面将讨论如何计算种籽分数。
一旦有了种籽热图,则可以根据其模式(峰值)挑选种籽点。 不过,谷歌及UCLA团队希望被选择的种籽点具有空间多样性,以确保对正确的掩码集有较高的覆盖。
因此,还需要计算每个点和所有先前选择的点之间的距离(在嵌入空间中),并选择一个远离已经选择的点的点(类似于由Kmeans ++初始化使用的启发式[1])。 更准确地说,在算法的步骤t中,被选择种籽点如下:
其中
选择具有高种籽分数的种籽像素可以保证高精度,并且选择多样的种籽点还可以保证高召回。 请注意,采样的策略与非最大抑制算法不同。在NMS中,在x-y图像坐标空间附近的点被抑制,而在该算法中鼓励嵌入空间的多样性。
一旦选择了一个种籽,将选择最合适的阈值τ,然后可以将它转换成掩码,mt = m(pt, τ),如上所述。 最后,将一个置信区间st和一个类标签ct附加到掩码。 为此,谷歌及UCLA团队利用语义分割模型将预测的类标签与每个像素相关联。
三. 分类和种籽模型
网络的掩码分类端从卷积特征提取器输入一个特征图,并输出一个[h, w, C+1]张量,如图1所示。其中C是类别的数量,标签0表示背景。与语义分割相反,像素本身被分类,在这里,如果被选择为种籽,将对每个像素生成的掩码进行分类。 例如,假设像素落在一个实例为马中。语义分割将在该像素上产生“马”类别的高分。 然而,如果给定像素不是一个好的生成马掩码的种籽点,则该方法可能会反过来预测背景。下面图6展示出了掩码分类热图。 可以看到,物体内的大部分像素都是良好的种籽,但边界附近的像素(例如,牛的腿部)并不是那么好。
图6:掩码分类评分的可视化。每个被选作种籽点的像素处的颜色标识可以识别掩码的标签。更有可能生成背景掩码的像素为白色。较深的颜色对应于将产生质量差的前景掩码的像素。较亮的颜色对应于产生高质量掩码的像素
训练模型来模拟下面这种行为。 对于每个图像,为每个对象实例选择K = 10个随机点,并在每个图像周围增加一个掩码。对于给定的相似性阈值τ,令m(p, τ)为从像素p生成的掩码。 如果提出的掩码与一个地面真相掩模重叠超过一些固定的IoU阈值,则认为这是一个“好的”提案; 然后,从地面真值掩码中复制标签并将其分配给像素p。如果生成的掩码与任何地面真相掩模没有充分重叠,则认为这是一个“坏”提案,并将背景标签分配给像素p。然后,将分配的标签转换为单热形式,并每个对象实例的每个K个选择点使用softmax交叉熵损失训练。 分类模型是完全卷积的,但只需要评估NK点的损失,其中N是实例的数量。 因此,最后整体损失函数有如下:
其中Cpc是从种籽像素p生成的掩码属于类c的概率。
为了处理不同大小的对象,为每个值的τ训练使用不同的类别分类模型; 在该实验中,谷歌及UCLA团队使用τ= {0.25,0.5,0.75,0.9}。 具体来说,令Cτpc表示当使用相似度阈值τ时,像素p是实例类别c的良好种子的概率。
像素p的“随机性”定义如下:
(请注意,max是基于对象类别上计算的,而不是在背景类别上计算)。因此可以得出,种籽张量是从分类张量计算出来的。
为了理解为什么这是合理的,假设像素p处的背景分数非常高,如0.95。 然后将最大值与Cpc的和对约束进行比较,这意味着这不是生成掩码的有效像素。 但是如果最大值是0.6,这意味着这是一个很好的种子像素,因为它将成长为概率为0.6的前景类的一个实例。
一旦根据Sp选择了最好的种籽,则可以找到相应的最佳阈值 ,并通过计算标记c。
相应的置信度分数为
四. 共享全图像卷积特征
谷歌及UCLA团队对COCO的语义分割进行预先训练,这是标准的与PASCAL VOC进行竞争的方法,然后“切断”最后一层。Deeplab v2模型是完全卷积的,它在大小为[2h, 2w, 3]的图运行输出一个[h/4, w/4, 2048]的尺寸特征图,它的输入是嵌入模型和分类/种子模型。
可以通过定义损失来共同训练两个产出的“端”,并将其反馈到共享的“体”
其中Le是嵌入损失,Lcl是分类损失,λ是平衡系数。在该实验中,最初将λ设置为0,给嵌入模型时间学习正确的嵌入。 一旦有一个合理的相似性度量,就可以开始学习掩码分类损失了。然后逐渐将λ增加到最大值0.2(这是根据验证集的经验选择)。 这两个损失都被反向传播到同一个特征提取器中。然而,由于对Pascal VOC进行训练,而Pascal VOC是一个小数据集,所以将共享特征的学习速度设置为小于两个输出端的学习速度,所以原始特征(在COCO上学习)并没有太大变化。
五. 处理规模
为了处理多个尺度的对象,可以计算4个尺度(0.25, 0.5, 1.0, 2.0)的图像金字塔,然后通过特征提取器运行。然后再将这些特征图重新缩放到相同的大小,并进行平均。最后,如上所述,将结果馈送到两个不同的端。
实验结果
一. 实验设置
该团队使用PASCAL VOC 2012培训课程进行了培训,并对PASCAL VOC 2012验证集进行了评估。
在训练模型之后,根据所有测试数据计算每个类别的精确回忆曲线。这需要一个真实和虚假的定义。该团队遵循标准实验,并且一个预测的掩码需要与IoU有交集并且在一个阈值β(例如50%)之上才是真正的正,除非已经检测到真实掩码,在这种情况下,检测是虚假的正。
提供三个IoU{0.5, 0.6, 0.7}阈值的结果,这与之前的工作类似。然后,计算PR曲线下的面积,称为“平均精度”或APτ分数 [9].。最后,平均这个类别以获得平均精度或分数。
还可以将该方法的质量评估为“不可知类别”区域提案生成器。在这种情况下,主要有两种衡量质量的方法。第一个是绘制召回(在固定的IoU)与建议数量。第二个是为固定数量的提案绘制召回率与IoU阈值,该曲线下方的区域称为“平均召回”或AR 。
二. 预处理
训练期间使用以下数据增强组件:
随机旋转:将以在[-10, 10]范围内以任意角度旋转训练图像。
随机调整大小:在训练阶段按照任意比例调整输入图像的大小,取值范围为[0.7, 1.5]。
随机裁剪:在训练阶段随机裁剪图像。在每一步,随机裁剪100个窗口。随机地将一幅图像加权到具有更多对象实例的裁剪窗口。
随机翻转:随机水平地翻转训练图像。
三. Pascal VOC 2012结果
谷歌及UCLA团队首先尝试了不同的α值(当选择下一个种籽时,它会随着种籽的多样性而变化)以找到最佳的种籽采样策略。表2展示出不同α值的结果。该团队还尝试了从2到256的各种大小的嵌入,64是最好的(在验证集中)。进一步分析表3中不同数量的掩码提案(采样种籽点数)的模型的性能。只有当提出10个地区时,该模型达到了59.7的mAPτ性能。在表3中,还显示不同数量的掩码提案的类别不可知平均召回。
图7显示了一些定性结果,表1显示了定量结果。在性能方面,该实验结果在0.5 IoU阈值排名第四,在0.6 IoU阈值排名第二,在0.7 IoU阈值排名第三。所以谷歌团队的方法即使不是最先进的技术但也是很有竞争力的。
关于个别类别的表现,可以看到在大型物品(如火车,狗和摩托车)上表现非常出色,但是在自行车类别方面做得很差。 (有些例子见图6)其他方法也是如此。
结论和未来工作
谷歌及UCLA团队提出了一种新的语义实例分割问题的方法,并在PASCAL VOC数据集上获得了有希望的初步结果。将来,该团队想评估在COCO和Cityscapes上的方法。同时该团队还想设计一种以可微的方式进行区域增长的方法,以便能够进行端到端的培训。
图7:实例分割结果示例
表1:在PASCAL VOC 2012验证集上,每个类别实例级分割比较使用度量超过20类别,分别为0.5,0.6和0.7 IoU。所有数字均为百分比
表2:采样种籽点的最佳性能参数为0.3。该表比较了不同α值的mAPτ性能
表3:用给定的数量的采样种籽点分析模型的性能