框架
本文研究者指出当前最优的
Mask R-CNN 中的信息传播还可以进一步优化。具体来说,低层级的特征对于大型实例识别很有用。但最高层级特征和较低层级特征之间的路径很长,增加了访问准确定位信息的难度。此外,每个建议区域都是基于从一个特征层级池化得到的特征网格而预测的,此分配是启发式的。由于其它层级的丢弃信息可能对于最终的预测还有用,这个流程还有进一步优化的空间。最后,掩码预测仅在单个视野上执行,无法获得更加多样化的信息。
创新点
1. 改进的FPN: Bottom-up Path Augmentation
2. 改进之前的pool策略: Adaptive Feature Pooling
3. 改进mask分支: Fully-connected Fusion+FCN
改进的FPN: Bottom-up Path Augmentation
![](https://i-blog.csdnimg.cn/blog_migrate/db6b57590503bdf129e46e5f39a38a6e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5ed2b2414a7f79994df7b43bf916d6e2.png)
研究发现,低层级的特征图对预测大物体十分有效。于是在FPN的基础上,增加了一个自下而上的分支,帮助更好地传递底层信息到最高层级。低层级特征在之前的工作中也有被应用,但基本都是为了预测小物体或者精细化一些细节,而低层级特征对于大物体的作用在之前并没有被很认真地探讨过。 虽然FPN中P5也间接得有了low-level的特征,但是信息流动路线太长了如红色虚线所示(其中有ResNet50/101很多卷积层),本文在FPN的P2-P5又加了low-level的特征,最底层的特征流动到N2-N5只需要经过很少的层如绿色需要所示(仅仅有几个降维的卷积)。
改进之前的pool策略: Adaptive Feature Pooling
![](https://i-blog.csdnimg.cn/blog_migrate/095b00890c7510d1db453b8360d90661.png)
在FPN那篇论文的解读中我们也讲过FPN从P2-P6(P6仅用作生成proposal,不用作RoIPooling时提取特征)多尺度地生成proposal,然后做RoIPooling时会根据proposal的大小将它分配到不同的level去crop特征,小的proposal去low-level的层,大的proposal去high-level的层。这样做虽然简单也蛮有效,但它不是最好的处理方式,尽管P2-P5(N2-N5)已经融合了low-level和high-level的特征,然后它们的主要特征还是以它本有的level为主 这时如果小的proposal能从high-level层获取到更多的上下文语义信息是有利于它分类的,而大的proposal能从low-leve层获取到更好的细节是有利于它定位的。因此本文打算每个proposal从所有level的特征上做RoIPooling,然后在后面融合,融合的阶段和方式都可实验,比如分类时是两个fc,这个融合阶段可以是fuse, fc1, fc2或者fc1, fuse, fc2,融合策略可是sum也可以是max,最后证明fc1, fuse, fc2和max最好。
![](https://i-blog.csdnimg.cn/blog_migrate/34ab447d65b1e7e04891b13a14d83a23.png)
作者做了个统计,发现某个尺度的决策信息并不是完全来自于对应层级的feature map,绝大多数信息来自于其他层级,所以所有层级的feature map都需要用。文章中作者在不同层级feature map的proposal做ROIAligned之后做逐像素的max operation,算是把不同尺度的feature map fuse together。
改进mask分支: Fully-connected Fusion+FCN
![](https://i-blog.csdnimg.cn/blog_migrate/18414a883c94161915799489bf003513.png)
作者认为分割的时候,FCN的方式主要依靠局部感受野,而fully-connect layer对于众多局部信息的组合能够有更好的表达能力(参数更多),能把各个局部的信息组合起来形成proposal的整体。所以作者如图新开一个分支,里面做了一次全连接操作,并且映射到相同的spatial size和FCN的结果相加。作者说只做一次全连接而不是多次是为了防止全连接太多把特征的spatial information给丢失掉了。在两个feature map融合的时候作者把“max”,“sum”,“product”方式均做了实验,发现还是“sum”好。
PS:何恺明同样CVPR2018发的那篇《Learning to Segment Every Thing》也是把MLP和FCN结合做mask prediction,可以说英雄所见略同。
实验
![](https://i-blog.csdnimg.cn/blog_migrate/df9f0ba70eb9cc8d38415414ffc4fc87.png)
总体的结果,backbone一个ResNet-50就打败了去年的冠军,该算法也是拿到了2017年COCO分割比赛和CItyspace分割的冠军
![](https://i-blog.csdnimg.cn/blog_migrate/27e895287dea135dcf69e9685f88ede9.png)
ms-train指multi-scale training
![](https://i-blog.csdnimg.cn/blog_migrate/0535de96dcf456badb2d3818d56f2a9c.png)
消融实验结果
![](https://i-blog.csdnimg.cn/blog_migrate/e04d0b4206c1c965a063af15b74dbaf7.png)
adaptive pooling fusion的位置和具体操作的对比实验
![](https://i-blog.csdnimg.cn/blog_migrate/3d4c16444bfd0923e082b21728a6087c.png)