当前位置: 首页 > news >正文

19 - SAFM模块

论文《Spatially-Adaptive Feature Modulation for Efficient Image Super-Resolution》

1、作用

这篇论文通过提出空间自适应特征调制(Spatially-Adaptive Feature Modulation, SAFM)机制,旨在解决图像超分辨率(Super-Resolution, SR)的高效设计问题。在图像超分辨率重建性能上取得了显著的成果,这些模型通常具有大型复杂的架构,不适用于低功耗设备,限于计算和存储资源。SAFM层通过独立计算学习多尺度特征表示,并动态聚合这些特征进行空间调制,克服了这些挑战。

2、机制

1、空间自适应特征调制(SAFM)层

SAFM层利用多尺度特征表示独立学习,并动态进行空间调制。SAFM着重于利用非局部特征依赖性,进一步引入卷积通道混合器(Convolutional Channel Mixer, CCM),以编码局部上下文信息并同时混合通道。

2、卷积通道混合器(CCM)

为了补充局部上下文信息,提出了基于FMBConv的CCM,用于编码局部特征并混合通道,增强了模型处理特征的能力。

3、独特优势

1、高效性和灵活性

SAFMN模型相比于现有的高效SR方法小3倍,如IMDN等,同时以更少的内存使用实现了可比的性能。

2、动态空间调制

通过利用多尺度特征表示进行动态空间调制,SAFMN能够高效地聚合特征,提升重建性能,同时保持低计算和存储成本。

3、局部和非局部特征的有效整合

通过SAFM层和CCM的结合,SAFMN有效整合了局部和非局部特征信息,实现了更精准的图像超分辨率重建。

4、代码

import torch
import torch.nn as nn
import torch.nn.functional as F# 定义SAFM类,继承自nn.Module
class SAFM(nn.Module):def __init__(self, dim, n_levels=4):super().__init__()# n_levels表示特征会被分割成多少个不同的尺度self.n_levels = n_levels# 每个尺度的特征通道数chunk_dim = dim // n_levels# Spatial Weighting:针对每个尺度的特征,使用深度卷积进行空间加权self.mfr = nn.ModuleList([nn.Conv2d(chunk_dim, chunk_dim, 3, 1, 1, groups=chunk_dim) for i in range(self.n_levels)])# Feature Aggregation:用于聚合不同尺度处理过的特征self.aggr = nn.Conv2d(dim, dim, 1, 1, 0)# Activation:使用GELU激活函数self.act = nn.GELU()def forward(self, x):# x的形状为(B,C,H,W),其中B是批次大小,C是通道数,H和W是高和宽h, w = x.size()[-2:]# 将输入特征在通道维度上分割成n_levels个尺度xc = x.chunk(self.n_levels, dim=1)out = []for i in range(self.n_levels):if i > 0:# 计算每个尺度下采样后的大小p_size = (h // 2**i, w // 2**i)# 对特征进行自适应最大池化,降低分辨率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 = torch.cat(out, dim=1)# 通过1x1卷积聚合拼接后的特征out = self.aggr(out)# 应用GELU激活函数并与原始输入相乘,实现特征调制out = self.act(out) * xreturn outif __name__ == '__main__':# 创建一个SAFM实例并对一个随机输入进行处理x = torch.randn(1, 36, 224, 224)Model = SAFM(dim=36)out = Model(x)print(out.shape)

相关文章:

  • 共享项目中使用Wpf和Winform——c# CAD二次开发
  • 拓扑推理:把邻接矩阵和节点特征形式数据集转换为可以训练CNN等序列模型的数据集
  • 展开说说Android之Glide详解_源码解析
  • YOLOV8模型优化-选择性视角类别整合模块(SPCI):遥感目标检测的注意力增强模型详解
  • [论文阅读] 人工智能 | Gen-n-Val:利用代理技术革新计算机视觉数据生成
  • U盘不识别 个别U盘不识别
  • 《人工智能时代与人类价值》读书简要笔记
  • 超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 @Docker
  • Burn 开源程序是下一代深度学习框架,在灵活性、效率和可移植性方面毫不妥协
  • Day 49 训练
  • 【0.4 漫画计算机网络基础】
  • 基于Python学习《Head First设计模式》第十四章 剩下的模式
  • SparkUI依赖问题解决方法
  • pyspark非安装使用graphframes
  • 【生活系列】金刚经
  • Spark DAG、Stage 划分与 Task 调度底层原理深度剖析
  • 轮廓 裂缝修复 轮廓修复 填补孔洞 源代码
  • HTTP 缓存策略:强缓存与协商缓存的深入解析
  • HTTP和HTTPS协议
  • HTTP 请求报文 方法
  • 开发微信微网站建设/seo优化工具推荐
  • 毕业论文做ppt模板下载网站/移动广告平台
  • 像网站的ppt怎么做/地推团队联系方式
  • wordpress公众号模板/河南网站优化排名
  • 深圳网站推广哪家好/重庆百度关键词推广
  • 学校做的网站外面访问不了/磁力吧最佳搜索引擎