0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过深度学习为蒙娜丽莎添加动画效果

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2020-11-18 17:29 次阅读

背景

坊间传闻,当您在房间里走动时,蒙娜丽莎的眼睛会一直盯着您。

这就是所谓的“蒙娜丽莎效应”。兴趣使然,我最近就编写了一个可互动的数字肖像,通过浏览器和摄像头将这一传说变成现实。

这个项目的核心是利用 TensorFlow.js、深度学习和一些图像处理技术。总体思路如下:首先,我们必须为蒙娜丽莎的头部以及从左向右注视的眼睛生成一系列图像。从这个动作池中,我们根据观看者的实时位置连续选择并显示单个帧。

TensorFlow.js
https://tensorflow.google.cn/js

接下来,我将从技术层面详细介绍该项目的设计和实现过程:

通过深度学习为蒙娜丽莎添加动画效果

图像动画是一种调整静止图像的技术。使用基于深度学习的方式,我可以生成极其生动的蒙娜丽莎注视动画。

具体来说,我使用了 Aliaksandr Siarohin 等人在 2019 年发布的一阶运动模型 (First Order Motion Model, FOMM)。直观地讲,此方法由两个模块构成:一个模块用于提取运动,另一个模块用于生成图像。运动模块从摄像头记录的视频检测关键点并进行局部仿射变换 (Affine Transformation)。然后,将在相邻帧之间这些关键点的值的差值作为预测密集运动场的网络的输入,并且用作遮挡掩模 (Occlusion Mask),遮挡掩模可以指定或根据上下文推断需要修改的图像区域。之后,图像生成网络会检测面部特征,并生成最终输出,即根据运动模块结果重绘源图像。

一阶运动模型
http://papers.nips.cc/paper/8935-first-order-motion-model-for-image-animation.pdf

我之所以选择 FOMM 是因为它易于使用。此领域以前使用的模型都“针对特定目标”:需要提供详细的特定目标数据才能添加动画效果,而 FOMM 则不需要知道这些数据。更为重要的是,这些作者发布了开箱即用的开源实现,其中包含预先训练的面部动画权重。因此,将该模型应用到蒙娜丽莎的图像上就变得十分简单:我只需将仓库克隆到 Colab Notebook,生成一段我眼睛四处观看的简短视频,并将其与蒙娜丽莎头部的屏幕截图一起传进模型。得到的影片超级棒。我最终仅使用了 33 张图片就完成了最终的动画的制作。

源视频和 FOMM 生成的图像动画预测示例

使用 FOMM 生成的帧示例

图像融合

虽然我可以根据自己的目的重新训练该模型,但我决定保留 Siarohin 得到的权重,以免浪费时间和计算资源。但是,这意味着得到的帧的分辨率较低,且输出仅有主体的头部。介于我希望最终图像包含整个蒙娜丽莎,即包括手部、躯干和背景,我选择将生成的头部动画叠加到油画图像上。

头部帧叠加到基础图像上的示例:为了说明问题,此处显示的版本来自项目的早期迭代,其中头部帧存在严重的分辨率损失

然而,这带来了一系列难题。查看上述示例时,您会发现,模型输出的分辨率较低(由于经过了 FOMM 的扭曲程序,背景附带有一些细微的更改),从而导致头部帧在视觉上有突出的效果。换句话说,很明显这是一张照片叠加在另一张照片上面。为了解决这个问题,我使用 Python 对图像进行了一些处理,将头部图像“融合”到基础图像中。

首先,我将头部帧重新 resize 到其原始分辨率。然后,我构造一个新的帧,该帧的每个像素值由原图像素和模型输出的像素求均值后加权 (alpha) 求得,离头部中心越远的像素权值越低。

用于确定 alpha 的函数改编自二维 sigmoid,其表达式为:

其中,j 确定逻辑函数的斜率,k 为拐点,m 为输入值的中点。以下是函数的图形表示:

我将上述过程应用到动画集中的所有 33 个帧之后,得到的每个合成帧都会让人深信不疑这就是一个图像:

通过 BlazeFace 跟踪观看者的头部

此时,剩下的工作就是确定如何通过摄像头来跟踪用户并显示相应的帧。

当然,我选择了 TensorFlow.js 来完成此工作。这个库提供了一组十分可靠的模型,用于检测人体,经过一番研究和思考后,我选择了 BlazeFace。

BlazeFace
https://github.com/tensorflow/tfjs-models/tree/master/blazeface

BlazeFace 是基于深度学习的目标识别模型,可以检测人脸和面部特征。它经过专门训练,可以使用移动相机输入。它特别适合我的这个项目,因为我预计大部分观看者都会以类似方式(即头部位于框内、正面拍摄以及非常贴近相机)使用摄像头,无论是使用移动设备还是笔记本电脑

但是,在选择此模型时,我最先考虑到的是它异常快的检测速度。为了让这一项目有意义,我必须能够实时运行整个动画,包括面部识别步骤。BlazeFace 采用 Single-Shot 检测 (SSD) 模型,这是一种基于深度学习的目标检测算法,在网络的一次正向传递中可以同时移动边界框并检测目标。BlazeFace 的轻量检测器能够以每秒 200 帧的速度识别面部特征。

BlazeFace 在给定输入图像时的捕获内容演示:包围人体头部以及面部特征的边界框

