「硬核」实操如何拥有一个自己的数字人模型

news2024/11/26 2:51:36

一、前言

近年来,随着人工智能技术,VR,元宇宙等技术的发展,数字人(Digital Human)逐渐成为研究的热点之一,数字人是指通过计算机技术模拟出的具有人类外表,动作和语言能力的虚拟人物,具体可以应用到电影、游戏、虚拟现实、智能客服带货主播等多个领域。

本文大致分为三个章节:

  1. 第一部分会介绍常用技术以及简介,以及自己用到构建一个自己虚拟数字人用到的3D引擎和三维软件

  2. 第二部分会详细描述生成细节,通过照片建模,创建模型,添加细节,添加表情,优化效果,接入场景,最终效果

  3. 第三部分总结本篇内容

从预见未来到遇见未来,让我们开始,向上吧技术人!!!

二、虚拟数字人技术

要聊需要那些技术,先聊需要那些步骤?

• 收集数据:首先需要收集自己的数据,包括照片、视频、声音等,这些数据将成为数字人的基础。

• 人脸检测:利用计算机视觉技术对照片进行处理,检测出其中的人脸。可以使用已有的人脸检测算法,例如OpenCV、Dlib等。

• 人脸识别:对于检测出来的人脸,需要利用人脸识别技术对其进行识别和分析,从而获取人脸的各种特征和信息。可以使用已有的人脸识别算法,例如FaceNet、VGGFace等。

• 3D建模技术:数字人是一种三维模型,因此需要掌握3D建模技术。这包括了掌握3D建模软件的使用,如Blender、Maya、ZBrush等。

• 优化细节:优化数字人的各种细节,包括皮肤纹理、发型、服装等,让数字人更加真实、生动。

• 材质和纹理制作技术:数字人需要具有逼真的材质和纹理,因此需要掌握材质和纹理制作技术。这包括了掌握材质和纹理制作软件的使用,如Substance Painter、Photoshop等。

• 动画制作技术:数字人需要具有动态的动作和表情,因此需要掌握动画制作技术。这包括了掌握动画制作软件的使用,如Unity、Unreal Engine等。

以下文字内容较多,先放一个自己建好的模型

1、收集数据或者生成图片

• Photoshop、相机:这部分忽略一下,哈哈哈

• Stable DiffusionAI图像生成工具,一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型,生成图片的原理是通过模拟稳定扩散过程并生成相应的数据,然后将数据可视化展示为图片,以帮助用户更好地理解实验结果和数据特征

• ChatGPT:OpenAI团队ChatGPT-4O开发了一种新的技术,使ChatGPT也可以生成图片。这种技术被称为DALL·E(即“Drawing Artificially with a Learned Language Model and a Encoder”),它结合了语言模型和图像编码器的能力,能够根据给定的文本描述生成对应的图片。

2、人脸检测和识别

• OpenCV:是一个用于计算机视觉的开源库,它提供了许多常用的计算机视觉算法和工具,如图像处理、特征提取、物体检测、人脸识别、跟踪等。OpenCV支持多种编程语言,包括C++、Python等。

• Dlib:是一个C++库,它提供了用于机器学习、图像处理、计算机视觉等领域的算法和工具。其中最知名的功能是人脸识别,它基于深度学习和传统的计算机视觉技术,并提供了人脸对齐、人脸特征提取等功能。

• FaceNet:是由Google开发的一个深度学习算法,用于将人脸图像转换为高维向量表示,从而实现人脸识别。FaceNet使用了三个主要组件:卷积神经网络、三元组损失函数和在线学习方法,这些组件使得FaceNet能够在大规模人脸识别任务中达到很高的准确率。

• VGGFace:是由牛津大学的研究团队开发的人脸识别算法,它基于深度卷积神经网络,并使用了许多卷积层和池化层来提取人脸图像的特征。VGGFace包含了两个模型:VGGFace和VGGFace2,其中VGGFace是一个较早的模型,而VGGFace2是一个新的模型,它在大规模人脸识别任务中具有更好的性能。

3、3D建模技术

