自适应池化与位置注意力
基本概念
自适应池化与普通池化(如 nn.AvgPool2d )的主要区别在于:
- 普通池化 :需要手动指定池化核大小( kernel_size )和步长( stride )
- 自适应池化 :直接指定想要的 输出尺寸 ,PyTorch会自动计算池化核大小和步长
语法格式
nn.AdaptiveAvgPool2d ( output_size )
参数说明
- output_size :指定输出特征图的尺寸
- 可以是一个整数,表示输出为正方形 (output_size × output_size)
- 可以是一个元组 (H, W),分别指定输出的高度和宽度
- 可以在某个维度使用 None ,表示保持该维度的原始大小不变
在AFNet代码中的应用
在你提供的AFNet代码中, AdaptiveAvgPool2d 被用于 CoordAtt (坐标注意力)模块:
self .pool_h = nn.AdaptiveAvgPool2d #( ( None , 1 ) ) # 垂直池化
self .pool_w = nn.AdaptiveAvgPool2d #( ( 1 ,None ) ) # 水平池化
这里的作用是:
- pool_h :将特征图在宽度方向上池化到1,保持高度不变,用于捕获垂直方向的全局上下文信息
- pool_w :将特征图在高度方向上池化到1,保持宽度不变,用于捕获水平方向的全局上下文信息
这种设计使得坐标注意力模块能够分别捕获空间中的水平和垂直方向的特征信息,从而增强网络对空间位置的感知能力
浙公网安备 33010602011771号