From 7d0e2bdb1a31e49f18818e98d3bd7473a48ddb22 Mon Sep 17 00:00:00 2001 From: xmu-xiaoma666 <775629340@qq.com> Date: Mon, 7 Jun 2021 20:41:48 +0800 Subject: [PATCH] EMSA --- README.md | 34 +++++++- attention/EMSA.py | 100 ++++++++++++++++++++++ attention/__pycache__/EMSA.cpython-38.pyc | Bin 0 -> 2920 bytes img/EMSA.png | Bin 0 -> 67977 bytes main.py | 14 ++- 5 files changed, 137 insertions(+), 11 deletions(-) create mode 100644 attention/EMSA.py create mode 100644 attention/__pycache__/EMSA.cpython-38.pyc create mode 100644 img/EMSA.png diff --git a/README.md b/README.md index 2af40a2..71d9211 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,9 @@ - [9. DANet Attention Usage](#9-danet-attention-usage) - - [10. Pyramid Split Attention (PSA) Attention Usage](#10-Pyramid-Split-Attention-(PSA)-attention-usage) + - [10. Pyramid Split Attention (PSA) Attention Usage](#10-Pyramid-Split-Attention-(PSA)-Attention-Usage) + - [11. Efficient Multi-Head Self-Attention(EMSA) Usage](#11-Efficient-Multi-Head-Self-Attention(EMSA)-Usage) - [MLP Series](#mlp-series) @@ -65,6 +66,10 @@ - Pytorch implementation of ["EPSANet: An Efficient Pyramid Split Attention Block on Convolutional Neural Network---arXiv 2020.05.30"](https://arxiv.org/pdf/2105.14447.pdf) +- Pytorch implementation of ["ResT: An Efficient Transformer for Visual Recognition---arXiv 2020.05.28"](https://arxiv.org/abs/2105.13677) + + + *** @@ -277,12 +282,37 @@ if __name__ == '__main__': output=psa(input) print(output.shape) - ``` *** +### 11. Efficient Multi-Head Self-Attention(EMSA) Usage + +#### 11.1. Paper +["ResT: An Efficient Transformer for Visual Recognition"](https://arxiv.org/abs/2105.13677) + +#### 11.2. Overview +![](./img/EMSA.png) + +#### 11.3. Code +```python + +from attention.EMSA import EMSA +import torch +from torch import nn +from torch.nn import functional as F + +if __name__ == '__main__': + input=torch.randn(50,64,512) + emsa = EMSA(d_model=512, d_k=512, d_v=512, h=8,H=8,W=8,ratio=2,apply_transform=True) + output=emsa(input,input,input) + print(output.shape) + +``` + +*** + # MLP Series - Pytorch implementation of ["RepMLP: Re-parameterizing Convolutions into Fully-connected Layers for Image Recognition---arXiv 2020.05.05"](https://arxiv.org/pdf/2105.01883v1.pdf) diff --git a/attention/EMSA.py b/attention/EMSA.py new file mode 100644 index 0000000..b13dcec --- /dev/null +++ b/attention/EMSA.py @@ -0,0 +1,100 @@ +import numpy as np +import torch +from torch import nn +from torch.nn import init + + + +class EMSA(nn.Module): + + def __init__(self, d_model, d_k, d_v, h,dropout=.1,H=7,W=7,ratio=3,apply_transform=True): + + super(EMSA, self).__init__() + self.H=H + self.W=W + self.fc_q = nn.Linear(d_model, h * d_k) + self.fc_k = nn.Linear(d_model, h * d_k) + self.fc_v = nn.Linear(d_model, h * d_v) + self.fc_o = nn.Linear(h * d_v, d_model) + self.dropout=nn.Dropout(dropout) + + self.ratio=ratio + if(self.ratio>1): + self.sr=nn.Sequential() + self.sr_conv=nn.Conv2d(d_model,d_model,kernel_size=ratio+1,stride=ratio,padding=ratio//2,groups=d_model) + self.sr_ln=nn.LayerNorm(d_model) + + self.apply_transform=apply_transform and h>1 + if(self.apply_transform): + self.transform=nn.Sequential() + self.transform.add_module('conv',nn.Conv2d(h,h,kernel_size=1,stride=1)) + self.transform.add_module('softmax',nn.Softmax(-1)) + self.transform.add_module('in',nn.InstanceNorm2d(h)) + + self.d_model = d_model + self.d_k = d_k + self.d_v = d_v + self.h = h + + self.init_weights() + + + def init_weights(self): + for m in self.modules(): + if isinstance(m, nn.Conv2d): + init.kaiming_normal_(m.weight, mode='fan_out') + if m.bias is not None: + init.constant_(m.bias, 0) + elif isinstance(m, nn.BatchNorm2d): + init.constant_(m.weight, 1) + init.constant_(m.bias, 0) + elif isinstance(m, nn.Linear): + init.normal_(m.weight, std=0.001) + if m.bias is not None: + init.constant_(m.bias, 0) + + def forward(self, queries, keys, values, attention_mask=None, attention_weights=None): + + b_s, nq ,c = queries.shape + nk = keys.shape[1] + + q = self.fc_q(queries).view(b_s, nq, self.h, self.d_k).permute(0, 2, 1, 3) # (b_s, h, nq, d_k) + + if(self.ratio>1): + x=queries.permute(0,2,1).view(b_s,c,self.H,self.W) #bs,c,H,W + x=self.sr_conv(x) #bs,c,h,w + x=x.contiguous().view(b_s,c,-1).permute(0,2,1) #bs,n',c + x=self.sr_ln(x) + k = self.fc_k(x).view(b_s, -1, self.h, self.d_k).permute(0, 2, 3, 1) # (b_s, h, d_k, n') + v = self.fc_v(x).view(b_s, -1, self.h, self.d_v).permute(0, 2, 1, 3) # (b_s, h, n', d_v) + else: + k = self.fc_k(keys).view(b_s, nk, self.h, self.d_k).permute(0, 2, 3, 1) # (b_s, h, d_k, nk) + v = self.fc_v(values).view(b_s, nk, self.h, self.d_v).permute(0, 2, 1, 3) # (b_s, h, nk, d_v) + + if(self.apply_transform): + att = torch.matmul(q, k) / np.sqrt(self.d_k) # (b_s, h, nq, n') + att = self.transform(att) # (b_s, h, nq, n') + else: + att = torch.matmul(q, k) / np.sqrt(self.d_k) # (b_s, h, nq, n') + att = torch.softmax(att, -1) # (b_s, h, nq, n') + + + if attention_weights is not None: + att = att * attention_weights + if attention_mask is not None: + att = att.masked_fill(attention_mask, -np.inf) + + att=self.dropout(att) + + out = torch.matmul(att, v).permute(0, 2, 1, 3).contiguous().view(b_s, nq, self.h * self.d_v) # (b_s, nq, h*d_v) + out = self.fc_o(out) # (b_s, nq, d_model) + return out + + +if __name__ == '__main__': + input=torch.randn(50,64,512) + emsa = EMSA(d_model=512, d_k=512, d_v=512, h=8,H=8,W=8,ratio=2,apply_transform=True) + output=emsa(input,input,input) + print(output.shape) + + \ No newline at end of file diff --git a/attention/__pycache__/EMSA.cpython-38.pyc b/attention/__pycache__/EMSA.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d397324f5afd8311a3d215b697d9b5c246ee598 GIT binary patch literal 2920 zcmaJ@OK%*<5$^7J?(B=CD2aMlRuYHs8n9sa6eL3YlHeGi2pf_Upuu1=+8&a#J3G7V znWaQwm_sDMCjmYtIqhBoDCb;q@sG%{kI5n6&AA2v;;(v_)GJOmrnbAf`s+tkf3;t> z+Yv*VocrcCUvwDz2X$U7H2NXF@^=u5DV{UQ?XQpmzakeSM>?FwoZKCG(&Ow?rd;Jc zVaiLLf&bW%K^iK5DD-brF>9zmg{m=kWRwP~VQZwQHdRZtpN6uTHq(eIX13CH+8T5o zbF9GcvR>x|`(WEWZbVT)x>=D`ebT*Hyk)0+4~^9B7`ttK#df*!l>ek59ooecCSBF0 zm7j3weZ^cReOkk~x9{Bj=%0W51C_sia1sFJ#DTcix3{%Kr*;D$jg&VzV->4-%^r)H zm^035zh<#h2as;%&HS3zZY|c?TtE}NrU}n9&eEn~HExZ5&F!oRnr7|Iu}a*kL&$c` z25rTMuKo+gI&%hHxAF!nSdG`A;ujh0LM1K(Lpe`rPphz810tcEs~h8QYL^huTL;?u z*IaL$VV#HO{Op3l34rO6C93z-oeP|BG3LYiq6+5NLShKGJBL7zpQkoQW;DVrLtmA`g?jjos`n; zkBh^e(Bul;gfKxl-mON-!;}A_7?BmdYsM?5lT>S$#=|(Kkcnf%e_{BqG%aWRt*l5B zZQR{{d|>6!%0ny1GPtG3lkv1Nfm${^omAOaMt9SLXZs%zmuG5cIX-1m>lU9z>|yYdt{=+eblvOZ3&-8sMmQ5BOzK>`8r>R)>iST zZDCIR)~6^rE#y6V?4RH({{(@MVsmzj{rdOE9FLJ#V&FU$`s2zScr_pR2ww4&!jumJ z#fA+%tK3;=dk%%~LAadNz^r^Z<|`ZS-(wlUG6a6p;)7mZ!pF$V_%_&sZ5iw)MU0pt z5`)WAP3O`f#NL0N{p)Xc?tlJ4k4vYlRIg=%MNpI`%F1jR4mNc46`Dm1B)h{T8{u)p z1>z*hW9cuVLAv*|q?8TBBgIh_%jU;P)!$!)lRigtgXJ7Nr5~ej_(;D^z*h9A^%lfC z_(}>N##^W>aMcQaJ62Nf(W-UTi=nvP_i4hiP#{p>`s-Vq7M7s9Ryv_{>W zbF`YXXwDWE%7g6^Z|+ztj9V)&n z|3PzJv3d;+v%8>YS*^@g>!@zcMYT3N2Q7&93Onv#t@XNtGjxi#zRw2w^K}QO7qIu} z4FK`$8trvLaF?1t*PYpg+O5_G7n?{~7JFlXZIL^5doE7zkNk0Vv#0**AdNZ4UF_*n z-Nl}|br&@6Z`&AOL_1|qP1#kqA$pg=k^2d#dL2FK9%ku-1!WO~f&5cFnu2vKV?8IZ zs~9v9qPxoWrsHX;-+)4&Cvky$v_9q_>`56=Wh5)Trseu6EO??W)r;*r=C5x-`+GUA*3ZL!HW zMaVb6q4=E0^5}|)#0`3uE&D8&Ks`?rWomkd3qc;Z*Av^@y@2v#k&II0$0%N=BD7m^ zd@xP&#fYVIO9=XBm}%O}tkF;NJdR)3|0b}W6uNNEQ9sB(krGTBpd?M^yhDp-$U#88%42TO8<^cv33Xg zCaet7d7%p9WyJ(p-c3hkVthD*dfr55MWt^L+H+DoV@4C+T#)n6iNH(BsUdD31nI8* KG6XroAN)IPzR>sp literal 0 HcmV?d00001 diff --git a/img/EMSA.png b/img/EMSA.png new file mode 100644 index 0000000000000000000000000000000000000000..32393b16c087d4a2491a8392c6432feee8a72dc6 GIT binary patch literal 67977 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 68700fe..74ad961 100644 --- a/main.py +++ b/main.py @@ -1,16 +1,12 @@ -from rep.acnet import ACNet +from attention.EMSA import EMSA import torch from torch import nn from torch.nn import functional as F if __name__ == '__main__': - input=torch.randn(50,512,49,49) - acnet=ACNet(512,512) - acnet.eval() - out=acnet(input) - acnet._switch_to_deploy() - out2=acnet(input) - print('difference:') - print(((out2-out)**2).sum()) + input=torch.randn(50,64,512) + emsa = EMSA(d_model=512, d_k=512, d_v=512, h=8,H=8,W=8,ratio=2,apply_transform=True) + output=emsa(input,input,input) + print(output.shape) \ No newline at end of file