admin管理员组

文章数量:1623602


(如需转载等事宜请联系"我爱计算机视觉")
作者单位:快手、大连理工、港理工、北大等
论文链接:https://arxiv/pdf/2204.07114.pdf
笔者言: 之前的循环VSR方法大多将相邻帧参考帧以及前一时刻的SR输出作为输入,本文将未来的SR输出也参与进参考帧的重建,通过伪相邻SR的方式精进细节,这让笔者眼前一亮。

看点

大多数VSR都采用光流或可变形卷积进行运动补偿。然而,这种时间建模技术增加了模型的复杂性,并且在遮挡或复杂运动的情况下可能会失败。本文旨在探索显式时间差分建模在LR和HR空间中的作用,通过计算帧之间的时间差异,并根据差异程度将这些像素划分为两个子集,而不是直接将连续帧作为输入。这两个子集分别由不同感受野的两个分支处理,以便更好地提取补充信息。此外,为了提高重建效果,不仅提取了空间残差特征,还计算了高频域中连续帧之间的差异。它允许模型利用未来和过去的中间SR结果来优化当前SR输出。不同时间步的差异被存储,以便将来自更远时间的信息传播到当前帧进行细化。

方法

Overview

显式时间差分建模(ETDM)以单向循环的方式进行。对于每一个时间步,ETDM获取参考帧、相邻帧和之前估计的SR结果作为输入,框架如下图所示:

在LR空间中,提出的区域分解模块计算参考帧和相邻帧之间的差异。此外,它根据差异程度将相邻帧分解为低方差(LV)和高方差(HV)区域。然后,它们分别由两个具有不同感受野的CNN分支处理,以便更好地提取补充信息。 该模型预测HR空间中相邻时间步的SR输出之间的时间差异,这使得当前步骤的超分辨率能够受益于过去和未来时间步的初始SR结果。此外,通过缓存两个指定时间步之间的所有时间差,可以自然地将前向和后向传播从一个时间步扩展到任意时间顺序。

显式时间差分建模

时间差分
VSR的目标是利用相邻帧的互补信息为参考帧重建更丰富的细节。下图显示了两个连续帧之间像素级的差分图。这张图motivate作者根据时间差分将相邻帧的区域划分为低方差(LV)和高方差(HV)。LV区域的整体外观变化较少。因此,帧之间的主要区别在于精细的细节。至于HV区域,帧之间的整体外观差异很大,可能会从不同角度提供粗略的补充信息。

