热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

共2048个49维的通道向量_FcaNet论文解读,用频谱信息计算通道注意力

论文:https:arxiv.orgabs2012.118791、介绍注意力机制有很多种方法,空间注意力,通道注意力,自注意

论文:https://arxiv.org/abs/2012.11879

1、介绍

注意力机制有很多种方法,空间注意力,通道注意力,自注意力等,这里我们讨论的是通道注意力。通道注意力非常简单,直接学习出对应的每个通道的权值就可以,所以非常的好用。一般来说,在计算通道注意力的时候,每个通道的会需要有个标量值来计算后面的注意力权重,这个标量的计算函数一般都是使用Global Average Pooling。但是,GAP并不是那么的完美,简单的去均值的方法会丢弃很多的信息,无法充分的获取每个通道的多样性的信息。那么,除了使用全局的平均值来计算通道注意力之外,还有其他的方法吗?后面会详细说明。

文章的主要贡献如下:

  • 我们证明了GAP是一种特殊形式的DCT(离散余弦变换),基于这个证明,我们将通道注意力泛化到频域,并提出了FcaNet,使用多个频率的通道注意力网络。
  • 我们提出了一个2阶段的损失函数,用来选择不同的频率分量,不同的频率数量,以及不同的频率组合。
  • 我们在COCO和ImageNet上都到了SOTA,并超越之前的通道注意力的方法。
  • 我们的方法非常的简单,只需要改一行代码就可以替换之前的通道注意力方法。

2、方法

在这部分,我们来看下,GAP是如何和DCT联系到一起的,以及FcaNet是如何设计的。

2.1 通道注意力和离散余弦变换

通道注意力

假设X是输入的特征图,通道注意力机制可以写成:

dd99c69944fed232507512c4aab0553f.png

这里,att是注意力向量,得到了这个注意力向量之后,每个通道就可以通过这个注意力向量的对应元素进行缩放,得到通道注意力机制的输出:

bfbe14d41e8c7d581492a8c1e76ec24a.png

离散余弦变换

DCT定义为:

ff3c84f9243bc03ced0b0ea3d9519685.png

这里,f是DCT的频谱,x是输入,L是x的长度,2维的DCT可以写成:

652c681c11ed98bd35bb8c69c0b532d2.png

2D的DCT的反变换可以写成:

6b7166e724ab45db255e1c874575335e.png

在式子(4)和(5)中,为了简单起见,所以去掉了一些归一化的常量。

通过通道注意力和DCT的定义,我们可以总结出两点:1、现有的方法在做通道注意力的时候,使用GAP作为预处理。2、DCT可以看成是输入的加权和,权值就是(3)和(4)的余弦部分。

GAP是一个取均值的操作,可以看成是输入的最简单的频谱,也就是频率为0的分量。但是,在通道注意力中只使用单独的GAP信息并不是很好,既然单独的频谱不好,那么可以考虑多用几个频率分量,这就引入了多频谱的通道注意力机制。

2.2 多频谱通道注意力

通道注意力的理论分析

上面我们分析过了,DCT可以看成是输入的加权和,我们会进一步提出,GAP实际上就是DCT的一种特殊形式。

定理1 GAP是2D DCT的一种特殊形式,它和2D DCT中的最低的频率分量是成比例的。

证明:假设在(4)式中,h和w为0,我们有:

b2abed9298e31d6c6fc42402f7fc4881.png

在(6)式中,

ac6d03db9a754a9f6bf847dbbdc599ca.png

我们可以把式(5)重写一下:

8e845fe2f7e2f2ed540eb59014e6c513.png

可以看到,这个特征图X可以表示为不同的频率分量的组合,其实就是信号处理中的频率分解,根据(1)式:

d28805617b9284920ed894d920a90b4b.png

通道注意力仅仅是基于GAP,但是,输入的特征图X并不仅仅只有GAP一个频率分量,还有很多其他的频率分量:

16ac368d52b97ff093370fc6cdaf55de.png

所以说,在用GAP做通道注意力的时候,很多的信息其实被丢掉了。

多频谱注意力模块

为了利用到输入特征图X的更多的信息,我们可以使用多个频率分量,包括GAP。首先,我们把输入特征图X,按照通道分为多个组,

93c22a0bf71af6dc31f41d4795d84cc1.png

这里的[u,v]是频率分量的2D索引,

e3c6d25db1ba4a8a9d890f218cb14583.png

这里Freq就是得到的多频谱向量,然后这个多频谱的通道注意力可以写成:

df8efde5c8d6fd36078dd3c2f102446e.png

可以看到,对于不同的组,可能使用不同的[u,v]组合,也就是说,每个组使用不同的频率分量。这样,就将GAP的单个频谱扩展到了多个频谱。

下图是和SENet的对比:

7d53017a274c2ed97d8113707324f50a.png

选择频率分量的规则

现在有个问题是如何去选择频率分量,也就是每个

174187533f769965914acec9bafdf1e1.png

3. 实验

单独频率分量的效果,在ImageNet上的准确率:

7355f15416067866ab03b744db69ba3f.png

使用不同数量的频率分量的效果:

badc101fef3236ff5709cd55bc979a7b.png

和其他的方法的比较:

7795cc15884cdc688e62bcfdc64a3d2a.png

将FcaNet作为物体检测的主干的时候,在MS COCO上的结果:

d181c1b8805d54b77207ce815fda3ffd.png

在MS COCO的实例分割时的效果:

d6b75cdc1dd359cdef698aaa13dc985b.png

在附录的地方,还做了关于频率组合策略的一些实验,除了文中提到了选择topk个效果最好的频率之外,还尝试了效果最差的k个,还有频率最低的k个。Low-k表示频率最低的k个,Bot-k表示效果最差的k个。

1575b483e5814c57f4e952c6a4eb3090.png

总结

模型效果很好,改动也很简单,涨点很明显。只是不清楚这个最佳的频率分量的组合的泛化性能怎么样,能不能用到其他的数据集上。不过,从作者给出的结果看,选出来的其实主要还是低频的分量,而且从low-k的效果来看,也是挺好的,那么,其实只要按照low-k的方法选取分量,应该也都是有效果的,期待有人在更多数据集上做下类似的实验。

更多内容,请关注微信公众号“AI公园”。



推荐阅读
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 热血合击脚本辅助工具及随机数生成器源码分享
    本文分享了一个热血合击脚本辅助工具及随机数生成器源码。游戏脚本能够实现类似真实玩家的操作,但信息量有限且操作不可控。热血合击脚本辅助工具可以帮助玩家自动刷图、换图拉怪等操作,并提供了雷电云手机的扩展服务。此外,还介绍了使用mt_rand函数作为随机数生成器的代码示例。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了包的基础知识,包是一种模块,本质上是一个文件夹,与普通文件夹的区别在于包含一个init文件。包的作用是从文件夹级别组织代码,提高代码的维护性。当代码抽取到模块中后,如果模块较多,结构仍然混乱,可以使用包来组织代码。创建包的方法是右键新建Python包,使用方式与模块一样,使用import来导入包。init文件的使用是将文件夹变成一个模块的方法,通过执行init文件来导入包。一个包中通常包含多个模块。 ... [详细]
author-avatar
启布平凡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有