-
Notifications
You must be signed in to change notification settings - Fork 95
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
Comments
逻辑或者说动机大概是这样的: 第一层,以 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,但是考虑到边际效应以及计算量、内存使用的增长,我们就止步于此了。 |
两天多没有等到您的进一步回复,那我 close issue 了哈。 |
有个问题就是concat(x+y)+conv的方式融合权重不是1和1把,那么我们在开始时是不是可以不用x+y的方式,而是用concat的方式,这样就不用两次注意力了,但我此处指在fpn结构上,因为放在基础网络上,concat方式会增加显存和计算量 |
抱歉,这两天在广州玩,回复得慢了一些。 concat(x, y)+ conv 的方式融合权重不是 1 和 1,是 W_A * X[:, i, j] + W_B * Y[:, i, j],这个在论文里有写到。虽然不是 1 和 1,但这个仍然是线性的。 的确,如您所说,concat 规避了直接相加,但会增加显存和计算量,或许基于 Concat 会有性能更好的架构,但这个超出 AFF 一文的初衷了,AFF 只要就是想传达三点:
我相信肯定有比目前 AFF 结构更为合理、性能更好的结构,很高兴与您交流。 |
你好,我不是很明白你论文所说的,初始特征集成,就是为什么要用两次注意力呢
The text was updated successfully, but these errors were encountered: