主页 > 创业  > 

【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用

【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用
论文信息 标题:Spatially-Adaptive Feature Modulation for Efficient Image Super-Resolution论文链接: arxiv.org/pdf/2302.13800代码与模型: github /sunny2109/SAFMN
创新点 空间自适应特征调制(SAFM):通过独立计算多尺度特征并动态聚合,实现非局部特征依赖的高效建模[6][8]。卷积通道混合器(CCM):在SAFM基础上补充局部上下文信息,同时完成通道混合,提升局部特征表达能力[6][13]。轻量化设计:模型参数量仅为同类高效超分方法(如IMDN)的1/3,内存占用更低,适用于低功耗设备[6][9]。

方法

整体架构:

特征提取:使用卷积层将低分辨率图像映射到特征空间。特征混合模块(FMM):由SAFM和CCM组成,堆叠多个FMM模块进行特征增强。重建模块:通过上采样生成高分辨率图像[6][10][16]。

核心模块细节:

SAFM层: 通过多分支结构学习不同尺度特征,动态调整空间权重以融合全局信息。类似ViT的非局部建模能力,但计算复杂度更低[10][13]。 CCM模块: 使用深度可分离卷积提取局部特征,减少参数量。引入通道注意力机制优化特征通道关系[6][13]。
效果与实验结果

定量评估:

在Set5、Set14等基准数据集上,SAFMN在PSNR/SSIM指标上与IMDN等模型相当,但参数量减少70%[6][9]。在NTIRE2023高效超分挑战赛中: 基础版SAFMN获整体性能赛道Top6,模型复杂度赛道Top3[7]。改进版SAFMN++在NTIRE2024挑战赛的保真度赛道排名第一[7]。

效率优势:

参数量:SAFMN为0.95M,IMDN为3.2M[6][9]。内存占用:相比IMDN减少50%,适合移动端部署[6][8]。
总结

SAFMN通过空间自适应调制与局部特征增强的协同设计,在超分任务中实现了精度与效率的平衡。其轻量化特性使其在低功耗设备(如手机、嵌入式系统)中具有实际应用潜力。后续改进版本(如SAFMN++)进一步验证了该框架的可扩展性[7][17]。

代码 import torch import torch.nn as nn import torch.nn.functional as F # Spatially-Adaptive Feature Modulation class SAFM(nn.Module): def __init__(self, dim, n_levels=4): super().__init__() self.n_levels = n_levels chunk_dim = dim // n_levels # Multiscale feature representation self.mfr = nn.ModuleList([nn.Conv2d(chunk_dim, chunk_dim, 3, 1, 1, groups=chunk_dim, bias=False) for i in range(self.n_levels)]) # Feature aggregation self.aggr = nn.Conv2d(dim, dim, 1, 1, 0, bias=False) # Activation self.act = nn.GELU() def forward(self, x): h, w = x.size()[-2:] xc = x.chunk(self.n_levels, dim=1) out = [] for i in range(self.n_levels): if i > 0: p_size = (h//2**(i+1), w//2**(i+1)) s = F.adaptive_max_pool2d(xc[i], p_size) s = self.mfr[i](s) s = F.interpolate(s, size=(h, w), mode='nearest') else: s = self.mfr[i](xc[i]) out.append(s) out = self.aggr(torch.cat(out, dim=1)) # Feature modulation out = self.act(out) * x return out if __name__ == "__main__": if __name__ == '__main__': # 定义输入张量大小(Batch、Channel、Height、Wight) B, C, H, W = 1, 64, 40, 40 input_tensor = torch.randn(B, C, H, W) # 随机生成输入张量 # 初始化 SAFM dim = C # 输入和输出通道数 # 创建 SAFM 实例 block = SAFM(dim=dim) # 如果GPU可用将模块移动到 GPU device = torch.device("cuda" if torch.cuda.is_available() else "cpu") sablock = block.to(device) print(sablock) input_tensor = input_tensor.to(device) # 执行前向传播 output = sablock(input_tensor) # 打印输入和输出的形状 print(f"Input: {input_tensor.shape}") print(f"Output: {output.shape}")

输出结果:

标签:

【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用