Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iAFF为什么要用两次注意力 #9

Closed
swjtulinxi opened this issue Oct 25, 2020 · 4 comments
Closed

iAFF为什么要用两次注意力 #9

swjtulinxi opened this issue Oct 25, 2020 · 4 comments

Comments

@swjtulinxi
Copy link

你好,我不是很明白你论文所说的,初始特征集成,就是为什么要用两次注意力呢

@YimianDai
Copy link
Owner

YimianDai commented Oct 25, 2020

逻辑或者说动机大概是这样的:

第一层,以 ResNet、FPN 为代表,融合方式 X + Y,这种线性融合方式给定了固定的权重,即 1 和 1;(PWConv(X + Y) (比如FPN)、 PWConv(Concat(X,Y)) (U-Net)这两种本质上也是线性的,跟 X + Y 一样)

第二层,以 SKNet、AFF 为代表,融合方式 AFF(X, Y) = X * M(X + Y) + Y * (1 - M(X + Y)) ( M 为注意力模块,SKNet 用的是 Softmax,此外 AFF 的注意力模块不同,但这里忽略这些细节),Motivation 是用 注意力机制动态、自适应分配的权重 来代替上面的固定权重,可以得到更好的效果。虽然认为 X + Y 这类线性的简单融合是性能瓶颈之一,但在注意力模块 M 中仍然用着性能瓶颈 X + Y。

第三层,iAFF,iAFF(X, Y) = X * M(AFF(X, Y)) + Y * (1 - M(AFF(X, Y))),(AFF(X, Y) 是上一层 AFF 得到的特征),用 AFF(X, Y) 代替了(或者说缓解了)注意力模块 M 中我们不想要的 X + Y,改善了注意力模块的输入质量,输出权重也相应的改善了。其实 AFF(X, Y) 里面还是有 X + Y,所以这个过程可以一直迭代下去,所以叫做 iterative AFF,但是考虑到边际效应以及计算量、内存使用的增长,我们就止步于此了。

@YimianDai
Copy link
Owner

YimianDai commented Oct 27, 2020

两天多没有等到您的进一步回复,那我 close issue 了哈。

@swjtulinxi
Copy link
Author

有个问题就是concat(x+y)+conv的方式融合权重不是1和1把,那么我们在开始时是不是可以不用x+y的方式,而是用concat的方式,这样就不用两次注意力了,但我此处指在fpn结构上,因为放在基础网络上,concat方式会增加显存和计算量

@YimianDai YimianDai reopened this Nov 2, 2020
@YimianDai
Copy link
Owner

YimianDai commented Nov 2, 2020

抱歉,这两天在广州玩,回复得慢了一些。

concat(x, y)+ conv 的方式融合权重不是 1 和 1,是 W_A * X[:, i, j] + W_B * Y[:, i, j],这个在论文里有写到。虽然不是 1 和 1,但这个仍然是线性的。

的确,如您所说,concat 规避了直接相加,但会增加显存和计算量,或许基于 Concat 会有性能更好的架构,但这个超出 AFF 一文的初衷了,AFF 只要就是想传达三点:

  1. 注意力机制可以被用在所有的特征融合场景中(同层、长跳、短跳、乃至注意力本身)
  2. 通道注意力也可以有尺度这一概念,可以多尺度
  3. X + Y 可能是瓶颈所在。

我相信肯定有比目前 AFF 结构更为合理、性能更好的结构,很高兴与您交流。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants