【CVPR2019】超分辨率文章,SRFBN: Feedback Network for Image Super-Resoluition

2023-05-16

论文地址
代码
CVPR的单图像超分辨率文章,主要是用回传机制来提高超分辨率的效果,且不引入过多的参数。
主要是设计了一个feedback模块,多次回传,如下图所示:
在这里插入图片描述
上一次feedback的输出和整个网络的input一起重新输入(代码里是concat一起)到FB模块,不断地回传,达到一定次数后经过tail输入SR图像。
更加形式化地图述:
在这里插入图片描述
这样回传的好处就在于,不会增加额外的参数,并且多次回传相当于加深了网络,不断地refine生成的SR图像。虽然像DRRN和DRCN也是采用了recurrent的结构,但是这些网络没办法做到前面层从后面层中得到有用的信息,所以说recurrent结构和feedback结构还是有一定的差别的。
其中,本文还讲到的基于课程学习的训练策略,就是将训练集的图片按难易程度排序,再进行训练。

Feedback Network for Image SR

在一个回传系统中,有两个requirements:迭代和重路由。
在SRFBN中,有三个不可缺少的部分:

  1. 每次的迭代都会计算loss,迫使网络每次迭代都重建图像。
  2. 使用recurrent结构,从而达到迭代的目的
  3. 在每次迭代中都提供LR图像的输入(和上一轮的输出做一个concat,提供低层信息)

在这里插入图片描述
网络结构如上图所示,SRFBN可以迭代多次,展开后如右图所示
可以看到,LR先经过两个3x3卷积,这两个卷积是特征提取模块,一个是conv(3,4m),一个是conv(3, m),3是卷积核大小,m是base卷积核数量。
FB的形式化表示是
在这里插入图片描述
以上一次的输出和输入的LR图像作为本次迭代的输入。
下面是pytorch代码中的上述操作

x = torch.cat((x, self.last_hidden), dim=1)
x = self.compress_in(x)        #这步是降通道数为base通道数

最后,SR的图像由最后一次迭代的输出+up(LR)生成

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

Feedback block

现在我们具体来看FB模块是怎么样的

在这里插入图片描述
其实思想很简单,就是前面的conv的输出是一定会加到后面的conv的输入中,前面Deconv的输出也是加到后面Deconv的输入中,有点类似densenet的做法,防止梯度消失。
我们来看一下pytorch代码中FB模块的定义

for idx in range(self.num_groups):
                   self.upBlocks.append(DeconvBlock(num_features, num_features,
                                                    kernel_size=kernel_size, stride=stride, padding=padding,
                                                    act_type=act_type, norm_type=norm_type))
                   self.downBlocks.append(ConvBlock(num_features, num_features,
                                                    kernel_size=kernel_size, stride=stride, padding=padding,
                                                    act_type=act_type, norm_type=norm_type, valid_padding=False))
                   if idx > 0:
                       self.uptranBlocks.append(ConvBlock(num_features*(idx+1), num_features,
                                                          kernel_size=1, stride=1,
                                                          act_type=act_type, norm_type=norm_type))
                       self.downtranBlocks.append(ConvBlock(num_features*(idx+1), num_features,
                                                            kernel_size=1, stride=1,
                                                            act_type=act_type, norm_type=norm_type))

可以看到,实际上就是将前面的输出concat起来作为后面的输入
接下来看forward里面的pytorch的代码:

for idx in range(self.num_groups):
                   LD_L = torch.cat(tuple(lr_features), 1)    # when idx == 0, lr_features == [x]
                   if idx > 0:
                       LD_L = self.uptranBlocks[idx-1](LD_L)
                   LD_H = self.upBlocks[idx](LD_L)
      
                   hr_features.append(LD_H)
      
                   LD_H = torch.cat(tuple(hr_features), 1)
                   if idx > 0:
                       LD_H = self.downtranBlocks[idx-1](LD_H)
                   LD_L = self.downBlocks[idx](LD_H)

                   lr_features.append(LD_L)

Curriculum learning strategy

课程学习,就是将训练集的图像按照困难程度排序,loss函数还是l1loss

