BlendMask 论文学习

Abstract

实例分割是计算机视觉中非常基础的任务。近来,全卷积实例分割方法得到了更多的注意力,因为它们要比双阶段的方法(如Mask R-CNN)更简单、高效。到目前为止,在计算复杂度相同的情况下,几乎所有的方法在掩码准确率上都落后于双阶段的 Mask R-CNN 方法,给了很大的提升空间。本文将实例级别信息和较低细粒度的语义信息结合,提升了掩码的预测。本文主要贡献就是,提出了一个混合模块,它受到自上而下实例分割方法和自下而上方法的启发。BlendMask 仅用少数几个通道,就能有效地预测密集的逐像素点的位置-敏感实例特征,只用一个卷积层就可以学习每个实例的注意力图,因此推理时非常快速。BlendMask 可以很容易地加到 state of the art 的单阶段检测器中,并且在性能上超过 Mask R-CNN,速度要快20%20\%。在单张1080ti显卡上,BlendMask 的一个轻量级版本取得的mAP 是34.2%34.2\%,速度为25FPS。由于其简洁性和有效性,BlendMask 能够作为一个简单而有效的基线模型,供实例预测任务使用。

1. Introduction

表现最优的目标检测器和分割器都延续了一个双阶段流程。它们由一个全卷积网络、RPN构成,在兴趣区域RoI上进行密集的预测。人们使用了一系列的轻量级网络(head)来重新对齐 RoI 的特征,进行预测。生成掩码的质量和速度与掩码 head 的结构息息相关。此外,各独立的 heads 很难与相关的任务(如语义分割任务)来共享特征,造成网络结构优化很困难。

最近一些单阶段目标检测方法如FCOS证明了它们可以在准确率上超过双阶段方法。在实例分割任务上也能进行单阶段检测就很诱人了:1)仅有卷积操作的模型更简单、更容易进行跨平台部署,2)一个统一的框架可以为多任务网络结构的优化提供便利和灵活度。

密集的实例分割方法可以追溯到 DeepMask,它是一个自上而下的方法,通过滑动窗的方式产生密集的实例掩码。在每个空间位置上,掩码的特征表示被编码为一个一维的向量。尽管结构上很简单,但在训练过程中存在多个障碍,使其无法取得优异的性能:1)特征和掩码之间的局部一致性丢失了;2)特征表示是冗余的,因为每个前景特征都重复编码了掩码信息;3)卷积中的下采样造成位置信息退化。

Dai 等人[8] 探索了第一个问题,他们尝试通过保留多个位置敏感图,保留局部一致性。Chen 等人[7] 研究了这个想法,针对目标实例掩码上的每个位置,提出了一个密集的表征对齐方法。但是,这个方法为了对齐而牺牲了表征的效率,造成第二个问题难以解决。第三个问题造成下采样过多的特征无法提供实例的细节信息。

鉴于这些难点,另一些人提出了一个自下而上的策略。这些方法生成大量的逐像素点的 embedding 特征,然后使用一些技巧来组合它们。取决于 embedding 的特征,这些组合方法包括简单的聚类,以及基于图的算法等。通过逐像素点的预测,局部一致性和位置信息就很好地保留了下来。自下而上方法的缺点有:1)过于依赖密集预测的质量,导致性能不佳,造成掩码的割裂与错误连接;2)对于类别较多的复杂场景泛化能力有限;3)需要非常复杂的后处理技术。

本文中作者将自上而下和自下而上的方法结合起来。作者研究了两个重要的方法:FCIS 和 YOLACT。它们都是预测实例级别的信息,如边框位置,然后利用裁剪手段(FCIS)或加权和(YOLACT)将其与逐像素点的预测结合起来。本文认为,这些过度简化的合并设计可能无法平衡顶层和底层特征表示的能力

