数字人+AI换脸简单实现虚拟制片

概述

本文将从零开始介绍如何创造并驱动数字人,最后通过AI换脸实现虚拟制片。效果如下: 数字人驱动 换脸憨豆先生

数字人简介

数字人(Digital Human / Meta Human),是运用数字技术创造出来的、与人类形象接近的数字化人物形象。数字人可简单的分为 2D 数字人和 3D 数字人。本文使用的数字人是通过 MetaHuman Creator 制作工具生成的 3D 数字人。3D 数字人的驱动方式可简单的分为真人驱动和模型驱动。本文使用的驱动方式为真人驱动。

AI换脸简介

AI 换脸指的是通过 AI 人工智能技术把原视频或图片的人脸换成其他的人脸。本文使用目前最新的 roop 换脸工具,通过一张照片,把数字人的脸换成憨豆先生。现在比较主流的换脸技术还有 deep facelab 和 SimSwap。

实现

准备工作

首先需要下载虚幻引擎作为数字人的编辑器,下载地址为 www.unrealengine.com/zh-CN/downl...。其次要在虚幻引擎库中下载 MetaHuman 插件。对于数字人驱动还需要一台XR级别以上的苹果手机,下载 Live Link Face app。对于 AI 换脸,需要搭建 Python 环境,具体可按照如下地址搭建:github.com/s0md3v/roop

数字人创建

首先打开虚幻引擎创建一个项目。本文使用的版本的UE5.0。 项目创建

之后导入一个立方体模型,模型下载地址为 www.aliyundrive.com/s/bpHH5zCqu... (模型来自b站UP主修炼自我 space.bilibili.com/243808341)。然后选择一张想做为虚拟人基底的照片导入到UE。本文选择的是憨豆先生的照片。右键点击基地照片选择创建材质。 材质创建

然后双击立方体模型将生成好的材质拖到材质插槽中。 添加材质

点击上方编辑->插件,搜索 MetaHuman 插件并勾选。

添加 MetaHuman 插件

添加完插件之后在内容浏览器中右键->MetaHuman->MetaHuman 本体。 创建 MetaHuman 本体

进入 MetaHuman 本体插件之后,选择网格体中的组件,将之前的立方体导入。之后移动视角,把立方体的一面正对屏幕。接着依次点击提升帧->追踪活动帧。结果如下: 模型关键点确认

我们可以通过移动绿色的点矫正人脸关键点。确认关键点无误之后点击右侧身体选择一个合适的模版。最后选择网格体转 MetaHuman 上传模型到 MetaHuman Creator 进行下一步操作。 上传模型

上传完毕后,进入到 MetaHuman Creator (www.unrealengine.com/zh-CN/MetaH...)。 MetaHuman Creator

可以看到左侧有许多捏脸的设置,可以对我们的模型进行微调。 模型微调

我们的模型在头顶部分存在异常,原因可能是正面没有对好,所以我们在自定义网格体选中头顶调整区域影响,将头顶恢复正常。 自定义网格体微调

当模型调整完毕后重新返回虚幻引擎,点击上方快速添加到项目->打开Quixel Bridge->下载模型 模型导入

模型下载

模型下载完毕之后点击add添加到项目中,并重启项目。之后将人物模型拖到场景中,模型的位置在 ALL/内容/MetaHumans。

数字人驱动

驱动数字人的方式我们采用真人驱动的方式,使用苹果手机的摄像头获取脸部变形数据,通过 Live Link Face 连接虚幻引擎和手机。 首先我们打开 Live Link Face ,模式选择 Live Link(ARKit),进入后点击左上角设置,再点击流送添加目标,输入电脑的IP地址。电脑和手机需要在同一个局域网内。 之后打开我们的虚幻引擎项目,点击窗口 -> 虚拟制片 -> Live Link,添加我们的连接。 设置连接

勾选 Live Link

设置完 Live Link 以后,打开内容浏览器->MetaHumans->Common->Face->Face_AnimBP 动画蓝图。之后点击左下角的动画图表,然后在选中 LLink Face Subj,将默认值改为我们的 Live Link 连接。然后点击左边头像的小圆点录制我们的嘴形动画。录制完毕后保存动画。 Face_AnimBP 动画蓝图

返回我们的世界主页添加关卡序列。 添加关卡序列

点击轨道->Actor到Sequencer->你的虚拟人。把虚拟人添加到关卡序列,然后删除 Face 中的 Face_ControlBoard_CtrlRig。 关卡序列

然后点击 Face 的+轨道->动画->录制好的动画。添加完毕后,选择将此影片渲染为视频或图像帧序列。我们选择 JPG 格式图像导出,如果使用 AVI 格式导出视频会在 AI 换脸部分出现问题。 添加动画

数字人虚拟制片导出

至此我们的数字人虚拟制片已经完成。完成之后,发现自己捏的数字人太丑了,因此我决定再加一步换脸,让我们的虚拟人变得更加生动。

AI换脸

我们在命令行中打开下载好的 roop 的位置,通过命令 python run.py --execution-provider cuda 启动 roop 的换脸界面。添加目标选择憨豆先生的一张照片,再选 target 添加我们生成的 JPG 文件夹,然后关闭 Keep audio,点击 Start 生成换脸视频。 roop 界面

憨豆先生换脸 最后我们就获得了一个逼真的数字人虚拟制片。

参考文献

github.com/s0md3v/roop www.bilibili.com/video/BV1vW...

推荐阅读

Redis内存淘汰和过期删除策略原理分析

浅析MySQL之MVCC机制

被忽略的缓存 -bfcache

新一代vue状态管理工具Pinia

Cola-StateMachine状态机的实战使用

招贤纳士

政采云技术团队(Zero),Base 杭州,一个富有激情和技术匠心精神的成长型团队。规模 500 人左右,在日常业务开发之外,还分别在云原生、区块链、人工智能、低代码平台、中间件、大数据、物料体系、工程平台、性能体验、可视化等领域进行技术探索和实践,推动并落地了一系列的内部技术产品,持续探索技术的新边界。此外,团队还纷纷投身社区建设,目前已经是 google flutter、scikit-learn、Apache Dubbo、Apache Rocketmq、Apache Pulsar、CNCF Dapr、Apache DolphinScheduler、alibaba Seata 等众多优秀开源社区的贡献者。

如果你想改变一直被事折腾,希望开始折腾事;如果你想改变一直被告诫需要多些想法,却无从破局;如果你想改变你有能力去做成那个结果,却不需要你;如果你想改变你想做成的事需要一个团队去支撑,但没你带人的位置;如果你想改变本来悟性不错,但总是有那一层窗户纸的模糊......如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望参与到随着业务腾飞的过程,亲手推动一个有着深入的业务理解、完善的技术体系、技术创造价值、影响力外溢的技术团队的成长过程,我觉得我们该聊聊。任何时间,等着你写点什么,发给 zcy-tc@cai-inc.com

微信公众号

文章同步发布,政采云技术团队公众号,欢迎关注

相关推荐
开发者每周简报24 分钟前
求职市场变化
人工智能·面试·职场和发展
AI前沿技术追踪37 分钟前
OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载
人工智能
余~~1853816280043 分钟前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
galileo20161 小时前
LLM与金融
人工智能
DREAM依旧2 小时前
隐马尔科夫模型|前向算法|Viterbi 算法
人工智能
GocNeverGiveUp2 小时前
机器学习2-NumPy
人工智能·机器学习·numpy
B站计算机毕业设计超人3 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条3 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客3 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon3 小时前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归