前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVPR 2020 | PolarMask:将实例分割统一到FCN,有望在工业界大规模应用

CVPR 2020 | PolarMask:将实例分割统一到FCN,有望在工业界大规模应用

作者头像
AI科技评论
发布2020-02-26 12:59:27
1.4K0
发布2020-02-26 12:59:27
举报
文章被收录于专栏:AI科技评论

作者 | 谢恩泽

编辑 | 贾伟

CVPR 2020 在昨天刚刚公布录用结果,其中有效投稿 6656 篇,最终录用 1470 篇,接收率 22.1 % 。CVPR 2020 将于6月14日-6月19日在美国西雅图举办。 虽然在近三年来,CVPR 的论文投稿量都在持续大涨(CVPR 2018有 3300 篇有效投稿、CVPR 2019有 5160 篇有效投稿、CVPR 2020有效投稿达6656),然而在接收率方面,已是“二连降”(CVPR 2018 收录论文 979 篇、接收率为 29%左右;CVPR 2019 收录论文 1300 篇,接收率为25%左右;CVPR 2020 收录论文 1470篇、接收率为 22%左右)。

我今天要介绍的是我们在CVPR 2020上被录用的文章《PolarMask: Single Shot Instance Segmentation with Polar Representation》,介绍一种single shot的实例分割框架PolarMask。

论文链接:https://arxiv.org/pdf/1909.13226.pdf

开源代码:https://github.com/xieenze/PolarMask

PolarMask基于FCOS,把实例分割统一到了FCN的框架下。在2019年4月份FCOS挂出来之后,我和沈老师就一直在讨论如何进把instance segmentation融合进FCN里。FCOS本质上是一种FCN的dense prediction的检测框架,可以在性能上不输anchor based的目标检测方法,让行业看到了anchor free方法的潜力。接下来要解决的问题是实例分割。 这个工作我个人觉得最大的贡献在于,把更复杂的实例分割问题,转化成在网络设计和计算量复杂度上和物体检测一样复杂的任务,把对实例分割的建模变得简单和高效。 Mask R-CNN

首先回顾一下之前最经典的实例分割方法,‘先检测再分割’,在这方面做到极致的算法是Mask RCNN。

Mask R-CNN属于基于两阶段的检测算法,在检测框的基础上进行像素级的语义分割,简化了实例分割的难度,同时取得了stoa的性能,在'先检测再分割’ 这一范式上做到了极致。

PolarMask

我们的PolarMask提出了一种新的instance segmentation建模方式,通过寻找物体的contour建模,提供了一种新的方法供大家选择。 两种实例分割的建模方式:

1、像素级建模 类似于图b,在检测框中对每个pixel分类;

2、轮廓建模 类似于图c和图d,其中,图c是基于直角坐标系建模轮廓,图d是基于极坐标系建模轮廓。

可以看到Mask R-CNN属于第一种建模方式,而我们提出的PolarMask属于图d建模方式。图c也会work,但是相比图d缺乏固定角度先验。换句话说,基于极坐标系的方式已经将固定角度设为先验,网络只需回归固定角度的长度即可,简化了问题的难度。

PolarMask 基于极坐标系建模轮廓,把实例分割问题转化为实例中心点分类(instance center classification)问题和密集距离回归(dense distance regression)问题。

同时,我们还提出了两个有效的方法,用来优化high-quality正样本采样和dense distance regression的损失函数优化,分别是Polar CenterNess和 Polar IoU Loss。

没有使用任何trick(多尺度训练,延长训练时间等),PolarMask 在ResNext 101的配置下 在coco test-dev上取得了32.9的mAP。这是首次,我们证明了更复杂的实例分割问题,可以在网络设计和计算复杂度上,和anchor free物体检测一样简单。我们希望PolarMask可以成为一个简单且强有效的single shot instance segmentation 的baseline。 PolarMask最重要的特点是:

(1) anchor free and bbox free,不需要出检测框

(2) fully convolutional network, 相比FCOS把4根射线散发到36根射线,将instance segmentation和object detection用同一种建模方式来表达。 我们选取FCOS嵌入我们的方法,主要是为了simple。FCOS是目前state-of-the-art的anchor-free检测器,并且十分simple。我们在FCOS的基础上,几乎不加任何计算量,就可以建模实例分割问题,并取得competitive的性能,证明了实例分割可以简化成和目标检测相同复杂的问题。

此外,FCOS可以看成PolarMask的特殊形式,而PolarMask可以看作FCOS的通用形式,因为bbox本质上是最简单的Mask,只有0,90,180,270四个角度回归长度。我们首次将instance segmentation和object detection用同一种建模方式来表达。

网络结构

整个网络和FCOS一样简单,首先是标准的backbone + fpn模型,其次是head部分,我们把fcos的bbox分支替换为mask分支,仅仅是把channel=4替换为channel=n, 这里n=36,相当于36根射线的长度。同时我们提出了一种新的Polar Centerness 用来替换FCOS的bbox centerness。

可以看到,在网络复杂度上,PolarMask和FCOS并无明显差别。

Polar Segmentation建模

首先,输入一张原图,经过网络可以得到中心点的位置和n(n=36 is best in our setting)根射线的距离,其次,根据角度和长度计算出轮廓上的这些点的坐标,从0°开始连接这些点,最后把联通区域内的区域当做实例分割的结果。

