CVPR19-(HTC)用于实例分割的混合任务级联架构《Hybrid Task Cascade for Instance Segmentation》

初识

级联Cascade是一种强有力的架构,在许多任务上增加了模型性能,比如Cascade RCNN,但是怎么将它融入在实例分割领域,目前还没有很好的方案。如果简单地将Cascade RCNNMask RCNN融合带来的mask AP增益有限,只有1.8%,而bbox AP有3.5%。

作者认为造成这种巨大差距的一个重要原因在于Cascade RCNN在不同阶段的mask分支之间的信息流(information flow)欠佳,在后期阶段,mask分支只能受益更精确的边界框,与信息流没有直接连接,如下图所示。
在这里插入图片描述
为了解决这个问题,本文针对实例分割提出了HTC(Hybrid Task Cascade)模型,其核心思想为:在每个阶段整合级联cascade和多任务multi-tasking来处理来改善信息流,并利用空间上下文saptial context进一步提高准确性。如下图所示,HTC在每个阶段,以多任务方式将bbox回归和mask预测组合在一起。 此外,为不同阶段的mask分支间构建直接联系:编码每个阶段的mask特征,并送到下一个阶段

对于目标检测而言,上下文信息对于物体的定位和分类提供了非常重要的线索,因此HTC还额外采用了一个全卷积分支执行分割。此分支不仅对来自前景实例的上下文信息进行编码,还对来自背景区域的信息进行编码,进一步提升边界框和实例掩码的预测精度。
在这里插入图片描述
最后,在结合更好的backbone和一些trick之后,作者依靠HTC获得2018年的COCO目标检测任务的冠军。

相知

主要方法

在这里插入图片描述
上图展示了如何由Cascade Mask R-CNN演变到HTC网络:a)原生的Mask R-CNN;b)抛弃平行结构,而是交替地进行bbox回归和mask预测;c)在mask分支之间构造联系【前一个阶段的mask特征将送入后一个阶段】增强信息流;d)添加额外的语义分割分支并将其与bbox和mask分支融合,捕获更多的上下文信息。接下来将更加详细地介绍每个模块的演进:

图a):直接融合出来的Cascade Mask R-CNN可以直接由以下公式表示,每个阶段并行地进行box和mask预测,用前一阶段的box用作下一阶段的候选框。
在这里插入图片描述

其中, t t t表示第t个阶段, P P P表示池化操作(RoI Align或者ROI pooling), x t b o x x^{box}_t xtbox表示第t个阶段经过池化操作提取到的box分支特征, B t B_t Bt表示第t个阶段的bbox分支, r t r_t rt表示第t个阶段box分支的预测结果; x t m a s k x^{mask}_t xtmask表示第t个阶段经过池化操作提取到的mask分支特征, M t M_t Mt表示第t个阶段的mask分支, m t m_t mt表示第t阶段box分支的预测结果。

图b):a)的缺点就在于box和mask两条分支都只接受前一阶段的box输出,在同一阶段内没有进行直接相互作用。因此引入交替结构,由下式表示,每个阶段先进行box预测,再根据box预测结果进行mask分割。
在这里插入图片描述
图c):b)仍然没有在不同阶段的mask分支间引入信息流动。作者先分析了Cascade RCNN成功的一个重要因素,就是在于每个阶段的box分支的输入特征是由前一阶段的box输出和backbone输出共同决定的,根据这种设计理念,在mask分支间引入信息流,公式如下所示。
在这里插入图片描述

其中, m t − 1 − m^{-}_{t-1} mt1表示 M t − 1 M_{t-1} Mt1的中层特征, F F F表示融合当前阶段和前一阶段输出的函数。

具体实现结构如下所示, m t − 1 − m^{-}_{t-1} mt1为前一阶段的mask分支 M t M_t Mt中4层convlayer后,deconv layer前的输出,将其经过一个1x1 conv后与 x t m a s k x^{mask}_t xtmask相结合【像素加法】,进行4层conv + deconv进行分割预测;同样,当前阶段的 m t − m^{-}_{t} mt也要类似地继续用于下一阶段。
在这里插入图片描述
通过这种设计,相邻的mask分支产生了直接的相互作用,不同阶段的mask特征不再孤立,都会受到loss监督回传。