• Blender:是一个用于三维建模、动画、渲染和交互式应用程序开发的开源软件。它支持多种三维对象的创建和编辑,包括多边形网格、NURBS曲线、体积网格等,并提供了丰富的材质和纹理编辑器,可以帮助用户创建出逼真的场景和角色。

• Metashape:前身为PhotoScan)是一个用于三维重建和地形建模的商业软件。它可以根据照片生成高精度的数字模型,并提供了多种渲染选项和工具,如纹理映射、贴图、相机校准等。Metashape还可以将生成的模型导出到其他软件中进行后续处理和应用。

• Maya:是一款专业级的三维建模和动画软件,广泛用于电影、电视、游戏等领域。它提供了丰富的建模和动画工具,包括多边形网格、NURBS曲线、动力学仿真、粒子系统等,并支持多种渲染引擎,如Arnold、V-Ray等。

• ZBrush:是一款专业级的数字雕刻软件,用于创建高精度的三维模型和角色。它提供了多种绘画和雕刻工具,包括多边形建模、纹理映射、雕刻笔刷等,并支持实时预览和交互式渲染。

• LayaAir:是一个用于Web、移动和小游戏开发的HTML5引擎。它提供了多种功能和工具,如3D渲染、物理引擎、GUI编辑器等,可以帮助用户创建出高效、高质量的Web应用和游戏。LayaAir还支持多种开发语言,包括JavaScript、TypeScript等。

4、动画制作技术

• Unity3D:Unity3D是一款实时3D互动内容创作和运营平台,支持多种平台和设备,包括PC、移动设备、虚拟现实和增强现实等。Unity3D提供了强大的编辑器和工具,支持C#和UnityScript等多种编程语言,可用于游戏开发、AR/VR应用开发等。

• Unreal Engine: Unreal Engine是一款由Epic Games开发的3D游戏引擎,同样支持多种平台和设备,包括PC、主机、移动设备、VR和AR等。Unreal Engine提供了强大的编辑器和工具,支持C++和蓝图等多种编程方式,可用于游戏开发、建筑可视化、虚拟展览等。

• CryEngine:CryEngine是一款由Crytek开发的3D游戏引擎,同样支持多种平台和设备,包括PC、主机、移动设备、VR和AR等。CryEngine提供了强大的编辑器和工具,支持C++和Lua等多种编程方式,可用于游戏开发、建筑可视化、虚拟展览等。

• Godot:Godot是一款免费、开源的3D游戏引擎,支持多种平台和设备,包括PC、移动设备、Web和VR等。Godot提供了强大的编辑器和工具,支持GDScript和C#等多种编程语言,可用于游戏开发、AR/VR应用开发等。

部分软件图标

除了以上技术应该还有很多技术,欢迎大家热烈讨论和在评论区补充😏

三、构建一个自己的数字人—小陈

第一步 用自己的照片生成自己的头像模型

有以下三种办法

1、使用 https://avatarsdk.com/ 在线制作,这个H5是基于WebGL的OpenCV技术构建,可以传一张照片(高p的)生成头的模型,也可以生成头和身体模型。

为了不影响建模,一般选择秃头,导出数字人头部模型

2、使用Polycam软件应用上传生成导出

拍照时自己站着不要动,我们做数字人需要头就可以,拍照的仰角和俯角倾斜,拍40张左右即可

导入Blender进行对点云部分删除部分,分析建模,然后导出数字人头部模型

3、通过照片,格式工厂,在Metashape构建模型 对点云进行处理 导出数字人头部模型,原理是一样的

以上方式根据具体的需求来,第二三种方式更逼真。

第二步 导入模型到UE5中,并安装插件

安装 MetaHuman插件(数字人)、 Bridge插件(建模)、LiveLink插件(交互动作)。插件都装好后,重启虚幻引擎

1、导入我们第一步的模型,创建MetaHuman实体,并给实体命名,注意这个名字就是你数字人的名字

图1

2、双击进入,面部选择网格体也就是我们第一步生成的头像模型,并给小人选择合适身体

继续点击提升帧,追踪活动帧,效果如下图

继续点击MetaHuman本体解算、网格体转MetaHuman。

3、在UE5中打开Bridge,登陆一下账号,只有logo的就是我们的小人了。忽略我设计的秃顶和爆炸头小陈

