DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution

  • Abstract
  • 1 Introduction
  • 2 Method
    • 2.1 Basic Method
    • 2.2 Advanced Model
    • 2.3 LOSS
  • 3 Experiments
  • 4 Conclusion

这篇文章是第一次将之前已有的递归神经网络(Recursive Neural Network)结构应用在图像超分辨率上。为了增加网络的感受野,提高网络性能,引入了深度递归神经网络,但出现了梯度爆炸/消失问题,又研究出了递归监督跳跃连接两个扩展办法。
论文指引:https://arxiv.org/abs/1511.04491

Abstract

作者提出了一种使用深度递归卷积网络(DRCN)的图像超分辨率重建方法(SR)。网络有一个非常深的递归层(多达16个递归)。增加递归深度可以提高性能,而不会因为额外的卷积而引入新参数。在参数优势外,由于网络非常深,会引起梯度的爆炸/消失,使用标准的梯度下降方法学习DRCN非常困难。为了减轻训练的难度,作者提出了两个扩展方法:递归监督和跳跃连接。实验证明该网络能达到很好的效果。

1 Introduction

在图像超分辨率(SR)中,卷积网络的感受野非常重要。感受野越大,可以用来恢复缺失的高频分量的有用上下文信息就越多。现有的各种计算机视觉任务的深层卷积网络通常使用非常大的感受野(224x224,在ImageNet分类中常见)。

那么增加感受野的方式一般有两种:增大卷积核的尺寸、增加网络深度。
作者提到使用增加网络深度的方法有两种:使用尺寸大于1×1的卷积核conv层或pool层。
但这两种增加网络深度的方法都有各自的缺陷:conv层会引入更多参数;pool层通常会丢弃一些重要的像素级的信息导致重建图像丢失细节。对于超分辨率和去噪等图像恢复问题,图像细节非常重要,因此图像重建类的工作都不使用pool。因此只能考虑通过增加卷积层来增加网络深度,但过大的网络又会导致两个问题:需要用大量的数据来避免过拟合、网络模型的存储和加载困难。

由此作者提出了深度递归卷积网络,用相同的循环层来替代不同的卷积层。当执行更多递归时,参数的数量不会增加。又加深了网络的深度。单纯的使用深度递归卷积网络,作者发现了一些问题:用广泛使用的随机梯度下降法优化的DRCN不容易收敛。是因为梯度爆炸/消失和单个权重层难以学习像素之间的长期依赖关系。

又由此作者提出了两种方法来缓解训练难度:循环监督和跳跃连接。

1. 循环监督:把每次递归后的特征映射都用于重建目标高分辨率图像HR。由于每次递归都会导致不同的HR预测,因此作者将不同级别的递归产生的所有预测结合起来,以提供更准确的最终预测。
2. 跳跃连接:在SR中,低分辨率图像(输入)和高分辨率图像(输出)在很大程度上共享相同的信息。输入的精确信息在许多向前传递过程中可能会衰减。于是作者将输入和各层的输出连接到重建层,用于图像的恢复。

2 Method

作者先介绍了基本的含递归卷积网络的模型,但这个方法难以训练,作者又提出了改进后的高级模型(加入了递归监督和skip connection)。

2.1 Basic Method


基底模型由三个子网络组成:嵌入网络embedding netword推理网络 inference network重建网络reconstruction network。嵌入网络用于将给定图像表示为特征映射,推理网络加深网络深度,将嵌入网络的输出特征映射到更高维度。一旦推理完成,推理网络中的最终特征映射将被送入重建网络以生成输出图像。 上图中的input图像是原始LR图像经过插值上采样后的图像

网络的目标是学习一个模型fff使预测值y^=f(x)\hat{y} = f(x)y^=f(x)y^\hat{y}y^ 是估计地面真实的输出。用f1、f2、f3f1、f2、f3f1f2f3分别表示嵌入层、推理层、重建层子网络函数。整体模型用f(x)=f3(f2(f1(x)))f(x) = f_3(f_2(f_1(x)))f(x)=f3(f2(f1(x)))来表示。