较高层级的特征对应着更大的感受野,可以获取实例的全局信息,如姿势,而较低层级的特征则保留了更好的位置信息,可以提供更精细的细节信息。本文的一个关注点在于,如何以全卷积实例分割的方式,更好地融合这两种特征。更具体点就是,作者把实例级别的信息变得更加丰富,并且进行细粒度更高的位置敏感掩码预测,为基于候选框的掩码方法提供通用性的操作。作者进行了广泛的研究,探索了最优的维度、分辨率、对齐方法,以及特征定位方法等。具体点就是:

  • 对于基于候选框方式的实例掩码生成,设计了一个灵活的方法:Blender,它将实例级别的丰富信息和准确的密集的像素特征融合起来。在COCO 数据集的比较中,该方法的mAP要比 YOLACT 和 FCIS 的融合方法准确率高1.9和1.3分。
  • 提出了一个简单的网络结构,BlendMask,基于目前 state of the art 的单阶段目标检测器 FCOS,在既有的网络结构之上增加了少许的计算量。
  • BlendMask 一个明显的优势就是,它的推理时间不会像双阶段方法一样,随着预测数量的增加而增加,对实时场景更加地鲁棒。
  • 在COCO数据集上,当BlendMask 在主干网络为 ResNet-50 时,它取得的 mAP 为 37.0%37.0\%,而当主干网络为 ResNet-101 时,它可以取得 38.4%38.4\% 的mAP,这超越了 Mask R-CNN,而且要快20%20\%。该方法创下了全卷积实例分割的新记录,掩码mAP 要比 TensorMask 高 1.11.1 个点,而只需一半的训练次数,推理时间也仅为1/51/5。BlendMask 可能是第一个在掩码 AP 和推理效率上超过 Mask R-CNN 的算法。
  • 因为 BlendMask 的底部模块可以同时分割 “things and stuff”,BlendMask 可以自然地解决全景分割问题,而无需改动。
  • 对于 Mask R-CNN 的掩码 head,它的分辨率通常为28×2828\times 28,而由于 BlendMask 更加灵活,底部模块没有严格地绑定到FPN上,其底部模块输出的掩码的分辨率要更高。因此,BlendMask 输出掩码的边界可以更加准确,如图4所示。
  • BlendMask 非常通用而且灵活。只需稍微的改动,就可以将 BlendMask 应用到实例级别的识别任务上,如关键点检测。

2. Related Work

