查看原文
其他

MIT发明可以改变图中人姿态的模型,以后可以“假装在健身”了

Bing 论智 2019-03-28
来源:arXiv编译:Bing


编者按:让打高尔夫的人做瑜伽,让做瑜伽的人打网球……现在,可以用技术让照片上的人“动”起来了。MIT的研究团队就发明了一种架构,可以用用一张图片合成新的图片,改变其中人的动作。以下是论智的编译。

给定一张人的照片,我们可以想象这个人摆出不同的姿势的样子。我们能做到是因为经常在不同背景下观察人的动作。在这篇论文中,我们提出了一种自动方法解决这个任务给定一张有人的图像,同时设定一个目标姿势,我们可以自动生成一幅真实的图像,让人作出目标动作,同时保持人和背景不变。图一即展示了这一过程。

图一

为保证图像的真实性,我们将保留图中人物和背景的原样,选出身体部分,使其变成新的姿势。不同的姿势图像变换的复杂度不同,尤其是需要移动或者有遮挡的部分。一些细节比如阴影和边界应该和身体构造保持一致,原先被遮挡住的背景在动作变换之后,如果显示出来,需要用合适的内容填充。针对这一挑战,我们用图像和不同的姿势训练了一个监督学习模型,具体细节如下。

网络架构设计

这里我们用一个神经网络模型学习图像中动作的变换。模型在原图的组合上进行训练。如图二:

图二

其中Is表示原图,ps表示原2D姿势,pt表示目标2D姿势,It表示目标图像。我们假设Is和It的背景和人物完全相同。

我们的网络用模块化进行设计以解决几个难题。由姿势变换引起的运动域通常涉及身体的多个部位、大位移和遮挡。为了解决这个问题,我们的模型首先将图片场景分为前景图层和背景图层,然后它进一步将人的身体分为不同的层,例如手臂和腿,让身体的每个部分独立于其他部分移动。背景图层中分离的像素会用适当的内容填充。为了呈现细致的阴影和高清细节,我们使用了特征和对抗损失的组合方法,强化了含有目标姿势的图像细节真实性。图三就是我们网络的详细架构。

图三

模块A表示在Is上进行图像分割,将人物的身体和手持物体从背景中分离。模块B将Is中的身体部分进行空间转换。模块C将身体各部分组合起来,合成目标前景yfg。该模块同样会模拟输出一个前景掩码Mt。模块D通过“查漏补缺”生成背景图像ybg。最后,将yfg和ybg结合生成y。

1. 姿势分割

与之前的姿势分割任务相似,我们将2D的姿势Ps和Pt转换成3D的形式RH×W×J,这里的H和W代表输入图像的高度和宽度,每个J通道包含一个集中在(x, y)的高斯凸起。这种表示能让网络快速利用输入姿态的立体特征,而不是扁平的密集的表示。空间高斯分布也可以用作姿态估计的正则化,当连接部位有噪音时,这一点就有帮助。

2. 原图分割

移动的场景可以看做视图层的结合。当一个人在运动,身体的每部分可能以不同方式移动,这通常会导致图像空间中的分段放射运动场(不考虑遮挡)。为了解决这种运动的问题,我们首先将Is分成前景层L和一个背景层。L层对应L个预定义的身体部位,我们将其分为10个部分:头部、两上臂、两下臂、两大腿、两小腿和躯干。身体部位和关节不同,前九部分由两个关节组成,而躯干包含四个关节。

分割模块是基于UNet-style架构,具体结构可参考图三左下角。图四展示的是我们的方法生成的样本掩码:

图四,这里是三个不同例子生成的掩码

前景和背景之间的分割线是明显的,而身体部位之间的界线是柔和的。这是因为各相邻部位之间的运动互相关联,并且在外表上也很相似。但前景和背景并无关系。在我们的案例中,画面中的人经常拿着较小的物体比如高尔夫球杆或网球拍。我们的模型不仅能学会合成身体形成的阴影,也能合成手中的物品,因为他们都是作为前景一起移动的。

3. 前景合成

前景合成也就是图三中的模块C所做的工作,它将转换后的身体部位结合起来并进一步改善外观。图五展示出了该阶段的掩码Mt(第3列)以及yfg(第4列)的几个输出示例。即使动作发生非常大的改变,也能合成逼真的姿势。而人手中拿的物品不会保留,例如高尔夫球杆和网球拍,因为他们和变换后的身体姿势运动方式不一样。

图五,第二列是背景合成,三四列是前景合成

4. 背景合成

背景合成是图三种模块D的工作内容,即填补此前前景遮挡住的部分。如上图第二列所示,我们的方法能够尽可能还原背景的图案和颜色。不过有些情况下,前景中的人的脚被保留了下来,比如第三行的高尔夫球员。我们猜测这有可能是数据集对高尔夫有偏差。有时图中人所拿的物品也会被看成是背景,比如第四个例子中的网球拍。

最后一列即是前景和背景合成之后的效果。

实验和结果

我们从YouTube上收集了一些人们运动的视频作为测试。每个训练素材是一张图片及其对应的姿势,同时我们选择的都是背景静止的图片。通过从一条视频中选择图像进行训练,我们能保证人物外观和背景不变,姿态在变。视频的类别有三种:打高尔夫球、瑜伽或健身准备、打网球。我们将这三类动作素材都放在一个数据集中然后开始训练。图六是在不同损失函数下的实验结果:

图六

可以看到,LVGG生成的结果比LL1更清晰,LVGG+GAN是最清晰的。

作为基准实现,我们将我们的方法与前景相同的UNet网络进行对比,结果如图七所示:

图七,UNet在案例1和4中的前景都有问题,背景中也有些偏差

而在视频中,我们将我们的方法独立应用于一系列目标姿态,就可以构建一系列连续的动作图像。图八是高尔夫和网球的例子,我们将视频的第一帧作为源图像,之后的每个姿势作为目标姿势,然后用我们的方法合成图像与实际画面相比较。

图八,1、3行是生成的画面,2、4是原视频画面

最后,我们的方法还可以进行跨行为合成,即“让打网球的人练瑜伽”。原理与上面的实验相同,这也意味着它不用看到目标姿势就能生成不同的姿态。输出的案例如下所示:

虽然现在只是在2D图像上实现了动作转换,不过未来这项技术有可能用于3D之上。有网友看到之后表示:“太神奇了!以后我就能拍一张在家躺着看电视的照片,然后把它合成在健身房锻炼发朋友圈!

好吧,这波操作我服……

论文地址:arxiv.org/pdf/1804.07739v1.pdf

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存