鱼羊 乾明 发自 凹非寺
量子位 报道 公众号 QbitAI
又是何恺明超越何恺明。
其团队最新论文一出,图像分割又往前一大步:
消耗的资源变得更少,算力仅需 Mask R-CNN 的 2.6%。
不仅能实现准确的分割,甚至连张开的五指都能精准抠出:
秀长腿的长颈鹿,分割后腿也能保持修长的模样了:
如此效果,已然超越了默认 mask head 的 Mask R-CNN。
这是一种名为PointRend的新方法,“实现了前所未有的输出分辨率”。
也可以在现有模型的基础上构建,灵活应用于实例分割、语义分割任务。
其中诀窍在于:将图像分割当做一个渲染问题。
如此研究,同样也引起了业内人士的围观。
有人盛赞称,这是一项“伟大的工作”,也有人惊叹于研究思路:“从经典方法中获取知识,牛。”
一、PointRend:将图像分割视作渲染问题
渲染是将 3D 模型显示为 2D 平面上的规则像素网格。
尽管输出表现形式是规则网格,但其底层物理实体是连续的,并且其物理占用率等属性,可以通过物理和几何推理(如射线追踪),在图像平面上的任何实值点进行查询。
图像分割,同样可以视作底层连续实体的占用图,然后从中输出预测标签的矩形网格。
实体被编码在网络特征图中,可以通过插值在任意点进行访问。
PointRend 就是基于这种类比提出的,可以应用于实例分割和语义分割。
以实例分割举例,首先,使用轻量级的分割头,对每个检测到的对象(红框)进行粗略的 mask 预测。
接下来,选择一组点(红色点),用小规模的多层感知器(MLP)为每个点进行独立预测。
对这样的细分算法进行迭代,以从粗到细的方式计算 mask。
具体而言,PointRend 分为三个主要组成部分。
用于推理和训练的点选择(Point Selection)
PointRend 的核心思想是,在图像平面中自适应地选择预测分割标签的点。
类似于光线追踪中的抗锯齿问题,这些点应该更密集地分布于高频区域(例如对象边界)附近。
推理部分,如上文所说,是一个以从粗到细的方式迭代“渲染”输出 mask 的过程。在每次迭代中,PointRend 使用双线性插值,对其先前预测的输出结果进行上采样。
然后再次密度较高的网格上选择N个最不确定的点(如上图黑点),举个例子,对于二进制 mask 而言,就是概率最接近 0.5 的那些点。
计算每一个点的逐点(point-wise)特征表示, 预测它们的标签,以恢复精细网格上的细节。
直到输出结果达到预设的分辨率,迭代结束。
训练部分,还需要选择部分点,在其上构建逐点特征,用来训练点头(Point Head)。
这里依然采用推理部分介绍的细分策略,只是引入了顺序步骤。并且,在训练中不进行迭代,而是使用基于随机抽样的非迭代策略。
为了提高性能,每个区域仅对少量点进行采样,并采取轻度偏差的采样策略,提高系统在训练期间的效率。
逐点 (point-wise) 表示
PointRend 通过组合低层特征 (fine-grained features) 和高层特征 (coarse prediction),在选定的点上构造逐点特征。
在细粒度特征(fine-grained features)方面,为了让 PointRend 呈现出精细的分割细节,研究人员为 CNN 特征图中的每个采样点提取了特征向量。
不过,细粒度特征虽然可以解析细节,但也存在两方面的不足:
这就需要粗略分割预测 (coarse prediction) 来进行补充,提供更多全局背景。
这样的粗略预测类似于现有架构的输出。以实例分割为例,coarse prediction 可以是 Mask R-CNN 中 7×7 轻量级 mask head 的输出。
点头 (Point Head)
对于每个选定点的逐点特征表示,PointRend 使用简单的多层感知器进行逐点分割预测。
多层感知器在所有点(所有区域)上共享权重。
并且,由于多层感知器会针对每个点预测分割标签,可以通过特定任务的分割损失进行训练。
二、更少的消耗,更好的结果
何恺明等人在研究中给出了结果证明,无论是在定性和定量维度上,都取得了显著的效果。
与此同时,这一思路也进一步降低了消耗的资源,在当前人工智能算法模型在端侧部署的大趋势下,意义更大。
此外,这一方法不仅仅能够应用在实例分割中,在语义分割中也取得了显著的效果。
首先,他们将 PointRend 与 Mask R-CNN 默认的4×conv mask head 进行了对比,使用的数据集是 COCO 和 Cityscapes。
结果显示,在相同的分辨率上,PointRend 的预测效果要明显强过默认的4×conv mask head。
从定性效果上来看,在 Mask R-CNN 使用 PointRend(右图)在预测 Mask 时更加精细。
此外,输出图像的分辨率更高的情况下(细分推理),PointRend 也更强大。一方面体现在所需的资源上。
在输出 224x224 分辨率图像下,PointRend 只需 0.9B FLOPs,而4×conv 需要 34B,相比之下优化了 30 多倍。
另一方面体现在效果上,从下图来看,分辨率更高的情况下,AP 出现了饱和的情况。
但直观效果随着分辨率提高变得更好,使用 PointRend 还能够抗锯齿。
在语义分割方面,他们的研究结果表明,使用 PointRend 能够进一步提升 DeeplabV3 和 SemanticFPN 的效果。在实验对比中,采用的是 Cityscapes 语义分割集。
首先是在 DeeplabV3 上的效果,基于 PointRend 的 DeeplabV3 的语义分割效果明显更好。
在推理过程中对 res4 阶段进行扩展,可以产生更大、更准确的预测,但是需要更高的计算和内存开销,而且结果仍然不如使用 PointRend。直观来看,PointRend 也可以恢复更小的对象和细节。
此外,通过自适应采样点, PointRend 只预测 32k 点,就可以达到 1024×2048 分辨率(即 2M 点)。
在 SemanticFPN 上,在8×和4×输出步长变体上,用了 PointRend 之后,效果也有明显提升。
三、又双叒叕来自何恺明团队
PointRend 是何恺明团队的最新研究成果,一共有四名作者,全部来自 Facebook AI 研究院。
第一作者是 Alexander Kirillov,毕业于海德堡大学,是 FAIR 致力于计算机视觉研究的科学家。
除了何恺明之外,作者中还有一位华人学者,名为吴育昕。他在 2015 年从清华大学计算机系毕业,之后在 CMU 获得硕士学位,现在是 Facebook 研究工程师。
最后一位作者是 Ross Girshick,博士毕业于芝加哥大学,也是 FAIR 致力于计算机视觉研究的科学家。
对于何恺明来说,PointRend 是他在图像分割领域的最新探索。
这篇论文中被改进的 Mask R-CNN,就是出自他手,自 2017 年 3 月提出以来,到现在已经成为图像分割的主流算法。这一成果也在 2017 年的 ICCV 上获得了最佳论文奖。
在此之前,他在计算机视觉领域的研究成果也获得了 CVPR 2009 和 CVPR2016 的最佳论文奖,可以说是传奇般的存在。
PointRend 等后续研究成果出现,也进一步说明了他并没有停下来,而是在不断寻找新的方法来提升模型的效果。
大神之所以是大神,这也是其中的原因之一吧。
你说呢?