化秋毫为波澜:运动放大算法(深度学习版)

SIGAI特约作者

Fisher Yu

CV在读博士

研究方向:情感计算


什么是运动放大?

运动放大(Motion Magnification),将视频中对应位置的运动进行放大,简单理解的话,就是找到时间段内的运动矢量,进行放大,然后权值叠加回去。

为什么需要运动放大?

因为很多自然界或者生物的 subtle behaviour 不易被肉眼察觉(如飞机翼的震动,受风影响摇晃的建筑,生物皮肤变化等等),这些微变化只有通过运动放大,才能更好地被机器或者人类来做后续的视频视觉任务。

运动放大的难点?

如何在运动放大的同时,尽量保持 apperance 不变?如何不引入大量噪声? 如何保证放大后的动作平滑?没有现存的数据集来训练?

传统方法的发展历程

MIT在2012年首次提出了 Eulerian Video Magnification[1] ,第一次实时且相对鲁棒地应用到一些场景,如远程心率脉搏提取,记得多年前看到宣传的video是非常地震撼~~因为之前做运动放大,都不是用Eulerian方法,而是用Lagrangian视角去做(即运动估计,tracking啥的,非常耗时)

问题描述如下:

原始信号I(x,t)表示图像在位置x和时刻t的亮度值,而δ(t)表示运动偏差。目标就是通过调整运动放大系数α来生成放大后的信号

文中通过实验发现,temporal filter可以模拟 spatial translation,故问题就简化为 提空间特征+设计时间维度上的滤波器。

算法的流程如下:

1.对视频每一帧都进行拉普拉斯金字塔处理,得到Multi-scale的边缘及形状描述

2. 对每个scale的特征voxel进行pixel-wise 时间上的带通滤波,增强感兴趣频率上的信号,过滤掉不感兴趣频率的噪声

3. 对filtered完的信号进行运动放大,叠加回滤波前的特征voxel;最后将金字塔重构融合。

Eulerian 运动放大框架[1]

该方法的cons:

1. 滤波器只能抑制某些频率的噪声,但乘以运动放大系数后,在带通频段的噪声也会放大

2. 若物体本身非静止,而在运动,该放大算法生成的图很模糊

故根据以上不足,后面又有两个经典的变形:

1.2013年MIT又提出了 Phase-based 运动放大[2],使用了complex-valued steerable pyramids 来得到相位图再进行滤波,抗噪能力更强;

2.CVPR2017,Zhang et al.提出了 Acceleration Magnification[3],设计了二阶加速度滤波器,使生成的视频在 large motion 下效果更好。

Learning-based 运动放大

[4] ECCV2018 oral

论文地址:https://arxiv.org/abs/1804.02684

项目地址:https://github.com/12dmodel/deep_motion_mag

难得的好文章,不像很多文章直接设计个网络,设计个loss完事~~作者对传统方法的每个stage认知很深,然后把深度学习只是当成一个工具,来复现改造传统方法的每个stage。

Main Contribution:

1. 第一个使用深度学习端到端地进行运动放大,不需要手工设计特征,从数据里自主学到滤波器。

2. 在无现有数据集训练的情况下,利用COCO和VOC生成数据来训练。

3. 与传统方法的temporal filter相兼容,且在运动系数适中的情况下,效果比单独使用全局Learning的效果还好。

再看回同一条公式:

同一个目标:通过网络来学习前后帧(Xa,Xb)的空间特征,然后通过两帧特征差异来得到δ(x,t);接着通过对感兴趣部分的运动特征进行放大α叠加回前帧Xa;最后生成运动放大的后帧

(即

的集合)。整体架构如下图所示:

整体框架图[4]

算法流程如下:

Stage1: 设计Encoder 进行形状特征和纹理特征的提取,类比文章[1]中的拉普拉斯金字塔提取的多尺度边缘形状特征。给定前后帧(Xa,Xb),通过网络Ge可以得到它们各自的形状特征Ma,Mb和纹理特征Va,Vb。这里的纹理特征不进行运动放大,主要用于后续约束Intensity放大导致的噪声。

Encoder[4]

Stage2:把前后帧的形状特征送进 Manipulator,来模拟文章[1]中带通滤波器及运动放大,权值叠加的过程。这里的修改器Gm有线性和非线性两种表达:

而下图网络给出的修改器网络是基于非线性表达,就是加了g(●)和h(●)运算,文中给出的实验结果图是非线性的效果更好,具体也没解释。个人觉得非线性能更好地模拟带通滤波器的功能,能放大部分更感兴趣的,过滤掉一部分不太感兴趣的~

Manipulator[4]

Stage3: Decoder,来模拟文章[1]中金字塔重构融合过程。这里解码器需要用到放大后的形状特征Ma及前帧的纹理特征Va.

Decoder[4]

讲完了网络结构,来说说 Loss function,共由4部分loss组成,都用L1距离来作为度量。为了让Encoder能区分地学出形状特征和纹理特征,随机地加了color intensity扰动在某些帧上,这里 perturbed frames 及 其运动放大的 groundtruth 分别为Xb' 和Y'

1.

约束生成的运动放大图

与 groundtruth Y' 尽量一致

2.L1(Va,Vb)约束前后帧的纹理表达尽量一致

3.L1(Vb',VY')约束运动放大前后的扰动帧的纹理表达尽量一致