Anchor-free 目标检测。最近目标检测领域的一些进展使我们无需边框 anchors 也能进行目标检测,大大简化了目标检测流程。与基于anchor 的方法 RetinaNet 相比,这项更简单的设计提升了边框平均精度(APbbAP^{bb}2.7%2.7\%。该提升的一个可能原因就是,没有了预定义的 anchors,目标可以自由地根据其有效感受野匹配到预测特征上。其意义有两方面。首先,将目标大小映射到相应的金字塔层级,与该特征的有效感受野相匹配。其次,没有了 anchors,我们就可以给 top-level 的实例预测模块更重的任务,而不会带来整体计算量的增加。例如,基于anchor的方法与本文的方法相比,在边框检测之外,要想得到形状和姿态信息,就得花费多8倍的计算量。这使得基于anchor 的检测器无法平衡 top vs. bottom 的工作量(即学习实例-感知图 vs. bases)。作者假设这就是为什么给定一个实例,YOLACT 对于每个 prototype/basis 只能学习单个标量系数,因为要考虑到计算量。只有当我们使用 anchor-free 的边框检测器时,这项约束才会消失

先检测再分割的实例分割。主流的实例分割方式都采用了双阶段方法,首先检测物体,再在每个候选框中预测前景掩码。该方式比较成功,因为它有一个对齐操作 — RoIAlign,它给第二阶段的 RoI heads 提供了局部一致性,而在所有单阶段方法中没有 RoI heads。但是,双阶段方法中有两个问题。在多实例的复杂场景中,双阶段方法的推理时间与实例个数成正比。而且,RoI 特征和掩码结果的分辨率有限。

将 RoI head 替换为一个简单的裁剪-组合模块,这些问题可以得到部分解决。在FCIS中,Li 等人在检测网络中增加了一个底部模块,预测位置敏感得分图,该得分图被所有的实例共享。R-FCN和MaskLab 首先使用了这个技术。k2k^2个得分图中的每一个通道都对应着候选边框中k×kk\times k个平均划分的网格中的一个。每个得分图都代表该像素点属于某物体的概率。更高分辨率的位置裁剪,预测准确率就会更高,但是计算量也会指数级地增加。而且,存在一些特殊情况,使得 FCIS 的表示不充分。当两个实例的中心位置接近时,该裁剪区域的得分图表示就比较模糊,很难去说这个裁剪区域是哪个实例。

在 YOLACT 中,作者使用了一个改进的方法。除了边框预测之外,它也学习一组掩码系数。然后这些系数指导裁剪区域的掩码 bases 进行线性组合,生成最终的掩码。和 FCIS 相比,预测实例级别的信息的责任就指派给了 top-level。本文认为,用标量系数来编码实例信息不是最优的。

为了突破这些局限,本文提出了一个新的基于候选框的掩码生成方法,BlendMask。通过一个混合模块来平衡顶部和底部的工作量。这两个层级都确保可以表示实例的信息。如第4节本文实验所述,与YOLACT和FCIS方法相比,该混合模块可以提升bases组合方法的表现,不会增加计算复杂度。

利用低层级特征来优化掩码。BlendMask 将高层级粗糙的实例信息和低层级的细粒度信息融合起来。其思想与MaskLab 和 IMP 方法类似,将掩码预测与网络较低层的特征拼接起来。区别很明显。本文将粗糙的掩码用作为注意力图。其生成的过程非常轻量级,无需使用语义或位置信息来监督,而且与目标边框的生成紧密联系。如3.4节所述,本文较低层级的特征包含清晰的上下文信息。而且,该混合方法不需要 MaskLab 或 IMP 中的,融合特征后的子网络,这使得本文方法更加有效。

3. BlendMask

3.1 Overall pipeline

BlendMask 由一个检测网络和一个掩码分支构成。掩码分支有三个部分,一个预测得分图的底部模块,一个预测实例注意力的顶部模块,以及一个将得分和注意力融合起来的混合模块。图2展示了整个网络结构。

底部模块。与其它基于候选框的全卷积网络类似,作者增加了一个底部模块来预测得分图,称之为 bases,B\text{B}B\text{B}的形状为N×K×Hs×WsN\times K\times \frac{H}{s} \times \frac{W}{s},其中NN 是 batch size,KK 是bases 的个数,H×WH\times W 是输入的大小,ss 是得分图输出的步长。作者在实验部分使用 DeepLab V3+作为 decoder。底部模块的输入可以作为主干网络特征,跟传统的语义分割网络,或者YOLACT和全景FPN中的特征金字塔一样。

Top layer 作者在每个检测tower 之上都附加了单个卷积层,预测 top-level 的注意力 A\text{A}。与YOLACT中的掩码系数不同,它在每个分辨率为 Wl×HlW_l \times H_l 的金字塔中,输入的形状为N×K×Hl×WlN\times K\times H_l \times W_l,而本文的A\text{A} 则是一个张量,形状为N×(KMM)×Hl×WlN\times (K\cdot M\cdot M)\times H_l \times W_l,其中M×MM\times M 是注意力图的分辨率。有了三维结构,我们的注意力图就可以对实例级别信息进行编码,如物体的形状和姿态。在自上而下的方法中,MM通常要比掩码预测小,因为我们只要一个近似的估计值。作者用一个输出通道数为 KMMK\cdot M\cdot M 的卷积来预测。在将它们传入下一个模块之前,我们首先要进行 FCOS 的后处理操作,选取前DD个边框预测,P={pdR04d=1,...,D}P=\{\text{p}_d \in \mathbb{R}_{\geq 0}^4 | d=1,...,D\},以及它们对应的注意力图A={adRK×M×Md=1,...,D}A=\{a_d \in \mathbb{R}^{K\times M\times M} | d=1,...,D\}

混合模块 是 BlendMask 的关键。它将位置敏感 bases 组合起来,根据注意力图来产生最终的预测。下一节作者将仔细地讨论具体细节。

3.2 混合模块

Blender 模块的输入是底部层级的 bases, B\text{B},筛选出的 top-level 注意力图A\text{A},以及候选边框PP。首先作者使用 Mask R-CNN中的 RoIPooler 对每个候选框 pd\text{p}_d 裁剪 bases,然后重新缩放该区域至一个固定的大小 R×RR\times R 的特征图rd\text{r}_d

rd=RoIPoolR×R(B,pd),d{1,...,D}r_d = RoIPool_{R\times R}(\text{B,p}_d), \forall d\in \{1,...,D\}

更具体点,在 RoIAlign 中作者使用的采样率为1,即每个采样点都有一个bin。在表6中列觉了 nearest pooling 以及 bilinear pooling 的表现。在训练中,将 ground truth 边框作为候选框。在推理时,使用 FCOS 的预测结果。

注意力图的大小MM 要小于 RR。作者利用插值ada_d,将注意力图大小由M×MM\times M变为R×RR\times R,其中R={rdd=1,...,D}R=\{\text{r}_d | d=1,...,D\}

ad=interpolateM×MR×R(ad),d{1,...,D}\text{a}_d' = interpolate_{M\times M \rightarrow R\times R}(\text{a}_d), \forall d \in \{1,...,D\}

然后ad\text{a}_d' 用 softmax 函数进行归一化,沿着KK个维度,得到一个由得分图sds_d组成的集合。

sd=softmax(ad),d{1,...,D}s_d = \text{softmax}(\text{a}_d'), \forall d\in \{1,...,D\}

然后,作者对每个特征图区域和得分图rd,sd\text{r}_d, \text{s}_d 都使用 element-wise 乘积操作,然后将KK个维度的结果求和,得到最终的掩码 logit md\text{m}_d

md=k=1Ksdkrdk,d{1,...,D}\text{m}_d = \sum_{k=1}^K s_d^k \circ r_d^k, \forall d\in \{1,...,D\}

其中,kk是basis 的索引,在图1中,作者可视化了掩码混合的过程,其中K=4K=4

3.3 Configurations and baselines

在 BlendMask 中,作者考虑了下述的配置超参数:

  • RR,底部层级的 RoI 分辨率,
  • MM,顶部层级的预测分辨率,
  • KK,bases 的个数,
  • 底部模块的输入特征,它可以是主干网络或FPN的特征,
  • 底部 bases 的采样方法,nearest-neighbor 或 bilinear pooling,
  • top-level 特征的插值方法,nearest-neighbor 或 bilinear pooling.

作者用缩写 KaTeX parse error: Expected '}', got '_' at position 8: \text{R_̲K_M} 来表示模型。例如KaTeX parse error: Double subscript at position 5: 28_4_̲4表示底部层级区域的分辨率为28×2828\times 28,它有4个bases,以及4×44\times 4的 top-level 的实例注意力图。作者默认使用主干网络特征C3C3C5C5,与 DeepLabV3+保持一致。为了与FCIS 公平比较,本文在 top-level 插值中使用了 Nearest neighbor 插值法。在底部层级中使用了 bilinear 采样,与 RoIAlign 一致。

3.4 Semantics encoded in learned bases and attentions

在 val2017 上测试生成的 bases 和注意力图,作者发现了这样一个模式。在 bases上,BlendMask 编码了两种类型的局部信息,1)一个像素点是否在某物体之上,2)是否该像素点是这个物体的某一部分(位置敏感特征)。

图3 展示了完整的 bases 和注意力图映射回原始图片。前两个bases(红色和蓝色)检测物体右上与左下的点。第三个(黄色)base 则触发物体上的点,第四个(绿色)base 激活物体的边界。位置敏感特征帮助我们区分重叠的实例,使得 BlendMask 要比 YOLACT 更高效地表示所有的实例。正语义掩码使我们的最终的预测要比FCIS更平滑,负语义掩码则可以进一步抑制实例外的激活。作者在表1中对比了本文的混合模块和YOLACT与FCIS的类似部分。与YOLACT和FCIS相比,BlendMask 学到的特征要更加准确,而所需的bases要更少(4 vs. 32 vs. 49)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章