作者单位:清华深研院、字节、苏黎世联邦理工
论文链接:https://arxiv.org/pdf/2206.07687
笔者言: 将剪枝技术应用到VSR中以实现更加有效和高效的VSR,在时延、参数量、FLOPs、PSNR的综合评估上实现了较好的性能,剪枝后的BasicVSR相比EDVRM实现了0.46dB的增益并只需其三分之一的推理时间。
看点
在资源受限的设备上运行VSR需要更轻和更快的方法。本文提出一个结构化剪枝方案——残差稀疏连接学习(RSCL)以减少卷积核的冗余从而获得紧致的VSR模型,贡献如下:
- 设计了一种保留特征通道且只对重要通道进行操作的残差稀疏连接(RSC)方案以克服剪枝后残差块的跳层和残差连接较难对应的问题
- 针对 pixel-shuffle 设计了一个特殊的剪枝方法,将滤波器分组作为剪枝单元,以保证剪枝后通道空间转换的准确性。
- 引入时间微调(TF),以减少随时间传播的隐藏状态的剪枝误差。
方法
Overview
具体来说,RSCL分为三个阶段:预训练阶段、剪枝阶段和微调阶段。预训练阶段训练一个强大的VSR网络(BasicVSR)作为剪枝主干。此外本文还训练了单向BasicVSR (BasicVSR-uni)进行在线推理。因为目前VSR网络不使用BatchNorm,本文引入了一个尺度因子来调整每个通道和滤波器的稀疏性。剪枝阶段根据剪枝准则选择不重要的滤波器,并对相应的尺度因子进行 sparsity-inducing 正则化。微调阶段引入时间微调来减少时间信息传播的误差。BasicVSR和 pixel-shuffle 的剪枝操作如下图。为了保证剪枝后pixel-shuffle的通道空间转换精度,本文以4个索引连续的通道作为剪枝单元。
RSCL
出发点: 如下图a所示,由于跳层和残差连接应该共享相同的索引,所以很难对残差块进行修剪。为此,如b所示,许多结构化剪枝算法简单地不对残差块中的最后的卷积层进行剪枝,这限制了剪枝空间和性能。如c所示,ASSL是一种用于SISR的结构化剪枝方案,它试图对齐跳层和残差连接之间的剪枝索引,这限制了剪枝空间。综上,如d所示,RSC保留了输入和输出特征图的所有通道,但选择了重要的通道进行卷积和相加。与上述剪枝方案相比,RSC在不增加额外计算量的情况下,在残差块中释放了最后一次卷积的剪枝空间。
尺度因子: 结构化剪枝的目的是根据设计的重要性准则删减滤波器。以前的工作使用BN尺度参数来控制每个滤波器的吞吐量。零尺度参数对应的滤波器可以被删除。正则化尺度参数可以评估和调整每个滤波器的重要性。然而,BN不适用于SR任务。为此,RSCL在卷积之前或之后乘以尺度因子
γ
γ
γ,通过对尺度因子进行正则化以增强稀疏性。
剪枝准则与正则化: 选择不重要的尺度因子γ来减少去除冗余滤波器以诱导稀疏。RSCL中采用了全局剪枝滤波器方案,选择
L
1
L_1
L1范数作为剪枝准则。具体来说,对于第i层第k组卷积滤波器
W
i
[
k
,
.
.
.
]
∈
R
C
i
n
×
K
h
×
K
w
W_i[k,...]\in\mathbb R^{C_{in}×K_h×K_w}
Wi[k,...]∈RCin×Kh×Kw,计算核权重的绝对值
s
i
,
k
=
∑
∣
W
i
[
k
,
.
.
.
]
∣
s_{i,k}=\sum |W_i[k,...]|
si,k=∑∣Wi[k,...]∣。特别的,RSC需要额外对第一个卷积的输入通道进行剪枝,
L
1
L_1
L1分数为
s
i
,
k
‘
=
∑
∣
W
i
[
:
,
k
,
.
.
.
]
∣
s_{i,k}^‘=\sum |W_i[:,k,...]|
si,k‘=∑∣Wi[:,k,...]∣,其中
W
i
[
:
k
,
.
.
.
]
∈
R
C
o
u
t
×
K
h
×
K
w
W_i[:k,...]\in\mathbb R^{C_{out}×K_h×K_w}
Wi[:k,...]∈RCout×Kh×Kw。此外,对于 pixel-shuffle 前的卷积以4个连续的滤波器作为剪枝单位来计算分数
s
i
,
k
=
∑
∣
W
i
[
4
k
:
4
k
+
1
,
.
.
.
]
∣
s_{i,k}=\sum |W_i[4k:4k+1,...]|
si,k=∑∣Wi[4k:4k+1,...]∣。然后,给定剪枝比
p
p
p和参与排序的滤波器数量
N
N
N,将所有
L
1
L_1
L1分数
s
s
s排序在一起,选择最小的
N
×
p
N × p
N×p个滤波器作为非重要滤波器,记为集合
S
S
S。对相应的尺度因子应用稀疏诱导正则化(SIR),记为集合
S
s
f
S_{sf}
Ssf,随后在尺度因子上使用
L
2
L_2
L2正则化
L
S
I
R
=
α
γ
∑
γ
∈
S
s
f
γ
2
L_{SIR} = α_γ \sum _{γ\in S_{sf}}γ^2
LSIR=αγ∑γ∈Ssfγ2来加强稀疏性,每一次
T
1
T_1
T1迭代,将
α
γ
α_γ
αγ增加一个预设常数
∆
∆
∆。当
α
γ
α_γ
αγ达到预先定义的上限
τ
τ
τ时,
α
γ
α_γ
αγ将保持不变来继续
T
2
T_2
T2次迭代。
残差块剪枝方案: 第一次卷积选择重要通道(不在S范围内的指标)参与第一次卷积:
F
i
=
F
i
′
⊗
(
γ
j
−
W
i
γ
j
)
F_i = F_i'⊗ (γ_{j−}W_iγ_j)
Fi=Fi′⊗(γj−Wiγj)最后一次卷积得到
F
i
+
1
F_{i+1}
Fi+1,并在相应的通道上加上
F
i
′
F_i'
Fi′,得到
F
(
i
+
1
)
′
F_(i+1)'
F(i+1)′:
F
(
i
+
1
)
′
=
F
i
⊗
(
W
i
+
1
γ
j
+
1
)
+
F
i
′
F_(i+1)' = F_i ⊗ (W_{i+1}γ_{j+1}) + F_i'
F(i+1)′=Fi⊗(Wi+1γj+1)+Fi′其中⊗指代卷积,
F
i
′
F_i'
Fi′和
F
i
+
1
′
F_{i+1}'
Fi+1′为残差块的输入输出特征,
F
i
F_i
Fi和
F
i
+
1
F_{i+1}
Fi+1为中间特征。值得注意的是,本方法的残差块剪枝与ASSL剪枝具有相同的参数数量和相同的计算花费。
Pixel-Shuffle 剪枝方案: VSR网络的上采样网络中的卷积在剪枝后的特征图在经过Pixel-Shuffle后需要在空间上保持有序。为此,给定输入特征图,将四个滤波器作为一个剪枝单元来评估重要性,如剪枝准则所述,并在滤波器上施加比例因子
γ
j
γ_j
γj来加强稀疏性:
W
i
′
=
W
i
[
4
k
:
4
(
k
+
1
)
,
.
.
.
]
γ
j
[
k
]
,
k
∈
[
0
,
C
i
n
)
W_i' = W_i[4k:4(k + 1), ...]γ_j[k], k \in[0, C_{in})
Wi′=Wi[4k:4(k+1),...]γj[k],k∈[0,Cin)
损失函数微调: 经过修剪的VSR网络在
H
F
H_F
HF和
H
B
H_B
HB中产生了较小的误差,它会随着传播而放大。为此,时间微调被定义为:
L
t
f
=
∣
∣
H
F
,
T
−
H
F
,
T
′
∣
∣
+
∣
∣
H
B
,
0
−
H
B
,
0
′
∣
∣
L_{tf} = ||H_{F,T} − H_{F,T}'|| + ||H_{B,0} − H_{B,0}'||
Ltf=∣∣HF,T−HF,T′∣∣+∣∣HB,0−HB,0′∣∣其中
T
T
T为输入帧数,
H
F
,
T
H_{F,T}
HF,T和
H
F
,
T
′
H_{F,T}'
HF,T′分别为前向剪枝后和原始VSR网络的最终隐藏状态。
H
B
,
0
H_{B,0}
HB,0和
H
B
,
0
′
H_{B,0}'
HB,0′同理。重建损失采用Charbonnier损失。
实验
消融实验
RSCL中各个组件的消融实验
不同剪枝率下的消融实验,可以发现剪枝率越大增益越大
定量评估
RSCL-bi在REDS4上比EDVR-M获得0.46 dB增益,而只消耗了EDVR-M的1/3时间。(uni训练的比bi的效果还好。。。)
不同位置卷积的剪枝率