发布时间:2023-09-05 09:30
这篇文章是2021年的AAAI,和EDVR、BasicVSR、BasicVSR++是同一批作者。文章最重要的贡献在于①用一个统一的数学表达式去归纳flow-based对齐(如TSTN)和flow-free对齐(如TDCN);②得出了两种对齐方式高度相似性;③推出了offset-fidelity
作为loss来缓解DCN训练不稳定的问题,这也为后续使用DCN来做对齐的VSR方法解决了后顾之忧。此外,文章还提出了一些关于对齐方面的小知识点,并通过实验进行验证。总的来说,虽然这篇文章的提出的大部分内容大家之前就都明白,但是它的存在为后续的VSR研究提供了理论上的支持。
参考文档:
①HeatMap的理解与生成
offset-fidelity
损失函数来引导光流(flow)辅助的offset学习,并通过实验证明这种loss可以避免offset的溢出以及缓解DCN训练不稳定问题。Note:
spatial warping
和STN、DCN的warp是不一样的,前者只是纯粹将DCN的卷积对象进行变形,为DCN类对齐和flow-based对齐提供统一的表达式;而后者指代的是重采样过程,或者说是一种运动补偿(对齐模块的最后阶段)。flow-like
,offset是一种运动信号,所以其中的每一个运动信号都可以看成是一种光流。在VSR中,对齐是一个必要的步骤,通过对齐可以建立其时间相关性(连续性)以及空间相关性来帮助后续融合SR网络获取更多细节。对齐主要分两类:flow-based,诸如VESPCN、Robust-LTD等;flow-free,诸如TDAN、EDVR等,它们隐式地完成运动补偿。之所以是隐式,是因为并不是像flow-based那样通过诸如SPyNet或者PWC-Net等那样获取光流,然后在每个位置根据光流(运动矢量)进行运动补偿(估计)或者说是warp,而是通过学习flow-like的offset,然后在基于offset的新位置出进行卷积提取特征进行warp,这一套流程和flow-based的目的是一样的都是进行空间变换,但是其步骤并不是严格的运动估计+运动补偿的过程。
这篇文章的核心是两个问题 \\colorbox{yellow}{这篇文章的核心是两个问题} 这篇文章的核心是两个问题:
Q 1 Q_1 Q1:作者通过将DCN分解成1个spatial warping和1个3D卷积的过程,这种方式会将2种对齐方式用统一的表达式体现出来,然后可以直接看出他们的差异仅仅只是在offset的个数上(在这里我们将flow看成是一种offset)。因此flow-based方法在每个位置上只需要学习一个offset,如下图所示( X 、 Y X、Y X、Y方向都统称为1个offset):
这和我们flow-based实际在对齐过程中的学习也是一致的:左边的光流 Δ \\Delta Δ我们可以通过简单的CNN堆叠(VESPCN)、SPyNet(BasicVSR)或者是PWC-Net预测得到;而flow-free对齐通过CNN学习多个offset,在DCN中,每次offset的个数是卷积核大小的平方数。从这里就可以直观的看出为何说DCN的探索能力更强,因为其每次的warp都是基于许多个运动信号(offset)综合产生的,而flow-based只取决于1个offset。
Q 2 Q_2 Q2:在第一个问题中,我们通过DCN的分解知道了2种对齐的关键差别在于offset的个数,因此直观来看offset的个数就是导致DCN性能更佳的原因,作者在后面第4节也证明了这一点。
上述2个问题都离不开offset diversity这个关键词,作者通过研究表明这个offset发现了2个有趣的点:
5帧视频可以看成是物体不动,摄像机沿着右下方移动;图1是在flow-based对齐方法中学习到的光流,比如VESPCN这种;图2和图4是DCN中同一个offset窗口内(大小为卷积核大小的平方)不同的offset;图3是纯flow-based,通过这篇文章PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume提出的PWCNet来计算光流;图5和图6分别是flow-based和flow-free最终的对齐feature map。
从实验中我们可以得出结论:
Note:
Flow-free vs Flow-based \\colorbox{hotpink}{Flow-free vs Flow-based} Flow-free vs Flow-based
①基于DCN的对齐方式以强探索能力著称,可以有效应对遮挡、大运动问题(注意是缓解,而不是解决,想通过DCN解决大运动问题需要级联多个DCN且基于不同的分辨率做可变形卷积,即EDVR的做法)。
②先不讨论特征校正的问题,Flow-based对齐每个位置的warp只取决于1个运动矢量,因此其高度依赖于运动估计的准确性,容错率较低,比flow-free更容易出现artifacts,虽然flow-free也会出现artifacts,但是其基于其较丰富的offset信息使得artifacts很少出现。
③此外flow-based一般都是two-stage,速度相对较慢。
Offset-fidelity \\colorbox{dodgerblue}{Offset-fidelity} Offset-fidelity
基于上述对比,我们在对齐上最佳的选择就是DCN这种flow-free做法,但是DCN的一大缺陷在于训练不稳定以及offset容易溢出问题,为了解决这个麻烦,作者提出了以offset-fidelity
为损失函数来实现flow-based引导DCN中offset的学习,实验证明这种策略确实稳定了offset的训练。
通过DCN的分解成本文的新型表达式之后,我们明白了2种对齐方式的差异在offset的个数上,因此对于基于flow-based方法的对齐来说,增加offset的个数是提升对齐性能的关键;此外本文提出的新型表达式并不像DCN那样限定offset diversity(卷积核大小的平方),而是可以任意offset个数,因此这种分解之后的新表达拥有更大的灵活性。
小结一下本文的贡献:
略
首先简要介绍下DCN,假设可变形卷积核为 3 × 3 3\\times 3 3×3, p , p k , Δ p k , Δ m k p,p_k,\\Delta p_k,\\Delta m_k p,pk,Δpk,Δmk分别为输出点坐标;卷积核内第 k k k个位置, p k ∈ { ( − 1 , − 1 ) , ( − 1 , 0 ) , ⋯ , ( 1 , 1 ) } p_k\\in \\{(-1,-1),(-1,0),\\cdots,(1,1)\\} pk∈{(−1,−1),(−1,0),⋯,(1,1)};offset;modulation mask。此外 n n n表示卷积核的大小,此处 n = 3 n=3 n=3。
令 x , y x,y x,y表示输入和输出,则DCN-v2的表达式为:
y ( p ) = ∑ k = 1 n 2 w ( p k ) ⋅ x ( p + p k + Δ p k ) ⋅ Δ m k . (1) y(p) = \\sum^{n^2}_{k=1} w(p_k) \\cdot x(p+p_k+\\Delta p_k) \\cdot \\Delta m_k.\\tag{1} y(p)=k=1∑n2w(pk)⋅x(p+pk+Δpk)⋅Δmk.(1)Note:
根据TDAN、EDVR可知,DCN中offset的学习都是基于参考帧特征和支持帧特征的concat(或者说是Early fusion,时间融合的一种方式,利用了视频之间的时间相关性,而图像上的卷积由于是局部的,所以利用了图像的局部空间相关性。
VSR中的DCN属于一种变体,因为它的输入是时间相关的相邻帧,所以我称之为Temporal-DCN(TDCN),其示意图如下:
设 F t , F t + i F_t,F_{t+i} Ft,Ft+i分别为参考帧和支持帧,对齐的目的就是获取和参考帧对齐的对齐版本的支持帧 F ^ t + i \\hat{F}_{t+i} F^t+i,所以是要在支持帧上进行空间变换,而offset是由参考帧和支持帧共同学习得到的,数学表达式如下:
F ^ t + i ( p ) = ∑ k = 1 n 2 w ( p k ) ⋅ F t + i ( p + p k + Δ p k ) ⋅ Δ m k . (2) \\hat{F}_{t+i}(p) = \\sum^{n^2}_{k=1} w(p_k)\\cdot F_{t+i}(p+p_k+\\Delta p_k)\\cdot \\Delta m_k.\\tag{2} F^t+i(p)=k=1∑n2w(pk)⋅Ft+i(p+pk+Δpk)⋅Δmk.(2)Note:
这一节开始介绍DCN类对齐方法和flow-based对齐的联系,作者将两种对齐方法用统一的表达式进行描述。具体而言,两种对齐的联系可通过将DCN的过程分解成1个spatial warping和1个3D卷积的过程来刻画。
令 x k ( p ) = x ( p + p k + Δ p k ) x_k(p) = x(p+p_k+\\Delta p_k) xk(p)=x(p+pk+Δpk),则式(1)可变为:
y ( p ) = ∑ k = 1 n 2 w ( p k ) ⋅ x k ( p ) . (3) y(p) = \\sum^{n^2}_{k=1} w(p_k)\\cdot x_k(p).\\tag{3} y(p)=k=1∑n2w(pk)⋅xk(p).(3)因此我们可以将式子(3)总体看成1个先将图片 x k ( ⋅ ) x_k(\\cdot) xk(⋅)变形然后进行卷积核为 1 × 1 × n 2 1\\times 1 \\times n^2 1×1×n2的3D卷积,具体如下所示:
Note:
PixelShuffle
的逆过程。根据我们得到的新表达式,我们可以获取2种对齐方式的统一表达,并且可以引出3个结论:
DCN虽然有较多的offset从而产生较强的探索能力,但是其有一个缺陷在于当网络复杂度增加,其训练会不稳定,offset的溢出会降低表现力。为了解决这个问题,作者提出了一种offset-fidelity
损失函数去训练DCN,其表达式如下所示:
L ^ = L + λ ∑ n = 1 N L n . (4) \\hat{L} = L+\\lambda \\sum^N_{n=1}L_n.\\tag{4} L^=L+λn=1∑NLn.(4)其中 L L L是data-fitting损失,例如EDVR和BasicVSR中使用的Charbonnier
损失函数:
L = 1 N ∑ i = 0 N ρ ( y i − z i ) , ρ ( x ) = x 2 + ϵ 2 , ϵ = 1 × 1 0 − 8 , z i : G T . L = \\frac{1}{N}\\sum^N_{i=0}\\rho(y_i - z_i),\\\\ \\rho(x) = \\sqrt{x^2 + \\epsilon^2},\\epsilon = 1\\times 10^{-8},z_i:GT. L=N1i=0∑Nρ(yi−zi),ρ(x)=x2+ϵ2 ,ϵ=1×10−8,zi:GT.此外 L n = ∑ i ∑ j H ( ∣ x n , i , j − y i , j ∣ − t ) ⋅ ∣ x n , i , j − y i , j ∣ . (5) L_n = \\sum_i\\sum_j H(|x_{n,i,j} - y_{i,j}| - t) \\cdot |x_{n,i,j} - y_{i,j}|.\\tag{5} Ln=i∑j∑H(∣xn,i,j−yi,j∣−t)⋅∣xn,i,j−yi,j∣.(5)其中 H ( ⋅ ) H(\\cdot) H(⋅)为Heaviside函数(单位阶跃函数); y i , j , x n , i , j y_{i,j},x_{n,i,j} yi,j,xn,i,j分别表示为现成的光流计算结果和在DCN中offset特征图位置 ( i , j ) (i,j) (i,j)处的第 n n n个offset; λ , t \\lambda,t λ,t是超参数,用于控制DCN中offset的多样性,其 λ = 1 , t = 10 \\lambda=1,t=10 λ=1,t=10是个合理的值。
Note:
接下来我们分析下为何这个offset-fidelity损失函数可以稳定offset的训练。
分析 : \\colorbox{mediumorchid}{分析}: 分析:
⋆ ⋆ ⋆ \\star\\star\\star ⋆⋆⋆损失函数通过 H ( ⋅ ) H(\\cdot) H(⋅)函数将每个offset限定在光流的周围,而我们已经知道DCN的offset和光流是高度相似的,所以最小化二者的距离是不会太大损失offset,这种限制可以避免每一个offset跑飞(即溢出)。由于offset的学习是基于光流的值,而光流是之前计算好的较为准确的,因此这种损失函数实现了光流引导offset学习的模式。
Note:
4.1、4.2节都采用DCN-v1,即没有modulation mask的DCN版本。
设置 G = N = 1 G=N=1 G=N=1,即DCN仅仅之去学习1个offset,这就和flow-based每个位置的warp只取决于1个位置处的运动矢量很相似,因此学习到的offset和flow应该是十分类似的,作者经过实验也表明了这一点,实验结果如下:
实验结论如下:
Note:
另一个实验同样也说明了学习1个offset的DCN对齐和光流对齐是高度相似的:
Decomposition Equivalence \\colorbox{dodgerblue}{Decomposition Equivalence} Decomposition Equivalence
在3.3节中我们将DCN进行分解,产生了关于对齐的新的统一表达式,其最大的优点在于offset个数的灵活性,为了验证它和DCN的等效性,作者做了相关实验进行验证,实验结果如下所示:
从实验结果来看,DCN和Ours表现力相差无几,因此作者提出的新表达式是有效的,其可以代表DCN。
Note:
Learned Offsets \\colorbox{yellow}{Learned Offsets} Learned Offsets
我们已经知道flow-based对齐和DCN-based对齐主要区别在于offset的个数,因此作者接下去要研究学习多个offset( N > 1 N>1 N>1)在对齐中各自扮演了什么角色,为此作者设置 G = 1 G=1 G=1,对比 N = 15 N=15 N=15和 N = 1 N=1 N=1的offset学习可视化,两者通过本文提出的Ours来做。
作者将15个offsets可视化出来,各自挑选2个offset表示和flow最接近和最不接近的光流体,实验结果如下:
实验结论如下:
当继续增加到25个offset,实验结果如下:
从图中可以看出,哪怕是增加到了25,每个offset在大致形状上还是和光流高度相似,但是每个offset的预测方向几乎是不同的,这些运动信息可以互为补充,从而最终在可变形卷积中聚合起来,从而产生更佳的对齐特征。
Contributions of Diversity \\colorbox{lavender}{Contributions of Diversity} Contributions of Diversity
上面只是光流图,为了验证多个offset在边界、遮挡这种看不见区域下对对齐性能的影响,接下来我们对比 N = 1 N=1 N=1和 N = 15 N=15 N=15在处理边界上的差异,实验结果如下:
可以看出来在边界这种在下一帧就不存在的情况会当 N = 1 N=1 N=1这种少offset的DCN产生artifacts,这也和flow容易在边界差生artifacts也是相符的;而反观 N = 15 N=15 N=15,在边界处理这些看不见区域上,DCN具有较强的探索能力,其具有多样丰富的运动信息,因此对于这种看不见区域的对齐有较鲁棒的预测。
Increasing Offset Diversity \\colorbox{violet}{Increasing Offset Diversity} Increasing Offset Diversity
实验一:接下来我们探究 N N N的值对于对齐表现的影响,实验结果如下:
实验结论:
实验二:进一步探究 N N N的增加对SR重建表现力和计算效率的影响,实验结果如下:
实验结论:
实验三:对于 N N N的增加对对齐表现中物体定位的影响,作者还增加了补充实验,实验结果如下:
实验结论:
实验四:接下来我们讨论可变形卷积分组 G G G对SR重建的表现力以及对计算效率的影响,我们之前一直到对于分组 G G G,一共有 G × N G\\times N G×N个offset可以被学习,因此增加 G G G对于offset的多样性也是有帮助的,实验结果如下:
实验结论:
此外作者在TDAN和TOFlow上进行了相关实验,实验设置为TOFlow的warp基于LR而非原版中的HR,以及因为这个模型属于flow-based对齐算法,所以offset的个数通过多个SPyNet实现。
实验结果如下:
实验结论如下:
DCN方法有个缺陷在于随着网络模型复杂度的增加,其训练会变得不稳定,且offset的溢出可能会使得对齐之后的输出feature map全为0,这会使得DCN-based对齐的VSR方法变成SISR方法。为了避免这种不稳定现象,offset-fidelity损失函数可以将offset限定在光流周围,由于单个offset和光流高度接近,因此这种做法是合理的。
作者设置了关于offset-fidelity损失函数的相关实验,实验基于EDVR-L(只使用Charbonnier损失函数)实验结果如下:
Note:
在DCN-v2中提出了modulation masks,即 Δ m \\Delta m Δm,其引出是为了调控offset的幅度,使其出现在更加有利于对抗空间变换的采样区域。他本质也是一种注意力机制,让offset更加注重出现在合适的空间变换区域。
为了探究modulation masks和offset之间的关系,作者做了相关实验,实验结果如下:
在Figure 17中,横轴是光流和offset的差异,纵轴是所有offset各自对应的modulation mask的平均值。可以看出差异越小,所对应下的平均modulation masks就会更大,意味着modulation mask会更加关注和光流比较接近的offsets,给与它们更多的注意力值,这一点可以在Figure 18中得到验证。此外,当offset diversity增加的时候,modulation mask在光流和offset有较大差距的区域的值会更加小,这其实是因为当分组 G , N G,N G,N增加的时候,表现力到达瓶颈期,所以很多offset就会显得冗余,故总体平均modulation mask就会下降。
offset-fidelity
损失函数去限定每个offset在光流附近,或者说让预先计算好的光流来引导offset的学习,避免offset跑飞。