选定模型后,我持续将用户的摄像头数据输入 BlazeFace 中。每次运行后,模型都会输出一个含有面部特征及其相应二维坐标位置的数组。借助此数组,我计算两只眼睛之间的中点,从而粗略估算出面部中心的 X 坐标。

最后,我将此结果映射到介于 0 与 32 之间的某个整数。您可能还记得,其中的每一个值分别表示动画序列中的一个帧,0 表示蒙娜丽莎的眼睛看向左侧,32 表示她的眼睛看向右侧。之后,就是在屏幕上显示结果了。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2477

    浏览量

    46517
  • 图像处理
    +关注

    关注

    26

    文章

    1224

    浏览量

    55806
  • 深度学习
    +关注

    关注

    73

    文章

    5235

    浏览量

    119893

原文标题:“来自蒙娜丽莎的凝视”— 结合 TensorFlow.js 和深度学习实现

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    为什么深度学习效果更好?

    导读深度学习是机器学习的一个子集,已成为人工智能领域的一项变革性技术,在从计算机视觉、自然语言处理到自动驾驶汽车等广泛的应用中取得了显著的成功。深度
    的头像 发表于 03-09 08:26 137次阅读
    为什么<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的<b class='flag-5'>效果</b>更好?

    【RISC-V开放架构设计之道|阅读体验】先睹快-学习RISC-V的案头好书

    蒙娜丽莎让人想到的就是优雅,这也契合RISC-V的设计哲学。本书从电子发烧友申请到,扉页有电子发烧友的签名。 前面附录了RISC-V的指令集参考卡,这个比较有用,有时看下汇编代码可以参考。参考卡
    发表于 01-20 22:37

    详解深度学习、神经网络与卷积神经网络的应用

    处理技术也可以通过深度学习来获得更优异的效果,比如去噪、超分辨率和跟踪算法等。为了跟上时代的步伐,必须对深度学习与神经网络技术有所
    的头像 发表于 01-11 10:51 711次阅读
    详解<b class='flag-5'>深度</b><b class='flag-5'>学习</b>、神经网络与卷积神经网络的应用

    GPU在深度学习中的应用与优势

    学习中究竟担当了什么样的角色?又有哪些优势呢?一、GPU加速深度学习训练并行处理GPU的核心理念在于并行处理。在深度学习训练过程中,需要处理
    的头像 发表于 12-06 08:27 706次阅读
    GPU在<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中的应用与优势

    HarmonyOS属性动画开发示例(ArkTS)

    完成了本次 Codelab 的学习,并了解到以下知识点: 如何使用 animateTo 实现显式动画。 如何使用 animation 组件添加属性
    发表于 11-23 15:31

    一文详解机器学习深度学习的区别

    深度学习这几年特别火,就像5年前的大数据一样,不过深度学习其主要还是属于机器学习的范畴领域内,所以这篇文章里面我们来唠一唠机器
    发表于 09-06 12:48 1331次阅读
    一文详解机器<b class='flag-5'>学习</b>和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的区别

    机器学习深度学习的区别

    机器学习深度学习的区别 随着人工智能技术的不断发展,机器学习深度学习已经成为大家熟知的两个术
    的头像 发表于 08-17 16:11 3372次阅读

    深度学习框架和深度学习算法教程

    深度学习框架和深度学习算法教程 深度学习是机器学习
    的头像 发表于 08-17 16:11 707次阅读

    深度学习框架连接技术

    深度学习框架连接技术 深度学习框架是一个能够帮助机器学习和人工智能开发人员轻松进行模型训练、优化及评估的软件库。
    的头像 发表于 08-17 16:11 475次阅读

    深度学习框架是什么?深度学习框架有哪些?

    深度学习框架是什么?深度学习框架有哪些?  深度学习框架是一种软件工具,它可以帮助开发者轻松快速
    的头像 发表于 08-17 16:03 1739次阅读

    什么是深度学习算法?深度学习算法的应用

    什么是深度学习算法?深度学习算法的应用 深度学习算法被认为是人工智能的核心,它是一种模仿人类大脑
    的头像 发表于 08-17 16:03 1466次阅读

    深度学习算法简介 深度学习算法是什么 深度学习算法有哪些

    深度学习算法简介 深度学习算法是什么?深度学习算法有哪些?  作为一种现代化、前沿化的技术,
    的头像 发表于 08-17 16:02 6787次阅读

    深度学习的七种策略

    深度学习的七种策略 深度学习已经成为了人工智能领域的热门话题,它能够帮助人们更好地理解和处理自然语言、图形图像、语音等各种数据。然而,要想获得最好的
    的头像 发表于 08-17 16:02 1298次阅读

    利用深度学习模型最大限度地提高外显子组测序分析的准确性

    使用 NVIDIA Parabricks ,通过深度学习加速整个外显子组分析,降低 70% 的成本
    的头像 发表于 07-05 16:30 310次阅读
    利用<b class='flag-5'>深度</b><b class='flag-5'>学习</b>模型最大限度地提高外显子组测序分析的准确性

    智造之眼丨深度学习应用

    智造之眼®科学设计深度学习各应用流程,在尽量简化前期准备工作的基础上为客户提供稳定且准确的深度学习解决方案。
    的头像 发表于 05-04 16:55 464次阅读
    智造之眼丨<b class='flag-5'>深度</b><b class='flag-5'>学习</b>应用