该研究提出一种迁移不同视频中人物动作的方法。给出两个视频,一个视频中是研究者想要合成动作的目标人物,另一个是被迁移动作的源人物,研究者通过一种基于像素的端到端流程在人物之间进行动作迁移(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 迁移不同视频中人物动作的方法的更多相关文章

  1. 如何将已部署在ASM的资源迁移到ARM中

    使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...

  2. 网页中插入外部视频的几种方法(PC与手机网页通用)

    网页中加入视频的几种方法(PC与手机网页通用) 方法一: <!doctype html> <html> <head> <meta charset=" ...

  3. IOS从视频中获取截图

    从视频中获取截图: NSString *movpath =[[NSBundle mainBundle] pathForResource:@”iosxcode4″ ofType:@”mov”]; mpv ...

  4. 记OC迁移至swift中笔记20tips

    写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节. 1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是 ...

  5. 将数据库从普通文件系统迁移到ASM中

    数据库存储的是普通的文件系统,现在将数据库迁移到ASM存储中. 准备ASM环境: [oracle@kel ~]$ asmcmd ASMCMD> ls ASM/ KEL/ ASMCMD> 在 ...

  6. python 从视频中提取图片,并保存在硬盘上

    使用python的moviepy库来提取视频中的图片,按照视频每帧一个图片的方式来保存. extract images from video, than save them to disk from ...

  7. 利用Effmpeg 提取视频中的音频(mp3)

    在B站看到一个up发的病名为爱的钢琴曲,感觉很好听,然后当然是要加入歌单啊.然而不知道怎么转换成mp3,找来找去找到了EFFmpeg 这篇只是达到了我简单的需求,以后可能会有EFFmpeg更详细的使用 ...

  8. python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框

    最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...

  9. 机器学习进阶-图像基本处理-视频的读取与处理 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( ...

随机推荐

  1. 图解SQL的inner join、left join、right join、full outer join、union、union all的区别【转载】

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  2. 获奖感言和C语言的学习心得

    获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学 ...

  3. chapter02 PCA主成分分析在手写数字识别分类的应用

    #coding=utf8 # 导入numpy工具包. import numpy as np # 导入pandas用于数据分析. import pandas as pd from sklearn.met ...

  4. 利用asynchttpclient开源项目来把数据提交给服务器

    可以通过github去查找asynchttpclient,并下载源代码,并加载到自己的工程中. 1.利用get方法提交 2.利用post方法来提交

  5. CF1083(div1)

    A. The Fair Nut and the Best Path 题意:给定有点权,有边权的树,让你选择一条链(也可以是只有一个点),使得点权之和-边权最大. 思路:裸的树形DP,我们用dp[i]表 ...

  6. 数组Arry的随机排序

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  7. FZU OJ 1056 :扫雷游戏

    Problem 1056 扫雷游戏 Accept: 2624    Submit: 6903Time Limit: 1000 mSec    Memory Limit : 32768 KB  Prob ...

  8. (2)hashlib模块(加密算法模块)

    hash算法模块内有很多种,如md5.sha1等,只是加密的程度不一样 hash是一种算法 该算法接收传入的文本内容,经过hash运算得到一串hash值 hash值具备三个特点: 1. 如果传入的内容 ...

  9. 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】

    MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...

  10. hasura graphql-engine v1.0.0-alpha26 版本新功能试用

      hasura graphql-engine v1.0.0-alpha26 已经发布了,有好多新的变动,测试使用docker 环境,同时pg 数据库使用了citus citus 是一个方便扩展的pg ...