前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一边动,一边画,自己就变二次元!华人小哥参与的黑科技:实时交互式视频风格化

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

作者头像
量子位
发布2020-06-08 10:03:49
5060
发布2020-06-08 10:03:49
举报
文章被收录于专栏:量子位量子位
鱼羊 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI

动画,动画,就是你你的,我我的。

就像下面这张GIF,左边是张静态图片,随着画者一点一点为其勾勒色彩,右边的动图也在实时地变换颜色。

这就是来自布拉格捷克理工大学和Snap研究所的黑科技——**只需要2个特定的帧,就能实时变换视频中对象的颜色、风格甚至是样式。

当然,更厉害的还在后面。

拿一张你的卡通头像图片,随意对其修改,顶着这张头像,坐在镜头前的你,也会实时发生改变。

甚至,你还可以一边画自己,一边欣赏自己慢慢变成动画效果的过程。

真可谓是这边着,那边着,动画就出来了。

而且整个过程无需冗长的训练过程,也不需要大规模训练数据集,研究也提交至SIGGRAPH 2020。

那么,这么神奇的效果到底是如何做到的呢?

交互式视频风格化

首先,输入一个由 N 帧组成的视频序列 I。

如下图所示,对于任何一帧 Ii,可以选择用蒙版 Mi来划定风格迁移的区域,或者是对整一帧进行风格迁移。

用户需要做的是提供风格化的关键帧 Sk,其风格会被以在语义上有意义的方式传递到整个视频序列中。

与此前方法不同的是,这种风格迁移是以随机顺序进行的,不需要等待顺序靠前的帧先完成风格化,也不需要对来自不同关键帧的风格化内容进行显式合并。

也就是说,该方法实际上是一种翻译过滤器,可以快速从几个异构的手绘示例 Sk 中学习风格,并将其“翻译”给视频序列 I 中的任何一帧。

这个图像转换框架基于 U-net 实现。并且,研究人员采用基于图像块(patch-based)的训练方式和抑制视频闪烁的解决方案,解决了少样本训练和时间一致性的问题。

基于图像块的训练策略

关键帧是少样本数据,为了避免过拟合,研究人员采用了基于图像块的训练策略。

从原始关键帧(Ik)中随机抽取一组图像块(a),在网络中生成它们的风格化对应块(b)。

然后,计算这些风格化对应块(b)相对于从风格化关键帧(Sk)中取样对应图像块的损失,并对误差进行反向传播。

这样的训练方案不限于任何特定的损失函数。本项研究中,采用的是L1损失、对抗性损失和VGG损失的组合。

超参数优化

解决了过拟合之后,还有一个问题,就是超参数的优化。不当的超参数可能会导致推理质量低下。

研究人员使用网格搜索法,对超参数的4维空间进行采样:Wp——训练图像块的大小;Nb——一个batch中块的数量;α——学习率;Nr——ResNet块的数量。

对于每一个超参数设置:(1)执行给定时间训练;(2)对不可见帧进行推理;(3)计算推理出的帧(O4)和真实值(GT4)之间的损失。

而目标就是将这个损失最小化。

提高时间一致性

训练好了翻译网络,就可以在显卡上实时或并行地实现视频风格迁移了。

不过,研究人员发现在许多情况下,视频闪烁仍很明显。

第一个原因,是原始视频中存在时态噪声。为此,研究人员采用了在时域中运行的双边滤波器的运动补偿变体。

第二个原因,是风格化内容的视觉歧义。解决方法是,提供一个额外的输入层,以提高网络的判别能力。

该层由一组随机2维高斯分布的稀疏集合组成,能帮助网络识别局部上下文,并抑制歧义。

不过,研究人员也提到了该方法的局限性:

当出现新的没有被风格化的特征时,该方法通常不能为其生成一致的风格化效果。需要提供额外的关键帧来使风格化一致。

处理高分辨率(如4K)关键帧比较困难

使用运动补偿的双边滤波器,以及随机高斯混合层的创建,需要获取多个视频帧,对计算资源的要求更高,会影响实时视频流中实时推理的效果。(Demo的实时捕获会话中,没有采用提高时间一致性的处理方法)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 交互式视频风格化
  • 基于图像块的训练策略
    • 超参数优化
      • 提高时间一致性
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档