选中logo模型,点击START MHC进入MetaHuman Creator网页, https://metahuman.unrealengine.com/ 进一步加工我们的MetaHuman吧

第三步 调整你的数字人

对骨骼,肤色,头发,牙齿,身体,表情动作等进行调整,内容太丰富,建议自己尝试,放一个眼影小陈,和大胡子小陈

第四步 下载数字人并加载到虚幻引擎中

1、打开Bridge点击Down

2、添加小人到项目中后项目中多了一个MetaHuman的文件夹,移动到你的场景吧

3、最终效果图,只下载好了(网速不好)秃头小陈实在不好放大,下次做个好看的在更新下文章吧。

四、总结和畅想

本文介绍了如何打造一个数字人,描述业内常用的一些软件和技术栈,并实战打造一个以自己为模型构建的虚拟数字人,并详细描述了全过程。总的来说数字人具备了逼真的人类外貌、身体动作和语言能力的虚拟人物,不同的制作方法和技术可以实现不同的效果和应用,选择合适的方法和技术需要根据具体需求和项目情况来确定。

大家将就看完了,模型还是丑丑的😭,下一步持续提升,让数字人拥有智慧,拥有交互,拥有颜值(毕竟颜值才是正义)。

关于数字人如何创建和相关技术就介绍到这里啦,我也是刚入门,有不对的地方和需要补充的,欢迎大家指正,希望对大家所有帮助,也欢迎多多点赞收藏😎

最后关于数字人的应用场景和结合实际的落地效果,大家有好的idea也可以一起讨论。

文章转载自:京东云技术团队

原文连接:https://www.cnblogs.com/jingdongkeji/p/17282220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/770373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【想要学习适当技能来处理复杂数据科学项目和“用数据思考”?看《现代数据科学(R语言·第2版)》就对了】

《现代数据科学(R语言●第2版)》是面向本科生的综合性数据科学教材,通过结合使用统计和计算方式来解决现实中的数据问题。本书不仅专注于案例或编程语法,还讲述如何利用最新R/RStudio计算环境中的统计编程,从各种数据中提取有意义的信息&…

Jmeter性能测试通过插件监控服务器资源使用情况

Jmeter作为性能测试的首选工具,那么在性能测试过程中如何方便快捷的监测服务器资源使用情况? 可以通过jmeter 安装"PerfMon(Servers Performance Monitoting)"插件并配合服务端资源监控工具进行实现,详细操作流程如下:…

微服务部署架起App运维的高速通道

今天来说下微服务,我们知道微服务在 App 开发中具备模块化开发、独立部署扩展、问题隔离等特点,这种微服务架构模式能够使应用程序更具弹性、可扩展和可维护,能够更好地应对快速变化的需求和规模的增长。 准备通过系统的梳理说一说微服务部署…

谷歌云构建漏洞容易引发潜在的供应链攻击

云安全公司Orca Security在谷歌云构建(Google Cloud Build)服务中发现了一个关键的设计漏洞,该漏洞会让攻击者的权限升级,使他们可以在未经授权的情况下访问谷歌构件注册表(Google Artifact Registry)代码库…

数学建模-多元线性回归分析

回归分析介绍和分类 数据分类及数据的来源 线性回归 四种模型的解释、虚拟变量的设置以及交互项的解释 3个定量,7个定类插入,表格,包含标题,标题换黑色 可以右键,复制表格,excel中设置三线表 ,gen(A)是参数…

基于Gerapy部署分布式爬虫管理平台

文章目录 1. 服务器安装scrapyd1.1 scrapyd安装1.2 scrapyd配置允许外网访问1.3 服务器安全组开启端口1.4 服务器防火墙开启端口1.5 scrapyd测试 2. Gerapy 环境搭建2.1 gerapy安装2.2 gerapy测试2.3 项目部署2.4 定时任务2.5 线上代码修改 Gerapy是一个Python的分布式爬虫部署…

Python 5类数据容器总结

数据容器简单分类: 是否支持下标索引 支持(序列类型):列表(list)、元组(tuple)、字符串(str)不支持(非序列类型):集合&…

论文解读: 2023-Lost in the Middle: How Language Models Use Long Contexts

大模型使用的关键在于Prompt,然而大模型存在幻觉现象,如何减少这种现象的发生成为迫切解决的问题。外部知识库LLM的方法可以缓解大模型幻觉,但是如何撰写Prompt才能发挥LLM的性能。下面介绍这篇论文说明上下文信息出现在Prompt什么位置使模型…

Python 算法基础篇之 Python 语言回顾:变量、条件语句、循环语句、函数等

Python 算法基础篇之 Python 语言回顾:变量、条件语句、循环语句、函数等 引言 1. 变量2. 条件语句3. 循环语句 a ) for 循环 b ) while 循环 4. 函数总结 引言 Python 是一种流行的编程语言,具有简洁而易读的语法。在学习算法时,了解 Python…

被B站用户高赞的广告文案:暴涨900万播放

今年6月,B站公布第一季度财报数据,B站日均活跃用户达9370万,月活3.15亿。在高月活的基础上,用户日均使用时长已经到了96分钟,日均视频播放量达41亿。 来源-B站 用户属性年轻、活跃度高已经成为B站典型的平台标签&…

Apikit 自学日记:私有云才有的测试文件库功能,该如何使用呢

在 APIkit 的私有云版本中,提供了测试文件库功能。不过目前该功能仅供私有云产品,线上SaaS产品不提供测试文件库功能 API自动化测试中可以添加文件参数。在这里统一管理所有测试文件。 在测试文件库界面,点击上传文件: 在私有云产…

【C++】STL反向迭代器模拟实现,迭代器适配器,迭代器类型简单介绍

反向迭代器 前言正式开始基本演示模拟实现的大致思路基本框架前置、--*重载->重载list和vector适配反向迭代器迭代器的类型库中reverse和sort模板参数中的迭代器reversesort 前言 本篇主要讲反向迭代器的模拟实现。 能够加深各位对泛型的理解。 前面我那篇string介绍里面…

Ubuntu学习笔记(二)——文件属性与权限

文章目录 前言一、用户与用户组1.用户(文件拥有者)2.用户组3.其他人 二、Linux用户身份与用户组记录文件1. /etc/passwd2. /etc/shadow3. /etc/group 三、文件属性与权限1. 查看文件属性的方法(ls)2.文件属性详细介绍2.1 权限2.2 …

Python多个if代码优化

一、背景 大量的if … elif…代码非常难看,也很难维护。扩展不太方便 二、优化方案 以下栗子展示不同的角色获取折扣信息。 1、正常写法 def discount_algorithm(user_role):if user_role admin:discount 0.1return discountelif user_role msp:discount 0.…

【protobuf】socket.io序列化和反序列化

1.背景 后台利用socket.io发送websocket消息&#xff0c;加密用到protobuf 2.反序列化时遇到问题 Traceback (most recent call last): File "D:/locust/Nigeria/test3.py", line 40, in <module> play.ParseFromString(decode_spin_str) google.proto…

Cesium 实战 - 通过 Blender 将模型组件拆解为独立子模型

Cesium 实战 - 通过 Blender 将模型组件拆解为独立子模型 拆分模型1.导入模型&#xff08;J15.glb&#xff09;2.拆分模型3.保存模型 完整代码在线示例 上篇博客介绍了 Cesium 实战 - AGI_articulations 扩展&#xff1a;模型自定义关节动作 这篇接着介绍一下&#xff0c;模型…

【Redis】高可用之三:集群(cluster)

本文是Redis系列第6篇&#xff0c;前5篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xf…

YZ04:文本批量替换使用说明文档

【分享成果&#xff0c;随喜正能量】达摩祖师说&#xff1a;“不谋其前&#xff0c;不虑其后&#xff0c;不恋当今。”你內心安适&#xff0c;就会宠辱不惊&#xff0c;俯仰无愧&#xff0c;从一天到一年&#xff0c;从一年到一生&#xff0c;秒秒感受安详&#xff0c;活在至真…

MySQL-数据库读写分离(中)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

常见java知识点1

目录 1 什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f; 2 使用Spring框架有什么好处&#xff1f; 3 Java常用的包&#xff08;列举六个&#xff09; 4 Arraylist 和 Linkedlist 的区别 5 HashMap和Hashtable的区别 6 Java中常见的…