博主是今年新入学的超分方向的萌新博士,对AI领域有过接触但不多,超分也是第一次接触,这也是我在网上第一次发表博客。我的想法是记录一下我每周看的论文的心得和内容,以此来激励和巩固自己的学习。有兴趣的小伙伴们可以一起交流学习。
做为一个超分方向的萌新,导师分配的研究方向就是超分辨率,所以就只有从最近的CVPR2025上,先广泛涉猎一下超分方向的论文,看看大家都在研究什么内容。
- 本周论文: CATANet: Efficient Content-Aware Token Aggregation for Lightweight Image Super-Resolution
- 来源: CVPR 2025
- 链接: arxiv.org/abs/2503.06…
- 代码: github.com/EquationWal…
本来为了避免被打水印,将图片托管到GitHub,但是由于社区机制无奈还是重新上传了。图片侵删。
论文要解决的问题
目前AI领域比较流行的两大类算法分别是Transformer和Mamba。Transformer在超分任务中面临的一个核心矛盾全局计算带来过高的计算量,而局部窗口计算又会损失长程依赖。 现有的许多工作可以看作是在这个矛盾中寻找平衡点。
CATANet的解决方法很巧妙,既然无法让所有的Token都相互“看见”,那就先把语义相似的Token“聚合成班”,现在“班级内”交流,再派“班长”去参加“全校大会”。 这样既保证了效率,又实现了全局的信息流动。
核心思想:CATANet通过一种内容感知的Token聚类机制,将图像Token动态分组,并在此基础上设计了组内和组间的交叉注意力,从而在轻量级计算预算下高效地捕获全局依赖关系。
我们主要理解和关注其中的方法论部分,所以引言和实验部分就省略掉了,有兴趣的小伙伴可以自己下载查看。
毕竟只要发论文就是SOTA,所以我认为在学习阶段,应当更关注其方法论的核心创新点。引言和相关工作部分可以阅读,可以帮助你快速的了解一个行业的大致内容。
文章贡献
根据文章内容,作者认为本文的贡献如下:
- 提出轻量化的 CATA Net,结合了token聚合通过注意力机制,来处理长程依赖,以确保高的推理效率。
- 仅在训练阶段更新聚类中心C。
- 提出组内自注意和组间交叉注意,有效捕获远程和全局依赖,减少无关信息干扰。
方法论
该网络的总体设计如下图(截自论文):
网络的结构整体包含三个模块:
-
浅层特征提取
这一层包含一个3*3 卷积,将输入图像映射到高维空间(channel维度变高,例:从原3通道变为64通道,h, w不变)。 其中,X0表示浅层特征,FS为提取函数,ILR表示输入的低分辨率图像
-
深层特征提取(核心,先全局,后局部(先TAB,后LRSA))
这是整个机制的“分班”阶段。其目标是忽略Token的空间距离,完全根据其语义相似度进行分组。包含K个连续的残差组(Residual Group, RG),每个RG都包含三个组件:TAB,LRSA,一个3*3的卷积
-
token聚合块(Token-Aggregation Block, TAB),捕捉长程依赖
包含四个部分:内容感知token聚合(CATA)、组内自注意力(Intra-Group Self-Attention,IASA)、组间交叉注意力(Inter-Group Cross-Attention,IRCA)、1*1卷积
-
CATA:将语义上相似的部分划分到一个组中,而忽略其距离
这一部分的算法详细内容如下图。
其中,cj 为通过 平均池化 初始获得的token中心,for 循环为类似于k-means风格的一个迭代更新中心的过程,D为计算当前token于当前中心的余弦相似度, gj 为按照 相似度 结果,以当前中心划分组,cj‘ 为 重新通过均值计算当前组的中心,再次进行迭代。T为迭代次数。
12行 cj 为根据指数移动平均(Exponential Moving Average, EMA)来平滑地更新全局中心。新全局中心 = λ * 旧全局中心 + (1-λ) * 当前图像计算出的中心。
加入此平均的目的在于:避免每个batch的训练数据完全替换上一批次训练得到的中心,即 中心的更新绝大部分取决于上一个批次的结果,0.999的概率取决于当前批次计算得到的中心(λ的取值)
13、14行为最终计算相似度,并划分分组。推理阶段直接跳转12行。
对于token中心的个人理解:其实是一组pattern,比如 某个pattern可以匹配边缘、某个pattern可以匹配建筑、某个pattern可以匹配花花草草等,每个pattern就是一个中心,所以针对整个数据集,训练出一组pattern,可以针对所有的图像进行匹配。即全局token中心。需要注意,每张图并不会使用到所有的pattern,所以某几个pattern就可以组合并识别出一张图片的信息。
这一部分的关键在于子组划分,由于每个pattern的长度可能不一致,如第一个pattern 为 100个token, 第二个pattern 50 个token,那么这样就很难进行下一步计算,因此先将所有的pattern顺序排列,按固定长度进行划分子组。
这样可能会产生新的问题,即一个子组中可能无法完全包含一个pattern或者一个子组可能包含两个pattern的各自一部分,这一问题则由下一个阶段解决。
综上,内容感知 token聚合体现在:通过聚类找到一类token的中心,并划分为一个组
-
IASA,解决“一个pattern被割裂”的问题
这一部分用于解决子组划分操作中可能产生的一个pattern被划分到两个子组中的现象。
首先根据子组Sj 的信息计算 Qj Kj Vj 矩阵,其次,针对每一个 Qj 矩阵,在进行 操作时,与当前的 Kj 和下一个 kj+1 进行操作,得到 Vj 和 Vj+1 ,将Kj 和 Kj+1 拼接记为 Kj' , Vj' 同理,然后进行 MHA计算。随后将得到的结果按原图像索引进行排序,得到Xo1。如遇到边界问题,即 j 为最后一组时,kj+1 = kj-1 。
这个过程同样也存在一个问题,在极端情况下,如一个 token中心可能横跨三个pattern,这样在进行IASA计算时,就无法关注到第三个pattern中的信息,该问题在下一步中进行优化。
-
IRCA,解决“全局信息流通”问题。
token中心 C 已经集合了全部中心 cj 的所有信息,因此在进行注意力计算时,根据当前子组 Sj 计算权重矩阵 Wq ,根据 C 计算 Wk Wv,之后进行MHA计算和pushback,得到 Xo2。
这一环节中,注意 token中心的数量 M 要远远小于 所有token总数N,以提高计算效率。
以上操作完成之后,进行第四步操作,即:将 Xo1 Xo2 相加,通过一个卷积输出 Xo
在上述的所有操作中,本文的创新点集中于IASA和IRCA的处理上,IASA是一个分组内的交流,确保内容一致性;IRCA是全局下的注意力,确保全局最优。二者互补
-
-
局部自注意力(Local-Region Self-Attention, LRSA),增强局部区域token之间的依赖
这一部分相对简单,核心为标准的局部窗口注意力(window attention),简而言之,就是将一个完整的矩阵Xo 划分为多个窗口,窗口之间可以重叠也可以不重叠,之后在每个窗口中独立计算 MHA,完成后将结果进行合并。
-
一个3*3的卷积,进一步细化特征,隐式学习位置嵌入
综上,第 i 个RG的完整处理流程: ,其中 Xi表示第 i 个RG的输出
-
-
图像重建
K个RG之后,通过获取全局的残差信息,添加到 ILR的上采样图像中,获取高分辨率图像 ISR
结语
以上就是这篇文章的核心方法,代码复现操作目前还没做,不过作者已经将代码开源出来,大家也可以积极尝试。
CATANet为我们提供了一个设计轻量级Transformer模型的优秀范例: “先聚类,后交互” 。其核心在于利用动态分组和层次化注意力,巧妙地绕开了全局注意力计算量的瓶颈。
全文思路清晰,创新点扎实。通过仅训练阶段更新聚类中心,将大部分聚类计算成本置于训练阶段,推理时直接使用学到的模式,非常高效。
作为本系列的开篇,CATANet的设计哲学给了我很多启发。希望这篇解读也能对你有所帮助,博主可能也有一些理解不全面的地方,欢迎在评论区一起交流讨论!