Dance GAN 迁移不同视频中人物动作的方法
该研究提出一种迁移不同视频中人物动作的方法。给出两个视频,一个视频中是研究者想要合成动作的目标人物,另一个是被迁移动作的源人物,研究者通过一种基于像素的端到端流程在人物之间进行动作迁移(motion transfer)。该方法与这二十年来使用最近邻搜索 [4, 9] 或 3D 重定位运动 [7, 13, 26, 30] 的方法不同。研究者用该框架创建了多个视频,使未经训练的业余人员也能像专业芭蕾舞演员那样做出旋转等舞蹈动作,像流行明星那样跳舞。

图 1:从源人物到两个目标人物的动作迁移。
为了逐帧地实现两个视频中人物之间的动作迁移,研究者必须学习两个人物图像之间的映射。该研究的目标是发现源集合和目标集合之间的图像转换方法 [14]。但是,研究者并不具备执行同样动作的两个人物的对应图像对,来直接监督图像转换。即使两个人物按同样的方式执行动作,仍然有可能不具备帧到帧的身体姿态对应关系,因为每个人物的身材和风格都存在差异。
研究者观察到基于关键点的姿势可以作为两个人物之间的中间表示,关键点姿势本质上编码了身体位置而非外表。这些姿势与该研究的目标一致,能够保持随时间变化的运动特征,同时尽可能多地抽象人物特质。因此研究者把中间表示设计成姿势简笔画(见图 2)。研究者从目标视频中获取每一帧的姿势检测 [5, 27, 35],得到对应(姿势简笔画,目标人物图像)对集合。使用该对齐数据,研究者以监督的方式学习姿势简笔画和目标人物图像之间的图像转换模型。因此,该模型经过训练后可以生成特定目标人物的个性化视频。接下来就是动作迁移,研究者将姿势简笔画输入训练好的模型中,以获取目标人物持同样姿势的图像。研究者在模型中添加了两个组件来改善结果的质量:为了增强生成视频的时间流畅度(temporal smoothness),研究者每一帧的预测都基于前一个时间步的预测结果;为了增强结果的面部逼真程度,研究者在模型中纳入了一个专门化 GAN,用于生成目标人物的面部。

图 2:姿势简笔画和目标人物帧之间的对应。
该方法可以生成不同视频人物之间的动作迁移视频,无需昂贵的 3D 或运动捕捉数据。该研究的主要贡献是提出了一种基于学习的流程,用于视频间人物的动作迁移,结果在真实、详细的视频中实现了复杂的动作迁移。研究者还对提出的模型进行了模型简化测试(ablation study),并与基线模型进行对比。
论文:Everybody Dance Now

论文链接:https://arxiv.org/abs/1808.07371
摘要:本文提出了一种简单的方法,用于「do as I do」的动作迁移:给出一个人跳舞的源视频,我们可以在目标人物执行标准动作的几分钟之后,将该表演迁移到一个新的(业余)目标人物上。我们将该问题看作一个具有时间平滑的逐帧图像转换问题。我们使用姿势检测作为源和目标之间的中间表示,学习从姿势图像到目标人物外观图像的映射。我们将此设置用于时间相干视频生成,包括逼真的人脸合成。
方法
给出一个源人物视频和一个目标人物视频,我们的目标是生成目标人物执行源视频同样动作的新视频。为了完成这一任务,我们将工作流程分成以下三个步骤:姿势检测、全局姿势归一化、从归一化的姿势简笔画映射到目标人物。在姿势检测阶段,我们用一个预训练的当前最优姿势检测器,基于源视频中的帧来创建姿势简笔画。全局姿势归一化阶段考虑了帧内源人物和目标人物的身材、位置差异。最后,我们设计了一个系统,通过对抗训练学习从归一化姿势简笔画到目标人物图像的映射。

图 3.(上图)训练:我们的模型利用姿势检测器 P,基于目标人物的视频帧创建姿势简笔画。训练期间,我们学习映射 G 和对抗鉴别器 D,后者尝试区分「真」对应对 (x, y) 和「假」对应对 (G(x), y)。(下图)迁移:我们使用姿势检测器 P:Y ′ → X ′来获取源人物的姿势关节,然后通过归一化过程 Norm 将这些姿势关节迁移到目标人物的关节,为目标人物创建对应的姿势简笔画。接下来我们使用训练好的映射 G 来生成目标人物的新视频。
图像转换的对抗训练
我们修改了 pix2pixHD [33] 的对抗训练设置来生成时间相干视频帧、合成逼真的人脸图像。
为了创建视频序列,我们修改了单个图像生成设置来增强相邻帧之间的时间连贯性,如图 4 所示。

图 4:时间平滑设置。当合成当前帧 G(x_t ) 时,我们基于对应的姿势简笔画 x_t 和之前合成的帧 G(x_t−1),获得时间平滑的输出。然后鉴别器 D 尝试将「真」时间相干序列 (x_t−1, x_t , y_t−1, y_t ) 与「假」序列 (x_t−1, x_t , G(x_t−1), G(x_t )) 区分开来。
我们添加了专门的 GAN 设置,旨在为面部区域添加更多细节和真实感,如图 5 所示。结果显示该 GAN 设置产生了比较真实的面部特征,模型简化测试显示其改善了完整图像 GAN 的结果。

图 5:Face GAN 设置。残差由生成器 G_f 来预测,并从主生成器添加到原始人脸预测中。

图 6:迁移结果。每一部分展示了五个连续帧。顶部一行显示源人物,中间一行显示标准化的姿势简笔画,底部一行显示目标人物的模型输出。

表 4:每张图像的漏检平均值,数值越小越好。

图 7:不同模型合成结果的比较。图像被裁剪成围绕原始姿势的边界框。T.S. 表示具有时间平滑设置的模型,T.S. + Face 是具有时间平滑设置和 Face GAN 的完整模型。时间平滑设置为手、头、上衣和阴影添加了细节。这些细节在完整的模型中延续,包括脸部和周围区域的附加细节,从而产生最逼真的合成结果。

图 8:验证集上不同模型的人脸图像对比。T.S. 表示具有时间平滑设置的模型,T.S. + Face 是具有时间平滑设置和 Face GAN 的完整模型。时间平滑设置和 Face GAN 的增加使得细节得到改善,失真程度得以减少。
Dance GAN 迁移不同视频中人物动作的方法的更多相关文章
- 如何将已部署在ASM的资源迁移到ARM中
使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...
- 网页中插入外部视频的几种方法(PC与手机网页通用)
网页中加入视频的几种方法(PC与手机网页通用) 方法一: <!doctype html> <html> <head> <meta charset=" ...
- IOS从视频中获取截图
从视频中获取截图: NSString *movpath =[[NSBundle mainBundle] pathForResource:@”iosxcode4″ ofType:@”mov”]; mpv ...
- 记OC迁移至swift中笔记20tips
写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节. 1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是 ...
- 将数据库从普通文件系统迁移到ASM中
数据库存储的是普通的文件系统,现在将数据库迁移到ASM存储中. 准备ASM环境: [oracle@kel ~]$ asmcmd ASMCMD> ls ASM/ KEL/ ASMCMD> 在 ...
- python 从视频中提取图片,并保存在硬盘上
使用python的moviepy库来提取视频中的图片,按照视频每帧一个图片的方式来保存. extract images from video, than save them to disk from ...
- 利用Effmpeg 提取视频中的音频(mp3)
在B站看到一个up发的病名为爱的钢琴曲,感觉很好听,然后当然是要加入歌单啊.然而不知道怎么转换成mp3,找来找去找到了EFFmpeg 这篇只是达到了我简单的需求,以后可能会有EFFmpeg更详细的使用 ...
- python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框
最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...
- 机器学习进阶-图像基本处理-视频的读取与处理 1.cv2.VideoCapture(视频的载入) 2.vc.isOpened(载入的视频是否可以打开) 3.vc.read(视频中一张图片的读取) 4.cv2.cvtColor(将图片转换为灰度图)
1.vc = cv2.VideoCapture('test.mp4') #进行视频的载入 2.vc.isOpened() # 判断载入的视频是否可以打开 3.ret, frame = vc.read( ...
随机推荐
- HDU 1501 Zipper(DFS)
Problem Description Given three strings, you are to determine whether the third string can be formed ...
- UI基础:UIView(window,frame,UIColor,CGPoint,alpha,CGRect等) 分类: iOS学习-UI 2015-06-30 20:01 119人阅读 评论(0) 收藏
UIView 视图类,视图都是UIView或者UIView子类 UIWindow 窗口类,用于展示视图,视图一定要添加window才能显示 注意:一般来说,一个应用只有一个window 创建一个UIW ...
- 解决tensorflow的"Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA Using TensorFlow backend."警告问题
问题描述 程序开始运行的时候报出警告:I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructio ...
- jQuery -- 如何使用jQuery判断某个元素是否存在
通常我们要判断某个元素是否存在是用: if(document.getElementById('example')) { // do something } else { // do something ...
- TJU Problem 2857 Digit Sorting
原题: 2857. Digit Sorting Time Limit: 1.0 Seconds Memory Limit: 65536KTotal Runs: 3234 Accepted ...
- android中的5大布局
1.线性布局:LinearLayout layout_margin 上下左右的距离分别为 下面图中的orientation表示的是布局中的方向 分别有horizontal表示水平 vertic ...
- HihoCoder - 1886 :中位数2(贪心)
描述 对于一个长度为n的数列A,我们如下定义A的中位数med(A): 当n是奇数时,A的中位数是第(n+1)/2大的数:当n是偶数时,A的中位数是第n/2大的数和第n/2+1大的数的平均值. 同时,我 ...
- WebService的web客户端同步、异步、多线程向服务端传入参数的数据交互方式
接着上一章的内容,在上一章中我们知道了如何.net平台下去建立一个WebService,以及同步调用.异步调用.开线程异步调用三种客户端从服务端获取数据的方式,在本章了所要讲的,是如何将客户端的数据, ...
- 八、面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)
面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态.这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交 ...
- JMeter分布式部署的大致步骤以及误区解释
master和slave机要在同一网段内,才能做分布式(Jmeter要配环境变量,这样不用手动起server) 分布式不成功,解决方案: 1.master端和slave端要ping通 2.ping通后 ...