嵌入层:
含有一层隐藏层,将输入图像(灰度或RGB)表示为一组特征映射。
嵌入层网络函数f1(x)f_1(x)f1(x) 获取输入向量xxx并计算矩阵输出H0H_0H0,该矩阵输出H0H_0H0是推理网络f2f_2f2的输入。隐藏层值用H−1H_{-1}H1表示。
嵌入层网络的公式如下:

推理层:
推理网络是解决超分辨率问题的主要组成部分。分析一个大的图像区域是由一个递归层完成的。每个递归层应用相同的卷积,使用激活函数ReLU。 卷积核尺寸大于1×1,每循环一次网络的感受野都变宽了。
推理层f2f_2f2 获取输入矩阵H0H_0H0 并计算矩阵输出HDH_DHD。推理层中对每个循环网络操作使用相同的权重和偏差矩阵W和b。设g表示由推理层的单个递归建模的函数:g(H)=max(0,W∗H+b)g(H) = max(0,W∗H+b)g(H)=max(0,WH+b)
递归层公式为:

重建层:
虽然递归层最终应用的特征图代表重建的高分辨率图像,但将其(多通道)转换回原始图像空间(1或3通道)是必要的。
对于嵌入层,作者使用3×3卷积核,因为对于超分辨率,图像特征信息比原始信息更丰富。对于推理层,3×3卷积意味着隐藏状态只传递给相邻像素。重建网络也要考虑相邻信息。
重建网络f3f_3f3获取输入的隐藏状态HDH_DHD,并输出目标图像SR(高分辨率)。简单来说,重构网络相当于嵌入网络的逆运算。
重建层公式:

Basic Model 虽然简单且功能强大,但作者发现训练深度递归网络非常困难(最多训练三个循环层)。
有以下几点原因:

  1. 梯度的消失和爆炸。梯度爆炸是由链式梯度的乘法性质造成的。对于深度递归,可以呈指数增长。梯度消失问题正好与梯度爆炸相反。梯度呈指数级的速度到零向量。因此,梯度爆炸和消失的存在使深度递归网络掌握远距离像素信息间的关系非常困难。
  2. 经过多次递归想要保留原始LR信息并不容易。在SR任务中,输出与输入非常相似,所以LR图像的信息非常重要,需要为后续更深的递归层保留输入图像的精确信息。
  3. 存在一个寻找最优递归次数的问题。如果递归对于给定的任务来说太深,就需要减少递归的次数。寻找最优数需要训练许多具有不同递归深度的网络。

2.2 Advanced Model

对于Basic Model作者并没能训练出成功的深度递归网络,为了解决梯度和最优递归问题,作者又提出了一种改进的模型。

  1. Recursive-Supervision:监督每层递归,以减轻梯度消失/爆炸的影响。假设在推理层中卷积过程反复使用相同的卷积核,使用相同的重建层来预测每一次递归重建的SR图像。重建层输出D个预测图像,所有预测都在训练期间同时受到监督,这一步在公式中的体现为增加了一部分loss,后面公式中具体再介绍。
      a、将所有D个预测图像通过加权求和来计算最终输出(权重由网络学习得到)。通过递归轻了训练递归网络的困难,通过反向传
      播将不同预测损失产生的反传梯度求和提供平滑效果,能够有效缓解梯度爆炸或消失。

      b、此外,由于监督能够利用所有中间层的预测信息,因此选择最佳递归次数的重要性降低了。

  2. Skip-Connection:对于图像重建任务,输入和输出图像高度相关,所以可以直接通过跳层连接将LR信息直接传输到SR重建层。该做法有两个优点:节约了远距离传输的复杂算力极大程度的保留了完整的低频信息

高级模型的公式:(基于基础模型修改)

递归监督中的每个中间预测的输出:

d=1,2,3,...,Dd =1,2,3,...,Dd=1,2,3,...,D

重建层网络现在多接收了一个来自skip-connection的xxx信息。
这个重建网络可以采用多种功能形式,比如作者使用的是f3(x,Hd)=x+f3(Hd)\bm{f_3(x,H_d)= x+f_3(H_d)}f3(x,Hd)=x+f3(Hd),因为网络的输入xxx是插值后的图像,y^≈x\hat{y}≈ xy^x。这是也是简化计算的一种方法。
最终输出是所有中间预测的加权平均:

