GitHub地址
这篇文章作者主要在于突出利用多帧输入里面帧间和帧内的信息,对此作者分别提出了Temporal Multi-Correspondence Aggregation Module 和 Cross-Scale Nonlocal-Correspondence Aggregation Module,相比于以往的视频超分,这两个模块的功能我认为可以类似于帧间对齐和超分这两部分的理解。
首先对于视频超分,通常分为四个模块:特征提取——对齐——融合——重建。
视频超分以往的方法作者是分成了三种:
对于 2 N + 1 2N + 1 2N+1 帧连续的低分辨率输入序列 { I t − N L , . . . , I t L , . . . , I t + N L } \{I_{t-N}^L,...,I_t^L,...,I_{t+N}^L\} { It−NL,...,ItL,...,It+NL},预测中间帧的高分辨率图片 I t H I_t^H ItH。模型包括三部分:
对于多帧输入来说,在建立对应关系时,大的运动需要效处,准确的小运动很重要。作者设计了分层的对应聚合策略,可同时处理大和细微的运动。
结合图3和图四,对中间帧和相邻帧提取特征,逐渐地编码为分辨率变低的高层特征(high-level/low-resolution)。那么high-level/low-resolution就有大的运动信息,low-level/high-resolution就有精细的亚像素偏移。作者认为与直接在图像空间中回归流场的许多方法不同,我们的模块在特征空间中起作用。 它对噪声更稳定且更鲁棒。
对于AU模块 aggregation unit,在图四有详细的说明。在相同的特征层,比如第三层上,对于中间帧某个位置,在相邻帧中不是用相应位置的值计算,而是在一个距离范围内 p t − p t − 1 < d p_t -p_{t-1} < d pt−pt−1<d,选取相似度最像的前K个(top k),集合起来,同时利用中间帧和相邻帧在这一层的特征得到每个位置的卷积权重,将集合起来的特征和每个位置的权重卷积,得到对齐的特征。
其中相似度比较
c o r r ( f t − 1 l , f t l ) = f t − 1 l ∣ ∣ f t − 1 l ∣ ∣ ⋅ f t l ∣ ∣ f t l ∣ ∣ corr(f_{t-1}^l, f_t^l) = \frac{f_{t-1}^l}{||f_{t-1}^l||} \cdot \frac{f_{t}^l}{||f_{t}^l||} corr(ft−1l,ftl)=∣∣ft−1l∣∣ft−1l⋅∣∣ftl∣∣ftl
得到相似度最高的前K个对应patches ( f ˉ t − 1 , 1 l , . . , f ˉ t − 1 , K l ) (\bar f_{t-1,1}^l, .. ,\bar f_{t-1,K}^l) (fˉt−1,1l,..,fˉt−1,Kl),聚合起来
f ˉ t − 1 l = A g g r ( [ f ˉ t − 1 , 1 l , f ˉ t − 1 , 2 l , . . . , f t − 1 , K l ] ) \bar f_{t-1}^l = Aggr([\bar f_{t-1,1}^l, \bar f_{t-1,2}^l,..., f_{t-1,K}^l]) fˉt−1l=Aggr([fˉt−1,1l,fˉt−1,2l,...,ft−1,Kl])
A g g r Aggr Aggr是一个卷积层操作。
然后作者设计了一个pixel-adaptive的聚合策略,不同的位置有不同的聚合模式,权重图是通过 F t − 1 l F_{t-1}^l Ft−1l和 F t l F_t^l Ftl通过一个 H × W × s 2 H \times W \times s^2 H×W×s2 (当patch大小为 s × s s \times s s×s 时)得到的。
W t − 1 l = C o n v ( [ F t − 1 l , F t l ] ) W_{t-1}^l = Conv([F_{t-1}^l, F_t^l]) Wt−1l=Conv([Ft−1l,Ftl])
相邻帧 F ˉ t − 1 l \bar F_{t-1}^l Fˉt−1l最后位置 p t p_t pt的值为
F ˉ t − 1 l ( p t ) = f ˉ t − 1 l ⋅ W t − 1 l ( p t ) \bar F_{t-1}^l(p_t) = \bar f_{t-1}^l \cdot W_{t-1}^l(p_t) Fˉt−1l(pt)=fˉt−1l⋅Wt−1l(pt)
所以可以得到一系列对齐的邻帧特征图 { F ˉ t − N 0 , . . . , F ˉ t − 1 0 , F ˉ t + 1 0 , . . . , F ˉ t + N 0 } \{\bar F_{t-N}^0 ,..., \bar F_{t-1}^0, \bar F_{t+1}^0, ... ,\bar F_{t+N}^0\} { Fˉt−N0,...,Fˉt−10,Fˉt+10,...,Fˉt+N0}.
相似的图案广泛存在于自然图像中,可以提供丰富的纹理信息。 自相似可以帮助恢复细节。 作者设计了一种跨尺度的聚合策略,以捕获跨越不同特征分辨率的非本地对应关系,如图5所示。
M t s M_t^s Mts 表示时间 t t t时刻在第 s s s层的特征。首先下采样特征 M t 0 M_t^0 Mt0得到特征金字塔
M t s + 1 = A v g P o o l ( M t s ) , s = 0 , 1 , 2 M_t^{s+1} = AvgPool(M_t^s), s={0,1,2} Mts+1=AvgPool(Mts),s=0,1,2
对于一个在 M t 0 M_t^0 Mt0, p t p_t pt处的查询块 m t 0 m_t^0 mt0,在其他的scale使用一个non-local search, m ~ t s = N N ( M t s , m t 0 ) , s = 1 , 2 , 3 \widetilde m_t^s = NN(M_t^s, m_t^0), s= {1,2,3} m ts=NN(Mts,mt0),s=1,2,3.
m ~ t s \widetilde m_t^s m ts表示 M t s M_t^s Mts里面跟 m t 0 m_t^0 mt0最相似的patch。在merge之前,还是用另一个self-attention模块来判断信息是否有用,最后聚合的特征写为 m ˉ t 0 = A g g r ( [ A t t ( m t 0 ) , A t t ( m ~ t 1 ) , A t t ( m ~ t 2 ) , A t t ( m ~ t 3 ) ] ) \bar m_t^0 = Aggr([Att(m_t^0), Att(\widetilde m_t^1), Att(\widetilde m_t^2), Att(\widetilde m_t^3)]) mˉt0=Aggr([Att(mt0),Att(m t1),Att(m t2),Att(m t3)])
这里的Att和Aggr也是通过卷积实现。
通常通过VSR方法生成的重建高分辨率图像会出现锯齿状边缘。所以作者提出一个edge-aware loss得到比较好的边缘效果。
首先使用一个边缘提取器从gt HR图像中提取边缘,边缘的权重loss会更大,让网络学习更注意边缘。所以作者使用一个拉普拉斯滤波器提取边缘 I t E I_t^E ItE。最终在 p t p_t pt处的二值mask可以记为
B t ( p t ) = { 1 , I t E ( p t ) ≥ δ 0 , I t E ( p t ) ≤ δ B_t(p_t)=\left\{ \begin{aligned} 1, I_t^E(p_t) \geq \delta\\ 0, I_t^E(p_t) \leq \delta \end{aligned} \right. Bt(pt)={ 1,ItE(pt)≥δ0,ItE(pt)≤δ
最后应用Charbonnier Loss
L = ∣ ∣ I ^ t H − I t H ∣ ∣ 2 + ϵ 2 L = \sqrt{||\hat I_t^H - I_t^H||^2 + \epsilon^2} L=∣∣I^tH−ItH∣∣2+ϵ2
最终总的loss L f i n a l = L + λ ∣ ∣ B t ∘ ( I ^ t H − I t H ) ∣ ∣ L_{final} = L + \lambda ||B_t \circ (\hat I_t^H - I_t^H)|| Lfinal=L+λ∣∣Bt∘(I^tH−ItH)∣∣
∘ \circ ∘表示element-wise相乘
REDS( REalistic and Dynamic Scenes dataset ),训练、验证、测试集分别由240,30,30个视频序列,每个序列有100帧,每一帧大小为 720 × 1280 720 \times 1280 720×1280。作者实际训练的时候,训练和验证集分为了266和4个。
Vimeo-90K数据集,作者选择的是92701 7-frames的数据集,图片大小为 448 × 256 448 \times 256 448×256,训练和测试分别由64612和7824.
使用了PSNR和SSIM评价指标