图d):级联训练强相关的任务能够提升特征表达,并且给最终的任务带来收益。因此,作者额外采用了一条全卷积分支进行语义分割。利用语义分割分支的特征可以作为box和mask分支中的强互补特征,有助于进一步区分前背景。加了这条分支后,在box和mask分支中不仅只在backbone输出的特征上使用池化操作,还对语义分割分支的特征进行相同的池化操作,将其结合【像素加】作为box和mask分支的输入特征。公式如下所示:

在这里插入图片描述

S ( x ) S(x) S(x)表示语义分割分支特征

语义分割分支的具体结构实现如下,首先结合FPN中不同层级的特征,将其进行1x1 conv + 上采样/下采样到相同分辨率后进行结合【像素加】。然后经过4层卷积操作,然后使用一个简单的1x1 conv进行语义分割,同时使用一个1x1 conv作为上式提到的语义分割特征。

在这里插入图片描述
损失函数:HTC直接进行端到端训练,其中box分支为所有ROI进行目标分类和检测框回归,mask分支为每个正类ROI预测像素级掩码,语义分割分支预测整张图像的语义分割信息。整体损失如下所示:

在这里插入图片描述

其中 L b b o x t L^{t}_{bbox} Lbboxt表示第t个阶段的box分支损失,主要包括分类loss和回归loss,这一部分和cascade rcnn保持一致; L m a s k t L^{t}_{mask} Lmaskt表示第t个阶段的mask分支损失,主要为二元交叉熵损失;最后的 L s e g L_{seg} Lseg为语义分割分支损失,主要为交叉熵损失。α和β为平衡参数,其中α在实验中取值为[1,0.5,0.25],β为1。

部分实验

更多实验和细节请参考原文

下图展示了HTC和当前SOTA方法的对比,可以看到HTC能够显著提升性能
在这里插入图片描述
下图展示了HTC不同模块带来的增益,其中交替预测提升了0.2,mask信息流和semantic信息融合分别提升了0.6个点。
在这里插入图片描述

HTC比赛trick及扩展

下表展示了作者如何在COCO比赛中逐步提升自身方案的准确率:

  • 在ResNet最后一个stage中添加可变形卷积,整体mAP提升了0.6;
  • 在backbone和head中换成syn bn,提升1.2;
  • 采用多尺度训练,最短边从[400,1400]中采样,长边固定1600,提升了1.8;
  • backbone换成SENet-154(最优单模性能),提升1.8;
  • 多尺度测试,使用5种尺度+水平翻转,集成结果(600, 900), (800, 1200), (1000, 1500), (1200, 1800), (1400, 2100)
  • 进行多模型融合,SENet-154,ResNext101(64x4d + 32x8d),DPN-107,FishNet。提升1.6个点。

在这里插入图片描述
作者还对当时检测和分割的常用模块进行了性能报告,包括ASPP,PAFPN,GCN,PrRoIPool和softNMS

在这里插入图片描述

回顾

HTC是一篇针对实例分割提出来的基于Cascade RCNN改进的工作,原始的Cascade RCNN主要针对目标检测任务设计,因此对于mask AP的增益有限。HTC在三个方面上做了改进,一个是取消并行地预测box和mask,改为先检测出box再根据修正后的box去进行mask预测;其次是为不同阶段的mask分支构造信息流;最后是添加额外的语义分割分支,提供额外的互补特征。

并且本文还提供了一些提点的trick以及对比实验,可以给类似的比赛和工业应用提供思路。

不过,我在某个实例分割比赛中尝试过HTC模型,但其效果比Mask RCNN要差,目前还不清楚具体原因。不过时间和资源有限,没有怎么调参。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值