在这里插入图片描述
W t W^t Wt是一个常量,用来衡量第T轮迭代对输出值的影响。(实际上论文里每一轮都置为1了……)

实验

用PRelu作为激活函数,训练集是Div2K和Flickr2K,测试仅在Y通道(基本上所有工作都是这样的)。
其中,patch size每一个scale factor都是不一样的
在这里插入图片描述

performance and parameters

在这里插入图片描述

compard with SOFT

在这里插入图片描述
这里没用放RCAN和RDN的数据,实际上SRFBN没达到SOFT,现在最好的还是RCAN

在这里插入图片描述
最后,放几张效果图
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【CVPR2019】超分辨率文章,SRFBN: Feedback Network for Image Super-Resoluition 的相关文章

  • GRE和VXLAN

    这篇文章来讲下GRE和VXLAN分别是什么 1 GRE 首先看先GRE GRE的全称是Generic Routing Encapsulation 协议格式见RFC2784 https tools ietf org html rfc2784
  • Windows下OMNET++的安装和各种架构调试心得

    以下所述的为windows平台下OMNET 集成在MSVC6 0环境下的使用方法 一 OMNET的安装 1 到OMNET官方网站下载windows平台下的安装程序 当前版本为omnetpp 3 2p1 win32 下载Ghostscript
  • 【问题解决】Ubuntu 12.04 网络连接有规律的时断时续

    问题描述 也不知道是哪里乱点什么了 有一天ubuntu12 04 的网络就突然不能用了 然后我就网上查找解决方法 一查才知道linux下面的网络连接有两种方式 一种是一种是network manager 另一种是通过 etc network
  • TCP三次握手,两次可以吗?

    这个问题网络上的回答超级多 众说纷纭 以 RFC 793 来回答这个问题可能更加准确 Reliability The TCP must recover from data that is damaged lost duplicated or
  • 用QT实现同步调用WebService

    QT提供了QNetworkAccessManager来访问 QT帮助文档里有这么一段 QNetworkAccessManager manager new QNetworkAccessManager this connect manager
  • 修改 Win7 MTU 值

    修改 Win7 MTU 值 对于 MTU Maximum Transmission Unit 最大传输单元 的简单说明 网络上传输的并非连续的数据流 而是一个个的数据包 MTU的值限定了这个数据包的最大值 如果电信运营商设定的数据包最大值为
  • Socket错误代码对应表(转)

    提示 在命令提示符下输入 net helpmsg 1xxxx就能够得到Windows系统提供的错误提示的详细解释 出现网络联机错误Socket error 11001 表示您的计算机无法连上服务器 请检查您的Proxy设定以及Proxy相关
  • centos6、centos7、ubntu去除ip link 中bond

    说明 在对服务器重新配置网络时候 往往需要提前清楚网络和网卡相关信息 这里坐下说明和记录 centos6去除网络配置 网络配置路径 etc sysconfig network scripts 去除网络配置前先做备份 mkdir opt ne
  • [libuv]uv_loop_close和uv_stop的区别

    作者 玄冬Wong uv loop close 是释放掉uv loop t 指针相关的资源 uv stop 是退出当初由uv run 运行的正在阻塞中的逻辑 当程序完全退出需要清理全部uv相关的资源时 具体清理方式如下 1 这里假设你在函数
  • OpenBSD cvsup更新

    安装了 OpenBSD 后你会发现它很小个 只有500多M 当然里面只有ssh sendmail功能 dev wd0a 130M 38 8M 84 7M 31 dev wd0h 95 5G 16 0K 90 8G 0 home dev wd
  • Python语法:... for ... in ... if ...

    Python中 for in if 语句是一种简洁的构建List的方法 从for给定的List中选择出满足if条件的元素组成新的List 其中if是可以省略的 下面举几个简单的例子进行说明 for in for in 语句 实例如下 1 a
  • SOCKS 5协议详解  

    SOCKS 5协议详解 笔者在实际学习中 由于在有些软件用到了socks5 如oicq icq等 对其原理不 甚了解 相信很多朋友对其也不是很了解 于是仔细研读了一下rfc1928 觉得有必要 译出来供大家参考 1 介绍 防火墙的使用 有效
  • Linux System Network Management Manual

    最近读得一本好书 名字叫做 Linux系统管理与网络管理 为了加深理解与学习 现将书名与目录摘录如下 后续会根据书中的内容做一些整理 I 基础篇 1 Linux系统简介 2 Linux系统安装 3 图形桌面系统管理 4 命令行界面 II 系
  • Python 的 map、列表推导、循环效率比较

    话不多说 直接上代码 1 准备数据 三个列表 import time x x1 x2 for i in range 1000000 x append i x1 append i x2 append i 2 开始表演 2 1 for循环 st
  • 网络常见面试题

    1 OSI Open System Interconnect 开放系统互联 是一个七层的计算机网络模型 分别为 物理层 数据链路层 网络层 传输层 会话层 表示层和应用层 TCP IP Transmission Control Protoc
  • PPTP - GRE

    PPTP GRE PPTP Point to Point Tunneling Protocol 点对点隧道协议 GRE Generic Routing Encapsulation 通用路由封装 PPTP 的连接过程如下图 PPTP 可以用于
  • URL 地址栏锚点 window location hash 使用方法

    location是javascript里边管理地址栏的内置对象 比如location href就管理页面的url 用location href url就可以直接将页面重定向url 本文转自米扑博客 URL 地址栏锚点 window loca
  • Linux 虚拟化网络技术 — 虚拟网络协议栈

    前言 本文通过 OpenStack Neutron L3 Agent 实现的 Linux 虚拟路由器来描述 Linux 的虚拟网络协议栈 Neutron L3 agent 概述 Neutron L3 agent 服务 运行在 OpenSta
  • ubuntu不能上网解决方法

    可能会是Network Manager 有BUG引起的 解决方法如下 首先 卸载掉Network Manager sudo apt get remove network manager 然后 手动配置网卡 在终端输入 sudo gedit
  • 调用模块中的导入

    我仍在学习 python 在玩完 pygame 之后 我注意到我正在重新导入我已经导入的模块中的内容 import pygame 例如 我在单独的文件中有一些类 但我还必须将 pygame 导入到该文件中才能使它们正常工作 它实际上导入代码

