CVPR2019 | 实例分割的进阶三级跳:从 Mask R-CNN 到 Hybrid Task Cascade
加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。点击文末“阅读原文”立刻申请入群~
作者 | 陈恺
来源 | https://zhuanlan.zhihu.com/p/57629509
原文 | https://arxiv.org/abs/1901.07518
前言
CVPR 2019 运气还算比较好,这次一共有 3 篇 paper 被接收,分别在物体检测的 module、framework 和 training process 上有所探索。本文打算介绍一下 Hybrid Task Cascade,是 framework 层面的一篇工作,基于之前 COCO 比赛团队合作的成果。除此之外,被接收的另外两篇文章分别是之前介绍过的 Region Proposal by Guided Anchoring (极市之前分享过陈大神的中文解读:Guided Anchoring: 物体检测器也能自己学 Anchor) 和 之后会在 ArXiv 公开的 Libra R-CNN: Balanced Learning for Object Detection。
背景
实例分割(Instance Segmentation)是一个和物体检测非常相关但是更难的问题,在物体检测的基础上,还要求分割出物体的像素,如下图所示。
实例分割这个问题近几年的发展在很大程度上是由 COCO 数据集和比赛推动的。从 MNC,FCIS 到 PANet,都是在 COCO instance segmentation track 上拿第一名的方法。Mask R-CNN 是个例外,因为 paper 公开得比较早,所以是 2017 年前几名队伍的基本方法。同理可知,Hybrid Task Cascade(HTC)在 COCO 2018 的比赛中也取得了第一名。
概述
级联是一种比较经典的结构,在很多任务中都有用到,比如物体检测中的 CC-Net,Cascade R-CNN,语义分割中的 Deep Layer Cascade 等等。然而将这种结构或者思想引入到实例分割中并不是一件直接而容易的事情,如果直接将 Mask R-CNN 和 Cascade R-CNN 结合起来,获得的提升是有限的,因此我们需要更多地探索检测和分割任务的关联。
在本篇论文中,我们提出了一种新的实例分割框架,设计了多任务多阶段的混合级联结构,并且融合了一个语义分割的分支来增强 spatial context。这种框架取得了明显优于 Mask R-CNN 和 Cascade Mask R-CNN 的结果。
方法
整个框架的演进可以用四张图来表示,其中 M 表示 mask 分支,B 表示 box 分支,数字表示 stage,M1 即为第一个 stage 的 mask 分支。
进阶准备:Cascade Mask R-CNN
由于 Cascade R-CNN 在物体检测上的结果非常好,我们首先尝试将 Cascade R-CNN 和 Mask R-CNN 直接进行杂交,得到子代 Cascade Mask R-CNN,如上图(a)所示。在这种实现里,每一个 stage 和 Mask R-CNN 相似,都有一个 mask 分支 和 box 分支。当前 stage 会接受 RPN 或者 上一个 stage 回归过的框作为输入,然后预测新的框和 mask。这也是实验中我们所比较的 baseline,从实验表格可以看到其实这个 baseline 已经很强了,但是仍然存在明显的问题,主要在于 Cascade Mask R-CNN 相比 Mask R-CNN 在 box AP 上提高了 3.5 个点,但是在 mask AP 上只提高了 1.2 个点。
进阶第一步:Interleaved Execution
Cascade R-CNN 虽然强行在每一个 stage 里面塞下了两个分支,但是这两个分支之间在训练过程中没有任何交互,它们是并行执行的。所以我们提出 Interleaved Execution,也即在每个 stage 里,先执行 box 分支,将回归过的框再交由 mask 分支来预测 mask,如上图(b)所示。这样既增加了每个 stage 内不同分支之间的交互,也消除了训练和测试流程的 gap。我们发现这种设计对 Mask R-CNN 和 Cascade Mask R-CNN 的 mask 分支都有一定提升。
进阶第二步:Mask Information Flow
进阶第三步:Semantic Feature Fusion
这一步是我们尝试将语义分割引入到实例分割框架中,以获得更好的 spatial context。因为语义分割需要对全图进行精细的像素级的分类,所以它的特征是具有很强的空间位置信息,同时对前景和背景有很强的辨别能力。通过将这个分支的语义信息再融合到 box 和 mask 分支中,这两个分支的性能可以得到较大提升。
在具体设计上,为了最大限度和实例分割模型复用 backbone,减少额外参数,我们在原始的 FPN 的基础上增加了一个简单的全卷积网络用来做语义分割。首先将 FPN 的 5 个 level 的特征图 resize 到相同大小并相加,然后经过一系列卷积,再分别预测出语义分割结果和语义分割特征。这里我们使用 COCO-Stuff 的标注来监督语义分割分支的训练。红色的特征将和原来的 box 和 mask 分支进行融合(在下图中没有画出),融合的方法我们也是采用简单的相加。
进阶结果
通过上面的几步,在使用 ResNet-50 的 backbone 下,相对 Cascade Mask R-CNN 可以有 1.5 个点的 mask AP 提升,相对 Mask R-CNN 可以有 2.9 个点的提升。在 COCO 2017 val 子集上的逐步对比试验如下表所示。
除了纯净版 HTC 之外,在 paper 里我们还给出了在 COCO Challenge 里面用到的所有步骤和技巧的涨点情况(良心买卖有木有)。
总结
多任务多阶段的混合级联结构
训练时每个 stage 内 box 和 mask 分支采用交替执行
在不同 stage 的 mask 分支之间引入直接的信息流
语义分割的特征和原始的 box/mask 分支融合,增强 spatial context
Code
照例将 release 到 mmdetection:https://github.com/open-mmlab/mmdetection,欢迎 watch。
Arxiv
https://arxiv.org/abs/1901.07518
ps.CVPR2019 accepted list已经放出,极市已将目前收集到的公开论文总结到github上(包括本文及pdf下载),后续会不断更新,欢迎关注,也欢迎大家提交自己的论文:
https://github.com/extreme-assistant/cvpr2019
*延伸阅读
CVPR2019 | 全景分割:Attention-guided Unified Network
利用边缘监督信息加速Mask R-CNN实例分割训练
小Tips:如何查看和检索历史文章?
有不少小伙伴提问如何号内搜文章,其实很简单,在“极市平台”公众号后台菜单点击极市干货-历史文章,或直接搜索“极市平台”公众号查看全部消息,即可在如下搜索框查找往期文章哦~
ps.可以输入CVPR2019/目标检测/语义分割等等,快去探索宝藏吧~~
每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。点击左下角“阅读原文”立刻申请入群~
觉得有用麻烦给个好看啦~