GCNet学习笔记

GCNet学习笔记

1.研究动机

本文的是从Non-local Network的角度出发,发现对于不同位置点的attention map是几乎一致的,这表明了non-local中的每个点在计算attention map的时候存在大量的浪费,从而提出了简化的NL,也就是本文的SNL。更进一步地,作者还研究了和SENet的关联,基于SENet和SNL,提出了统一的框架,并结合两者优点提出了GCNet,计算量相对较小,又能很好地融合全局信息。

2.具体方法

首先是对Non-local Network的分析:
GCNet学习笔记_第1张图片
左图是Non-local的示意图,其公式如下:

在这里插入图片描述
对其中的attention map进行可视化,也就是:
GCNet学习笔记_第2张图片
最后我们发现对于图像中不同位置计算的attention map几乎一致:

所以作者直接进行了简化:

在这里插入图片描述
这样所有位置共享一个attention map就可以了,计算量降为原来的 1 / W H 1/WH 1/WH

进一步地,作者将SNL抽象成了全局上下文信息模块,如下图(a)。
GCNet学习笔记_第3张图片
全局上下文信息模块可以表达为:

在这里插入图片描述
并且说明了SNL和SE都是其一种特殊形式,并结合两者优点,提出了(d),也就是GC block,并有以下优点:
(1) 相比于SNL,SNL中的transform的1x1卷积在res5中是2048x1x1x2048,其计算量较大,所以借鉴SE的方法,加入压缩因子,为了更好的优化,还加入了layernorm。
(2)相比于SE,一方面是提取的全局信息更加充分(其实在后续的实验中说服力不是很强,单独avg pooling+add,只掉了0.3个点,但是更加简洁),另一方面则是加号和乘号的区别,而且在实验结果上,加号比乘号有显著的优势。

3.实验结果

GCNet学习笔记_第4张图片
从消融实验来看,
(1)GC比SNL有优势,并且stage3-5(ResNet50中也就是13个block)都加入GC,提升最大,有2.2个点的提升,还是非常明显的。
(2)从d的实验看到,在压缩的过程中加入LN和RELU,可以提升性能,做到压缩不掉点。
(3)融合中add的作用非常有效,f的实验说明add比scale有将近1个点的提升。

最后的检测性能在不同的backbone中加入均有提升:
GCNet学习笔记_第5张图片
可以说在非常强的backbone X101+DCN上依然有0.7个点的提升,最后做到48.4,可以说是非常有用的技巧了。

你可能感兴趣的:(目标检测,python,计算机视觉)