Attention Gate in Attention UNet
对Attention UNet中使用的Attention Gate(AG)进行介绍和代码分析。
1 Attention UNet
于2018年被收录于cvpr,在UNet的基础上,decoder的部分增加Attention Gate,以突出通过跳转连接的突出特征。文中介绍了2D和3D的实现方法。
Attention UNet整体结构如下:
从原文中的实验结果来看,Attention UNet
都相较于U-Net在多个数据集(CT-150,TCIA Pancreas-CT,eg.)上有更优秀的分割性能,且从可视化结果来看,Attention UNet有更平滑且准确的边缘。
2 Attention Gate
下面来详细了解一下这个UNet中的Attention Gate。
作用:自适应地选择有用的特征,抑制无关的区域。
2.1 AG的结构与原理
- $x^l$:从encoder对应层skip来的特征图,通常是高分辨率的图像。
- 可能包含冗余和无关信息
- $g$:从上采样而来的低分辨率信号。
- 解码器当前关注的区域,帮助引导关注重点
处理流程
假设:$x^l$(1,64,64,64),$g$(1,128,32,32)
通常g的空间尺寸更小,channel更大
- 将两个输入使用$1\times 1$卷积映射到统一维度
- 对齐空间尺寸(上采样gating信号):可以使用线性插值
权重大的特征在相加后更加明显
- 融合后是使用ReLU激活
- $1\times 1$卷积:通道降到1通道size:(1,1,32,32)
- 得到mask:sigmoid将值映射到0~1之间
- mask与$x^l$相乘,得到“重要区域”特征值更强,“不重要区域”被抑制的特征图。
1 | x (1, 64, 64, 64) |
2.2 Pytorch 实现AG(2D)
1 | import torch |
在上采样过程中:
1 | x = self.up(x) # 上采样 decoder feature map |
Attention Gate in Attention UNet
https://zhouwentong7.github.io/2025/04/10/Attention-Gate-in-Attention-UNet/