wdw_dwd表示递归期间每个中间隐藏状态重建的预测权重。这些权重是在网络训练中学习的。

2.3 LOSS

本小节讲述训练网络的目标函数
给定训练数据集{x(i),y(i)}i=1N\{x^{(i)},y^{(i)}\}^N_{i=1}{x(i),y(i)}i=1N,网络的最终目标是找到能够准确预测y^=f(x)\hat y = f(x)y^=f(x)值的最佳模型fff。均方误差12∣∣y−f(x)∣∣2\frac{1}{2} | | y − f(x)||^221yf(x)2在训练集上求平均值最小化。这是一种在SR任务中广泛使用的评估标准,有利于得到高峰值信噪比(PSNR)。使用递归监督,会有D+1次目标函数最小化:监督递归的D个输出l1(θ)l_1(\theta)l1(θ)和最终输出l2(θ)l_2(\theta)l2(θ)θ\thetaθ 表示参数集。
对于中间输出,损失函数:

对于最终输出,损失函数:

综上,得出最终的损失函数L(θ)L(θ)L(θ)。训练通过权重衰减(L2惩罚×βL2惩罚\timesβL2×β)进行规范化 。

式中,ααα表示中间输出对重建图像的重要性占比,βββ表示权重衰减的系数。设置ααα越大可以使训练过程稳定,因为早期递归容易收敛。随着训练的进行,后期ααα衰减用以提高最终输出的性能。通过使用基于反向传播的小批量梯度下降优化回归目标来进行训练。

3 Experiments

数据集:
Train:使用91-image数据集。Test:使用了四个数据集:Set5、Set14、B100、Urban100。

训练设置:
文章中默认使用16个递归网络。整个网络展开,从输入到输出的最长路径有20个conv.层(41×41的感受野)。
SGD中的动量参数:0.9
权重衰减系数β:0.0001
所有卷积核尺寸:3×3×2563×3×2563×3×256
patch size:41X41
stride:21
batch size:64
学习率:0.01,若5个epoch后loss没有下降,则学习率缩小10倍。若学习率低于10−610^{-6}106,训练终止。
最终网络在Titan X GPU训练了6天。

实验结果和对比结果图可以自行看论文。
可以得出结论:随着循环层加深,PSNR的越来越高,实验中最大层数是16。继续加深网络,PSNR是否会继续提高并未可知。但是综合考虑性能平衡,作者选择了16层递归网络。

本文的提出的网络模型优于其他所有现有方法,该方法重建的图像SR可以产生相对尖锐的边缘,而其他方法重建的图像中边缘会模糊。

4 Conclusion

  文章提出了一种使用深度递归卷积网络的图像超分辨率重建方法。该网络在利用大型图像上下文的同时有效地重复利用权重参数,减少了额外参数的引入,提高了网络效率,效果成功超越了其他现有的方法。

  文章首先使用了一般的递归网络,但是发现存在梯度爆炸/消失问题,难以训练出一个成功的深度递归网络。为了降低模型训练的难度,使用了递归监督跳跃连接两种方法,构造出了高级递归神经网络。


最后祝大家科研顺利,身体健康,万事胜意~

