查看原文
其他

【源头活水】实例分割(SOLOv2|NIPS2020)——增强版SOLO

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—努力的伍六七

地址:https://www.zhihu.com/people/mo-dao-90

SOLOv2:把bbox_free和端到端继续坚持下去。

论文地址:https://arxiv.org/abs/2003.10152

代码地址:https://github.com/WXinlong/SOLO


01

SOLOv2简介

在SOLOv1中已经是将bbox_free和one-stage进行到底了,在V2中更多的是优化方面。这边的优化方向主要是两个方面,一个是动态卷积,一个是matrix_nms优化后处理。此处不赘述SOLOv1的做法了,不明白的看下SOLOV1的讲解。首先说明下SOLOv1的问题是什么?

(1)根据一个SXS大小的GridMap去区分不同位置的实例,则要求最后输出的Mask分支有SXS的Channel数量,计算量和显存占用都会很高。

(2)分割效果是否有进一步提升空间?

(3)后处理的速度是否有进一步提升空进?

好吧其实后两点严格来说是可以独立出来的,并不只是对SOLOv1的一个优化方案。解释下具体这三个问题是怎么解决的。


02

思路和细节介绍

2.1 动态卷积

在SOLOv1输出的Channel数量是SXS,其中每一层对应一个位置,明显这是有很多冗余的。动态卷积的概念就是爸网络的输出当做卷积核的参数,取卷积后的输出。举个简单的栗子,在SOLOv1中第一行第一列的Grid对应的Mask是MaskFeature的第1个Channel的FeatureMap,在SOLOv2中,先在KernelBranch中取第一行第一列中的这个位置对应的值,要注意KernelBranch的Channel数可以构成一个卷积核,比如你想用一个1x1的卷积核,FeatureBranch的尺寸为HXWXE,那你的KernelBranch的尺寸就是SXSXE,如果你想用3x3的卷积核,那么KernelBranch的尺寸就是SXSX(E*9)。用KernelBranch上的对应位置的参数作为卷积参数得到的输出,加上sigmoid就是我们需要的Mask。思路确实很巧妙,但是其实这样的操作也不是第一次开创了,印象中有其他文章也如此用法,等我找到那篇文章后过来补。

2.2 Feature特征融合

这个其实很简单,就是比如FPN输出是4层,不同的尺寸,把他们全部upsample到同样的尺寸就行了.


2.3 matrix nms

这个其实我觉得都可以直接写一篇论文了,不得不说SOLO这两篇文章真是的夹带私货啊,一篇顶好几篇。这个后处理的优化基于Soft-NMS的idea来做的,但是通过一些矩阵运算以及一些抽象方案大大提高了运算速度。一开始不是很理解没有关系,我一开始也没有很理解。所以我这得从源码的角度来扒这个东西。

首先,Soft-NMS的思路就是比如一个不同的实例之间有重叠,且实例A比实例B的置信度更高,那么当然我先选择A作为一个输出,但是B的话我并不是直接不要,而是给它的置信度乘上一个参数,当然这个参数肯定是和IOU有关,整体上看肯定是IOU越大,这个参数就越小,这样才能更好地去抑制那些冗余的分割结果。当然这个函数怎么设计也没有固定的方案,保证IOU越大,系数越小,逻辑上make sense就问题不大。

在分割任务里面,和检测任务的一个不同之处是分割的一些IOU计算都是基于矩阵来进行运算,这也是为什么这个方法能够work的重要原因。定义下这个乘法系数。首先NMS这个流程的关键是有两点,A这个Mask做NMS的结果来源于两个因素,一个是分数比A大的Mask和A的IOU,还有一个是分数比A大的Mask是否已经被抑制的概率。第一个因素很好计算,就算IOU就行,第二个因素才是这个matrix_nms的关键,为了并行地去计算,SOLOv2中也采用IOU作为因变量。

其中function函数可以采用两种方式。

具体伪码如下:


03

实验结果


04

总结

看了1之后我就没看2,因为看了SOLOv1我知道这里面肯定是有优化的点。这个后处理的速度优化marixNMS是没有想到的,其他两个自己也算是有点这想法,当然也是有差异。果然SOLOv2确实就这么干了。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存