旗下产业: A产业/ A实习/ A计划
全国统一咨询热线:010-5367 2995
首页 > 热门文章 > 大数据分析 > 通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理

时间:2020-11-27来源:www.aaa-cg.com.cn点击量:作者:Sissi
时间:2020-11-27点击量:作者:Sissi



  看蒙娜丽莎(Mona Lisa)画像时,你会发现她的眼睛将四处移动跟随你。这就是所谓的“蒙娜丽莎效应”。为了娱乐,我们把蒙拉丽莎画像制成交互式数字肖像,通过你的浏览器和网络摄像头将这种现象变为现实。


 

  该项目的核心是利用TensorFlow.js,深度学习和一些图像处理技术。总体思路如下:首先,我们必须生成蒙娜丽莎(Mona Lisa)头的图像序列,眼睛从左到右凝视。从该项目中,我们将根据观看者的位置连续不断地实时选择并显示单个帧。
 

  在通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理中,我将详细介绍该项目的技术设计和实施。
 

  通过深度学习对蒙娜丽莎进行动画处理
 

  图像动画是一种允许通过驾驶视频伪造静态图像的技术。使用基于深度学习的方法,能够产生令人信服的蒙娜丽莎注视动画。
 

  具体来说,使用了Aliaksandr Siarohin等人发布的一阶运动模型(FOMM)。在2019年,此方法在较高级别上由两个模块组成:一个模块用于运动提取,另一个模块用于图像生成。运动模块从行驶视频中检测关键点和局部仿射变换。然后,将连续帧之间的这些值的差异用作预测密集运动场的网络的输入,以及指定需要修改或根据上下文推断的图像区域的遮挡遮罩。然后,图像生成网络检测面部标志,并产生最终输出-根据运动模块的结果扭曲和修复的源图像。
 

  之所以选择FOMM,是因为它易于使用。在该领域中,先前的模型是“特定于对象的”,这意味着它们需要对要进行动画处理的对象的详细数据,而FOMM对此却不可知。更重要的是,作者发布了一种开源,开箱即用的实现,带有针对面部动画的预先训练的权重。因此,将模型应用于Mona Lisa变得出乎意料的直接:我将回购克隆到了Colab笔记本中,制作了一段简短的驾驶视频,眼睛四处移动,并通过模型和截图将其反馈给模型。 Gioconda的头部。最终的电影很出色。由此,我最终仅采样了33张图像来构成最终的动画。

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理
 

  FOMM生成的驾驶视频和图像动画预测的示例。

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理

  使用一阶运动模型生成的最终动画帧的子样本。
 

  图像融合
 

  尽管可以出于项目目的重新训练模型,但还是决定在Siarohin权重的约束范围内进行工作,以避免原本需要的时间和计算资源。但是,这意味着将生成的帧固定在比所需的更低的分辨率上,并且仅由对象的头部组成。但是,由于希望最终的视觉效果包含蒙娜丽莎的全部内容(包括手,躯干和背景),因此我们的计划是将输出的头部框架简单地叠加到绘画的图像上。

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理
 

  头部框架覆盖在基础图像之上的示例。为了更好地说明问题,此处显示的版本来自项目的早期迭代,其中头部框架中的分辨率进一步降低。
 

  但是,这带来了自己的挑战。如果你看上面的示例,你会注意到,由于FOMM的变形过程,模型的较低分辨率输出(加上一些细微的附带背景变化)使头部框架从视觉上突出了。换句话说,这显然只是一张图片在另一张图片之上。为了解决这个问题,在Python中进行了一些图像处理,以将头部图像“融合”到底层图像中。
 

  首先,将头架调整为原始分辨率。从那里开始,使用这些模糊像素和基础图像中相应像素的加权平均值创建了一个新帧,其中,头部帧中像素的权重(或alpha)随着其远离中点而减小。
 

  用于确定alpha的函数是从2D乙状结肠开始改编的,表示为:

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理
 

  其中j决定逻辑函数的斜率,k是拐点,m是输入值的中点。绘制出来的函数看起来像:

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理
 

  在将上述过程应用于动画集中的所有33帧之后,对于不产生怀疑的眼睛,每个叠加所产生的叠加似乎是一张图像:

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理
 

  通过BlazeFace跟踪查看者的头部
 

  此时剩下的就是确定如何通过网络摄像头跟踪用户并显示相应的框架。
 

  自然地,转向TensorFlow.js来完成这项工作。该库提供了一组相当强大的模型来检测给定视觉输入下人类的存在,但是经过一番研究和思考,选择了BlazeFace。
 

  BlazeFace是基于深度学习的对象识别模型,可检测人脸和面部标志。经过专门培训,可以使用移动相机输入。这对于我的用例来说效果很好,因为我希望大多数观看者无论是通过移动设备还是在他们的移动摄像头上,都以类似的方式使用他们的网络摄像头-头部对准框架,正面并且距离摄像头非常近笔记本电脑。
 

  但是,在选择此模型时,我最重要的考虑是其非凡的检测速度。为了使该项目具有说服力,我需要能够实时运行整个动画,包括面部识别步骤。BlazeFace适应了单发检测(SSD)模型,这是一种基于深度学习的对象检测算法,可同时提出边界框并仅在网络的前向通道中检测对象。BlazeFace的轻巧检测器能够以每秒200帧的速度识别面部标志。

通过深度学习+TensorFlow.js对蒙娜丽莎进行动画处理
 

  给定输入图像,BlazeFace可以捕获的内容的演示:人头的边界框以及面部标志。
 

  确定了模型之后,编写了代码,以将用户的网络摄像头数据不断地传输到BlazeFace中。在每次运行中,模型都会输出一组面部地标及其相应的2D坐标位置。使用此方法,通过计算眼睛之间的中点来近似脸部中心的X坐标。
 

  最后,将此结果映射到0到32之间的整数。你可能还记得,这些值分别代表动画序列中的一帧–其中0代表左眼是蒙娜丽莎,而32代表左眼。正确的。从那里开始,只需要在屏幕上显示框架即可。


 

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可先就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可推荐就业!

©2007-2021/北京漫动者教育科技有限公司版权所有
备案号:京ICP备12034770号

©2007-2022/ www.aaa-cg.com.cn 北京漫动者数字科技有限公司 备案号: 京ICP备12034770号 监督电话:010-53672995 邮箱:bjaaa@aaaedu.cc

京公网安备 11010802035704号

网站地图