146、超分模型中的注意力机制对比:通道注意力、空间注意力与自注意力
上个月调试一个轻量级超分模型,在Set5上PSNR死活卡在32.1dB上不去。我盯着loss曲线看了半天,发现模型对高频纹理区域完全“无动于衷”——天空平滑得像塑料,但草地细节却糊成一团。直觉告诉我,网络没有学会“该关注哪里”。于是我把注意力机制从简单的SE block换成了CBAM,PSNR直接跳到32.8dB。这个0.7dB的提升,让我决定好好写一篇关于超分中注意力机制的对比笔记。
从“为什么需要注意力”说起
超分辨率重建的本质是“从低分辨率中猜测高分辨率细节”。但低分辨率图像里,不同区域的信息密度天差地别:平坦区域只需要简单的插值,而边缘、纹理区域需要复杂的非线性映射。传统CNN对所有像素一视同仁,这就像让一个学生用同样的精力去背整本字典——效率极低。
注意力机制的核心思想很简单:告诉网络“哪里重要,哪里可以偷懒”。但在超分任务中,这个“重要”的定义可以有三个维度:哪个通道更重要(通道注意力)、哪个空间位置更重要(空间注意力)、以及像素之间如何相互影响(自注意力)。这三个维度对应着三种不同的实现思路,踩坑经验也各不相同。
通道注意力:SE block的“甜区”与“雷区”
SENet(Squeeze-and-Excitation)是通道注意力的鼻祖。它的做法是:先对特征图做全局平均池化(Squeeze),然后通过两个全连接层学习每个通道的权重(Excitation),最后把权重乘回原特征图。
代码实现看起来很简