y2 = self.m(y1)
return self.cv2(torch.cat((x, y1, y2, self.m(y2)), 1))
2.LSKA注意力机制介绍
LSKA将深度卷积层的二维卷积核分解为级联的水平和垂直一维卷积核。与标准的LKA设计相比,所提出的分解使得可以在注意力模块中直接使用具有大卷积核的深度卷积层,无需额外的块。
视觉注意力网络(VAN)具有大卷积核注意力(LKA)模块已经在一系列基于视觉的任务上表现出卓越的性能,超越了视觉Transformer。然而,这些LKA模块中的深度卷积层随着卷积核大小的增加而导致计算和内存占用呈二次增加。
为了缓解这些问题,并实现在VAN的注意力模块中使用极大的卷积核,作者提出了一系列Large Separable Kernel Attention模块,称为LSKA。LSKA将深度卷积层的二维卷积核分解为级联的水平和垂直一维卷积核。与标准的LKA设计相比,所提出的分解使得可以在注意力模块中直接使用具有大卷积核的深度卷积层,无需额外的块。作者证明了VAN中所提出的LSKA模块可以实现与标准LKA模块相当的性能,并且计算复杂性和内存占用更低。作者还发现,随着卷积核大小的增加,所提出的LSKA设计更倾向于将VAN偏向物体的形状而不是纹理。
LSKA的结构和作用可以分为以下几个步骤:
- 初始化卷积层(conv0h和conv0v):这两个卷积层分别负责提取输入特征图的水平和垂直方向的特征。这一步是为了生成初步的注意力图,帮助模型集中注意力于图像中的重要部分。
- 空间扩张卷积层(conv_spatial_h和conv_spatial_v):在获得初步的注意力图后