论文:https://arxiv.org/abs/2012.11879
注意力机制有很多种方法,空间注意力,通道注意力,自注意力等,这里我们讨论的是通道注意力。通道注意力非常简单,直接学习出对应的每个通道的权值就可以,所以非常的好用。一般来说,在计算通道注意力的时候,每个通道的会需要有个标量值来计算后面的注意力权重,这个标量的计算函数一般都是使用Global Average Pooling。但是,GAP并不是那么的完美,简单的去均值的方法会丢弃很多的信息,无法充分的获取每个通道的多样性的信息。那么,除了使用全局的平均值来计算通道注意力之外,还有其他的方法吗?后面会详细说明。
文章的主要贡献如下:
在这部分,我们来看下,GAP是如何和DCT联系到一起的,以及FcaNet是如何设计的。
通道注意力
假设X是输入的特征图,通道注意力机制可以写成:
这里,att是注意力向量,得到了这个注意力向量之后,每个通道就可以通过这个注意力向量的对应元素进行缩放,得到通道注意力机制的输出:
离散余弦变换
DCT定义为:
这里,f是DCT的频谱,x是输入,L是x的长度,2维的DCT可以写成:
2D的DCT的反变换可以写成:
在式子(4)和(5)中,为了简单起见,所以去掉了一些归一化的常量。
通过通道注意力和DCT的定义,我们可以总结出两点:1、现有的方法在做通道注意力的时候,使用GAP作为预处理。2、DCT可以看成是输入的加权和,权值就是(3)和(4)的余弦部分。
GAP是一个取均值的操作,可以看成是输入的最简单的频谱,也就是频率为0的分量。但是,在通道注意力中只使用单独的GAP信息并不是很好,既然单独的频谱不好,那么可以考虑多用几个频率分量,这就引入了多频谱的通道注意力机制。
通道注意力的理论分析
上面我们分析过了,DCT可以看成是输入的加权和,我们会进一步提出,GAP实际上就是DCT的一种特殊形式。
定理1 GAP是2D DCT的一种特殊形式,它和2D DCT中的最低的频率分量是成比例的。
证明:假设在(4)式中,h和w为0,我们有:
在(6)式中,
我们可以把式(5)重写一下:
可以看到,这个特征图X可以表示为不同的频率分量的组合,其实就是信号处理中的频率分解,根据(1)式:
通道注意力仅仅是基于GAP,但是,输入的特征图X并不仅仅只有GAP一个频率分量,还有很多其他的频率分量:
所以说,在用GAP做通道注意力的时候,很多的信息其实被丢掉了。
多频谱注意力模块
为了利用到输入特征图X的更多的信息,我们可以使用多个频率分量,包括GAP。首先,我们把输入特征图X,按照通道分为多个组,
这里的[u,v]是频率分量的2D索引,
这里Freq就是得到的多频谱向量,然后这个多频谱的通道注意力可以写成:
可以看到,对于不同的组,可能使用不同的[u,v]组合,也就是说,每个组使用不同的频率分量。这样,就将GAP的单个频谱扩展到了多个频谱。
下图是和SENet的对比:
选择频率分量的规则
现在有个问题是如何去选择频率分量,也就是每个
3. 实验
单独频率分量的效果,在ImageNet上的准确率:
使用不同数量的频率分量的效果:
和其他的方法的比较:
将FcaNet作为物体检测的主干的时候,在MS COCO上的结果:
在MS COCO的实例分割时的效果:
在附录的地方,还做了关于频率组合策略的一些实验,除了文中提到了选择topk个效果最好的频率之外,还尝试了效果最差的k个,还有频率最低的k个。Low-k表示频率最低的k个,Bot-k表示效果最差的k个。
模型效果很好,改动也很简单,涨点很明显。只是不清楚这个最佳的频率分量的组合的泛化性能怎么样,能不能用到其他的数据集上。不过,从作者给出的结果看,选出来的其实主要还是低频的分量,而且从low-k的效果来看,也是挺好的,那么,其实只要按照low-k的方法选取分量,应该也都是有效果的,期待有人在更多数据集上做下类似的实验。
更多内容,请关注微信公众号“AI公园”。