Fourier Space Losses for Efficient Perceptual Image Super-Resolution

在这里插入图片描述


前言

本文来自2021的ICCV,其创新点主要是将傅里叶系数应用到损失函数上。

图像超分辨率的目的是从相应的低分辨率(low-resolution,LR)输入构建高分辨率(high-resolution,HR)图像。

一、摘要

作者指出:
1.图像在超分辨率任务中,其中的高频信息难以被恢复
2.现在的SR网络参数量过大,网络太深,效率不高,不便于部署到移动设备上

现在解决这种性能和效率的方法主要有三种:1)确定任务的最佳架构设计;2)设计更好的优化损失,用于更好利用网络性能;3)数据的数量和质量对最大化性能起着关键作用。本文主要基于第二种方法改进。

感知损失的设计还是集中在空间域中。但是,超分主要还是在下采样过程中,丢失了频谱空间的高频信息。因此,本文提出了一种用于频域的损失函数。

二、创新点

1.提出了一种用于频域的损失函数,用于复原图像的高频信息

用复杂正交基函数,获得对应的频率成分 {x}u,v:
在这里插入图片描述

对图像每个通道进行傅里叶变换。每个复杂成分 {x}u,v 可以分解为振幅和相位:
在这里插入图片描述
SR处理的问题是生成缺失的频率,即从低频到高频的探索。与空间域相比,可以在频域上清晰地分离特定的频率。此外,傅里叶成分能够提供图像的全局信息。基于此,设计相应的损失函数。

本文所用损失:

监督损失:
1.空间域损失

1.L1监督损失:
在这里插入图片描述
2.VGG损失(VGG54):

在这里插入图片描述

2.频域损失

首先,将真实图像和生成图像经过Hann window预处理。
接着,计算傅里叶频域损失函数,包括L1范数度量的频谱差异,以及相位角差异。
在这里插入图片描述
最后,将上述损失函数,直接用于傅里叶空间。

2.为频域损失设计一个新的判别器

在这里插入图片描述由于傅里叶变换造成的空间不变性假设的失效,本文不使用卷积层,而采用全连接层

3.整体的损失包括以下三个部分: 空间域和频域的监督损失,以及GAN损失,还有VGG损失

在这里插入图片描述

实验

训练集:DIV2K、Flickr2K
测试集:Urban100

1.对比实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.消融实验

在这里插入图片描述

总结

这篇文章第一个成功地将基于GAN的损失直接应用于SR的傅里叶成分,生成器主干的运行时间可以减少到只有41ms,比ESRGAN快13倍以上,比GPU上的SRFlow快48倍。

### 关于 FourierKAN-GCF 的详细介绍 FourierKAN-GCF 是一种基于傅里叶变换和 Kolmogorov-Arnold 表达定理的特征转换网络,旨在提升图协同过滤 (Graph Collaborative Filtering, GCF) 中的性能[^1]。该模型通过引入高效的特征转换机制,在处理大规模推荐系统的稀疏性和噪声方面表现出显著优势。 #### 方法概述 FourierKAN-GCF 结合了傅里叶分析与神经网络架构的设计理念,其核心在于利用傅里叶级数分解来捕捉高维空间中的复杂模式,并将其映射到低维表示中[^2]。这种方法不仅能够有效减少计算开销,还能够在保持表达能力的同时增强模型的泛化性能。 以下是 FourierKAN-GCF 的主要组成部分: 1. **傅里叶特征提取模块**: 借助傅里叶变换的能力,FourierKAN-GCF 能够将原始输入数据投影至频域,从而更好地分离信号的主要成分与次要成分。这一过程有助于降低噪声干扰并突出重要特征。 2. **Kolmogorov-Arnold 映射层**: 利用 Kolmogorov-Arnold 定理的核心思想,即任何连续函数都可以被近似为若干一元函数的组合形式,FourierKAN-GCF 构建了一种分而治之的学习策略。这种设计使得模型可以高效地逼近复杂的非线性关系。 3. **图卷积操作优化**: 针对传统 GCN 存在的信息传播瓶颈问题,FourierKAN-GCF 提出了改进版的消息传递机制,允许节点间更灵活地交换信息。这一步骤对于提高推荐质量至关重要。 #### 技术实现细节 为了便于实际应用,研究人员提供了完整的开源代码库以及详细的实验配置说明。以下是一个简化版本的 Python 实现框架: ```python import torch from torch_geometric.nn import MessagePassing class FourierKANLayer(MessagePassing): def __init__(self, input_dim, output_dim): super(FourierKANLayer, self).__init__() self.linear = torch.nn.Linear(input_dim, output_dim) def forward(self, x, edge_index): return self.propagate(edge_index=edge_index, size=None, x=x) def message(self, x_j): # 应用傅里叶变换或其他预定义的操作 fourier_transformed_x = ... # 自定义逻辑 return fourier_transformed_x # 使用示例 model = FourierKANLayer(input_dim=128, output_dim=64) output_features = model(x=input_data, edge_index=adjacency_matrix) ``` 上述代码片段展示了如何构建一个基础的 FourierKAN 层结构,并通过 PyTorch Geometric 工具包实现了消息传递功能。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值