对二值化的时间差分图应用3×3大小的中值滤波器,并通过一组形态学操作对结果进行进一步处理,以获得LV区域的差分掩模 M L V M^{LV} MLV,HV区域的差分掩膜被计算为 M H V = 1 − M L V M^{HV}=1-M^{LV} MHV=1MLV,相邻帧的LV与HV区域被计算为: I t − 1 L V = M t − 1 L V ⊙ I t − 1 , I t − 1 H V = M t − 1 H V ⊙ I t − 1 I t + 1 L V = M t + 1 L V ⊙ I t + 1 , I t + 1 H V = M t + 1 H V ⊙ I t + 1 \begin{array}{ll}I_{t-1}^{L V}=M_{t-1}^{L V} \odot I_{t-1}, & I_{t-1}^{H V}=M_{t-1}^{H V} \odot I_{t-1} \\I_{t+1}^{L V}=M_{t+1}^{L V} \odot I_{t+1}, & I_{t+1}^{H V}=M_{t+1}^{H V} \odot I_{t+1}\end{array} It1LV=Mt1LVIt1,It+1LV=Mt+1LVIt+1,It1HV=Mt1HVIt1It+1HV=Mt+1HVIt+1由于自然图像的平滑度,LV区域更可能对应于帧间小运动的区域,而HV区域可能对应于大运动的区域。因此,它们应该由具有不同感受野的不同模型处理。
LR空间中的时间建模
这里以t时刻的LV区域分支为例。LV区域分支的输入为掩膜帧 { I t − 1 L V , I t , I t + 1 L V } \{I^{LV}_{t-1},I_t,I^{LV}_{t+1}\} {It1LV,It,It+1LV}和前一步长的隐藏状态 h t − 1 L V h^{LV}_{t-1} ht1LV,叠加起来由一个卷积层和几个残差块进一步处理。通过这种方式,循环单元 H t H_t Ht能够从随时间变化和运动较小的区域中收集补充信息。HV区域的分支以类似的方式设计,但所有卷积层都配备了参数为2的扩张率,以处理具有更大感受野的大运动。LV和HV分支的输出分别表示为 h t L V h^{LV}_t htLV h t H V h^{HV}_t htHV
HR空间中的时间建模
HR空间中的时间差分在相邻时间步之间建立了一座桥梁,这样信息就能够传播到当前时间步进行细化。 每个分支的输出 h t − 1 L V h^{LV}_{t−1} ht1LV h t − 1 H V h^{HV}_{t−1} ht1HV被合并并送至三个残差头,即空间残差头(Spatial-Residual Head)、过去残差头(Spatial-Residual Head)和未来残差头(Future-Residual Head)。空间残差头用于计算双三次上采样参考帧和GT之间的空间残差,表示为 S t S_t St。未来残差头计算相应的高分辨率时间差( I t H R − I t + 1 H R I^{HR}_{t}-I^{HR}_{t+1} ItHRIt+1HR)和双三次上采样时间差( I t ↑ − I t + 1 ↑ I^{↑}_{t}-I^{↑}_{t+1} ItIt+1),这也相当于不同时间步的空间残差之间的时间差,表示为 F t F_t Ft F t = ( I t H R − I t + 1 H R ) − ( I t ↑ − I t + 1 ↑ ) = ( I t H R − I t ↑ ) − ( I t + 1 H R − I t + 1 ↑ ) \begin{aligned}F_{t} &=\left(I_{t}^{H R}-I_{t+1}^{H R}\right)-\left(I_{t}^{\uparrow}-I_{t+1}^{\uparrow}\right) \\&=\left(I_{t}^{H R}-I_{t}^{\uparrow}\right)-\left(I_{t+1}^{H R}-I_{t+1}^{\uparrow}\right)\end{aligned} Ft=(ItHRIt+1HR)(ItIt+1)=(ItHRIt)(It+1HRIt+1)类似地,过去残差头计算时间差分的空间残差 P t = ( I t H R − I t − 1 H R ) − ( I t ↑ − I t − 1 ↑ ) P_t = \left(I_{t}^{H R}-I_{t-1}^{H R}\right)-\left(I_{t}^{\uparrow}-I_{t-1}^{\uparrow}\right) Pt=(ItHRIt1HR)(ItIt1)。通过利用HR空间中相邻时间步之间的时间差,可以将过去和未来时间步的初始SR估计传播到当前时刻,以细化SR结果。

前后细化

本节将详细介绍HR空间的时间差分和其他时间步的估计如何有助于优化当前时刻的SR结果。基于双向的VSR结果较好,这归功于其双向传播,这使得模型能够从整个序列中聚合信息。然而,它必须缓存所有中间隐藏状态,这限制了它在许多场景中的应用。本文提出的方法允许传播双向信息以增强当前帧,但它只使用单向循环网络,不需要大量缓存。具体来说,根据HR空间中的预测时间差,相邻时间步长可以传播到当前时刻,如下所示: R forth  , t t − 1 = S t − 1 − F t − 1 , R back  , t t + 1 = S t + 1 − P t + 1 , R_{\text {forth }, t}^{t-1}=S_{t-1}-F_{t-1}, \quad R_{\text {back }, t}^{t+1}=S_{t+1}-P_{t+1}, Rforth ,tt1=St1Ft1,Rback ,tt+1=St+1Pt+1,其中 R forth  , t t − 1 R_{\text {forth }, t}^{t-1} Rforth ,tt1 R back  , t t + 1 R_{\text {back }, t}^{t+1} Rback ,tt+1分别表示从过去和未来到当前时间步长t的传播空间残差。 对于 R forth , n m ( m < n ) R_{\text {forth}, n}^{m}(m<n) Rforth,nm(m<n),上标表示过去使用的信息的时间步长,下标表示它转发到的目标时间。为了使用从其他时间步传播的信息进一步细化当前SR输出,将 R forth  , t t − 1 R_{\text {forth }, t}^{t-1} Rforth ,tt1 R back  , t t + 1 R_{\text {back }, t}^{t+1} Rback ,tt+1 S t S_t St叠加起来作为卷积层的输入,然后是几个残差块,以获得细化的空间残差 S t ′ S_t^{'} St。 最终的SR图像是通过pixel-shuffled的 S t ′ S_t^{'} St添加到双三次上采样参考帧生成的。
扩展到任意时序细化
通过在多个时间步之间累积时间差,可以自然地将向前和向后传播从一个时间步扩展到任意时间。例如从 t − l t-l tl t t t的正向传播公式如下: R forth  , t t − l = S t − l − ( ∑ i = 1 l F t − i ) R_{\text {forth }, t}^{t-l}=S_{t-l}-\left(\sum_{i=1}^{l} F_{t-i}\right) Rforth ,ttl=Stl(i=1lFti)为了充分利用从不同时间步传播到当前时间步的信息,本文保持了N个过去缓冲区和N个未来缓冲区来缓存所需的中间结果,空间剩余 S t S_t St将使用N个过去和N个未来缓冲区中的所有元素,以进一步细化。
缓冲区更新
一旦获得时间步长t处的最终SR结果,循环模型将对下一帧执行相同的超分操作。在这种情况下,模型不仅需要更新隐藏状态,还需要更新缓冲区来缓存来自不同时间步的所有中间空间残差。缓冲区更新遵循先进先出原则,对于缓冲区中剩余的元素,它们的更新过程如下: R forth  , t + 1 m = R forth  , t m − F t , R back  , t − 1 k = R back  , t k − P t R_{\text {forth }, t+1}^{m}=R_{\text {forth }, t}^{m}-F_{t}, \quad R_{\text {back }, t-1}^{k}=R_{\text {back }, t}^{k}-P_{t} Rforth ,t+1m=Rforth ,tmFt,Rback ,t1k=Rback ,tkPt

