首页 / 一种数字人稳定头部姿势生成的方法、装置及介质

一种数字人稳定头部姿势生成的方法、装置及介质有效专利 发明

技术领域

[0001] 本发明涉及人工智能技术领域,具体是一种数字人稳定头部姿势生成的方法、装置及介质

相关背景技术

目前,数字人技术已经在一些领域得到了广泛应用。例如,在客服代理领域,一些公司已经开始使用数字人代替人工客服与用户进行交互;在虚拟助手领域,一些智能手机和智能音箱已经搭载了数字人助手,可以帮助用户完成各种任务;在教育培训领域,一些教育机构已经开始使用数字人作为教学助手,为学生提供个性化的教学服务。
[0002] 一些主流的数字人产品,如硅基智能、风平智能、百度曦灵、腾讯智影等,其所采用的数字人说话肖像合成技术无外乎两种技术栈,即基于GAN的TFG技术,例如wav2lip、DINet等,以及基于NeRF的TPS技术,例如GeneFace++、ER‑NeRF等。前者可实现泛化数字人的嘴唇运动,后者可实现定制化数字人的嘴唇运动以及面部表情、头部姿势、上半身肢体动作的驱动。
[0003] 由于基于NeRF的TPS技术具有明确的3D结构表示,相较于基于GAN的TFG技术,在数字人头部姿态控制的自然度和一致性方面存在优势。即便如此,现有基于NeRF的SOTA方法如ER‑NeRF和SyncTalk,仍存在数字人头部姿势不稳定的问题。究其根本原因为,ER‑NeRF在3DMM重建中,采用稀疏的人脸51个Landmarks进行2D损失计算,而SyncTalk在3DMM重建中,虽然使用co‑tracker光流跟踪获得显著稠密头部关键点,用于2D损失计算,但缺失了明确的3D关键点坐标信息。因此在数字人稳定头部姿势控制方面重点关注以下问题:
其一,稀疏的面部和头部关键点坐标作为监督信号,不足以支撑数字人3DMM的
Shape和Expression系数以及头部在3D空间中旋转角度(旋转量R和平移量T)的高精度拟合;
其二,采用逐帧人脸姿态估计生成的面部关键点,没有考虑帧间的运动信息,形成的监督信号不够平滑;
其三,仅仅采用2D空间的监督,忽略了更为重要的3D空间损失。

具体实施方式

[0018] 下面结合附图和具体实施例对本发明作进一步的说明。
[0019] 实施例1本实施例公开一种数字人稳定头部姿势生成的方法,如图1所示,包括以下步骤:
S01)、采集3到5分钟的原始训练视频,获得原始训练视频 ,原始训练视频
应保持25FPS、2K分辨率、高质量画质,音频应纯净人声、无背景噪声。
[0020] 视频拍摄要求包括如下几点:1、视频的前30s保持相对稳定且自然的头部和身体姿态,并保持正常闭嘴不说话
状态;
2、视频的后3.5min保持正常且自然的说话状态,头部动作幅度保持平滑且缓慢的运动或短时间静止,手部动作不超过胸口且速度不宜过快;
3、整个时域视频中人体部位不存在任何遮挡;
4、女生应扎紧头发并摘掉多余配饰;
5、人声应纯净,无任何环境噪声。
[0021] S02)、对原始训练视频 进行预处理,获得音频文件 、人体上半部分视频文件 和人体上半部分图像帧 。使用FFmpeg工具从 中截取
, 的分辨率为400×400Pixel到512×512Pixel(本实施例取440×440 Pixel),画面应包括人体胸口以上的所有部分,头部位于画面的中上部,双肩宽保持在400Pixel左右。
的索引值i的取值范围为0至 的总帧数减去1,本实施例中,i的取值范围为

