论文: Emulating Self-attention with Convolution for Efficient Image Super-Resolution作者: Dongheon Lee, Seokju Yun, Youngmin Ro发表: ICCV 2025论文链接: https://arxiv.org/abs/2503.06671代码链接: https://github.com/dslisleedh/ESC一、引言图像超分辨率(Super-Resolution, SR)是计算机视觉中的经典任务,旨在从低分辨率图像中重建高分辨率图像。近年来,Transformer凭借自注意力机制的长距离建模能力和输入依赖加权特性,在SR任务中取得了显著优于CNN的性能。然而,Transformer在轻量级SR部署中面临一个严峻挑战:自注意力的内存访问开销极大。以SwinIR-light为例,即使其FLOPs和参数量分别比CNN方法低14.5倍和17倍,在重建HD图像时的延迟却反而高出4.7倍,内存占用高出2倍。这一矛盾的根源在于自注意力需要物化完整的得分矩阵(S = Q K T S=QK^TS=QKT),以及大量内存密集型的reshape和window masking操作。针对这一问题,本文作者提出了一种创新的解决方案——ConvAttn(Convolutional Attention)模块,通过精心设计的卷积操作来模拟自注意力的核心能力,从而大幅减少对自注意力的依赖。基于ConvAttn构建的ESC(Emulating Self-attention with Convolution)网络,在Urban100× 2 \times 2×2上达到33.46dB PSNR的同时,延迟仅120.9ms,比HiT-SRF快3.7倍,内存占用减少6.2倍。二、核心动机2.1 自注意力的层间重复问题作者首先进行了一项关键的可视化分析:计算SwinIR-light中各层自注意力输出特征图之间的CKA相似度和余弦相似度。图1:自注意力层间特征和注意力图的可视化相似度分析关键发现:自注意力的相似度建模(A a v g A_{avg}Aavg​)和提取的特征(F FF)在层间表现出极高的相似性,平均值分别高达89%和87%!这意味着:不同层的自注意力在提取重复的、高度重叠的特征——大量计算被浪费了。这一发现启发了作者的核心设计思路:保留第一层自注意力,将其余层的自注意力替换为高效的ConvAttn模块,在保持表征能力的同时大幅降低计算开销。2.2 解决思路基于上述观察,ESC的设计策略包含两个核心方向:用卷积替代大部分自注意力:利用共享大核卷积模拟长距离建模 + 动态卷积模拟输入依赖加权用Flash Attention强化剩余的自注意力:将窗口大小从常规的16 × 16 16\times1616×16扩展到32 × 32 32\times3232×32,进一步释放单层自注意力的潜力三、方法3.1 整体架构ESC的整体架构如下图所示:图2:ESC网络整体架构网络由4个主要组件构成:浅层特征提取:3 × 3 3\times33×3卷积将LR输入I L R ∈ R H × W × 3 I_{LR}\in\mathbb{R}^{H\times W\times 3}ILR​∈RH×W×3映射为浅层特征F 0 ∈ R H × W × C F_0\in\mathbb{R}^{H\times W\times C}F0​∈RH×W×C深度特征提取器H HH:由N NN个ESCBlock和一个3 × 3 3\times33×3卷积组成,接收F 0 F_0F0​和共享大核L K LKLK作为输入图像级跳跃连接S SS:直接处理LR输入,保留低频信息上采样模块U UU:使用Sub-Pixel Convolution进行上采样前向过程可表示为:F 0 = Conv 3 × 3 ( I L R ) F_0 = \text{Conv}_{3\times3}(I_{LR})F0​=Conv3×3​(ILR​)F = H ( F 0 , L K ) + F 0 F = H(F_0, LK) + F_0F=H(F0​,LK)+F0​F s = S ( I L R ) F_s = S(I_{LR})Fs​=S(ILR​)I S R = U ( F , F s ) I_{SR} = U(F, F_s)ISR​=U(F,Fs​)其中L K ∈ R 13 × 13 × 16 × 16 LK \in \mathbb{R}^{13\times13\times16\times16}LK∈R13×13×16×16是一个端到端学习、全模型共享的大核参数。3.2 ESC Block每个ESCBlock的结构如下图所示:图3:ESC Block内部结构ESCBlock的前向过程可以形式化为:F i i n = ConvFFN ( LN ( F i − 1 ) ) F_i^{in} = \text{ConvFFN}(\text{LN}(F_{i-1}))Fiin​=ConvFFN(LN(Fi−1​))F i , 0 = F i i n + SelfAttn ( LN ( F i i n ) ) F_{i,0} = F_i^{in} + \text{SelfAttn}(\text{LN}(F_i^{in}))Fi,0​=Fiin​+SelfAttn(LN(Fiin​))