该研究提出一种迁移不同视频中人物动作的方法。给出两个视频,一个视频中是研究者想要合成动作的目标人物,另一个是被迁移动作的源人物,研究者通过一种基于像素的端到端流程在人物之间进行动作迁移(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. 蓝桥杯 BASIC-9:特殊回文数

      基础练习 特殊回文数   时间限制:1.0s   内存限制:512.0MB        问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...

  2. 如何判断一个请求是否为AJAX请求

    普通请求与ajax请求的报文头不一样,通过如下 String requestType = request.getHeader("X-Requested-With");  如果req ...

  3. Understanding Safari Reader

    Interesting enough to find out the Reader function in Safari is actually Javascript and there are ma ...

  4. TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵

    TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激 ...

  5. VPC/VM/VBOX安装GHOST版的无法启动系统

    本人最近在安装一些公司的虚拟机,方便开发使用,不用每次都安装几个小时的装机和安装软件,但是本次却遇到了一点问题,虚拟机安装完成后一直无法进入系统,只有一个光标在黑色的屏幕上一闪一闪的,也没有任何错误提 ...

  6. jquery禁止复制、禁用右键、文本选择功能、复制按键

    本文章介绍的jquery禁用右键.文本选择功能.复制按键的实现它可以兼容浏览器有IE.firefox.谷歌浏览器,各位朋友可参考.IE浏览器是指以IE为核心的浏览器也支持,有360,QQ等 代码如下: ...

  7. net core 2.0学习笔记(一):开发运行环境搭建 (转)

    期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...

  8. 【jemter】HTTP请求参数化

    HTTP请求参数化:就是把URL的参数项做参数化处理 我们现在要对子猴博客来进行一番压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取. 1.  ...

  9. mysql编译安装(详细)

    一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从http://www.cmake ...

  10. BASIC-27_蓝桥杯_2n皇后问题

    题目: 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一 ...