注意力机制的选择与应用#
通道注意力:SE-Net、空间注意力 和 通道+空间注意力:CBAM 我们学习了三种注意力方法。现在问题来了:实际项目中应该选哪个? 本章通过实验数据和实用指南帮你做出选择。
SE-Net vs 空间注意力 vs CBAM#
性能对比#
在 ImageNet 上用 ResNet-50 [HZRS16] 做骨干网络的实验结果 [WPLK18]:
模型 |
Top-1 准确率 |
参数量增加 |
计算开销 |
|---|---|---|---|
ResNet-50(基线) |
76.15% |
— |
— |
+ SE-Net(通道) |
77.62% |
+2.53M |
+1% |
+ 空间注意力 |
77.28% |
+49 |
+1% |
+ CBAM(串行) |
78.49% |
+2.55M |
+2% |
在不同任务上的表现#
任务 |
最佳注意力类型 |
原因 |
|---|---|---|
图像分类 |
通道注意力为主 |
分类更依赖语义特征 |
目标检测 |
空间注意力为主 |
检测需要精确定位 |
语义分割 |
两者结合(CBAM) |
需要语义和位置信息 |
选择指南#
压缩比 \(r\) 的选择#
\(r\) 控制通道注意力的瓶颈维度,\(r\) 越大参数越少但表达能力也越弱:
压缩比 \(r\) |
Top-1 Acc |
参数量增加 |
训练速度 |
|---|---|---|---|
无注意力 |
76.15% |
0 |
1250 img/s |
\(r=4\) |
77.85% |
+10.24M |
1220 img/s |
\(r=8\) |
77.70% |
+5.12M |
1235 img/s |
\(r=16\)(默认) |
77.62% |
+2.53M |
1245 img/s |
\(r=32\) |
77.45% |
+1.28M |
1248 img/s |
建议:从 \(r=16\) 开始,计算资源充足时可尝试 \(r=8\)。
插入位置的选择#
注意力模块插入到残差块中的不同位置效果不同:
插入位置 |
Top-1 Acc |
稳定性 |
|---|---|---|
前置(卷积前) |
77.21% |
中等 |
中间(两卷积之间) |
77.58% |
良好 |
后置(残差连接前) |
77.62% |
优秀 |
双重(前后都加) |
77.65% |
优秀但参数量翻倍 |
建议:默认放在残差块的最后、残差连接之前。
常见陷阱#
陷阱1:注意力不是越多越好#
在每个残差块都加注意力,效果并不比每隔几个块加更好。通常在 stage3 和 stage4(深层特征图)添加注意力效果最明显,因为深层特征语义更丰富。
陷阱2:注意力和 BN 的顺序#
实验表明,BN → 注意力 → 激活的顺序通常效果最好。如果把注意力放在 BN 之前,批归一化会破坏已经学习好的注意力权重。
陷阱3:小数据集上注意力可能过拟合#
注意力模块增加了模型容量,在极小数据集(<1000 张)上可能反而导致过拟合。这种情况下,可以:
使用更小的压缩比(\(r=32\))
只加一层注意力而非每层都加
配合更强的数据增强
实践建议总结#
从简单的开始:先尝试 SE-Net(通道注意力)——实现最简单,效果也最稳定
根据任务调整:如果任务对位置敏感(检测、分割),加入空间注意力(CBAM)
控制计算成本:压缩比 \(r=16\) 是安全起点;每层都加不如加在关键层
性能瓶颈时再升级:如果 SE-Net 已经带来足够提升,不必强求 CBAM
下一步#
掌握了注意力机制的选择策略后,实践指南 将带你深入了解实际部署中的超参数调优和工程实现细节。
参考文献#
Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, 770–778. 2016.
Sanghyun Woo, Jongchan Park, Joon-Young Lee, and In So Kweon. Cbam: convolutional block attention module. In Proceedings of the European Conference on Computer Vision (ECCV), 3–19. 2018.