【深度学习|特征增强融合模块】ABCNet中的AEM模块相对于BiSeNet 中的ARM 模块是如何优化的?
【深度学习|特征增强融合模块】ABCNet中的AEM模块相对于BiSeNet 中的ARM 模块是如何优化的?
文章目录
- 【深度学习|特征增强融合模块】ABCNet中的AEM模块相对于BiSeNet 中的ARM 模块是如何优化的?
- ARM 模块 (Attention Refinement Module)
- AEM 模块 (Attention Enhancement Module)
- ARM 与 AEM 的联系与区别
- 总结
- 交通运输、机电主题会议
- 测绘遥感、地质主题会议
- 数学、力学、物理主题会议
ARM 模块 (Attention Refinement Module)
作用:
- ARM 模块的核心作用是对输入特征进行通道级的全局信息建模,突出关键特征并抑制冗余信息,从而增强对目标区域的关注。
结构分析:
-
全局平均池化 (
GlobalAveragePooling2D
):将输入特征 x 通过全局平均池化压缩到一个单一通道的特征向量,捕获全局上下文信息。 -
卷积 (
Conv2D
):使用一个通道数与输入相同的 1×1 卷积对池化后的特征向量进行通道间变换,同时进行非线性激活(ReLU)。 -
归一化 (
BatchNormalization
):稳定特征分布并加速训练。 -
激活函数 (
sigmoid
):将特征归一化为 [0,1] 的范围,用作通道注意力权重。 -
元素乘 (
multiply
):对输入特征图 x 和注意力权重进行逐元素相乘,增强关键通道的信息。
输出:
- 输出的特征图与输入的大小一致,但通道间的权重被重新分配,突出重要特征。
代码示例:
def AttentionRefinementModule(x, channel, name):
ARM = GlobalAveragePooling2D(data_format='channels_last', name=name+'_globalpooling')(x)
ARM = Reshape(target_shape=(1,1,channel), name=name+'_reshape')(ARM)
ARM = Conv2D(channel, 1, strides=1, padding='same', activation='relu', name=name+'_conv')(ARM)
ARM = BatchNormalization(name=name+'_bn')(ARM)
ARM = Activation('sigmoid', name=name+'_sigmoid')(ARM)
ARM = multiply([x,ARM], name=name+'_multiply')
return ARM
AEM 模块 (Attention Enhancement Module)
改进之处:
AEM 模块是对 ARM 模块的改进版本,融合了更强大的卷积操作和增强的注意力机制,进一步提升了特征建模能力和注意力的细粒度分配能力。
结构分析:
- 卷积 (
ConvBNReLU
):使用卷积(通常为 3×3 卷积)对输入特征图进行空间和通道的初步融合。包含批归一化和 ReLU激活,确保训练稳定。 - 注意力机制 (
Attention
):应用了一个单独定义的注意力模块,增强特征对目标的响应能力。 - 批归一化 (
BatchNorm2d
):在注意力结果之后进一步归一化特征。 - 权重初始化 (
init_weight
):对卷积层的权重进行适当初始化,提高训练效率。
输出:
- 与 ARM 一样,AEM 的输出特征图与输入大小一致,但其使用了更复杂的结构,特征表达能力更强。
代码示例:
class AttentionEnhancementModule(nn.Module):
def __init__(self, in_chan, out_chan):
super(AttentionEnhancementModule, self).__init__()
self.conv = ConvBNReLU(in_chan, out_chan, ks=3, stride=1, padding=1)
self.conv_atten = Attention(out_chan)
self.bn_atten = BatchNorm2d(out_chan)
self.init_weight()
def forward(self, x):
feat = self.conv(x)
att = self.conv_atten(feat)
return self.bn_atten(att)
def init_weight(self):
for ly in self.children():
if isinstance(ly, nn.Conv2d):
nn.init.kaiming_normal_(ly.weight, a=1)
if not ly.bias is None:
nn.init.constant_(ly.bias, 0)
ARM 与 AEM 的联系与区别
联系:
- 两者均通过注意力机制增强输入特征的表达能力。
- 输出的特征图与输入的大小一致,都是对通道权重的重新分配。
- 都能显著提高模型对目标区域的敏感性。
区别:
全局信息建模方式:
- ARM 依赖全局平均池化进行全局上下文建模。
- AEM 通过额外的卷积和更复杂的注意力机制进行全局和局部特征增强。
注意力生成方式:
- ARM 使用了简单的 1×1 卷积和 sigmoid 激活生成注意力权重。
- AEM 则采用了更高级的注意力模块(如自定义 Attention 模块),对空间和通道更细粒度建模。
特征融合方式:
- ARM 的注意力权重直接与输入逐元素相乘。
- AEM 结合了卷积、注意力和批归一化操作,生成更复杂的特征。
计算复杂度:
- ARM 结构简单,计算量较小。
- AEM 由于引入了卷积和复杂注意力机制,计算量和模型参数量都更高。
总结
- ARM 模块适用于轻量级网络,能够快速、有效地捕获全局特征。
- AEM 模块则通过更强大的卷积和注意力机制,提升了特征建模能力,适用于对特征表达要求更高的场景。
交通运输、机电主题会议
第六届国际科技创新学术交流大会(IAECST 2024) 暨第四届物流系统与交通运输国际学术会议(LSTT 2024)
- 12月6-8日,广州
第四届机电一体化与智能控制国际学术会议(MIC 2024)
- 12月27-29日,南昌
2024年智能船舶与机电系统国际学术会议(ICISES 2024)
- 12月27-29日,广州
测绘遥感、地质主题会议
第三届地理信息与遥感技术国际学术会议(GIRST 2024)
- 11月29日-12月1日,意大利罗马
2024年遥感技术与图像处理国际学术会议(RSTIP 2024)
- 11月29-12月1日,大理
数学、力学、物理主题会议
第五届应用力学与机械工程国际学术会议(ICAMME 2024)
- 12月20-22日,长沙
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!