在实验中,我们以重心为基准,assign到feature map上,会在重心周围采样,作为正样本,别的地方当做负样本,训练方式和FCOS保持一致,采用Focal Loss, 在此,我们提出Polar CenterNess,用来选择出高质量的正样本,给低质量的正样本降低权重。

Polar CenterNess

如何在Polar Coordinate下定义高质量的正样本?我们通过如下公式定义

其中 d1 d2....dn指的是36根射线的长度,最好的正样本必须具备dmin ——> dmax.

用一张图举例:

以看到中间的图,会出现长度回归差别很大的问题,而右边的图中心点位置就较为合适,到所有轮廓的长度回归就较为接近,36根射线的距离会比较均衡。Polar Centerness 可以给右边图的点较高的centerness分数,给中间图的点降低centerness分数,这样在infernece的时候右边图的点分数较高。 根据消融实验,Polar Centerness可以有效提高1.4的性能,同时不增加网络复杂度。结果如下图所展示

Polar IoU Loss

在PolarMask中,需要回归k(k=36)根射线的距离,这相比目标检测更为复杂,如何监督regression branch是一个问题。我们提出Polar IoU Loss近似计算出predict mask和gt mask的iou,通过Iou Loss 更好的优化mask的回归。通过实验证明,Polar IoU Loss相比Smooth L1loss可以明显提高2.6个点,同时Smooth L1loss还面临和其他loss不均衡的问题,需要精心调整权重,这是十分低效的,Polar IoU loss不需要调整权重就可以使mask分支快速且稳定收敛。

那么,Polar IoU Loss如何计算呢?如下图所展示

可以看到 两个mask的Iou可以简化为在dθ下的三角形面积iou问题并对无数个三角形求和,最终可以推倒到如下形式:

其实最终的表达形式十分简单,但是相比smooth l1的确可以不用调参并裸涨2.6个点。说明loss func的设计对于深度神经网络呢意义重大。结果如下所展示

我们在论文中还做了如下消融实验:射线数量的选择,加不加bbox branch, backbone以及尺寸和速度的trade off. 细节在论文中都有,不一一展开。

上限分析

看到这里,很多人心里都会有一个疑问,射线这种建模方式,对于凹的物体会有性能损失,上限达不到100mAP,PolarMask怎么处理这个问题?

答案是这样,PolarMask相比Mask R-CNN这种pixel建模的方法,对于形状特别奇怪的mask的确建模会失败,但是这并不代表polarmask毫无意义。原因有两个,(1)Mask R-CNN的上限也到不了100 mAP 因为有下采样这类操作使得信息损失。(2)不管Mask R-CNN还是PolarMask,他们的实际性能距离100mAP的上限都特别远。 所以我们目前应该关注如何让实际网络性能去更好地趋近于上限。 定量分析分析射线建模的上限:

如图所示,当采用mass center做instance中心时,当射线数量不断提高,射线的gt和真实的gt的平均iou高达90%以上,这证明了对于射线建模的性能上限的忧虑还远远不需要担心。现阶段需要操心的问题是如何不断提高基于射线建模的网络性能。

实验

最终,配上一图一表展示一下相比sota的结果

可以看到, 没用采用任何trick的情况下,PolarMask在resnext101-fpn的情况下,取得了32.9的配置,虽然不是stoa,但是也比较有竞争力。我们目前并没有采用很多常用的能涨点的trick,比如 ms train和longer training epochs。相比之下,别的one stage方法都不约而同的采用了mstrain和longer training epoches。我们会进一步改进,争取再提高性能。

后记

我们会尽快完善并放出带多尺度训练和增长训练时间的代码和模型,以提供给大家并和上述模型公平比较,做instance segmentation非常费卡和时间,希望大家理解。

一些调参的碎碎念:

这个工作在今年4月FCOS出来的同时,我和沈春华老师就在讨论如何进行FCOS进行single shot anchor free实例分割,以及在CVPR开会的时候,和文海,彦伟, 宋林等小伙伴就论证过contour regression的可行性,因为大家可以看出,anchor free 物体检测已经是大势所趋,下一个领域必然是anchor free实例分割,预测一下,再下一个领域是全景分割。在和沈老师这么多月的讨论中以及一次又一次实验的失败中,polarmask逐渐成型。最开始mask regression无数次无法收敛,写mask iou loss又复杂效果还不怎么好,直到某一天想出了polar iou loss。发现性能很好,不用调参,一把出结果。感觉平时做研究还是需要多思考,而不是盲目的做实验。同时,polar centerness也是我在旅游的过程中想到的,然后立马找了个咖啡厅写代码调试,裸涨1.4个点。这两个方法在不增加计算量的情况下,充分发挥了polarmask的性能,看起来其实很简单,但是实际上是背后很多次思考和化简的结果。

总得来说,我最喜欢这篇文章就两点,

1、足够简单,不加任何trick, 也没有任何复杂的操作,比如deformable conv和roi align操作,有希望在工业界大规模应用;

2、找到了一种表达方式,把bbox detection和mask segmentation统一了起来,和FCOS是一种传承的工作,FCOS理论上可以看成PolarMask的特殊版,而PolarMask是FCOS的泛化版,因为bbox本质上是最简单的Mask。PolarMask本质上可以看成一个目标检测和实例分割统一的框架。只需要简单修改就可以退化到FCOS。

本文首发于知乎:

https://zhuanlan.zhihu.com/p/84890413

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技评论 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档