损失函数

监督来自空间重建和时间重建。对于每个时间步计算初始估计和细化的空间残差与GT之间的差异,作为空间重建损失: L t S = ∥ S t G T − S t ∥ 2 + ε 2 , L t S ′ = ∥ S t G T − S t ′ ∥ 2 + ε 2 \mathcal{L}_{t}^{\mathcal{S}}=\sqrt{\left\|S_{t}^{G T}-S_{t}\right\|^{2}+\varepsilon^{2}}, \mathcal{L}_{t}^{\mathcal{S}^{\prime}}=\sqrt{\left\|S_{t}^{G T}-S_{t}^{\prime}\right\|^{2}+\varepsilon^{2}} LtS=StGTSt2+ε2 ,LtS=StGTSt2+ε2 其中, S t G T S^{GT}_t StGT是GT空间残差。由于空间细化是基于过去和未来多个时间步长的空间残差估计来计算的,因此间接对模型的参数施加了更严格的监督。此外,时间残差也由相应的GT进行监督: L t F = ∥ F t G T − F t ∥ 2 + ε 2 , L t P = ∥ P t G T − P t ∥ 2 + ε 2 . \mathcal{L}_{t}^{\mathcal{F}}=\sqrt{\left\|F_{t}^{G T}-F_{t}\right\|^{2}+\varepsilon^{2}}, \mathcal{L}_{t}^{\mathcal{P}}=\sqrt{\left\|P_{t}^{G T}-P_{t}\right\|^{2}+\varepsilon^{2}} . LtF=FtGTFt2+ε2 ,LtP=PtGTPt2+ε2 .总损失为 L = 1 N ∑ t = 1 N ( L t F + L t P + L t S + L t S ′ ) \mathcal{L}=\frac{1}{N} \sum_{t=1}^{N}\left(\mathcal{L}_{t}^{\mathcal{F}}+\mathcal{L}_{t}^{\mathcal{P}}+\mathcal{L}_{t}^{\mathcal{S}}+\mathcal{L}_{t}^{\mathcal{S}^{\prime}}\right) L=N1t=1N(LtF+LtP+LtS+LtS)

实验

消融实验

针对区域分解模块、正向和反向细化的消融实验:

将所提出的前后传播与其他类型的单向传播和双向传播方法进行了比较。为了进行公平比较,删除了所提出模型的LV和HV分解步骤,并尝试保持其参数数量与其他两种方法相同,如下图所示:
中间SR和细化SR结果的可视化如下图,可见前后细化产生更锐利的边缘和更精细的纹理。

定量评估

与BasicVSR++的29.04dB相差0.23dB,此处不展示基于transformer的方法了,毕竟参数量不是一个量级(吐槽:DAP都参与定量评估了,为什么不添加BasicVSR++呢)

定性评估

文末言

论文中还是有很多细节是值得考虑与深挖的,对下图表述感觉有疑问的可以详见原文[狗头]

本文标签: 建模分辨率差分时间视频