这篇文章是视频超分(VSR)中flow-free
的代表作,不同于VESPCN中采用flow-based,即光流估计方法来对齐相邻帧的做法,本文作者推出的TDAN
采用隐式的运动补偿机制,利用可变形卷积重建出非参考帧(支持帧)的估计值,最后使用和VESPCN类似的融合机制实现当前参考帧从 L R → H R LR\to HR LR→HR的过程。
Note:
参考文档:
①TDAN: Temporally Deformable Alignment Network for Video Super-Resolution论文笔记
②视频超分:TDAN(TDAN: Temporally Deformable Alignment Network for Video Super-Resolution)
③TDAN官方视频
④TDAN源码(PyTorch)
视频超分中最重要的两部分:图像对齐与特征融合。视频超分的基本框架都是大同小异的,一般都是将几个以当前帧为中心的相邻帧输入进对齐网络,然后对齐的进行融合,一般都是一个SR网络,SR网络的输出就是当前参考帧的超分结果 I S R I^{SR} ISR。在本文中,TDAN主要是为了推出一种新的图像对齐方法——基于DCN的对齐网络,可以看成是DCN的一个变体。
Flow-based的缺陷:
Image-wise
的,故在Warp阶段很容易会出现artifacts。而TDAN是feature-wise
的,它通过学习在feature map上的采样偏移来做Warp。Note:
为什么要对齐?
当前帧和相邻帧的相同特征可能出现在不同的像素位置上,如果能够先对齐,然后融合特征,最后超分可以得到更加精确的图像。在超分任务中,对齐是通过一些空间变换操作,比如STN、DCN来让参考帧和支持帧尽可能相同,具体来说:
Q 1 Q_1 Q1:为何要使用flow-free来对齐视频帧?
首先,因为在视频中,物体会运动或相机会移动,因此参考帧和相邻支持帧无法对齐,故VSR中最重要的两部分就是时间对齐和特征融合,在时间对齐上,之前的算法诸如VESPCN采用基于光流flow的方法去对齐时间,VESPCN使用STN的变体,通过在Image-wise上求出参考帧和支持帧的运动估计,然后利用运动估计去warp支持帧来做运动补偿,这种做法高度依赖光流估计(运动估计)的准确性,不对的估计会导致支持帧的估计值受到影响,并会导致之后的SR网络重建性能受到抑制。
其次,为了解决这个问题,作者采用flow-free的方式来做,具体而言就是使用基于DCN这种变换方法来对齐参考帧和支持帧。由于DCN基于feature-wise的,因此在输出图像上就不会出现artifacts。我们将视频相邻帧作为DCN的输入来学习他们之间的变化从而输出靠近参考帧的支持帧估计值,由于变换不仅涉及空间关联性,还涉及了时间,故这种属于STN的一种变体——时间可变形卷积(TDCN)。DCN通过学习采样位置的偏移来提取偏移后新位置的特征来保持空间不变性,故其可避免光流估计;而STN必须先学习两帧之间的运动估计,然后通过运动补偿来恢复出支持帧的估计值,所以光流估计是一定存在的。
Q 2 Q_2 Q2:如何使用TDCN做视频对齐?
类同于VESPCN使用STN变体来对齐,TDAN也是用DCN变体TDCN来做视频对齐:对于支持帧相对于参考帧的变化,TDCN可以无视这种变化来产生近似于参考帧的特征提取过程,之后通过反卷积操作来恢复出“参考帧”,但其实这个“参考帧”是支持帧的估计值,通过优化对齐损失 L a l i g n \mathcal{L}_{align} Lalign来使得支持帧估计值向参考帧靠拢,从而完成参考帧和支持帧的对齐。
Note:
由于在视频超分中,不同帧之间是有发生变化的,这来自于物体的变动或者摄像机的移动,因此在输入进SR网络之前,必须先进行对齐。故对齐模块是VSR必须解决的问题,本文推出的TDAN就是专门介绍一种基于DCN的对齐网络来重建出相邻帧的估计值。Flow-based方法是在image-wise上做的,其由于过于依赖运动估计的准确性使得粗糙的光流估计直接导致输出估计图像产生各种artifacts。故TDAN抛弃光流法,直接使用feature-wise的DCN来对抗相邻帧的变化来输出尽可能和参考帧一样的图像。
TDCN
(Temporal Deformable Convolution Networks)这种方式隐式地去学习一个运动估计和变形操作,而实际是根据参考帧和支持帧来学习偏移采样点位置,让卷积核提取变换后feature map新位置像素值,然后将输出feature map重建出来。此外,TDCN比TSTN有着更强的探索能力,因为TSTN的warp是根据变形后的亚像素位置 p p p周围四个点的像素通过插值得到,而TDCN的重采样点 p p p是根据支持帧上相应点周围某个区域的卷积之后的结果(取决于卷积核的大小),它对位置的变换考虑的范围更广。
实验表明,这种方式可以减少artifacts的产生以及融合对齐后的重建帧与支持帧来为后面SR网络的重建提升表现力,具体可视化结果如下:
小结一下TDAN的贡献:
feature-wise
。略
我们用 I t L R ∈ R H × W × C I_t^{LR}\in\mathbb{R}^{H\times W\times C} ItLR∈RH×W×C表示视频第 t t t帧, I t H R ∈ R s H × s W × C I_{t}^{HR}\in \mathbb{R}^{sH\times sW\times C} ItHR∈RsH×sW×C表示视频第 t t t帧对应的高分辨率图像,即Ground Truth,其中 s s s为SR放大倍率,而 I t H R ′ ∈ R s H × s W × C I_t^{HR'}\in\mathbb{R}^{sH\times sW\times C} ItHR′∈RsH×sW×C表示我们超分的结果。
VSR的目标就是每次将视频中连续的 2 N + 1 2N+1 2N+1帧 { I i L R } t − N t + N \{I_i^{LR}\}^{t+N}_{t-N} {IiLR}t−Nt+N输入进网络,超分出 I t H R ′ I_t^{HR'} ItHR′。
在这 2 N + 1 2N+1 2N+1帧中,第 t t t帧 I t L R I_t^{LR} ItLR为参考帧,其余 2 N 2N 2N帧 { I t − N L R , ⋯ , I t − 1 L R , I t + 1 L R , ⋯ , I t + N L R } \{I_{t-N}^{LR},\cdots, I_{t-1}^{LR}, I_{t+1}^{LR},\cdots, I_{t+N}^{LR}\} {It−NLR,⋯,It−1LR,It+1LR,⋯,It+NLR}为支持帧。
TDAN整体分为2个子网络:①TDAN对齐网络②SR重建网络。其中前者是为了对齐物体或相机运动带来的内容不匹配问题,后者将对齐后的 2 N + 1 2N+1 2N+1帧进行融合然后超分的过程。
①TDAN对齐网络
对齐网络每次输入2帧,其中一帧是固定参考帧 I t L R I_t^{LR} ItLR,另一帧是支持帧 I i L R , i ∈ { t − N , ⋯ , t − 1 , t + 1 , ⋯ t + N } I_i^{LR},i\in\{t-N, \cdots, t-1,t+1, \cdots t+N\} IiLR,i∈{t−N,⋯,t−1,t+1,⋯t+N},设 f T D A N ( ⋅ ) f_{TDAN}(\cdot) fTDAN(⋅)表示对齐算子,则对齐网络表达式为:
I i L R ′ = f T D A N ( I t L R , I i L R ) . (1) I_i^{LR'} = f_{TDAN}(I_t^{LR}, I_i^{LR}).\tag{1} IiLR′=fTDAN(ItLR,IiLR).(1)其中 I i L R ′ I_i^{LR'} IiLR′为支持帧 I i L R I_i^{LR} IiLR和参考帧对齐之后的结果,或者说是 I i L R I_i^{LR} IiLR的估计值。
Note:
②SR重建网络
重建的时候就不只是2帧了,而是要把对齐之后的 2 N 2N 2N个支持帧和参考帧一起融合输入进SR网络来重建出高分辨图片,表达式如下:
I t H R ′ = f S R ( I t − N L R ′ , ⋯ , I t − 1 L R ′ , I t L R , I t + 1 L R ′ , ⋯ I t + N L R ′ ) I_t^{HR'} = f_{SR}(I_{t-N}^{LR'},\cdots, I_{t-1}^{LR'}, {\color{deepskyblue}I_{t}^{LR}},I_{t+1}^{LR'},\cdots I_{t+N}^{LR'}) ItHR′=fSR(It−NLR′,⋯,It−1LR′,ItLR,It+1LR′,⋯It+NLR′)
接下来我们具体展开介绍这两个子网络,其中3.2节的对齐是本文的重点。
TDAN的时间可变形卷积(DCN变体——TDCN)和DCN本质无差别,只是在DCN基础上引入了时间。具体地,不同于DCN的单图片输入,TDCN使用相邻帧的2张图片输入,通过轻量的CNN学习到偏移参数 Θ \Theta Θ,然后将偏移量offset添加到输入帧 I i L R I_i^{LR} IiLR上,即支持帧,通过可变形卷积 f d c ( ⋅ ) f_{dc}(\cdot) fdc(⋅)输出 I i L R I_i^{LR} IiLR的估计值 I i L R ′ I_i^{LR'} IiLR′,通过优化和 I t L R I_t^{LR} ItLR的距离来做对齐。
上图就是TDAN的对齐网络,由特征提取、TDCN和对齐帧重建3个过程组成,接下来我们分块进行介绍。
①特征提取
这里我们用一个卷积层提取浅层特征以及和EDSR中残差块类似的 k 1 k_1 k1个residual blocks来提取输入相邻帧 I t L R 、 I i L R I_t^{LR}、I_i^{LR} ItLR、IiLR的深层特征,最后输出feature map F t L R 、 F i L R F_t^{LR}、F_i^{LR} FtLR、FiLR来实现时间可变形卷积之后的feature-wise对齐。
②时间可变形卷积
我们先使用输入的2份feature map通过concat(Early fusion)之后经过bottleneck layer去减小输入feature map的通道数,最后经过一层卷积层来得到通道数为 ∣ R ∣ |\mathcal{R}| ∣R∣,高和宽和输入feature map一样的偏移参数 Θ \Theta Θ,具体表达式如下,其中 f θ ( ⋅ ) f_\theta(\cdot) fθ(⋅)表示上述过程:
Θ = f θ ( F i L R , F t L R ) . (2) \Theta = f_\theta(F_i^{LR}, F_t^{LR}).\tag{2} Θ=fθ(FiLR,FtLR).(2)
Note:
有了偏移offset矩阵之后,我们就可以实行可变形卷积了,设 f d c ( ⋅ ) f_{dc}(\cdot) fdc(⋅)为可变形卷积算子,我们的目的是将 Δ p n \Delta p_n Δpn施加到相同size的输入feature map F i L R F_i^{LR} FiLR上,然后用卷积核 R \mathcal{R} R去提取变形后的采样点,具体表达式如下:
F i L R ′ = f d c ( F i L R , Θ ) . (3) F_i^{LR'} = f_{dc}(F_i^{LR}, \Theta).\tag{3} FiLR′=fdc(FiLR,Θ).(3)其中, F i L R ′ F_i^{LR'} FiLR′就是可变形卷积的输出,接下来我们只要对它进行重建就可以恢复出 I i L R I_i^{LR} IiLR的估计值,它可以和 I t L R I_t^{LR} ItLR对齐。接下来我们具体将可变形卷积展开,设 w ( p n ) w(p_n) w(pn)为卷积核位置 p n p_n pn出的可学习参数, p 0 p_0 p0为 F i L R ′ F_{i}^{LR'} FiLR′的整数格点位置,则可变形卷积的过程可表示成:
F i L R ′ ( p 0 ) = ∑ p n ∈ R w ( p n ) F i L R ( p 0 + p n + Δ p n ⏟ p ) + b ( p n ) . (4) F_i^{LR'}(p_0) = \sum_{p_n\in\mathcal{R}} w(p_n)F_i^{LR}(\underbrace{p_0+p_n+\Delta p_n}_{p}) + b(p_n).\tag{4} FiLR′(p0)=pn∈R∑w(pn)FiLR(p p0+pn+Δpn)+b(pn).(4)
由于offset一般不是整数,而是浮点数,因此 p p p就是浮点数,而 F i L R F_i^{LR} FiLR并没有浮点坐标对应的像素值,因此需要通过插值来做,这和DCN是完全一样的。由于目前涉及的都是格点的变化,而格点是离散的,因此为了让整个网络是可训练的,作者采用双线性插值来做,具体可参考我的另一篇论文笔记之DCN。
Note:
③对齐帧重建
TDCN属于feature-wise上的对齐,即上述过程只是对齐了feature map F t L R F_t^{LR} FtLR和 F i L R F_i^{LR} FiLR,但并没有做 I t L R I_t^{LR} ItLR和 I i L R I^{LR}_i IiLR的对齐。上述实现我们一般都会用监督学习去做,这样就势必要从图像层面去做监督,因此我们需要使用一个反卷积的过程将feature map重建成Image,作者使用了一个 3 × 3 3\times 3 3×3的卷积层来实现。
这部分就是一个SR网络,输入为对齐之后的 2 N + 1 2N+1 2N+1个相邻帧 I t − N L R ′ , ⋯ , I t − 1 L R ′ , I t L R , I t + 1 L R ′ , ⋯ I t + N L R ′ I_{t-N}^{LR'},\cdots, I_{t-1}^{LR'}, {\color{deepskyblue}I_{t}^{LR}},I_{t+1}^{LR'},\cdots I_{t+N}^{LR'} It−NLR′,⋯,It−1LR′,ItLR,It+1LR′,⋯It+NLR′,输出为超分之后的 I t H R ′ I_t^{HR'} ItHR′。
整个SR网络分为三部分:①时序融合网络②非线性映射层③重建层。接下来我们分开来阐述。
①时序融合网络
融合问题是VSR两大重点难题之一,在VESPCN中,其作者介绍了Early fusion、Slow fusion以及3D卷积。而在本文中,融合问题并不是作者介绍的重点,因此TDCN作为一个framework,只是简单采用Early fusion进行concat,然后使用一个 3 × 3 3\times 3 3×3卷积来进行浅层特征提取。
②非线性映射层
采用和EDSR中类似的 k 2 k_2 k2个残差块进行堆叠,来提取深层特征。
③重建层
重建层使用ESPCN中提出的亚像素卷积层来做上采样,然后再接一个卷积层进行调整,最后输出 I t H R ′ I_t^{HR'} ItHR′。
Note:
TDAN有两个Loss组成,分别是对齐网络损失 L a l i g n \mathcal{L}_{align} Lalign和超分网络损失 L s r \mathcal{L}_{sr} Lsr。
对于对齐模块,我们的目的是让支持帧的估计值 I i L R ′ I_{i}^{LR'} IiLR′尽可能靠近参考帧 I t L R I_{t}^{LR} ItLR,从而让相邻帧的内容对齐以及让相邻帧更加连续,具体损失表达式为:
L a l i g n = 1 2 N ∑ i = t − N , ≠ t ∣ ∣ I i L R ′ − I t L R ∣ ∣ . (5) \mathcal{L}_{align} = \frac{1}{2N}\sum_{i=t-N,\ne t}||I_i^{LR'} - I_t^{LR}||.\tag{5} Lalign=2N1i=t−N,=t∑∣∣IiLR′−ItLR∣∣.(5)
Note:
SR网络损失使用 L 1 L_1 L1损失(1范数损失):
L s r = ∣ ∣ I t H R ′ − I t H R ∣ ∣ 1 . (6) \mathcal{L}_{sr} = ||I_t^{HR'} - I_t^{HR}||_1.\tag{6} Lsr=∣∣ItHR′−ItHR∣∣1.(6)
最后我们要优化的损失函数是上述两者之和,我们将对齐子网络和超分子网络放一起训练,因此整个TDAN模型的训练是端对端的。
L = L a l i g n + L s r . (7) \mathcal{L} = \mathcal{L}_{align} + \mathcal{L}_{sr}.\tag{7} L=Lalign+Lsr.(7)
one-stage
方法,它属于是feature-wise上的对齐,因为TDCN通过学习采样点的偏移来对新位置进行特征提取来实现相当于对参考帧做特征提取一样(这种对抗变换的方式不同于STN的反向采样机制),而卷积的结果就是feature map,故这种对齐是隐式的。此外,和TSTN中直接学习残差(光流)不同,TDCN对运动的变化是在feature map上学习获得的(位置偏移offset,但变化不是直接体现在图像上),之后通过重建恢复出变化前的图像,故这种光流的捕捉是隐式的。①数据集
Temple序列
作为验证集,Vid4
作为测试集,其中包括{city,walk,calendar, foliage}四个场景。②评价指标
和SISR一样,VSR采用PSNR和SSIM2个图像客观评价指标。
③下采样方法
作者此次实验一共对比11种其他SR模型,其中有SISR方法,也有VSR的:VSRnet、ESPCN、VESPCN、Liu、TOFlow、DBPN、RND、RCAN、SPMC、FSRVSR、DUF。
其中蓝色字体的使用Matlab中的Bicubic插值来做下采样,记为 B I BI BI;红色字体使用的是先高斯模糊再选择 s s s个像素作为下采样图像的方法,记为 B D BD BD;而TDAN分别用BI和BD,共做2次下采样。
Note:
④训练超参数设置
可视化的结果如下:
实验结论如下:
可视化结果如下:
实验结论如下:
为了进一步探究TDAN的性能,作者比对了TDAN在SISR、MFSR、D2、D3、D4、D5上的表现比对,其中SISR表示TDAN只使用参考帧输入而不是用支持帧以及对齐网络;MFSR表示使用Early fusion而不使用对齐网络,它和SISR都使用3.3节的超分重建网络; { 2 D 、 3 D 、 4 D 、 5 D } \{2D、3D、4D、5D\} {2D、3D、4D、5D}分别表示在对齐网络中串联几个时间可变形卷积网络。
为了更进一步展示TDAN的能力,作者设置了真实场景的视频超分对比,数据集为2个视频序列:bldg和CV book,实验结果如下:
实验结论:
接下来是作者对于TDAN局限性的说明与未来展望,具体如下:
①数据集
之前的实验训练集只是较小的低分辨率集 448 × 256 448\times 256 448×256,因此我们无法训练出一个更深的网络以及得到更好的重建质量,比如说下图中实验结果:
TDAN的表现力并不如深度网络RCAN在DIV2K(1000张2K分辨率数据集)上的重建效果,这说明了在较大且质量更好数据集下,不需要支持帧,光用参考帧就可以实现更好的SR效果,证明了一个较大较高清(比如2k、4k)的数据集的重要性有多大,更好的数据集也使得我们可以训练出更深的TDAN。
②融合方式
在TDAN中,我们的重点是对齐,故只使用了简单的Early fusion来做融合,但其实如VESPCN中一样,我们可以在TDAN上扩展更加优秀的融合方法。
③对齐损失 L a l i g n \mathcal{L}_{align} Lalign
作者指出可以设计更加合理复杂的对齐损失函数。此外我们对于对齐网络的训练使用自监督的方式,这就意味着伪标签——支持帧并不能代表对齐帧真正的标签,这种Ground Truth是有噪声的,因此作者指出这篇文章Learning with Noisy Labels中的方法去进一步改善噪声标签问题。
one-stage
对齐方式的VSR模型——TDAN,其中对齐网络TDCN是flow-free
方法,其隐式地在feature-wise上捕捉运动信息,并直接卷积变化的采样点输出feature map,从而隐式的实现feature-wise上的对齐。