【源头活水】实例分割(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
在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确实就这么干了。
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“源头活水”历史文章
ICLR2021 | 显存不够?不妨抛弃端到端训练
EEGdenoiseNet:使用神经网络进行EEG去噪
Zero-Shot Learning in Modern NLP 现代NLP中的零样本学习
XLNet--自回归语言模型的复兴
联邦学习 | FedProx 算法
Deep Layer Aggregation - 聚合不同尺度特征图的架构
CVPR 2021 | 利用时序差分进行动作识别的最新Backbone--TDN
视觉子领域中的Transformer
一种高效评估预训练模型是否适合当前任务的方法
CVPR'21 | involution:超越convolution和self-attention的神经网络新算子
特征提取网络HS-ResNet
CVPR2021:目标引导的人类注意力估计提升零样本学习
CVPR 2021 | TCANet:最强时序动作提名修正网络解读
在基于会话的图神经推荐系统中加入停留时间
更多源头活水专栏文章,
请点击文章底部“阅读原文”查看
分享、在看,给个三连击呗!