[0022] S03)、获得开源的3D人脸模型BFM2009,并获取3D人脸模型上与2D正直人脸51个关键点存在透视投影关系的51个3D关键点3DPoint51。
[0023] 本实施例中,51个3D关键点3DPoint51为3DMM关键点文件lands_info.txt中403个索引的最后51个索引对应的关键点。3DPoint51为正直3D人脸模型的关键点,没有索引值。
[0024] S04)、检测人体上半部分图像帧 上的稀疏68个人脸关键点,并对稀疏68个人脸关键点进行平滑处理,取后51个关键点的坐标值作为2D空间监督坐标标记。
[0025] 本实施例中,使用OpenFace对 进行68个关键点检测并平滑关键点。的索引值与 的索引值保持一致,即每一帧图像都对应一组51个关键点
坐标。
[0026] S05)、对人体上半部分视频文件 进行光流跟踪,获得面部运动光流,选择光流变化显著的478个关键点,并跟踪这些关键点在流动序列中的运动轨迹,作为稠密2D空间监督坐标标记 。
[0027] 本实施例中,使用Co‑Tracker对 进行光流估计,使用拉普拉斯滤波器来选择光流变化显著的478个关键点。 的索引值与 的索引值保持一致,即每一帧图像都对应一组478个关键点坐标。
[0028] S06)、获取最佳焦距 ,获取过程为:设置粗糙3DMM重建的训练数据包括:训练帧 、每一训练帧 对应的2D空间监督坐标标记 ,其中j的取值范围为 ,设置候选焦距 的区间为 和步长为50,设置优化参数包括:
3DMM的形状系数 、3DMM的表情系数 、3D空间中头部旋转的欧拉角
、3D空间中头部旋转的平移向量 ,设置输出值为使用欧拉角
和平移向量 对3D空间关键点3DPoint51进行旋转和平移,并透视投
影到2D空间中,获得投影点坐标 ,设置损失函数 ,损失函数 的数学
表达式为:

对每一候选焦距 设置迭代步长2000并进行迭代训练,使用损失函数
和优化器进行BP更新梯度,对前1000步迭代,固定形状系数 和表情系数
,优化欧拉角 和平移向量 ,后1000步迭代,联合优化形状系数
、表情系数 、欧拉角 和平移向量 ,对比每一候选
焦距 在2000步迭代训练后的损失函数 ,取最小损失对应的候选焦距作为最佳
焦距 。本实施例获取的最佳焦距 。
[0029] 本步骤中,所有索引值j均保持一致,j为从 的图像集合中每间隔8帧取一个图像帧构成的图像集合的索引。候选焦距 的区间取值为 ,步长为50。维度为100, 维度为79、优化欧拉角 和平移向量
的维度为3。
[0030] S07)、获得细致的3DMM的形状系数 、表情系数 、3D空间中头部旋转的欧拉角 、平移向量 。
[0031] 获取过程为:设置细致3DMM重建的训练数据:训练帧 、每一训练帧对应的2D空间监督坐标标记 ,设置优化参数包括:细致3DMM的形状系数
、细致3DMM的表情系数 、细致3D空间中头部旋转的欧拉角
、细致3D空间中头部旋转的平移向量 ,设置输出值为使用细致
3D空间中头部旋转的欧拉角 和细致3D空间中头部旋转的平移向量
对3D空间关键点3DPoint51进行旋转和平移,并透视投影到2D空间中,获得
投影点坐标 ,设置损失函数 ,损失函数 的数学表达式为:

