1. 引言
语音驱动3D面部动画的初期研究主要是在音素和视觉对应音素之间建立复杂的映射规则[1]-[4],但这种方法通常具有局限性,基于音素的方法需要明确定义协同发音规则和手工工作。随着深度学习的发展,语音驱动的3D面部动画领域在学术界和工业界都经历了显着的增长。深度学习的方法是一种自动将新的语音输入映射到面部动画输出的模式,基于端到端深度学习的方法有效地生成精确的口型同步和上脸动画的全脸动画。由于人们对人脸表情特别敏感,提高逼真的人脸表情动画及嘴部运动等的研究已经成为图形学、计算机视觉领域的热门研究课题。最近的研究主要集中在基于深度学习的3D人脸动画上,它可以产生更生动的3D人脸表情[5][6][7]-[12]。Fan等人[13]考虑了长序列的连续性,提出使用基于Transformer的模型来获得上下文相关的音频信息,并自回归生成连续的面部运动。它使用自监督的预训练语音模型解决了现有视听数据集中可用数据的稀缺性,但关于获得较精确的嘴唇同步方面仍然存在问题。Peng等人[14]引入了一个自监督唇读约束,提高嘴唇运动的准确性。其建立了一个交换图,促进音频、文本和唇形之间的潜在特征交换,以创建逼真且易于理解的面部动画。尽管在3D面部动画方面取得了新的进展,然而产生更加逼真的面部动作仍然是一个挑战,且大多数现有的语音驱动3D面部动画方法依赖于确定性模型,这些方法往往不能充分捕捉复杂的多对多关系:多个音频信号可以匹配许多不同的面部表情动画,这限制了合成动画的多样性。
为了解决上述限制和挑战,本文在先前工作的基础上进行改进并设计出Self-Diffuser模型,为语音驱动的3D面部动画生成高质量、多样化、更加生动逼真的面部运动。Self-Diffuser模型主要包括三个部分:一是预训练的大语言模型wav2vec 2.0音频编码器,二是较为复杂的Transformer解码器码,三是在编码器与解码器之间引入的扩散机制。三个部分在Self-Diffuser模型架构下一起工作,产生了更加精确的语音驱动面部表情的嘴部动作,同时与言语相关性较弱的上脸会表现出更大的面部表情多样性。提高了语音驱动的面部表情更精确的嘴部运动;增强了说话松散相关的上半部表情方面,产生更贴近于真实说话表情的上面部运动;同时提高了生成语音驱动的3D人脸动画的多样性能力。
2. 相关工作
语音驱动的面部动画可以分为两类:i) 二维说话头的渲染;ii) 三维语音驱动的动画合成,使用三维顶点数据进行语音合成的相关任务。本文主要研究基于扩散模型的三维语音驱动面部动画的合成问题。因此在接下来的两小节主要介绍语音驱动的3D面部动画研究及运动扩散合成方面的研究现状。
2.1. 语音驱动的3D面部动画研究现状
近年来国内外学者在面部动画合成方面做了很多的研究。Pham等[15]的长短时记忆模型(Long Short- Term Memory, LSTM)可以解决传统神经网络无法对大跨度的上下文联系进行建模的问题。Guanzhong Tian等[16]的端到端的深度学习方法,用于仅从音频生成实时面部动画。倪虎[17]等将经过长短期记忆–递归神经网络(LSTM-RNN)模型训练后的输出结果,输入到人脸表情动画合成系统来实现语音驱动唇形动画的生成。FAN等[18]将深度神经网络应用于文本驱动面部动画中。阳珊等[19]在前期研究的基础上,采用语音输入的方式尝试将BLSTM-RNN应用于语音驱动的面部动画任务中。Karras等人[7]提出了一种端到端卷积神经网络,该网络学习从输入波形到人脸模型的3D顶点坐标的映射;通过在网络中引入一个额外的情感成分来解决音频和人脸之间映射的模糊性。Cudeiro等人[8]提出了音频驱动的面部动画方法,利用时间卷积和控制参数,从语音信号和静态角色网格中生成逼真的角色动画。Richard等人[9]使用分类潜在空间来解决缺乏上脸运动的问题,该分类潜在空间基于跨模态损失来解开音频相关和音频不相关信息。这些方法只专注于训练从语音到面部的映射,而忽略了嘴唇运动的可懂度,这会限制嘴唇运动的准确性,并导致相同发音的歧义。Xing等人[20]通过训练矢量量化自动编码器(VQ-VAE)[21]来自重构真实的面部运动,引入离散运动先验,减少了过度平滑面部运动的问题。Haque等人[22]在训练过程中有效地采用了自监督预训练的HuBERT模型,它能够在不使用大量词汇的情况下,将音频中的词汇和非词汇信息结合起来,而且它消除了Transformer等复杂顺序模型的使用,速度提高了4倍。
2.2. 扩散机制的研究现状
扩散的概念最早由Sohl-Dickstein等人[23]提出,在生成任务中扩散模型已经成为主流研究,其中包括图像,音视频,手势及人体运动等的生成[24]-[28]。其思想是数据分布中的样本通过扩散过程对带有高斯噪声的图像逐渐去噪,然后通过训练神经模型学习逐渐去噪样本的相反过程来逆转扩散过程[29]-[31]。最开始扩散主要应用于3D身体运动生成和2D谈话面部生成。如Tevet等[32]提出了基于文本描述生成人体动画的人体运动扩散模型(Human Motion Diffusion Model, MDM),通过采用基于Transformer的架构,并引入带噪声的真值运动作为网络的额外输入,成功地在推理时生成了多样性的动画。Bigioi等人[33]提出了一种利用扩散来生成说话头动画的语音驱动的视频编辑方法。Face Diffuser[24]使用预训练的语音表示模型将音频信号转换为潜在特征向量序列,构成了基于循环GRU层的扩散模型。Thambiraja B[12]等人使用基于卷积的架构,可以实现在一个小的高质量数据集上进行模型训练,并获得更高的合成质量和多样性。Diff Pose Talk[28]使用了基于Transformer的架构的语音到运动的扩散模型,并提出了一种风格编码器来实现短参考序列的合成,但其个性化功能被限制在预训练头部模型的系数空间内。Diffusion Talker[34]提出一种基于扩散的方法,利用对比学习来个性化3D面部动画和知识蒸馏来加速3D动画的生成。Motion Diffuse[35]是第一个基于扩散模型的文本驱动运动生成框架。
3. 方法
本文设计了如图1所示的Self-Diffuser模型,通过学习面部表情去噪,并根据输入语音生成动画,基于预训练的wav2vec 2.0模型的音频语音嵌入、噪声的真实值动画序列的嵌入及说话者身份标签嵌入相结合,用于训练面部解码器,面部解码器由Transformer解码器组成[14]。
注:图中subject_emb表示说话人身份标签嵌入(Subject Embedding)。
Figure 1.Self-Diffuser model: Learn facial expression denoising and generate animations based on input speech
图1.Self-Diffuser模型:学习面部表情去噪,并根据输入语音生成动画
3.1. 模型架构
本文的Self-Diffuser模型使用自监督约束来捕捉语音和嘴唇形状之间的复杂关系,同时引入扩散机制,提高模型多样性的同时生成更逼真、更准确的面部表情。
3.1.1. 音频编码器
本文的Self-Diffuser模型利用先进的自监督预训练语音模型wav2vec 2.0[36]进行音频特征提取。wav2vec 2.0在大量音频数据上训练,并在预训练模型的微调阶段,冻结TCN层[37],而其他层有助于模型训练,并不断变化以提取模型所需的特征来保证所提取的音频特征包含所说单词的大量信息[14]。公式定义如下:
(1)
其中,
表示音频编码器提取的音频特征,其中,
为该音频编码器的参数。
3.1.2. 扩散机制
是来自具有形状(m,v)的数据集的真实值视觉帧的序列,v为顶点数乘以3。在训练过程中,随机从[1, T]中抽取一个时间步长t,表示在
上应用的噪声步长数来获取
,公式如下[24]:
(2)
其中,m为序列中的帧数,t为扩散时间步长,
为在时间步长t处的恒定噪声,并使得
。
本文的Self-Diffuser模型遵循MDM[32],MDM是一种基于Transformer的基于无分类扩散的生成模型,其被设计为在每个扩散步骤中学习预测实际动画数据,而不是对噪声水平的预测[24]。本文的Self-Diffuser模型的扩散机制的设计使得预测结果取决于输入的音频,更适用于本文的面部动画生成任务。
本文的Self-Diffuser模型引入的扩散推理是一个从T递减到1的迭代过程,见图2。初始噪声由正态分布N (0, 1)中的实际噪声进行表示。在推理时间T内的每一步中,本文为网络架构提供音频和带有噪声的动画输入,其中噪声为随机采样。然后将预测得到的面部运动再次扩散并馈送到下一步的迭代过程中。从T到1进行所有扩散时间步长,并逐步改进每个推理步骤的预测[24]。
Figure 2.The diffusion inference process introduced in the Self-Diffuser model
图2.Self-Diffuser模型中引入的扩散推理过程
3.1.3. 面部解码器
本文的Self-Diffuser模型使用基于Transformer[38]的结构来设计解码器,其任务是利用编码的音频、说话人的身份向量化和噪声的潜在表示中产生最终的动画帧。Transformer解码器由多层掩蔽的自注意机制和前馈神经网络组成。掩蔽的自注意机制使解码器能够专注于输入序列的相关部分以产生合适的输出。然后将前馈神经网络应用于结果上下文向量以生成最终输出[14]。最后,网格解码器以音频特征、说话人的身份嵌入向量化和噪声的潜在表示为输入,输出三维网格变形,可以表示为:
(3)
其中,
表示音频编码器提取的音频特征、说话人的身份向量化和噪声的潜在表示的拼接嵌入,
为解码器参数,
表示生成的三维网格变形。
3.1.4. 损失函数
本文的Self-Diffuser模型利用简单损失函数,通过实验表明利用简单损失函数来学习变分界也更容易实现且取得的效果也更好[24],损失被定义为:
(4)
4. 实验
4.1. 数据集
本文在一个公开可用的3D数据集BIWI[39]进行了训练和测试。BIWI是一个3D视听语料库,由14名受试者(6名男性和8名女性)说出40句话,以25 fps的速率捕捉动态3D面部,注册的拓扑结构有23,370个顶点,平均序列长度约为4.67秒。本文对BIWI采用与参考文献[8][9][13][14][20][24]中所做的完全相同的数据集分割,并且只使用情感序列子集,数据集划分结果如表1所示。结果划分包含:192个句子的训练集;包含来自6个训练对象的24个句子的验证集。有两个测试集:BIWI-Test-A (测试集A),包含来自6个可见受试者的24个句子;BIWI-Test-B (测试集B),包含来自其余8个不可见受试者的32个句子。BIWI-Test-A测试集用于计算客观指标,BIWI-Test-B进一步用于计算多样性度量。
Table 1.Dataset division: test set A and test set B
表1.数据集划分:测试集A和测试集B
数据集 |
BIWI |
训练集 |
6个训练对象 |
每个对象32个句子 |
验证集 |
6个可见受试者 |
每个对象4个句子 |
测试集A |
6个可见受试者 |
每个对象4个句子 |
测试集B |
8个不可见受试者 |
每个对象4个句子 |
4.2. 实验设置
本文的Self-Diffuser模型被设计为接收音频作为输入,在预处理阶段,将音频采样率转换为16 kHz。BIWI[39]的处理速度为25 fps。对于训练阶段的模型优化,本文使用Adam优化器[40],并将学习率和批大小分别设置为1e−4和1。整个网络在NVIDIA RTX 4090上进行训练(100个epoch)来完成训练过程。本文提出的模型的超参数设置如表2所示。
Table 2.Hyper parameter settings of the model in the training phase
表2.本文模型在训练阶段的超参数设置
超参数 |
值 |
优化器 |
Adam |
学习率 |
1e−4 |
迭代次数 |
100 |
扩散步长 |
500 |
顶点维度(BIWI) |
70,110 |
4.3. 评估指标
LVE(LipVertex Error,嘴唇顶点误差):嘴唇顶点误差是唯一公开提出的用于语音驱动面部动画评估的度量,它测量一个序列相对于真实的唇偏差,即计算每帧所有唇顶点的最大L2误差,并取所有帧的平均值。其计算公式为:
(5)
(6)
其中,n:每一帧的顶点数;m:每一序列的帧数;q:序列的数;
为真实值顶点坐标,
为预测值顶点坐标。
FDD(Upper-Face Dynamics Deviation,上面部动态偏差):它测量了运动序列相对于真实值的面部动力学变化。上脸表情取决于个人的谈话风格和讲话内容的语义,其与讲话风格等只是松散相关[20]。其中,上面部动态偏差(FDD)计算公式为:
(7)
其中,
表示第v个顶点的运动,
是上面顶点的索引集,dyn (∙)表示元素L2范数沿时间轴的标准差[20]。
Diversity(多样性度量):本文模型架构引入了扩散机制,可以为与语音不相关或松散相关的面部区域生成大范围的运动和多样性表情。因此额外引入了文献[24]中用于扩散模型的面部多样性度量来测试模型的多样性能力。
多样性指标定义如下:设
为生成的序列,以受试者
为条件,其中S为训练主题列表。本文计算了每两个序列在不同主题条件下的平均顶点差,然后取这些差的均值,定义序列的多样性如下:
(8)
其中,S为训练对象列表,而且
为以S的第i个主题为条件的预测动画序列。
5. 实验结果
5.1. 定量评估
本文在BIWI[39]数据集上进行了实验,将本文构建的Self-Diffuser模型与最先进的方法[8][9][13][14][20][24]在测试集BIWI-Test-A下,通过计算客观指标LVE、FDD进行了比较。其结果如表3所示。
Table 3.Quantitative evaluation results of objective indicators LVE and FDD
表3.客观指标LVE、FDD的定量评估结果
方法 |
LVE↓(×10−4mm) |
FDD↓(×10−5mm) |
VOCA[8] |
6.5563 |
8.1816 |
Mesh Talk[9] |
5.9181 |
5.1025 |
Face Former[13] |
5.3077 |
4.6408 |
Code Talker[20] |
4.7914 |
4.1170 |
Facediffuser[24] |
4.2985 |
3.9101 |
Self Talk[14] |
4.2485 |
3.5761 |
我们的方法 |
4.1295 |
3.0831 |
表3结果表明,在BIWI数据集上,本文模型较其他模型产生了更低的嘴唇顶点误差,表明它产生了更加精确的唇同步运动。同时,本文模型在上面部动态偏差方面也实现了最佳性能,即预测的上脸表情与面部动态趋势之间的一致性更高。
由于本文的Self-Diffuser模型架构中引入了扩散机制,本文在BIWI-Test-B测试集中计算了所有序列的Diversity值,见表4。
Table 4.Quantitative evaluation results of Diversity
表4.多样性度量Diversity的定量评估结果
方法 |
Diversity↑(×10−3mm) |
Self Talk[14] |
3.51 × 10−7 |
Code Talker[20] |
0.0003 |
我们的方法 |
5.3152 |
由表4可知,本文提出的模型在生成面部与语音不相关或松散相关的区域生成大范围的运动和多样性表情上取得了比Self Talk[14]更好的结果。同时本文的模型生成的表情多样性的结果也优于Code Talker[20]。
5.2. 定性评估
5.2.1. BIWI-Test-A测试集下的定性评估
本文在BIWI-Test-A的测试方法下将真实值与本文的Self-Diffuser模型及最先进的方法[13][14][22][24]进行了面部运动的可视化的定性评估对比。图3至图9均为在BIWI-Test-A的测试方法下,面部运动的比较结果。
Figure 3.Analysis of the mouth movement of the word “what” under the syllable /wɒt/
图3.分析“what”单词在/wɒt/音节下的嘴部运动
Figure 4.Comparison of the mouth movement of the word “sacrifice” under the syllable /sækrɪfaɪs/
图4.对比“Sacrifice”单词在/sækrɪfaɪs/音节下的嘴部运动
Figure 5.Comparison of the mouth movements of the word “table” under the syllable /teɪbl/
图5.对比“table”单词在音节/teɪbl/下的嘴部动作
通过不同模型的发音口型对比,结果表明本文的Self-Diffuser模型产生了更精确的嘴部运动,且更贴近于真实值的嘴部动作。如图3所示,对于需要张嘴的音节,如“/wɒ/”,本文模型的上唇会有更明显的向上卷曲运动。如图4、5所示,对于需要闭嘴的音节,如“/bl/”、“/ri/”,较其他模型,本文的方法产生了更准确的闭嘴动作。
5.2.2. BIWI-Test-B测试集下的定性评估
Figure 6.Comparing the mouth movements of the word “what” under the syllable /wɒt/, the syllabic mouth shape before opening the mouth
图6.对比单词“what”在音节/wɒt/下的嘴部动作,在张嘴前的音节嘴型
Figure 7.Comparison of the mouth movements of the open-mouth syllable word “an” under the syllable /ən/
图7.对比张嘴音节单词“an”在音节/ən/下的嘴部动作
Figure 8.Comparison of the mouth movements of the closed syllable word “expensive” under the syllable /ɪk’spensɪv/
图8.对比闭嘴音节单词“expensive”在音节/ɪk’spensɪv/下的嘴部动作
Figure 9.Compare the mouth movements of the word “expensive” under the syllable /ɪk’spensɪv/
图9.对比单词“expensive”在音节/ɪk’spensɪv/下的嘴部动作
进一步,本文在BIWI-Test-B的测试方法下,也将真实值与本文的Self-Diffuser模型及参考文献[13][14][22][24]进行了面部运动的可视化的定性评估对比。同样的,通过不同模型的发音口型对比,结果表明本文模型产生了更精确的嘴部运动,且更贴近于真实值的嘴部动作。如图6所示,对于张嘴前的音节嘴型,比如“/w/”,本文模型的上下唇会有更明显的卷曲运动。如图7所示,对于需要张嘴的音节,比如“/ən/”,本文模型生成的上下唇合成了更明显的张口运动。如图8所示,对于需要闭嘴的音节,如“/pen/”,本文的方法合成了较于其他模型更准确的闭嘴动作。对于音节“/sɪ/”,如图9所示,本文的方法也产生了与真实值更加贴合的嘴部动作。
5.3. 消融实验
为了检验本文提出的Self-Diffuser模型架构中各组成部分对生成的3D说话面部质量的影响,本节进行了消融实验。具体来说,本文进行了去除扩散机制、更换编码器及更换解码器的实验;同时通过实验验证了本文的简单损失函数比一些复杂的损失函数在LVE、FDD方面取得了更好的效果。
本文的Self-Diffuser模型在BIWI-Test-A测试集下的消融实验,主要包括:扩散机制的消融研究、编码器的消融实验、解码器的消融实验以及损失函数的实验研究。并在各部分消融实验中通过计算客观指标LVE、FDD进行定量分析。
Table 5.Ablation of the BIWI-Test-A dataset
表5.BIWI-Test-A数据集的消融
扩散机制的消融研究(BIWI) |
模型 |
LVE ↓(×10−4mm) |
FDD ↓(×10−5mm) |
w/o Diffusion |
11.785 |
5.646 |
我们的方法 |
4.1295 |
3.0831 |
编码器的消融研究(BIWI) |
模型 |
LVE ↓(×10−4mm) |
FDD ↓(×10−5mm) |
Hubert |
4.6993 |
5.346 |
我们的方法 |
4.1295 |
3.0831 |
解码器的消融研究(BIWI) |
模型 |
LVE ↓(×10−4mm) |
FDD ↓(×10−5mm) |
RNN |
4.725 |
4.315 |
GRU |
4.547 |
3.2308 |
我们的方法 |
4.1295 |
3.0831 |
损失函数的消融研究(BIWI) |
模型 |
LVE ↓(×10−4mm) |
FDD ↓(×10−5mm) |
with Lrec, Lvel |
4.3329 |
3.6448 |
with Lrec, Lvel, Llat |
4.4318 |
4.1515 |
with Lrec, Lvel, Llat, Lctc |
4.4447 |
4.808 |
我们的方法 |
4.1295 |
3.0831 |
5.3.1. 简单损失函数的实验
为了验证本文的Self-Diffuser模型的简单损失函数(Λ)具有更好的性能,本文逐步添加了Self Talk[14]中的重建损失函数(Reconstruction Loss, Lrec)、速度损失函数(Velocity Loss, Lvel)、潜在一致性损失函数(Latent Consistency Loss, Llat)和文本一致性损失函数(Text Construction Loss, Lctc)。如表5所示,在BIWI数据集,在简单损失函数的基础上加上Lrec、Lvel、Llat、Lctc后计算的LVE和FDD指标都高于本文的简单损失函数。表明在BIWI数据集上,本文的简单损失函数在上面部动态偏差及嘴唇的运动生成方面都表现出了更加优越的性能。
5.3.2. 编码器模块的实验
为了证明本文的Self-Diffuser模型架构中的编码器为最优选择,通过将Hubert编码器取代本文模型中使用的wav2vec 2.0编码器的方式进行实验。如表5所示,在BIWI数据集上,本文的wav2vec 2.0编码器在LVE、FDD客观指标方面表现更好。
5.3.3. 解码器的对比实验
为了证明本文的Self-Diffuser模型架构中的解码器在本文模型中的表现更好,通过将更简单的GRU解码器取代本文更复杂的Transformer解码器的方法进行了消融实验。表5中显示了在BIWI数据集上的客观结果,即本文的Transformer解码器在测试配置中的LVE、FDD的客观指标方面表现更佳。
5.3.4. 扩散机制的消融实验
为了验证扩散机制在本文的Self-Diffuser模型架构中的表现,本文训练了一个没有扩散的类似模型进行比较。如表5所示,在BIWI数据集上,本文引入的扩散机制的模型架构比去除扩散机制的模型在LVE、FDD的客观指标方面的结果都较好。
Table 6.Ablation study of diffusion mechanism under the BIWI-Test-B test set
表6.在BIWI-Test-B测试集下扩散机制的消融研究:客观指标多样性度量的比较分析
方法 |
Diversity↑(×10−3mm) |
w/o diffusion |
1.7759 × 10−6 |
我们的方法 |
5.3152 |
如表6所示,在BIWI数据集上进行扩散机制的消融实验,通过Diversity的指标可以看出,引入了扩散机制的本文的Self-Diffuser模型生成的面部表情的多样性明显更好。
5.4. 表情多样性的可视化对比实验
其中深蓝色表示观察到的运动与真实值的差异较少,亮红色表示观察到运动与真实值的差异较多。
Figure 10.Qualitative analysis of the exercise diversity measure of the Self-Diffuser model
图10.Self-Diffuser模型的运动多样性度量定性分析
为了更加直观地分析本文的Self-Diffuser模型在引入扩散机制后在多样性度量方面的表现优于Self Talk[14],对生成的动画序列进行了定性分析,将预测的生成序列与真实值进行比较,并将其差异进行了可视化呈现。本文Self-Diffuser模型从BIWI-Test-B测试集的生成动画序列中,抽取以不同训练主题对象为条件,由相同音频生成的动画序列其中的同一帧,并通过运动多样性度量进行模型多样性的定性分析,结果如图10所示。
与之对比,Self Talk模型从BIWI-Test-B测试集的生成动画序列中,抽取了以不同训练主题对象为条件,由相同音频生成的动画序列其中的同一帧,并通过运动多样性度量进行模型多样性的定性分析,见图11。
其中深蓝色表示观察到的运动与真实值的差异较少,亮红色表示观察到的运动与真实值的差异较多。
Figure 11.Qualitative analysis of the exercise diversity of the Self Talk model
图11.Self Talk模型的运动多样性度定性分析
通过图10和图11分别可以观察到本文的模型架构在不同主题条件作用在生成的动画序列中产生了多样性,而Self Talk[14]的多样性几乎没有。
6. 结论
本文的Self-Diffuser模型架构使用预训练的大语言模型wav2vec 2.0对音频输入进行编码,Transformer进行解码,并将扩散机制整合到生成式深度神经网络中,训练生成以语音为条件的3D面部动画。广泛的消融实验支持本文的网络架构设计选择,证明了本文的Self-Diffuser模型架构在提高人的从嘴唇生成方面具有很好的效果实现且优于当前的方法。
本文的工作提高了生成的唇动作及与说话松散相关的上半部表情的视觉精度,呈现出比较好的性能。通过将扩散机制引入语音驱动的3D面部动画合成任务,提高了生成面部多样化动画序列的能力。本文重新设计了一种更简单的损失函数,生成了逼真且更加精确的嘴部运动。
由于本文提出的方法适用于3D网格,想要在角色上实现仍然需要映射的方式进行实现。此外,由于数据集的面部扫描不包含眼睛和舌头,因此本文的模型目前无法训练生成一个具有眼睛和舌头的面部动画效果。
致 谢
非常感谢Facediffuser、Faceformer、codetalker、selftalk、VOCA、Meshtalk和FacexHuBERT的作者提供的代码以及BIWI提供的数据集。
基金项目
本课题受到“温州大学元宇宙与人工智能研究院”的“重大课题及项目产业化专项资金”(编号2023103)的资助。