交互式视频风格化 水记

交互式视频风格化 水记

《Interactive Video Stylization Using Few-Shot Patch-Based Training》

项目主页:

Interactive Video Stylization

https://github.com/OndrejTexler/Few-Shot-Patch-Based-Training

https://github.com/OndrejTexler/Few-Shot-Patch-Based-Training

BV1Sf4y117qy AI又来抢饭碗?一边画一边动,无需建模,实时完成渲染!

一边动,一边画,自己就变二次元!华人小哥参与的黑科技:实时交互式视频风格化

之所以看这篇,是想看看他是怎么做到让画过的部分跟着人一起动的

是不是用某种方法显式或者隐式地建立了语义坐标系?

他用了 ARAP 图像配准做网格变形。

应该可以看作 EbSynth (也就是 《Stylizing Video by Example》)的后续工作

主要是做了实时性的改进,而且允许并行渲染了

功能

输入若干关键帧,每帧要风格化的区域mask(可以是全图风格化),对应的风格化后关键帧

输出会将关键帧的风格化效果传播到其他帧上

特点是,不需要一帧一帧地按顺序渲染,所有帧可以并行渲染,也可以只渲染其中几帧。

这意味着他没有用光流之类的方法来 warp 要风格化的区域,没有使用时域信息,而是实打实的能直接 align 要风格化的区域。

好吧,他是用的 ARAP 网格变形来 align 的。

这个任务叫做 keyframe-based video stylization ,本文之前的 SOTA 是 [Jamriška et al]

训练方法

在这里插入图片描述主要使用 [Futschik et al. 2019] 中基于 U-net 的图像翻译框架,原本用于风格化人脸。

但是用在本任务上产生的结果,质量远低于 SOTA ,有两个原因:

  • 一个原因是,原模型是在一个很大的风格化数据集上训练的(由FaceStyle [Fišer et al. 2017] 生成),而本任务中无法使用这么大的数据集,导致严重的过拟合,模型会直接重构出当前关键帧,降低对其他关键帧的风格化能力。即使使用数据增强也没用。
  • 另一个原因是,由于原始方法没有显式考虑时间一致性,生成的帧序列会在时间尺度上产生很多闪烁。

解决方案:

  • 为了减少过拟合,使用了 patch-based 的训练策略,每次输入一个小 patch 来训练,这样可以有效减少需要的训练数据量,减少过拟合,提高对其他关键帧的泛化能力,提高生成效果。
  • 提出了一种抑制闪烁的方案,该方案不需要衡量时间一致性。

Patch-based 训练策略

每次从 mask 过的关键帧上随机截取一个小 patch,送入一个基于 U-net 的图像翻译框架(来自于 [Futschik et al. 2019] ),生成一个 patch,然后与风格化关键帧上对应的 patch 计算 loss,这里的 loss 使用的是 L1 loss + 对抗loss + VGG loss (来自于 [Futschik et al. 2019]) 。

注意,这里的 U-net 是一个全卷积结构,所以能输入任意大小的图片。

虽然导致当前帧的loss变高了,但是能明显降低其他帧的loss(与当前 SOTA 的 [Jamriška et al] 比较)。

超参搜索

尽管 patch-based 训练策略已经可观的提升了效果,但是对关键超参的调整还是必要的。

原始的超参可能会导致很差的推理质量,尤其是当训练速度对我们来说很重要的时候。此外,我们还需要在风格化质量与实时性之间做平衡。

我们制定了一个优化问题,使用网格搜索求解。

包含四个参数:patch 尺寸,batch尺寸(每个batch包含多少patch),学习率,残差块数量。

目标是:最小化与 [Jamriška et al. 2019] (当前SOTA,也就是 EbSynth) 生成的结果之间的差距。(注意只有微调超参时才使用了这个)

损失函数:使用 [Futschik et al. 2019] 的 loss (训练时也用的这个)。

约束条件是:训练时间 与 单个视频的推理时间 是固定的。(分别是 30秒 和 0.06秒)

因为约束的时间较短,所以用网格搜索是可行的。

时间一致性

尽管 [Futschik et al. 2019] 发现这个方法天然的具有一定的时间一致性,但是还是会出现很多闪烁。

闪烁的原因有两个:时间尺度的噪声,视觉上的歧义。

即使是很小的时间噪声,也会被外观翻译网络放大。

为了抑制噪声,使用了一个在时域工作的双边滤波器的运动补偿变体 [Bennett and McMillan 2005]

滤波器只有在对象具有独特且多变的纹理的时候很有效,如果缺乏足够独特的视觉信息(比如有一片完全同色的区域),就会出现视觉上的歧义。

解决 视觉歧义:

使用一个额外的输入层来显式的提升网络的鉴别能力。

在这里插入图片描述

该层由一组稀疏的随机分布的二维高斯组成,每个二维高斯都有一个独特的随机生成的颜色。

为了补偿视频中的运动,这些高斯被看作是粘在网格上的点。

网格由 as-rigid-as-possible (ARAP) 图像配准技术 [Sýkora et al. 2009] 变形。

该方法重复两个步骤:

  1. 块匹配(block-matching)估计网格上每个点的最优平移
  2. 利用ARAP变形模型,局部加强刚性来规范网格结构

该配准方法可以独立应用于每个帧,不需要时域信息。

之所以使用高斯,而不是直接编码像素坐标,例如 [Jamriška et al.2019; Liu et al. 2018]

是因为,随机着色提供更好的定位和稀疏性,以及旋转对称性,减少了局部失真的影响。

如果发生极端非平面变形(比如头部转动)或者强遮挡(比如有多个场景平面)的情况,需要提供额外的关键帧或将场景分割成多层。每个关键帧或场景层都有自己的专用变形网格。在补充材料的 2:56 处展示了这一点。

没看出来他怎么展示的,让头转一下就行了?网格呢?网格长啥样啊?

完全没解释是怎么引入额外关键帧或者分割场景的,估计是因为和提到的两篇做法一样吧。只能看看那两篇了,最坏情况可能只有看源码才行。

推理过程

经过训练过程,我们已经得到一个 根据 用户给定风格 微调过的 U-net 。

推理过程很简单。

直接把当前帧整个喂给 U-net ,然后得到风格化的当前帧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值