SRNTT:Image Super-Resolution by Neural Texture Transfer

本文提出了一种名为SRNTT的新方法,通过神经纹理转移改进图像超分辨率。针对传统单图像超分辨率(SISR)的限制,SRNTT引入参考图像(RefSR)学习多层次信息,提高超分辨率效果。文章介绍了特征交换和神经纹理转移的流程,以及训练目标函数的设定。此外,建立了一个新的数据集CUFED5,用于研究不同相似度级别的RefSR。实验结果表明,SRNTT在保留空间结构、改善视觉效果和利用纹理信息方面表现出优越性。

Image Super-Resolution by Neural Texture Transfer

Zhifei Zhang,Zhaowen Wang,Zhe Lin,Hairong Qi

CVPR2019

摘要

之前提出的RefSR的方法虽然很有潜力,但是存在一些问题,一旦RefSR与LR不够相似的时候超分辨率的结果就很差。论文为了充分发挥RefSR的作用。不仅只学习RefSR的像素级的文本信息还同时学习多个层次的信息。

主要贡献

  1. 论文学会用RefSR的思想,打破了SISR的束缚。(其实就是不再单纯地学习HR和LR的映射,而是引入RefSR)
  2. 论文提出了SRNTT,可以得到更好的超分辨率效果。
  3. 论文建立了一个新的数据集,CUFED5,对LR有不同相似程度的RefSR,用来进行进一步探索。

相关工作

SISR工作存在的问题:

  1. 纹理不够清晰。
  2. 加上感知损失,纹理清晰了但是大多是捏造的,不符合真实情况。

基于Ref的SR存在的问题:

  1. Ref需要跟LR足够相似。
  2. 只学习了Ref的像素级特征,或者一些浅层的特征。
  3. Ref需要与LR对齐的。

为了得到更真实纹理的高分辨率图像,论文提出了SRNTT。

主要方法

网络结构如上图。

特征交换

特征交换这一部的主要工作就是在Ref中找到与LR最接近的块,然后替换掉LR中的块。这就涉及两个步骤(1)如何计算相似度(2)如何交换对应块。

(1)如何计算相似度

论文提出的方法不是计算整个图的相似度,而是分块计算。这里因为LR和Ref的大小不同,先对LR用bicubic进行上采样使LR和Ref具有相同的大小,而同时考虑到二者的分辨率不同,对Ref用bicubic进行下采样再上采样,使得I^{ref\downarrow \uparrow}的模糊程度跟I^{LR\uparrow}接近。

考虑到I^{LR\uparrow}I^{ref\downarrow \uparrow}的块在颜色和光照上面可能有些不同,于是论文不直接对Patch的像素进行计算相似度,而在高层次的特征图上计算,即\phi (I),来突出结构和纹理信息。

论文采用内积方法来计算相似度:

### 如何复现 Super-Resolution-Neural-Operator-main 项目 #### 准备环境 为了成功复现 Super-Resolution Neural Operator (SRNO) 主要依赖项和库版本需严格匹配官方文档中的配置。通常建议创建一个新的虚拟环境来隔离这些依赖关系,防止与其他项目的冲突。 对于 Python 环境设置可以采用如下命令: ```bash conda create -n srno python=3.7 conda activate srno pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 pip install -r requirements.txt ``` 上述代码片段展示了如何安装 PyTorch 及其相关工具包,并通过 `requirements.txt` 文件进一步安装其他必要的 Python 库[^1]。 #### 数据集准备 数据预处理阶段非常重要,在 SRNO 中一般会涉及到图像超分辨率任务所需的数据集下载与转换工作。确保按照作者提供的指南获取并准备好相应的低分辨率(LR) 和高分辨率(HR) 图像对用于训练模型。 #### 训练过程 启动训练之前,请仔细阅读源码内的参数说明部分,调整适合本地硬件条件的最佳批大小(batch size),学习率(learning rate)等超参设定。运行训练脚本前确认 GPU 资源已正确分配给当前进程。 执行训练可以通过下面的 shell 命令完成: ```bash python train.py --config config.yaml ``` 这里假设存在一个名为 `train.py` 的入口文件以及对应的配置 YAML 文件指定实验细节[^2]。 #### 测试评估 当训练完成后,利用测试集验证最终模型性能指标如 PSNR 或 SSIM 。这一步骤有助于了解所构建网络结构的有效性和泛化能力。 #### 常见问题解答 1. **CUDA out of memory**: 如果遇到显存不足错误提示,则尝试减少 batch size 参数值;或者优化内存管理策略。 2. **RuntimeError: Expected all tensors to be on the same device, but found at least two devices**: 这种情况通常是由于某些操作数未被移动到相同的计算设备上引起。检查输入张量是否都放置在同一位置(CPU/GPU),必要时使用 `.to(device)` 方法统一它们的位置。 3. **ModuleNotFoundError**: 当缺少特定模块时报此错,应先核查 pip 安装日志找出缺失组件再补全安装。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值