随机推荐

  • 3.Linux网络编程-粘包处理

    visiopacket h Created on 2019年5月8日 Author hfeng liu 粘包处理 xff1a 由于TCP是基于流传输的机制 xff0c 当发送多个间隔较小的小报文时 xff0c 它会在缓冲区中缓存成一个报文发
  • linux shell脚本执行sql语句建表建库

    linux shell脚本执行sql语句建表建库 1 创建sql脚本2 创建shll脚本 1 创建sql脚本 创建contract ddl sql span class token comment 创建数据库contract user sp
  • 【Windows版】VScode配置C++开发环境

    博客已更新 xff1a Windows版 VScode配置C 43 43 开发环境 花花少年的博客 CSDN博客
  • Windows+COLMAP三维重建教程【exe安装】

    一 步骤 1 下载COLMAP COLMAP COLMAP 2 解压并运行COLMAP 3 稀疏三维重建 xff0c 生成稀疏图 4 稠密图三维重建 xff0c 生成稠密图 二 可能出现的问题 1 Dense stereo reconstr
  • FFmpeg教程(超级详细版)

    一 参考资料 通过ffmpeg把图片转换成视频 FFmpeg命令 一 使用filter complex命令拼接视频 FFmpeg 视频处理入门教程给新手的 20 多个 FFmpeg 命令示例 FFmpeg命令行转码 ffmpeg 翻译文档
  • yolov5+Deepsort实现目标跟踪

    一 参考资料 项目源码 pytorch yolo5 43 Deepsort实现目标检测和跟踪 工程落地 YoloV5 43 deepsort 43 Fast ReID 完整行人重识别系统 xff08 三 xff09 yolov5 deeps
  • 华为Ascend昇腾适配PyTorch框架

    一 参考资料 PyTorch用户文档 PyTorch网络模型移植 amp 训练指南 AscendPyTorch 第三方框架适配 二 重要说明 CPU架构为ARM架构时 xff0c 由于社区未提供ARM架构CPU版本的torch包 xff0c
  • 提高工作效率的宝藏网站和宝藏工具

    一 好用的网站 面包多 面包多 创作者在面包多 xff0c 通过出售课程 xff0c 文章 xff0c 绘画 xff0c 创意作品 xff0c 软件 xff0c 电子书 xff0c 音乐 xff0c 游戏 xff0c 咨询服务 xff0c
  • ubuntu服务器相关教程

    二 常用操作 1 ssh相关 span class token comment 安装ssh服务 span span class token function sudo span span class token function apt g
  • 超级实用的C++学习网站

    重要说明 xff1a 该博客长期更新 xff0c 方便读者查阅 xff01 一 参考资料 学习C 43 43 这几个网站足矣 二 C 43 43 学习网站 C 43 43 中文网 cppreference 当之无愧的C 43 43 学习第一
  • Vue 安装 Element Plus

    Element UI 是一款基于 Vue 的桌面端组件库 xff0c 提供了丰富的PC端组件 xff0c 简化了常用组件的封装 xff0c 大大降低了开发难度 随着 Vue 版本的更新 xff0c Element UI 2 x 升级到了El
  • gpio接口编程实例

    一 GPIO gpio general purpose ports 通用输入 输出端口 gpio的操作是所有硬件操作的基础 xff0c 这是底层开发人员必须掌握的 以三星公司的s3c2410 s3c2440为例做一下简要说明 s3c2410
  • ubuntu设置pycharm的桌面快捷方式

    写在最前面 xff1a 感谢大佬的分享 xff0c 参考了原文之后操作了一番 xff0c 除了pycharm xff0c 其他类似的软件也是一样的步骤即可创建桌面快捷方式 附上原文链接 xff1a Ubuntu 下安装pycharm 以及创
  • Anaconda在Ubuntu下的安装与简单使用

    一 Anaconda的安装 参考博客 ubuntu16 04下安装 amp 配置anaconda 43 tensorflow新手教程 1 下载 Miniconda 2 安装Miniconda bash Miniconda3 py39 4 1
  • 目标检测中NMS(非极大抑制)的概念理解

    参考博客 物体检测中常用的几个概念迁移学习 IOU NMS理解 目标定位和检测系列 xff08 3 xff09 xff1a 交并比 xff08 IOU xff09 和非极大值抑制 xff08 NMS xff09 的python实现 一 NM
  • VMware虚拟机上不能使用CUDA/CUDNN

    参考博客 VMware虚拟机上不能使用CUDA Linux Ubuntu 系统查看显卡型号 一 综述 虚拟机的显卡是虚拟的 xff0c 不能使用CUDA 虚拟机上装Nvidia显卡驱动会导致其他驱动全都不能用 xff0c 所以不能在虚拟机上
  • CUDA、CUDNN在windows下的安装及配置

    参考文章 全网最详细 Windows 安装 TensorFlow2 0 GPU 详细教程 Wind10安装anaonda 43 cuda10 1 43 cudnn 43 pytorch 43 tensorflow gpu win10 43
  • windows下CUDA的卸载以及安装

    参考博客 windows 7 下cuda 9 0 卸载 cuda8 0 安装 一 前言 对于一个刚玩CUDA菜鸟来说 xff0c 安装问题就是一个巨大的坑 xff0c 安装过程里面有很多需要注意的细节 xff0c 很多自定义的选项 xff0
  • 宇宙最强VisualStudio2017配置pyQt5用于python3.6的UI界面工具

    前言 请务必注意我的写作日期是2017年12月10日 现在的新版都在不停的变化中 xff0c 希望会越来愈好 2017年3月18日 xff0c 微软发布了Visual Studio2017 xff0c 其中的社区版可以自由下载并应用 xff
  • 【CVPR2019】超分辨率文章,SRFBN: Feedback Network for Image Super-Resoluition

    论文地址 代码 CVPR的单图像超分辨率文章 xff0c 主要是用回传机制来提高超分辨率的效果 xff0c 且不引入过多的参数 主要是设计了一个feedback模块 xff0c 多次回传 xff0c 如下图所示 xff1a 上一次feedb