4.L1(Ma,Mb')约束扰动前后的形状表达尽量一致

故总Loss为:

两种不同模式 与 基于时间维度滤波的修改器:

Static mode:这是最原始的公式定义的形式,总是拿第一帧作为anchor,则送进网络的两帧为(X0,Xt)

Dynamic mode: 总是把当前帧和上一帧作为网络的输入(Xt-1,Xt)

Temporal filtering based manipulator:

在修改器中,不需要再进行MaMb的特征差异运算;直接类似文章[1]中的 pixel-wise temporal filter 操作,进行时间维度的带通滤波 (这环节不需要训练,是在静态或者动态模式训练好的网络基础上,直接接上filters前向传播即可) 。公式如下:

具体关于生成的数据集如何carefully designed,感兴趣的同志自己找回原文看了,主要围绕几个因素去设计:多变的前景和背景;低对比度纹理;全局运动;静态场景;不同放大系数的运动;亚像素运动 等等。

实验结果:

如下图,可见放大8倍情况下,基于学习的算法,比Phase-based[2]的结果要少很多artifacts,也不那么blurred

运动放大8倍的结果对比[4]

再如下图,在不加 Temporal filter 的静态模式下,结果也不错,基本没有人工的噪声和blur;而加了 Temporal filter 后的结果更加平滑稳定。

加上Temporal Filter的效果[4]

通过可视化encoder中的kernel可以发现,学到的形状特征更多是基于 Gabor-like, Laplacian-like, Corner detector-like滤波器;而纹理特征对应的更多像blur kernel。证明设计的loss约束引导的learning是很有效很成功的~

Encoder形状核[4]

Encoder纹理核[4]

总结展望

文中作者也说了,该网络一大惊喜就是,学出来的形状特征是呈线性的,又因为线性 temporal filter 与运动偏移是兼容的,故形状特征也能兼容 temporal filter。但是在 放大倍数很大的情况下(如50倍),使用 temporal filter 的效果并不好,图像质量退化严重。

故未来方向之一是,如何使temporal filter更好地兼容网络。从我个人来看,是否可以直接在manipulator 里设计个temporal pooling的小网络来自适应地实现 temporal filter 的功能?当然啦,这样输入的话就很多帧,而不是 two frames 了。

Reference:

[1] Hao-Yu Wu, Eulerian Video Magnification for Revealing Subtle Changes in the World, 2012

[2]Neal Wadhwa, Phase-Based Video Motion Processing, 2013

[3]Yichao Zhang, Video Acceleration Magnification,CVPR2017

[4]Tae-Hyun Oh, Learning-based Video Motion Magnification,ECCV2018

原文发布于微信公众号 - SigAI(SIGAICN)

原文发表时间:2018-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

开发丨如何训练深度神经网络?老司机的 15 点建议

本文为印度深度学习专家、创业者 Rishabh Shukla 在 GitHub 上发表的长博文,总结了他过去的开发经验,旨在给新入门的开发者提供指导。AI科技评...

4048
来自专栏量子位

零基础入门神经网络:从原理、主要类型到行业应用

原作 Jay Shah Root 编译自 Jay Shah寄几的博客 量子位 出品 | 公众号 QbitAI 最近,神经网络这个词特别火,吸引不少眼球。但是神经...

3417
来自专栏AI科技评论

大会 | 腾讯AI Lab 21篇CVPR 18录用论文详解

AI 科技评论按:CVPR 2018 日前已公布录用名单,腾讯 AI Lab 共有 21 篇论文入选。本文转载于「腾讯 AI 实验室」, AI 科技评论经授权转...

4265
来自专栏腾讯高校合作

ECCV 2018 | 腾讯AI Lab解读19篇入选论文

1291
来自专栏人工智能头条

详解深度学习的可解释性研究(上篇)

4003
来自专栏量子位

商汤及联合实验室入选论文重点解读 | ECCV 2018

9月8日-14日,备受瞩目的2018欧洲计算机视觉大会(ECCV 2018)在德国慕尼黑召开, ECCV两年举办一次,与CVPR、ICCV共称为计算机视觉领域三...

1304
来自专栏CreateAMind

深度学习调参有哪些技巧?

最近因为一些需要,参与了一些CNN建模调参的工作,出于个人习性,我并不习惯于通过单纯的trial-and-error的方式来调试经常给人以”black-box...

2134
来自专栏决胜机器学习

循环神经网络(三) ——词嵌入学习与余弦相似度

循环神经网络(三) ——词嵌入学习与余弦相似度 (原创内容,转载请注明来源,谢谢) 一、词汇表征 1、one-hot表示法 之前的学习中提到过,对于词汇库,可以...

4226
来自专栏AI研习社

干货 | 深度学习调参有哪些技巧?

本文将分享一些自己关于深度学习模型调试技巧的总结思考(以CNN为主)。 最近因为一些需要,参与了一些CNN建模调参的工作,出于个人习性,我并不习惯于通过单纯的t...

58113
来自专栏数据科学与人工智能

人工神经网络简介

概要:人工神经网络简称神经网络,是基于生物学中神经网络的基本原理。 一、人工神经网络的概念 人工神经网络(Artificial Neural Network,...

4407

扫码关注云+社区

领取腾讯云代金券