1. Fast Spatio-Temporal Residual Network for Video Super-Resolution(FSTRN 2019 CVPR)
1.1 网络结构
网络分成了四部分:
- LR video shallow feature extraction net(LFENet)
- fast spatio-temporal residual blocks (FRBs)
- LR feature fusion and upsampling SR net (LSRNet)
- global residual learning (GRL) (包括了space residual learning (LRL) and cross-space residual learning (CRL))
分别用 I L R I_{LR} ILR和 I S R I_{SR} ISR表示FSTN的输入和输出,用 I H R I_{HR} IHR表示目标
1.1.1 LFENet
使用了一个C3D layer从LR视频中提取特征。
F
0
L
=
H
L
F
E
(
I
L
R
)
F_0^L = H_{LFE}(I_{LR})
F0L=HLFE(ILR)
F
0
L
F_0^L
F0L是提取的feature-maps,
H
L
F
E
H_{LFE}
HLFE是C3D操作,
F
0
L
F_0^L
F0L用于LR空间的GRL还有FRBs的输入
1.1.2 FRBs
对于第
d
d
d层FRBs,输出表示为
F
d
L
=
H
F
R
B
,
d
(
F
d
−
1
L
)
=
H
F
R
B
,
d
(
H
F
R
B
,
d
−
1
(
.
.
.
(
H
F
R
B
,
1
(
F
0
L
)
)
.
.
.
)
)
F_d^L = H_{FRB,d}(F_{d-1}^L) = H_{FRB,d}(H_{FRB,d-1}(...(H_{FRB,1}(F_0^L))...))
FdL=HFRB,d(Fd−1L)=HFRB,d(HFRB,d−1(...(HFRB,1(F0L))...))
同时LR space residual learning(LRL)也用于LR空间的特征学习,通过
H
L
R
L
H_{LRL}
HLRL,一个组合函数:
F
L
R
L
L
=
H
L
R
L
(
F
D
L
,
F
0
L
)
F_{LRL}^L = H_{LRL}(F_D^L, F_0^L)
FLRLL=HLRL(FDL,F0L)
FRB模块将一个
k
∗
k
∗
k
k * k *k
k∗k∗k的卷积核改成一个
1
∗
k
∗
k
1 * k * k
1∗k∗k 和
k
∗
1
∗
1
k * 1 * 1
k∗1∗1 的卷积核。修改了激活函数。所以FRBs块可以写成
F
d
L
=
F
d
−
1
L
+
W
d
,
t
(
W
d
,
s
(
σ
(
F
d
−
1
L
)
)
)
F_d^L = F_{d - 1}^L + W_{d,t}(W_{d,s}(\sigma(F_{d-1}^L)))
FdL=Fd−1L+Wd,t(Wd,s(σ(Fd−1L)))
σ
\sigma
σ表示PReLU激活函数,
W
d
,
s
W_{d,s}
Wd,s和
W
d
,
t
W_{d,t}
Wd,t分别表示空间卷积和时间卷积,公式里没有加入偏差。
LRL通过PReLU函数,一个dropout层实现。
F
L
R
L
L
=
H
L
R
L
(
F
D
L
,
F
0
L
)
=
σ
L
(
F
D
L
+
F
0
L
)
F_{LRL}^L = H_{LRL}(F_D^L, F_0^L) = \sigma_L(F_D^L + F_0^L)
FLRLL=HLRL(FDL,F0L)=σL(FDL+F0L)
1.1.3 LSRNet
用于在LRL提取特征之后,在HR空间获取超分视频。使用了一个C3D卷积,之后使用deconvution,然后再用C3D做特征融合
F
S
R
L
=
H
L
S
R
(
F
L
R
L
L
)
F_{SR}^L = H_{LSR}(F_{LRL}^L)
FSRL=HLSR(FLRLL)
再这一部分,还有cross-space residual learning(CRL),首先通过一个SR mapping从LR空间到HR空间,得到
F
S
R
H
,
最
终
网
络
输
出
为
F_{SR}^H,最终网络输出为
FSRH,最终网络输出为
I
S
R
=
H
F
S
T
R
N
(
I
L
R
)
=
F
S
R
L
+
F
S
R
H
I_{SR} = H_{FSTRN}(I_{LR}) = F_{SR}^L+F_{SR}^H
ISR=HFSTRN(ILR)=FSRL+FSRH
F
S
R
H
=
H
C
R
L
(
I
L
R
)
F_{SR}^H = H_{CRL}(I_{LR})
FSRH=HCRL(ILR),这个映射操作将LR映射到HR空间,尽可能简单,可以是基于双线性、最近邻、双三次、面积和反卷积的插值。
1.1.4 Global residual learning
包括了LR space residual learning(LRL)和Cross-space residual learning(CRL)
1.2 Loss
使用 Charbonnier penalty function,
ρ
=
x
2
+
ϵ
2
\rho = \sqrt{x^2 + \epsilon^2}
ρ=x2+ϵ2做近似,
ϵ
=
1
e
−
3
\epsilon = 1e -3
ϵ=1e−3。
L
(
I
S
R
,
I
H
R
;
θ
)
=
1
N
∑
n
=
1
N
ρ
(
I
H
R
n
−
I
S
R
n
)
L(I_{SR},I_{HR};\theta) = \frac{1}{N}\sum_{n = 1}{N}\rho(I_{HR}^n - I_{SR}^n)
L(ISR,IHR;θ)=N1n=1∑Nρ(IHRn−ISRn)
2.Residual Networks for Light Field Image Super-Resolution(resLF)
这篇文章比较难读懂,把自己理解的mark下,也可能和作者做的有偏差。
代码地址
总结:将一个光场中的图像分成不同的子像素偏移量的图像堆栈,然后输入不同的网络分支,从每个分支计算不同空间方向上的剩余信息,并进一步集成以补充视图图像的高频细节。
2.1 Method
目标是从一个低像素的图片 L L r ( x , y , u , v ) L^{Lr}(x,y,u,v) LLr(x,y,u,v)重建出超分图片 L s r ( x , y , u , v ) L^{sr}(x, y, u, v) Lsr(x,y,u,v),其中 ( x , y ) (x, y) (x,y)是空间域, ( u , v ) (u, v) (u,v)是角度域。超分的图像最终是 ( r X , r Y , U , V ) (rX, rY, U, V) (rX,rY,U,V), r r r是放大倍数。将图片转换到YCbCr色彩空间并且只使用Y通道。
总体框架
不同的方向移动的像素可以根据disparity信息组合,产生更高分辨率的图片。本文水平,垂直和对角线方向的子像素移动。
将角度方向记为
t
a
n
θ
=
v
/
u
tan \theta = v/ u
tanθ=v/u,提取图像周围的像素
I
θ
=
0
,
I
θ
=
90
,
I
θ
=
45
,
I
θ
=
135
I_{\theta = 0}, I_{\theta = 90}, I_{\theta = 45}, I_{\theta = 135}
Iθ=0,Iθ=90,Iθ=45,Iθ=135。设计了residual网络结构。如图所示网络有四个分支和一个带有几个residual blocks的全局部分。与其他视图图像相比,一个LF中的中心视图图像具有更多来自相关图像堆栈的可用子像素信息。首先设计网络提高中间视图图像的空间分辨率,每个图像栈image stack的图像数量一样,学习不同角度的LF图片,最终恢复图像。
网络设计
将训练数据记为
{
L
l
r
,
I
c
h
r
}
\{L^{lr}, I_c^{hr}\}
{Llr,Ichr},
I
c
h
r
I_c^{hr}
Ichr是gt,中间图像的高像素表示。四个角度的图片栈可以计算得到。网络学习模式
H
U
∗
V
H_{U*V}
HU∗V,根据输入的
U
∗
V
U*V
U∗V角度像素图预测中间图像的高像素图像
I
c
s
r
=
H
U
∗
V
(
I
θ
=
90
,
I
θ
=
45
,
I
θ
=
135
I_c^{sr} = H_{U*V}(I_{\theta = 90}, I_{\theta = 45}, I_{\theta = 135}
Icsr=HU∗V(Iθ=90,Iθ=45,Iθ=135
每个角度方向的图片栈作为一组数据在每个分支进行编码,然后隐式计算disparity information信息,找到每个视图图片准确的子像素平移,这里每个分支的第一层卷积提取图片栈的特征
F
F
E
θ
=
H
F
E
θ
(
I
θ
l
r
)
F_{FE_{\theta}} = H_{FE_{\theta}}(I_{\theta}^{lr})
FFEθ=HFEθ(Iθlr)
提取到的特征作为后面的残差模块的输入,对于中心图片,用相似的卷积操作
F
F
E
c
=
H
F
E
c
(
I
c
l
r
)
F_{FE_c} = H_{FE_c}(I_c^{lr})
FFEc=HFEc(Iclr)
假设每个分支有S个残差模块(S),第s个残差模块的输出,残差模块和EDSR用的相似。对每个模块,输入会直接加入输出
F
R
B
θ
=
H
R
B
θ
,
s
(
F
R
B
θ
,
s
−
1
)
F_{RB_{\theta}} = H_{RB_{\theta}, s}(F_{RB_{\theta}, s-1})
FRBθ=HRBθ,s(FRBθ,s−1)
提取了不同分支的特征后,通过全局方式整合特征信息并将他们送入之后丶残差学习模块。
F
G
R
B
,
d
=
H
G
R
B
,
d
(
F
G
R
B
,
d
−
1
)
=
H
G
R
B
,
d
(
.
.
.
=
H
G
R
B
,
1
(
F
G
R
B
,
0
)
.
.
.
)
F_{GRB,d} = H_{GRB,d}(F_{GRB, d - 1}) = H_{GRB,d}(...= H_{GRB,1}(F_{GRB,0})...)
FGRB,d=HGRB,d(FGRB,d−1)=HGRB,d(...=HGRB,1(FGRB,0)...)
这里
F
G
R
B
,
0
=
[
F
R
B
0
,
S
,
F
R
B
9
0
,
S
,
F
R
B
4
5
,
S
,
F
R
B
1
35
,
S
]
F_{GRB,0} = [F_{RB_0,S}, F_{RB_90,S}, F_{RB_45,S}, F_{RB_135,S}]
FGRB,0=[FRB0,S,FRB90,S,FRB45,S,FRB135,S]经过了S个RB模块后各个方向分支信息的整合。定义有
D
D
D个全局残差模块
H
G
R
B
,
d
(
⋅
)
H_{GRB,d}(\cdot)
HGRB,d(⋅)取提取各个方向的信息,全局残差模块和局部残差模块结构类似,但是是4倍大。然后全局特征送入卷积成
H
G
F
(
⋅
)
H_{GF}(\cdot)
HGF(⋅),然后加入之前提取的中间图像信息
F
F
E
c
F_{FE_c}
FFEc。之后进行上采样
H
U
P
(
⋅
)
H_{UP}(\cdot)
HUP(⋅)。使用的是ESPCN的方式。最终
I
c
s
r
=
H
U
P
(
H
G
F
(
F
G
R
B
,
D
)
+
F
F
E
c
)
I_c^{sr} = H_{UP}(H_{GF}(F_{GRB,D}) + F_{FE_c})
Icsr=HUP(HGF(FGRB,D)+FFEc)
Light Field Super-Resolution(光场超分辨率)
一个LF捕获场景下不同视角的图片有不同的特征,在一个网络对他们同时进行充分是比较困难的。目前有一些基于学习的LFSR方法通过复杂的网络重建LR图像通过将超分过程单独应用到每张图片,或者更具已有的超分视图下的LF计算新的图片。这种方式下,图片是通过不平衡的信息实现超分的,同时,不同视角下的对应信息也不容易保存,对于不同角度方向的超分,网络需要重新训练。对于每张单独的图片,本文通过组合周围图片信息取保持积核结构,提供更灵活的方式取获取不同角度分辨率下的LF图像。
对于不同的angular分辨率(就是对应上面的 U ∗ V U*V U∗V),使用不同的resLF网络。文章将LF 图片分成不同部分,对于不是在中间的图片,也看成是对应于其他部分的中间图片,比如对于一个 7 ∗ 7 7*7 7∗7的分辨率,那么他隔壁的就是 5 ∗ 5 5*5 5∗5,后面的就是 3 ∗ 3 3*3 3∗3,对于边界处,进行补零,对于角点其实是 2 ∗ 2 2*2 2∗2,垂直方向和水平方向大小又是不一样的。
2.2 Loss
L1 loss
3. Feedback Network for Image Super-Resolution(SRFBN 2019 CVPR)
代码地址
总结:文中使用了一个反馈机制feedback mechanism来做超分,high-level的信息通过top-down的方式通过反馈连接进行反馈,网络只需要少量的参数。每次的输出都会计算loss对网络进行调节,所使用的反馈模块可以通过上采样或下采样丰富high-level信息。并提供了密集的skip connections,对于循环神经网络的训练,越到后面所使用的目标gt越难(加的扰动越多),通过这个学习策略网络能够逐步学习复杂的退化模型。
3.1总体结构
SRFBN展开有
T
T
T个迭代,每次迭代可分成三部分:
- an LR feature extraction block (LRFB)
- a feedback block (FB)
- a reconstruction block (RB)
全局的连接是一个绕过子网络的上采样图片。每一次子网络每一次迭代都恢复一个残差图像 I R e s t I_{Res}^t IRest。同时用 C o n v ( s , n ) Conv(s,n) Conv(s,n)表示一个有 n n n个大小为 s s s的卷积核,用 D e c o n v ( s , n ) Deconv(s,n) Deconv(s,n)表示反卷积。
LRFB由 C o n v ( 3 , 4 m ) Conv(3, 4m) Conv(3,4m)和 C o n v ( 3 , m ) Conv(3,m) Conv(3,m)组成。用 I L R I_{LR} ILR表示输入,则可以获得浅层的特征 F i n t = f L R F B ( I L R ) F_{in}^t = f_{LRFB}(I_LR) Fint=fLRFB(ILR)
FB:
F
i
n
t
F_{in}^t
Fint作为后续的FB模块输入,从
F
i
n
1
F_{in}^1
Fin1算起。所以对于第
t
t
t次迭代,
F
o
u
t
t
=
f
F
B
(
F
o
u
t
t
,
F
i
n
t
)
F_{out}^t = f_{FB}(F_{out}^t, F_{in}^t)
Foutt=fFB(Foutt,Fint)
RB:重建部分
D
e
c
o
n
v
(
k
,
m
)
Deconv(k,m)
Deconv(k,m)上采样LR特征
F
o
u
t
t
F_{out}^t
Foutt到HR,然后
C
o
n
v
(
3
,
c
o
u
t
)
Conv(3,c_{out})
Conv(3,cout)产生残差图片
I
R
e
s
t
I_{Res}^t
IRest
I
R
e
s
t
=
f
R
B
(
F
o
u
t
t
)
I_{Res}^t = f_{RB}(F_{out}^t)
IRest=fRB(Foutt)
最后第 t t t次迭代的输出可以表示为 I S R t = I R e s t + f U P ( I L R ) I_{SR}^t = I_{Res}^t +f_{UP}(I_{LR}) ISRt=IRest+fUP(ILR)
3.2 Curriculum learning strategy
使用
L
1
L_1
L1 loss优化,对于复杂的退化模型,
(
I
H
R
1
,
I
H
R
2
,
.
.
.
,
I
H
R
T
)
(I_{HR}^1, I_{HR}^2, ...,I_{HR}^T)
(IHR1,IHR2,...,IHRT)基于任务的苦难程度排列,最终的loss写成:
L
Θ
=
1
T
∑
t
=
1
T
W
t
∣
∣
I
H
R
t
−
I
S
R
t
∣
∣
1
L_{\Theta} = \frac{1}{T}\sum_{t=1}^T W^t||I_{HR}^t - I_{SR}^t||_1
LΘ=T1t=1∑TWt∣∣IHRt−ISRt∣∣1
W
t
W_t
Wt表示第t次迭代输出的价值,这里设为1。
4. Recurrent Back-Projection Network for Video Super-Resolution(RBPN VSR)
根据保存时序信息的方式,deep VSR可以分成三种方式:
- Temporal Concatenation:这种方式不能表示序列上多个运动状态因为输入帧被连接在一起。
- Temporal Aggregation:图(b),这种方法的全局优化比较难因为基本上仍然连接许多输入帧。
- RNN
4.1 Recurrent Back-Projection Networks
问题描述:
记第
I
I
I帧低像素帧的大小为$
(
M
l
∗
N
l
)
(M^l*N^l)
(Ml∗Nl),输入是
n
+
1
n+1
n+1帧
{
I
t
−
n
,
.
.
.
,
I
t
−
1
,
I
t
}
\{I_{t-n},...,I_{t-1}, I_t\}
{It−n,...,It−1,It},这里
I
t
I_t
It是目标帧。目标是对第
t
t
t帧进行超分得到
(
M
h
∗
N
h
)
(M^h * N^h)
(Mh∗Nh),其中
M
l
<
M
h
,
N
l
<
N
h
M^l < M^h, N^l<N^h
Ml<Mh,Nl<Nh。
网络结果可以分成三部分:
- initial feature extraction
- multiple projections
- reconstruction
initial feature extraction
在投影模块之前,先对 I t I_t It提取特征得到 L t L_t Lt,对于邻近的帧 I t − k , k ∈ [ n ] I_{t-k}, k\in[n] It−k,k∈[n],先计算密集运动流 F t − k F_{t-k} Ft−k(每个像素2D向量,怎样得到这个F),讲这个 F t − k F_{t-k} Ft−k放在 I t I_{t} It和 I t − k I_{t-k} It−k之间。运动流可以让投影模块提取到 I t I_t It和 I t − k I_{t-k} It−k之间丢失的的信息。这个叠加的8通道“图像”被映射到相邻的特征张量 M t − k M_{t−k} Mt−k
Multiple Projections
通过结合SISR和MISR方法提取目标帧丢失的细节。产生HR特征,这个阶段输入 L t − k − 1 L_{t-k-1} Lt−k−1和 M t − k M_{t-k} Mt−k,输出HR特征 H t − k H_{t-k} Ht−k
在RBPN中,mutiple projection使用的是一个循环链,这个循环包括了encoder-decoder模块。模块有两个输入,产生两个输出如上图所示。encoder产生从投影到特定帧的预测HR特征的隐藏状态。解码器对隐藏层解码作为下个编码器的输入。encoder-decoder具体如下。
例子
Reconstruction
通过将HR特征concate起来,输入到重建模块 S R t = f r e c ( [ H t − 1 , H T − 2 , . . . , H t − n ] ) SR_t = f_{rec}([H_{t-1},H_{T-2},...,H_{t-n}]) SRt=frec([Ht−1,HT−2,...,Ht−n]),网络中 f r e c f_{rec} frec只是一个单一的卷积层。