Video Super-Resolution with Recurrent Structure-Detail Network阅读笔记

Video Super-Resolution with Recurrent Structure-Detail Network(视频超分与循环的结构-细节网络)
文章检索出处:2020 ECCV
论文:https://arxiv.org/abs/2008.00455

 

代码:https://github.com/junpan19/RSDN


本篇笔记主要对整篇论文从头到尾进行阅读分析,如果只对模型部分有兴趣,可直接观看第四部分。


(1)摘要


        简单叙述本文特点以及提出的内容,本文提出新的循环视频超分算法,对比过去借助时间滑动窗口中的相邻帧然后超分单个参考帧,以及基于循环的算法而言,有效又高效。并在结尾给出了代码。


(2)引言


        用单帧图像以及多帧图像的处理引出视频超分。视频超分可以简单分为显示方式以及隐式方式,显示方式利用运动估计以及运动补偿,对输入帧进行扭曲对齐,利用观测值重建高分辨率目标帧。隐式方式在于利用运动信息进行灵活的运动补偿,避免的运动估计步骤,主要分为动态上采样滤波器以及渐进式融合残差模块。
        本文中的算法,将每一帧都分为结构(structure)和细节(detail)分量,并且根据前一步得到的结构(structure)和细节(detail)信息来超分目标帧。并且在网络中的隐藏状态会随着时间的推移捕捉场景的不同典型外观,通过计算参考帧和隐藏状态下的每个通道的相关性,可以抑制过时信息并且凸显有用信息,对融合信息更具有鲁棒性。


(3)相关工作


        单图像超分方法,(关系不大,不多看了)
        视频超分方法,介绍了显示运动补偿以及隐式运动补偿的原理以及方法。
        本文使用的循环神经网络的介绍


(4)本文方法介绍

本文提出循环网络的总体流程,如下图,虽然是类似于递归/循环神经网络,但是只是利用了将前一刻数据的输出作为下一次的输入。

解释图中各个符号的意义:

                 :t帧的低分辨率图像              :t帧的隐式信息

                   :t帧的Structure分量 (包含的是图像中的低频信息和帧间运动)               

                  :t帧的Detail分量 (包含的是高频信息和外观上的细微变化)

                   : 包含高频、低频以及锐化细节后的图像           :t的高分辨率图像

               :t帧高分辨率图像的Structure分量

              :t帧高分辨率图像的Detail分量

(4.1) 是循环神经单元的具体架构内容(如下图所示):

单个神经单元的推导过程如下:

(4.1.1) 输入两帧数据,一个当前帧(目标帧),另一个是前一帧数据,使用Bicubic上下采样方法(作者说也可以使用低通滤波以及高通滤波实现),提取出Structure(St)信息,然后计算目标帧与的差值得到Detail(Dt)信息(Dt中包含高频以及细节信息)

(4.1.2) 对处理得到的Structure和Detail信息进行处理,文中以Detail的处理为例(Structure处理相同),将t帧的信息与t-1帧的以及计算前一帧高频率图像得到的隐含状态信息进行拼接,通过3x3卷积送入SD模块中。( 隐含状态信息 是目标帧与 前一帧的隐含状态信息 经过隐含状态自适应模块得到的)

(4.1.3) 经过多个SD模块(下文继续介绍SD模块)产生信息,表示为经过计算后的特征信息,将其送入3x3卷积层中并通过一个上采样,产生一个高分辨的细节分量

 (4.1.4) Structure的高分辨的结构分量和4.3相同,拼接并通过3x3卷积后生成充满高频数据和锐化细节的图片帧,然后上采样,获得结果高分辨率图片

(4.1.5)  求和后,经过3x3卷积后得到隐含层状态量,用于下个Ht的输入。

(4.2)SD模块                            

         作者对比三种分支数据的处理模块,得到c中既可以看到特定于组件的信息,也促进了Structure'和Detail两个分支之间的信息交换。

(4.3)隐含状态自适应模块

隐含状态信息是上一时刻的输出与目标帧的经过隐含状态自适应模块处理后得到的输入信息

设计目的:隐含状态信息包含的是之前处理过的帧的隐藏信息,因此对于当前帧的不同位置而言存在可以利用的信息,但是也存在影响当前帧超分判断的信息,隐含状态自适应模块帮助当前帧的不同位置,从隐含状态中借用有效的补充信息,压制冗余信息。如下图所示

隐含状态的不同通道下存在着不同的场景,所以隐含信息不能完全作为输入与当前帧结合输入。让隐含状态的不同通道对当前帧的不同位置做出不同的贡献。

模块设计:

 推导流程:

(4.3.1) 当前帧通过一个3x3卷积得到H*W*K^2的数据,其中1*1*k^2表示的是目标帧每个位置的信息。(卷积将目标帧规定的3*3大小区域作为一个位置,将其每个位置的信息作为卷积核对隐含信息进行提取,获得其相关性信息)

(4.3.2)从4.3.1中获取的卷积核与  的信息进行卷积提取信息,如下公式所示(表示当前帧与位置(i,j)处隐藏状态的第c信道之间的相关性),通过sigmoid函数,将每个位置的值控制在[0,1]内表示相关性。

(4.3.3) 与  的隐含信息进行相乘,获取对当前帧重要的补充信息生成 

 损失函数:

charbonnier loss作为目标函数,分别对Structure,Detail和超分结果进行了损失计算,三者之和作为最终损失。(α,β,γ的参数比例在本文第五章实验中说明)

Structure,Detail和超分结果的损失计算方式

 (5)实验

训练数据集:Vimeo-90K

测试数据集:Vimeo-90K-T(7k个视频)

低帧率视频:高斯模糊(σ=1.6)+4次下采样

损失函数:Charbonnier loss惩罚损失函数(看本文第四节最后部分)

迭代优化器:Adam optimizer

学习率:10^-4,60-70个epach*0.1

环境:Python 3.6.4、PyTorch 1.1和Nvidia Tesla V100 GPU

开头和尾部序列帧处理:使用反射序列,输入2帧,那Vimeo-90K的输入序列为21234567,21就是输入序列。尾部相同,76就是输入帧

HSA(隐含状态自适应)模块采用K=3,(也就是目标真经过3x3卷积后,生成H*W*3^2的数据,下面是用3*3的卷积核)

效果评估:Vimeo-90K-T , Vid4 , UDM10

本文针对数据集和方法进行了消融研究(消融研究通常是指删除模型或者算法的某些”功能“,并查看其如何影响性能,例如某论文提出AB两种方式,在基于baseline的基础上提出创新,那么消融研究就是baseline+A,baseline+B,baseline+A+B)

损失函数的参数选择,根据不同比例的参数进行训练,当α,β,γ的参数比例=(1,1,1)时,训练出的模型效果最好,PSNR/SSIM值最高。

实验数据比对,比较多种模型在不同视频下的PSNR和SSIM以及模型的参数量,计算的浮点数等。如下图,在Vid4数据集下,左侧模型在右侧标准下的数据显示。

换个数据集进行比对 

 放大质量的效果对比:

 

 这篇论文最大特点就是将单个帧的图像分解成包含高频、细节的detail信息与低频、运动变化的structure信息,然后对目标帧进行效果重建和细节加强,并且设计隐含部分的自适应模块,使目标帧可以根据不同位置,从而最大程度上利用隐含信息,对信息进行一个补充和增强。

代码的复现部分在稍后的内容中进行复现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值