投稿问答最小化  关闭

万维书刊APP下载

STFAN | 空时自适应滤波器在视频去模糊中的应用,文末附核心算子pytorch实现

2022/11/30 17:28:07  阅读:181 发布者:

以下文章来源于AIWalker ,作者HappyAIWalker

   

paper: https://arxiv.org/abs/1904.12257

code: https://github.com/sczhou/STFAN

该文是商汤研究院、南京科技以及哈工大联合提出的一种采用动态滤波器卷积进行视频去模糊的方法。

由于相机抖动、目标运动以及景深变化会导致视频中存在spatially variant blur现象。现有的去模糊方法通常在模糊视频中估计光流进行对齐。这种方法会因光流估计的不够精确导致生成的视频存在伪影,或无法有效去除模糊。为克服光流估计的局限性,作者提出了一种的STFAN框架(同时进行对齐和去模糊)。它采用了类似FRVSR的思路进行视频去模糊(它前一帧的模糊以及去模糊图像联合当前帧模糊图像作为输出,经CNN后输出当前帧去模糊图像),其CNN架构采用了空间自使用滤波器进行对齐与去模糊。

作者提出一种新的FAC操作进行对齐,然后从当前帧移除空间可变模糊。最后,作者设计了一个重建网络用于复原清晰的图像。作者在合成数据与真实数据进行了量化对比分析,所提方法取得了SOTA性能(同时考虑了精度、速度以及模型大小)

Abstract

论文将视频去模糊中的近邻帧对齐与非均匀模糊移除问题建模为element-wise filter adaptive convolution processes。论文的创新点包含:

1)提出一个滤波器自适应卷积计算单元,它用于特征域的对齐与去模糊;

2)提出一个新颖的STFAN用于视频去模糊,它集成帧对齐、去模糊到同一个框架中,而无需明显的运动估计;

3)从精度、速度以及模型大小方面对所提方法进行了量化评估,取得了SOTA性能。

Method

上图给出了文中所用到的网络架构示意图。从中可以看出,它包含三个子模块:特征提取、STFAN以及重建模块。它的输入包含三个图像(前一帧模糊图像,前一帧去模糊图像以及当前帧模糊图像),由STFAN生成对齐滤波器与去模糊滤波器,然后采用FAC操作进行特征对齐与模糊移除。最后采用重建模块进行清晰图像生成。

FAC

上图给出了FAC的计算示意图。如原文所述,这里的卷积计算采用的是depthwise方式,它可以视为CARAFE的拓展。假设输入特征Q的维度为

 ,对于每一点输入

 ,它均具有一个特定的滤波器

 ,通过卷积计算,其对应的输出可以表示为:

关于如何进行代码实现,见文末,这里就不再进行更多的介绍。

网络架构

如前所述,该网络架构包含三个模块,这里将分别针对三个子模块进行简单的介绍。

特征提取网络。该模块用于从模糊图像$B_t$中提取特征$E_t$,它由三个卷积模块构成,每个卷积模块包含一个stride=2的卷积以及两个残差模块(激活函数选择LeakyReLU)。这里所提取的特征被送入到STFAN模块中采用FAC操作进行去模糊。该网络的配置参数如下:

STFAN。该模块包含三个子模块:(1)三元图像编码

 (2) 对齐滤波器生成

 (3) 去模糊滤波器生成

 

(1) 编码模块:给定三元输入,首先由编码器

 提取特征

 。该编码器包含三个卷积模块(类似特征提取网络)

(2) 对齐滤波器生成模块:它以前一步生成的特征

 作为输入,输出用于对齐的自适应滤波器,可以描述为:

 。该滤波器包含丰富的运动信息,有助于模拟动态场景中的非均匀模块。

(3) 去模糊滤波器生成模块:为更充分利用对齐滤波器,该模块利用前一阶段生成的滤波器以及特征$T_t$作为输入,生成用于去模糊的滤波器,可以描述为:

 .

注:上述两个滤波器生成模块均包含一个卷积和两个残差模块并后接一个1x1卷积用于得到期望的输出通道。基于所得到的两组滤波器,采用FAC对前一帧的去模糊特征与当前帧的帧特征进行对齐,同时在特征层面进行模糊移除。最后,将两者进行拼接送入到重建模块中。该模块的配置参数如下:

重建模块。该模块以STFAN中的融合特征作为输入,输出清晰的去模糊图像。该模块的配置参数如下所示。

损失函数

为更有效的训练所提网络,作者考虑如下两种损失函数:

MSE Loss。它用于度量去模糊图像R与真实图像S之间的差异。

Perceptional Loss。它用于度量去模糊图像R与真实图像S在特征层面的相似性。

总体的损失定义为:

Experiments

Dataset

训练数据源自《Deep video deblurring for hand-held camars》,它包含71个视频(6708对数据),被划分为61用于训练(5708对数据)10个用于测试(1000对数据)

在数据增广方面,作者将每个视频划分为长度为20的序列。

为增广运动的多样性,对序列数据进行随机逆序。对每个序列数据,执行相同的图像变换(包含亮度、对比度调整([0.8, 1.2]范围内均匀采样))、几何变换(包含随机水平/垂直镜像)以及裁剪。

为提升模块在真实场景的鲁棒性,对序列图像添加了高斯(N(0, 0.01))随机噪声。

Training Settings

整个网络采用kaiming方式进行初始化,采用Adam优化器(

 ),初始学习率设为1e-4,400k迭代乘以0.1。总计迭代次数为900k

Results

下面两图给出了不同去模糊方法的量化对比以及视觉效果对比。更多实验结果以及相关分析请查阅原文。

小结

本文提出一种新颖的基于动态滤波器卷积的时空网络用于视频去模块。该网路可以动态的生成用于对齐与去模糊的滤波器。基于所生成滤波器以及FAC单元,该网络可以执行时序对齐与特征去模糊。这种无明显运动估计的方法使得它可以处理动态场景中的空间可变的模块现象。

注:作者的提供的代码中FAC需要进行编译,通用性并不太好,笔者之前有提供pytorch自带函数实现的FAC代码。通用性更广,不会出现跨版本不支持现象。可参考链接:https://github.com/sczhou/STFAN/blob/master/models/submodules.py 38kernel2d_conv

转自:arXiv每日学术速递”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com