Hybrid Task Cascade for Instance Segmentation 论文

原文链接: https://zhuanlan.zhihu.com/p/57629509

论文地址:https://arxiv.org/abs/1901.07518
代码地址:https://github.com/open-mmlab/mmdetection

Background

实例分割(Instance Segmentation)是一个和目标检测非常相关但是更难的问题,在目标检测的基础上,还要求分割出物体的像素,如下图所示:

Hybrid Task Cascade for Instance Segmentation 论文_第1张图片

实例分割这个问题近几年的发展在很大程度上是由COCO数据集和比赛推动的。从MNC、FCIS到PANet,都是在COCO 实例分割 track 上拿第一名的方法。Mask R-CNN是个例外,因为论文公开得比较早,所以是2017年前几名队伍的基本方法。同理可知,Hybrid Task Cascade 在COCO 2018年的比赛中也取得了第一名的成绩。

Overview

级联是一种比较经典的结构,在很多任务中都有使用,比如目标检测中的CC-Net、Cascade R-CNN,语义分割中的Deep Layer Cascade等等。然而将这种结构或思想引入到实例分割并不是一件直接而容易的事情,如果直接将Mask R-CNN和Cascade R-CNN结合起来,获得的提升是有限的,如表1所示,bbox AP仅提升了 3.5 % 3.5\% 3.5%,mask AP仅提升了 1.2 % 1.2\% 1.2%。因而我们需要更多地探索检测和分割任务的关联。

在本篇论文中,作者提出了一种新的实例分割框架,设计了多任务、多阶段的混合级联结构,并且融合了一个语义分割的分支来增强 spatial context。这种框架取得了明显优于Mask R-CNN 和 Cascade Mask R-CNN的结果。

Hybrid Task Cascade for Instance Segmentation 论文_第2张图片

Method

整个框架的演进可以用四张图表示,其中 M M M表示mask, B B B表示 bounding box分支,数字表示 stage, M 1 M1 M1即为地一个stage的mask 分支。

Hybrid Task Cascade for Instance Segmentation 论文_第3张图片

Cascade Mask R-CNN

由于 Cascade R-CNN 在目标检测上的效果非常好,作者首先尝试将 Cascade R-CNN 和 Mask R-CNN 直接进行杂交,得到子代 Cascade Mask R-CNN,如上图(a)所示。在这种实现里,每一个 stage 和 Mask R-CNN 类似,都有一个 mask 分支和 bounding box 分支。当前 stage 会接受 RPN 或者上一个 stage 回归过的 bounding boxes 作为输入,然后预测新的 bounding boxes 和 mask。这也是实验中作者所比较的 baseline 模型。从实验表格中可以看到其实这个 baseline 模型已经很强了,但是仍然存在明显的问题,主要在于 Cascade Mask R-CNN 相比 Mask R-CNN 在 bounding box AP 上提高了 3.5 % 3.5\% 3.5%,但是在 mask AP上只提高了 1.2 % 1.2\% 1.2%

Interleaved Execution

Cascade R-CNN 虽然强行在每一个 stage 里面塞下了两个分支,但是这两个分支之间在训练过程中没有任何交互,它们是并行执行的。所以作者提出了 Interleaved Execution,也就是在每个 stage 里,先执行 bounding box 分支,将回归过后的 bounding box 再交由 mask 分支来预测 mask,如上图(b)所示。这样既增加了每个 stage 内不同分支之间的交互,也消除了训练和测试流程的 gap。作者发现这种设计对 Mask R-CNN 和 Cascade Mask R-CNN 的 mask 分支都有一定提升。

Hybrid Task Cascade for Instance Segmentation 论文_第4张图片

Mask Information Flow

这一步起到了非常重要的作用,对一般 cascade 结构的设计和改进也具有借鉴意义。作者首先回顾了原始的 Cascade R-CNN 结构,每个 stage 都只有 bounding box分支。当前 stage 对下一个 stage 产生影响的途径有两条:

  • B i + 1 B_{i+1} Bi+1 的输入特征是 B i B_i Bi预测出回归后的 bounding boxes 通过 RoI Align 获得的;
  • B i + 1 B_{i+1} Bi+1的回归目标是依赖 B i B_i Bi的bounding box预测的。这就是bounding box 分支的信息流,让下一个 stage 的特征和学习目标和当前的 stage 有关。在 cascade 的结构中,这种信息流很重要,让不同 stage 之间在逐渐调整,而不是类似于一种 ensemble。

然而在 Cascade Mask R-CNN 中,不同 stage 之间的 mask 分支是没有任何直接的信息流的, M i + 1 M_{i+1} Mi+1只和当前 B i B_i Bi通过 RoI Align 有关联,而与 M i M_i Mi没有任何的联系。多个 stage 的 mask 分支更像是用不同分布的数据进行训练,然后在测试的时候进行 ensemble,而没有起到 stage 之间逐渐调整和增强的作用。为了解决这一问题,我们在相邻的 stage 的 mask 分支之间增加了一条连接,提供 mask 分支的信息流,让 M i + 1 M_{i+1} Mi+1能够知道 M i M_i Mi的特征。具体实现上如下图中红色部分所示,我们将 M i M_i Mi的特征经过一个 1 × 1 1\times 1 1×1卷积做 feature embedding,然后输入到 M i + 1 M_{i+1} Mi+1,这样 M i + 1 M_{i+1} Mi+1既能得到 backbone 的特征,也能得到上一个 stage 的特征。

Hybrid Task Cascade for Instance Segmentation 论文_第5张图片

Semantic Feature Fusion

这一步是我们尝试将语义分割引入到实例分割的框架中,以获得更好的 spatial context。因为语义分割需要对全图进行精细的像素级的分类,所以它的特征是具有很强的空间位置信息,同时对前景和背景有很强的辨别能力。通过将这个分支的语义信息再融合到 bounding box 和 mask 分支中,这两个分支的性能可以得到较大的提升。

在具体设计上,为了最大限度地和实例分割模型复用 backbone,减少额外的参数,我们在原始的FPN的基础上增加了一个简单的全卷积网络用来做语义分割。首先将FPN的5个 levels 的特征图 resize 到相同大小并相加,然后经过一系列的卷积,再分别预测出语义分割结果和语义分割特征。这里作者使用了 COCO-Stuff 的标注来监督语义分割分支的训练。红色的特征将和原来的 bounding box 和 mask 分支进行融合(在下图中没有画出来),融合的方法作者也是用的简单的相加。

Hybrid Task Cascade for Instance Segmentation 论文_第6张图片

Results

通过上面的几步,在使用ResNet-50的 backbone 下,相对 Cascade Mask R-CNN 可以有 1.5 % 1.5\% 1.5% 的 mask AP 提升,相对 Mask R-CNN 可以有 2.9 % 2.9\% 2.9%的提升。在 COCO 2017 Val 子集上的逐步对比试验如下表所示。

Hybrid Task Cascade for Instance Segmentation 论文_第7张图片

除了纯净版的 HTC之外,在论文里作者还给出了在 COCO Challenge 里面用到的所有步骤和技巧的涨点情况。

Hybrid Task Cascade for Instance Segmentation 论文_第8张图片

Conclusion

  • 本论文提出了一个多任务、多阶段的混合级联结构;
  • 训练时每个 stage 内的 bounding box 和 mask 分别采用交替执行;
  • 在不同 stage 的 mask 分支之间引入直接的信息流;
  • 语义分割的特征和原始的 bounding box/mask 分支融合,增强 spatial context。

你可能感兴趣的:(深度学习,目标检测)