设置迭代步长2000并进行迭代训练,固定焦距为步骤S06)得到的最佳焦距 ,
使用损失函数 和优化器进行BP更新梯度,对前1000步迭代,固定细致3DMM的形状系数和表情系数 ,优化细致3D空间中头部旋转的欧拉角
和细致3D空间中头部旋转的平移向量 ,后1000步迭代,联合优化细致3DMM的
形状系数 、细致3DMM的表情系数 、细致3D空间中头部旋转的欧拉角
和平移向量 ,最终获得细致3DMM的形状系数 、细致
3DMM的表情系数 、细致3D空间中头部旋转的欧拉角 和细致3D
空间中头部旋转的平移向量 。
[0032] S08)、获得稠密2D空间监督坐标标记 3D正直人脸模型上对应的粗糙3D关键点 ,设置训练数据:训练帧 、每一训练帧 对应的稠密2D
空间监督坐标标记 ,设置优化参数为粗糙3D关键点 ,设置输出
值为使用细致3D空间中头部旋转的欧拉角 和细致3D空间中头部旋转的平移
向量 对粗糙3D空间关键点 进行旋转和平移,并透视投影到2D
空间中,获得投影点坐标 ,设置2D空间损失函数 ,2D空间损失函数
的数学表达式为:
,设置迭代步长300并进行迭代训练,固定焦距为步骤S06)得到的最佳焦距 ,固定步骤S07)得到的细致3DMM的形状系数 和表情系数 、细致3D空间中头部
旋转的欧拉角 和平移向量 ,使用 和优化器进行BP更
新梯度,优化粗糙3D关键点 。
[0033] S09)、获得2D空间监督坐标标记 在3D正直人脸模型上对应的精细3D关键点 、3D空间中头部旋转的欧拉角 、3D空间中头部旋转的平移向
量 ,设置训练数据:训练帧 、每一训练帧 对应的稠密2D空间监督
坐标标记 ,设置第一输出值:使用欧拉角 和平移向量
对3D空间关键点 进行旋转和平移,并透视投影到2D空间中,获得投影点坐标
,设置2D空间损失函数 ,2D空间损失函数 的数学表达式为:
,设
置第二输出值:使用 、 和 计算得到3DMM的几何形状
,使用 、 、 和 计算2D到3D空间的映射矩
阵 ,使用映射矩阵 将 向上映射到3D人脸模型空间,得到3D
映射关键点坐标 ,使用 和 对3D空间关键点
进行旋转和平移,得到3D监督关键点 ,设置3D空间损失函数
, 的数学表达式为:
,设
置迭代步长8300并进行迭代训练,前300使用损失函数
和优化器,固定焦距 、 、 和 ,优
化3D关键点 ,后8000使用损失函数 ,固定焦
距 、 、 ,捆绑联合优化3D关键点 、 和
,获得精细3D关键点 、3D空间中头部旋转的欧拉角 、
3D空间中头部旋转的平移向量 。
[0034] 本实施例中,步骤S06)、S07)、S08)、S09)的设置输出值中,获得3D到2D关键点投影的具体步骤一致,以S06)为例进行说明,其详细步骤包括:S6‑1、调用3DMM的forward_geo_sub方法,输入为 、 和
,输出为带有表情的3D人脸的51个关键点的几何形状 ;
S6‑2、对 进行变化,转换为3D空间内XYZ方向上的旋转矩阵 ;
S6‑3、使用 和 对 进行空间旋转和平移,获得带有表情
和头部姿势的3D人脸的51个关键点的空间坐标 ;
S6‑4、使用焦距 和 以及 的1/2分辨率值,进行透视
投影计算,获得最终的 。
步骤S09)的设置第二输出值中,使用 、 、 、
和 计算2D到3D空间的映射矩阵 的详细步骤包括:
S9‑1、使用 和 对 进行空间旋转和平移,获得带有
表情和头部姿势的3D人脸的478个关键点的空间坐标 。
[0035] S9‑2、使用焦距 、 、和 计算得到 。
[0036] 实施例2本实施例公开一种数字人稳定头部姿势生成的装置,包括处理器和存储有程序指
令的存储器,所述处理器被配置为在运行所述程序指令时,执行如实施例1所述的数字人稳定头部姿势生成的方法。
[0037] 实施例3本实施例公开一种存储介质,存储有程序指令,所述程序指令在运行时,执行如实施例1所述的数字人稳定头部姿势生成的方法。
[0038] 上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
[0039] 本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
[0040] 以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其他特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
[0041] 本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件,或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0042] 本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0043] 附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框,以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

当前第1页 第1页 第2页 第3页