新的 self-attention 网络结构,Visual Attention Network

随着现在大家把transformer 的各种结构玩成花以后,后面也没有出什么比较经典的结构了。然后研究者们就开始挖掘以前的网络结构特点,加上各种技巧提高网络准确度。比如前段时间的ConvNeXt,各种叠技巧最后冲的很好准确度。现在又出来一个新的网络结构:Visual Attention Network。作者提出了一种新的Large Kernel Attention (LKA)模块,以使self-attention的自适应和长距离相关,同时避免了上述问题。

与MobileNet相似,它将一个标准的卷积解耦为2个部分:depthwise convolution和pointwise convolution(也就是1x1Conv)。本文的方法将卷积分解为3部分:depthwise convolution、depthwise and dilated convolution、pointwise convolution。得益于这种分解,本文的方法更适合于高效地分解大型核卷积。作者还在方法中引入了注意力机制来获得自适应特征。

 

 

 这里,是输入特征。表示注意力图。注意力图中的值表示每个特征的重要性。⊗指的是元素级的点乘。作者提出的LKA结合了卷积和自注意力的优点。它考虑了局部上下文信息、大的感受域和动态过程。

其中代码如下:

class AttentionModule(nn.Module):
    def __init__(self, dim):
        super().__init__()
        # depth-wise convolution
        self.conv0 = nn.Conv2d(dim, dim, 5, padding=2, groups=dim)
        # depth-wise dilation convolution
        self.conv_spatial = nn.Conv2d(dim, dim, 7, stride=1, padding=9, groups=dim, dilation=3)
        # channel convolution (1×1 convolution)
        self.conv1 = nn.Conv2d(dim, dim, 1)


    def forward(self, x):
        u = x.clone()        
        attn = self.conv0(x)
        attn = self.conv_spatial(attn)
        attn = self.conv1(attn)
        return u * attn

其中我个人看来,该网络结构利用拆分进行了特征提取,在一般的网络结构都有这些结构了,作者提出了一个Large Kernel Attention的概念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值