超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建相关推荐

  1. 超分算法RDN:Residual Dense Network for Image Super-Resolution 超分辨率图像重建

    这篇文章总结分析了ResNet 和DenseNet的优缺点,并将其结合,提出了新的结构ResidualDenseNet.文章中对ResNet 和DenseNet以及MemNet都进行了简单的对比分析. ...

  2. 图像超分算法小合集二:FSRCNN、DRCN、RDN、EDSR

    目录 FSRCNN DRCN RDN EDSR 文章: FSRCNN : Accelerating the Super-Resolution Convolutional Neural Network ...

  3. DRCN(Deeply-Recursive Convolutional Network for Image Super-Resolution)超分辨网络-详细分析

    对超分有兴趣的同学们可直接关注微信公众号,这个号的定位就是针对图像超分辨的,会不断更新最新的超分算法解读. 正文开始 Contents 1. Introduction 2. Related Work ...

  4. AliSSR 语音超分算法:让在线会议语音更明亮更自然

    超分让在线会议语音更明亮,在线会议已成为日常工作中较为普遍的沟通交流方式,接入会议的方式也呈现多样化,比如电脑入会.手机入会又或是电话入会. 雪雅.曜辰|作者 众所周知,高采样率且高带宽的音频信号富含 ...

  5. 可生成高清视频的Stable Diffusion来了!分辨率提升4倍,超分算法来自腾讯,支持Colab在线试玩...

    明敏 发自 凹非寺 来源 | 量子位 QbitAI 免费玩的Stable diffusion,又出新变种了! 古典人像丝滑切换,还都是4倍超分辨率水平,细节也就多了亿点点吧,眉毛发丝都根根分明. 还能 ...

  6. 突破网络和屏幕的限制,超分算法让图片和视频秒变清晰

    如上图,从100x133pix→400x532pix,除了肉眼可见的清晰,拥有可以将分辨率提升400%的技术到底意味着什么? 它意味着: 老照片.老电影.动漫等画质可快速提升,分辨率自由调节 产业算法 ...

  7. 超分算法小合集之SRCNN、DCSCN、SRDenseNet、SRGAN

    阅读指引 SRCNN DCSCN SRDenseNet SRGAN 论文快速指引: SRCNN:Learning a Deep Convolutional Network for Image Supe ...

  8. 传统图片超分算法——双三次插值 (Bicubic)、附C++源码

    呼,花了一个下午,终于是写完加调试完了所有的代码. 双三次插值介绍 之前我写的这篇博客中讲了什么是超分,并实现了单线性插值算法和双线性插值算法.在这里将再介绍一种插值算法--双三次插值算法. 首先,双 ...

  9. 针对视频压缩的压缩感知超分算法:COMISR

    作者单位:谷歌 论文链接:https://arxiv.org/pdf/2105.01237.pdf 编者言: 针对H.264等视频压缩标准压缩后的视频进行超分,定量和定性效果相比过去的VSR算法有较大 ...

最新文章

  1. Facebook爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色...
  2. play store显示“从服务器检索信息时出错。DF-DFERH-01”问题解决
  3. avisynth_c.h:825:3: error: unknown type name ‘HMODULE’
  4. 百度推出惊雷算法,打击快排产业,但重点是这个工具
  5. java中矩阵怎么打印_在Java编程中打印二维数组或矩阵
  6. CentOS修改yum源【噗哈哈】
  7. const定义常量_go语言基本语法——常量constant
  8. c++ primer plus 复合类型之数组
  9. tomcat配置url跳转_Tomcat安装、配置、优化及负载均衡详解
  10. 傲梅分区助手 linux,无损分区数据,调整分区大小软件:傲梅分区助手
  11. 精英模具设计师的“葵花宝典”
  12. 【斜对称矩阵】向量的斜对称矩阵表示
  13. Fisher精确检验的通俗理解
  14. 快递管理系统(面向对象+MVC+集合+IO)
  15. dzzoffice 任意文件下载漏洞分析
  16. STM32 Bootloader开发记录 3 固件签名校验
  17. Haproxy集群配置
  18. PAT 1037 在霍沃茨找零钱
  19. 山东理工大学ACM平台题答案关于C语言 1177 C语言实验——时间间隔
  20. 7.2 MVC 实现登录验证

热门文章

  1. Perfetto使用
  2. android 判断 手机 是否 打开 允许模拟位置 选项
  3. Android pms权限管理,PMS权限管理和鉴权过程
  4. Java List<Long>转List<String>
  5. 编译器扩展-MenuItem
  6. html设置视频一直播放,设置video js多视频连续播放
  7. 种子搜索神器如何用【详解】
  8. DPDK之什么是imissed、ierrors、rx_nombuf
  9. 爬虫练习(1)-- 爬取豆瓣最新电影
  10. 学习笔记(01):学校网管员培训视频教程-以太网的发展