深度好文:理解可变形卷积和光流对齐
摘要
可变形卷积最近在对齐多个帧方面表现出了令人信服的性能,并且越来越多地被用于视频超分辨率。尽管它有着显著的表现,但其潜在的对齐机制仍不清楚。本文仔细研究了变形对齐和经典的基于流的对齐之间的关系。贡献如下:
1.第一次正式研究与确立变形对齐与基于流的对齐这两个重要概念之间的关系。2.系统地研究了偏移多样性。结果表明,偏移多样性是提高对齐精度和SR性能的关键因素。3.提出了一个偏移精度损失在保持偏移多样性的同时稳定训练,得到了1.7dB的改进。
方法与实验
可变形卷积
首先简要回顾可变形卷积(DCN)。设
是核大小为n=3的标准卷积中的第k个采样偏移量,则
{(-1,-1),(-1,0),···,(1,1)}
表示位置
处的第k个附加学习偏移量。可变形卷积可表示为:
在实际应用中,可以利用C/G通道将C通道特征划分为G组特征,并对每个空间位置学习
×G偏移量。在DCNv2中,引入了调制掩模(modulation mask),以进一步增强操纵空间支持域的能力:
调制掩模可以看作是一个注意模块,它考虑了特征的相对重要性。
可变形对齐
可变形对齐应用可变形卷积将相邻特征与参考特征对齐。以参考特征和相邻特征为输入,通过卷积来预测偏移量。参考特征仅用于预测偏移量,不参与后续卷积,TDAN中的可变性对齐如下图:
可变形对齐与光流对齐的关系
上述(1)式的公式可表示为:
其中
相当于1×1×
的标准三维卷积。如下图,核为3×3的可变形卷积可分解为9个空间扭曲和1个三维卷积。核权重用w表示。
在这里插入图片描述
对上式一般化,使用N来代替上式中的
,消除了偏移量必须为平方数的约束;通过在通道维数上叠加N个扭曲特征,1×1×N的3D卷积可以实现为1×1二维卷积。换句话说,DCN相当于N个单独的空间扭曲,然后是1×1的2D卷积。
当n=1时相当于空间扭曲,然后是1×1卷积。在运动补偿的情境中,这种特殊情况等于光流对齐。换言之,可变形和基于流的对齐共享相同的公式,但偏移量数量不同。
通过计算偏移量与光流的像素差,定量研究了偏移量与光流(PWC-Net)的相关性。如下图所示,超过80%的估计值与光流的差值小于一个像素。这表明,在G=N=1的情况下,可变形对齐实际上与基于流的对齐非常相似。
训练两个实例化——原始DCN和分解(扭曲加卷积)。如下图所示,实验表明这两个实例化实现了相似的性能。
在这里插入图片描述
通过逐渐增加偏移量来检查性能增益,并尝试检查更多偏移量是否总能带来更好的性能。下图显示了不同N的定性比较。特别地,当偏移量从1增加到5时,PSNR迅速增加。当N进一步增加时,峰值信噪比饱和在30.23dB左右,模型的性能与偏移多样性呈正相关(基于这六个数据点,Pearson相关系数=0.9418)。这一结果表明,偏移多样性实际上有助于性能的提升。
偏移精度损失
随着网络容量的增加,变形对齐的训练变得不稳定,偏移量的溢出严重降低了模型的性能。本文提出了一个偏移精度损失来约束偏移,使其不会偏离光流太多。此外,为了便于学习最佳和多样的偏移量,引入了Heaviside阶跃函数,函数定义如下:
损失如下:
其中,L为训练损失。λ和t是控制偏移多样性的超参数。变形对齐的训练是不稳定的。不稳定的训练过程会导致偏移量的溢出。为了避免偏移溢出,本文提出了偏移精度损失来约束学习的偏移量,使其不会偏离光流太多。另外,由于偏移多样性在视频SR中的重要性,我们允许网络学习最佳偏移量,只要它们与光流的差不超过某个阈值。在EDVR上进行了实验,额外的改善高达1.73dB。
相关文章
- 跨时钟域的方法--MCP方式个人理解
- 非常易于理解的超简单图广度优先遍历、深度优先遍历算法python实现
- STM32的优先级NVIC_PriorityGroupConfig的理解及其使用[通俗易懂]
- 【深度学习】残差网络理解
- 深度理解NodeJS事件循环
- 从实现一个React到深度理解React框架核心原理_2023-02-27
- react源码分析--深度理解React.Context
- Q527:理解Python装饰器的3个案例
- MySQL高可用架构设计分析,深入理解
- 从分布式到微服务:深入理解网络,网络传输中的对象序列化问题
- MySQL查询:理解查询原理(mysql查询原理)
- Linux线程深入理解:栈空间分析(linux线程栈空间)
- 深入理解Oracle客户端的定义和作用(oracle客户端是什么)
- 深入理解Oracle数据库的查询技巧(oracle数据库 查询)
- 解读Redis源码,展开深度理解(看懂redis源码)
- 深度探索Redis在百度云的应用(深入理解redis百度云)
- 深入探索Redis从原理到实现(深入理解redis原理)
- 深入理解MySQL 探索双重游标操作(mysql两层游标)
- 理解Redis有趣有用有见解(写redis是什么意思)
- 深度解读Redis的多线程特性(怎么理解redis多线程)
- Oracle主键查询深入理解原理(oracle主键查询原理)
- 深入理解Redis跳表的最大深度(redis跳表最大深度)
- 图深入理解Oracle11g架构图(oracle11g 架构)
- androidListView深入理解
- 你必须知道的Javascript知识点之"深入理解作用域链"的介绍
- 深入理解javaScript中的事件驱动