前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单阶段实例分割又一佳作!出自沈春华团队

单阶段实例分割又一佳作!出自沈春华团队

作者头像
深度学习技术前沿公众号博主
发布2020-07-16 09:56:05
7990
发布2020-07-16 09:56:05
举报

【导读】今天给大家介绍一篇ECCV 2020被评为Oral的论文,它也是目前单阶段实例分割方面的又一佳作,它就是由沈春华大佬团队出品的--CondInst,通过引入条件卷积到实例分割中去,实现了精度上比Mask R-CNN高一丢丢(约0.5个点),加上seg loss后可以涨一个点,从而超过Mask R-CNN;速度和Mask R-CNN差不多,稍好一点;

论文标题

  • 论文链接:https://arxiv.org/pdf/2003.05664.pdf
  • 代码地址:https://github.com/aim-uofa/AdelaiDet/

摘要和创新点

本文提出了一个简单而有效的实例分割框架,称为CondInst(用于实例分割的条件卷积)。效果最好的实例分割方法(例如Mask R-CNN)依靠ROI操作(通常为ROI Pool或ROI Align)来获取最终的实例mask掩码。相反,本文从新的角度解决实例分割问题,没有使用按实例的ROI作为固定权重网络的输入,而是采用了以实例为条件的动态实例感知网络。 CondInst具有两个优点:

  • 1)通过全卷积网络解决了实例分割,无需进行ROI裁剪和特征对齐。
  • 2)由于动态生成的条件卷积的容量大大提高,因此mask head可以非常紧凑(例如3个卷积层,每个仅具有8个通道),从而可以显着加快推理速度

在COCO数据集上,本文的方法优于一些最近的方法,包括经过调整的Mask R-CNN,同时无需更长的训练时间。CondInst中的的dynamic conv是亮点。

本文的主要创新点:

  • 尝试从新的角度解决实例分割。为此,提出了CondInst实例分割框架,该模板实现了比Mask R-CNN等现有方法更高的实例分割性能,同时速度更快。
  • CondInst是完全由卷积组成的,并且不依赖于ROI操作。无需调整特征图的大小即可获得具有更高精确度的高分辨率实例mask。
  • 与以前的方法不同,CondInst的mask head中的卷积会动态生成并以实例为条件。由于仅要求卷积预测一个实例的掩码,因此极大地减轻了学习要求,从而减轻了卷积的负载。与边界框检测器FCOS相比,CondInst仅需要多花费约10%的计算时间,甚至可以处理每个图像的最大实例数(即100个实例)。

网络结构设计

最近做Instance Segmentation的论文,和PolarMask一样都是follow FCOS大的框架,不同于Mask RCNN出框crop然后做Seg的方式,该论文所提的方法更加类似FCN直接出,整个框架的设计感觉还是比较精巧的。CondInst证明了用append rel. coord. + 3层1x1 dynamic conv (如下图)可以做

论文结构介绍如下:

  1. FCOS: 也就是上图的上半部分,整个pipeline和FCOS没啥差别,只是head层的输出略有不一样,那么对于FPN每一个layer的每一个pixel,主要出三个东西:Classification Head: 和原版FCOS含义一样;Center-ness Head:这个定义也是和原版FCOS一致的,用来抑制不太好的预测结果;Controller Head:这个就是本篇论文的核心了,他负责出Mask FCN Head的参数,假设Mask FCN Head的总参数量是X,那么Controller Head的维度就是X,论文中当X取169的时候性能就比较不错了。
  2. Mask FCN Head: Mask FCN Head是论文的核心点,上图下半部分,它的结构就是一般的FCN,但是它的特点在于FCN的参数是动态的,不同的instance有不同的参数,这就会造成多个Mask FCN Head的感觉,同时功能上也类似Mask RCNN出框的作用-区分Instance。Mask FCN Head接在P3 Layer之后, 经过几层Conv之后得到一个H x W x C的feature map, 论文中C = 8,作者claim C的取值对分割的性能影响不大. 甚至C = 2的时候性能也只是下降0.3%!因为Mask FCN Head负责出instance,而其参数又是由P3 - P7的head层所得,所以为了构建两者的联系,在Mask FCN Head输入层Fmask Concat了Fmask到P3 - P7的相对位移,假设Fmask的维度为H x W x C,Pi的维度为Hi x Wi x Ci, 那么把Fmask的每一个pixel映射到Pi,映射前后坐标的offset就会和原始的Fmask Concat到一起作为Mask FCN Head的输入。
  3. Mask FCN Head具有3个1×1卷积,每个卷积具有8个通道,并使用ReLU作为激活函数(最后一个除外),不使用诸如批处理归一化之类的归一化层,最后一层具有1个输出通道,并使用sigmoid来预测成为前景的概率。

注意:论文中提到controller生成的dynamic conv只用了169个参数,这个是怎么算来的呢?看一下上图底部mask branch的channel变换情况就明白啦。Fmask的channel是8,加上rel. coord.(x, y方向各一个feature map)之后是10,因此mask FCN head的输入channel是10。第一个1x1 conv的参数 = 10 * 1 * 1 * 8(weight) + 8(bias) = 88, 第二个1x1 conv的参数 = 8 * 1 * 1 * 8(weight) + 8(bias) = 72, 第三个1x1 conv的参数 = 8 * 1 * 1 * 1(weight) + 1(bias) = 9, 总计169个参数。

实验结果

从速度和精度综合来看,CondInst(35.9AP, 49ms)和Mask R-CNN(35.5AP, 49ms)基本持平(CondInst稍好一丢丢)。在加上segmentation loss之后,CondInst还可以涨一个点,超过了Mask R-CNN。

个人认为CondInst和BlendMask一样,都属于YOLACT这个流派的,都是proto mask(或者叫base)+mask coeff的做法。而CondInst最大的亮点在于:dynamic conv的设计使得YOLACT之流摆脱了box的束缚!CondInst旗帜鲜明表明了,我可以不用box去crop最后的,而且在不借助box的情况下,光凭mask nms也能得到box nms一样的精度,这说明它的dynamic conv filter确实学到家了。

可视化效果如下:

参考链接:

  • https://zhuanlan.zhihu.com/p/117658850
  • http://libanghuai.com/2020/03/13/Conditional-Convolutions-for-Instance-Segmentation/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习技术前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档