掌桥专利:专业的专利平台
掌桥专利
首页

一种用于人脸建模的垂直模型的自适应训练方法及系统

文献发布时间:2024-04-18 20:02:18


一种用于人脸建模的垂直模型的自适应训练方法及系统

技术领域

本发明涉及影视3D建模技术领域,具体涉及克里金模型对人脸建模的智能生成技术领域,特别涉及一种用于人脸建模的垂直模型的自适应训练方法及系统。

背景技术

对于影视或游戏的3D建模技术而言,人脸是人体上最具表达力的一部分,而且人脸表面具有高度复杂的几何形状和十分丰富的颜色纹理信息,因此无论是影视设计、游戏设计或是CG设计,人脸建模的精细程度在很大程度上为作品的效果上限与镜头语言等方面提供了很多选择性与拓展性。但即使目前计算机图形学的技术已经较为成熟,就算是手动建模技术建立起逼真的人脸三维模型仍然是一项具有很大挑战性的工作;而且目前的自动化拓扑建模及UV展开(映射)技术正在稳步发展(例如Blender软件的FaceBuilder技术),其基于特定的模型读取目标图形的训练点数据,在三维建模软件中输出实际的三维模型,其建模难度也较为困难。

目前对于上述自动化建模及拓扑人脸三维模型的算法中,克里金模型(Kriging)是可选技术之一。Kriging模型又称为空间自协方差最佳插值算法,它是法国地理数学家Georges Matheron提出的一种针对地质环境的建模方法;从算法层面来说,它属于一种最优内插策略。Kriging模型不仅考虑了观测点(特征点)和被估计点(非特征点)的相对位置,而且还考虑了各个观测点之间的相对位置关系;因此该方法逼近程度高,外推能力强,使用范围广。同时Kriging模型作为人脸自动化拓扑建模技术的驱动模型技术已经较为成熟,甚至可以为后续的人工智能视频渲染技术提供模型基础。其原理抽象化后也较为直观:如果将人脸放平,实际上其三维的结构及拓扑特征,也无异于一种“地质结构”。

近年来新开发的基于主动学习Kriging模型的蒙特卡洛模型(AK-MCS)的建模技术相比传统技术中机械地布置训练点,AK-MCS能够“主动”地选择靠近极限状态面的训练点来自动构建Kriging模型,因此其能极大提高模型训练的效率。但Kriging模型的小失效概率的估计是一个具有挑战性的问题;为了解决这一缺陷,延伸出了基于主动学习Kriging模型(Active Learning Kriging,ALK),但通常需要大量的候选样本,并且每次选择样本都需要Kriging模型对大量候选点进行预测,这使得学习过程非常耗时。为了解决这一问题,现有技术中已经提出了多种结合ALK模型和先进抽样法的策略。

现有技术中有将ALK模型与IS结合,提出了AK-IS方法。其基本思想是首先利用FORM找到功能函数的最有可能失效点(MPP),然后围绕该MPP点生成建立ALK模型的重要抽样样本池。然而,FORM只能求出单个MPP点,对于存在多个MPP点的功能函数,AK-IS会出现低估失效概率的情况。为了弥补这一不足,又有现有技术提出了能够获取多个MPP点的Meta-AK-IS2方法。又有现有技术提出采用自适应抽样域来识别功能函数的所有最有可能失效区域,然后利用该失效域内的样本通过核密度估计来构建重要抽样函数,并生成主动学习的候选样本池,该方法被命名为ALK-KDE-IS。

最新技术中,提出了利用多目标优化算法来搜寻多个MPP点的策略,即ALK-EMO-IS和ALK-MCS。其基本思路大致是先构建一个极限状态函数的近似代理模型,而后通过进化多峰优化算法来识别该代理极限状态函数的多个MPP点,并围绕这些MPP点建立重要抽样函数,生成更新ALK模型的重要样本池。

尽管这些传统技术在处理小失效概率问题上已经有一些方法取得了进展,可为人脸建模的技术达到了一定的有益效果,但其总体上仍然存在一些技术问题。其中之一就是调用功能函数的次数过多,主要是因为传统的收敛准则通常过于严格和保守,导致在达到一定的精度要求后,仍然需要继续调用功能函数进行更多的计算;研究表明,当Kriging模型失效概率的精度达到一定水平后,即使再增加大量的训练点,对提升失效概率精度的效果也可以忽略不计。

因此,调用功能函数的次数过多的现象无疑会增加计算成本和时间。进而导致Kriging模型生成人脸模型所需的计算资源及效率大打折扣,进而影响到后续人工智能视频渲染阶段的效率。为此,本发明提出一种用于人脸建模的垂直模型的自适应训练方法及系统。

发明内容

有鉴于此,本发明实施例希望提供一种用于人脸建模的垂直模型的自适应训练方法及系统,以解决或缓解现有技术中存在的技术问题,即如何对ALK模型的训练提供一个智能化的机制,即智能化收敛及判定机制,以此为出发点实现对效率的优化,并对此至少提供一种有益的选择。本发明实施例的技术方案是这样实现的:

第一方面,一种用于人脸建模的垂直模型的自适应训练方法:

(一)概述:

对于人脸建模领域所使用的垂直性ALK模型而言,在评估ALK模型中的Kriging模型的精度时,需关注其估算失效概率的准确性,而非仅仅关注符号预测的准确性。这个问题涉及到可靠性分析中的收敛性和误差控制。传统的收敛准则通常基于数学上的收敛性证明,以确保计算结果的精确性和稳定性。然而这些准则在传统技术中,通常是以函数值误差或其统计特性作为收敛依据,而不是直接针对失效概率误差进行收敛判断。

因此,为了解决这个问题,需要进一步设计基于失效概率误差的收敛标准的技术方案。这种技术方案的标准可以直接衡量失效概率估计的精度,并在达到目标精度要求时及时终止学习过程。通过减少不必要的计算和调用功能函数的次数,可以提高计算效率并降低成本。

(二)技术先导:

2.1 ALK模型:

现有的ALK模型由(常数)回归过程和随机过程两部分构成:

为ALK模型回归过程部分,代表了功能函数g(x)的全局平均响应,β仅在2.1中表达为常数;z(x)为平稳高斯随机过程,它反应了局部响应和全局响应之间的偏差。例如给定一组DoE(Design of Experiment,试验规模,即样本点集合),其中m为训练点的总次数:

对于DoE,功能函数g(x)输出的响应值会服从一个高斯分布,其预测均值

DoE的预测方差

其中,T是转换矩阵,

YANG X,CHENG X. Active learning method combining Kriging model andmultimodal-optimization-based importance sampling for the estimation of smallfailure probability[J]. International Journal for Numerical Methods inEngineering,2020,121(21):4843-4864.

ECHARD B,GAYTON N,LEMAIRE M. AK-MCS:An active learning reliabilitymethod combining Kriging and Monte Carlo simulation[J].Structural Safety,2011,33(2):145-154.

2.2 ALK收敛规则及其技术改进点:

传统ALK 模型的收敛准则都是基于学习函数数值来定义的,例如上述文献的ALK-MCS的收敛标准定义为:

在ALK模型对人脸训练集执行训练时,MPP点的失效概率的精度是最终关注的核心目标,而不仅仅是符号预测的准确性。尽管符号预测的准确性可以确保失效概率的准确估算,但这导致建立的Kriging模型在宏观层面上过于专注于精确预测失效概率。研究表明,当Kriging模型失效概率的精度达到一定水平后,即使再增加大量的训练点,对提升失效概率精度的效果并不显著。

因此申请人认为,在评估Kriging模型的精度时,需关注其估算失效概率的准确性,而非仅仅关注符号预测的准确性。因此可以明确本技术方案的改进出发点为:如何从评估的失效概率误差出发,制定基于失效概率精度的收敛标准,进而推导主动学习的误差收敛准则,使Kriging模型在达到预定目标精度后自动停止学习过程,避免添加不必要的训练点;以此为出发点实现对ALK模型的训练效率进行优化。

(三)技术内容:

考虑评估的失效概率误差的话,可以首先拟定一个最优辅助概率密度函数(Probability Density Functions,PDF)来展示其误差的现象;PDF包括一个随机变量x,PDF描述了x的概率属性。定义概率密度函数表达为p(x),其为非负值即p(x)≥0,并在其所能取值的区间内积分值为1,即:

上式的意义用于描述一个随机变量在任何一个区间的概率,因此可进一步表示为:

但上式没有实践意义,因为其分母中包含有未知的失效概率PF。但从侧面提示了我们,不妨利用失效域样本来近似的构建类似于失效概率PF的功能并纳入考虑,基于上式构建一个近似最优的辅助概率密度函数p(x)’。利用辅助概率密度函数p(x)’组成候选样本池S,并伴随着Kriging模型的更新进行重新生成。在这个过程中,计算候选样本池S中每一个样本的函数值s,并得到当前Kriging模型评估的失效概率误差上界;以此,拟定目标失效误差阈值,就可以使得Kriging模型的收敛精确化。此时本技术方案的脉络已经十分明确,即按照如下步骤S1~S4执行相应的作业。

3.1 步骤S1,生成初始训练点:

从随机变量空间σ内抽取出N个均匀分布的初始样本点,这些初始样本点代表了人脸的面部特征(例如眼耳鼻喉的位置)这个过程需要执行Halton序列抽样算法(HaltonSequence algorithm)进行抽样;将抽取来的初始样本点统一代入功能函数g(x)中,先计算这些样本点的响应值,然后将其集合化后形成一个初始训练集T;然后,基于当前训练集T建立或更新Kriging模型。

3.1.1 步骤S100,Halton序列抽样算法:

Halton序列是一种低差异序列用于高维空间的均匀抽样。在一维中,Halton序列的第i个元素的抽取值

是均匀分布的基数,k是总的元素i的最大值,/>

同理,对于多维空间,每个维度使用不同的质数作为基数,以确保更好的均匀性。示例性的以二维为例的话,Halton序列的第i个元素的抽取值

对于其它维度也同理。

3.1.2 步骤S101,获得均匀分布的初始样本点:

将Halton序列的每个元素作为随机变量的一个分量。如果有k维空间,那么Halton序列的第i个元素

上述元素的形式

具体地,第i个样本点

其中,所述样本点

然后,将这些样本点

3.1.3 步骤S102,形成初始训练集T:

将得到的样本点

是对应于其样本点/>

3.1.4 步骤S103,基于当前训练集T建立ALK模型所需的Kriging模型:

步骤S103将示例性构建一个标准的常数型Kriging模型:

可通过训练集T中已知的N个样本点

因此,可以设Z(x)是一个二阶平稳的随机函数,则位置

是估计系数;

记估计误差为:

E(r)表示随机变量r的数学期望(即均值);

为了使均方误差最小,估计系数

随后,基于拉格朗日乘数法当估计误差的方差最小时,输入N个样本点

µ是Lagrange乘数,

其中:

其中,

同时上述方程组还要遵循2.1中所述的高斯分布,其形式为:

其中,μ是均值;exp是指数函数。如果是一纬高斯分布的指数函数,则:

式中σ是高斯分布标准差。

结合上述表达式的信息,可将该示例性的Kriging模型的性质总结为:基于对每个样本点

可以理解的是,上述Kriging模型的形式仅仅是一种现有的Kriging模型引入训练集T的示例。其也可以通过若干种不同形式的Kriging模型进行常规变形。

3.2 步骤S2,构建极限状态函数代理模型,生成候选样本池S:

执行高斯混合算法以得到Kriging模型的辅助概率密度函数p(x)’,并利用失效域集合G结合于辅助概率密度函数p(x)’,以产生n个随机变量样本

3.2.1 步骤S200,对辅助概率密度函数p(x)’执行高斯混合算法:

高斯混合模型(GMM)是一种概率模型算法,用于对数据进行聚类和密度估计。在该步骤中,辅助概率密度函数p(x)’其形式为:

其中,

3.2.2 获取失效域集合G:

设Kriging模型对于输入变量x的失效概率估计为

其中失效域集合G包括了若干个失效域样本

n是失效域样本

通过这样的机制,在每次执行步骤S2时,根据当前Kriging模型的预测结果和置信区间,动态地确定失效域样本。这样得到的失效域样本可以用于后续的GMM或其他方法的建模。

失效概率

失效概率

也可以直接使用数值积分或蒙特卡罗模拟来获取

3.2.3 步骤S201,利用失效域集合G结合于辅助概率密度函数p(x)’,以产生n个随机变量样本

首先按照3.2.1的内容,使用高斯混合模型的参数来生成样本。即从混合模型中按照各成分的权重随机选择一个成分,然后从失效域集合G对应的多维高斯分布中生成一个样本。这个过程可以表示为:

符号“~”表示统计学概念中的“...分布于...”。

考虑到随机变量样本中的每个失效域样本点

3.2.4 步骤S202,生成候选样本池S:

重复3.2.3的步骤S201,生成n个随机变量样本

3.3 步骤S3,在候选样本池S中识别下一次更新的训练点:

这一阶段需要首先计算候选样本池S中每一个样本的函数值s,然后选取函数值s中最小的函数值s*及其所对应的失效域样本点

3.3.1 步骤S300,计算候选样本池S中每一个样本的函数值

首先从候选样本池S中抽取每个随机变量样本

、/>

3.3.2 步骤S301,选取函数值s中最小样本点作为下一次更新的训练点:

基于3.3.1的极限状态函数G(y)所输出的每一个样本的函数值

这个过程中,通过计算候选样本池中每个样本的函数值,然后选取具有最小函数值的样本点,确保了在选择下一次更新的训练点时考虑了系统性能与设计要求之间的差异。这样的选择策略可以在主动学习中引导模型的更新,使模型更加关注失效域附近的区域。

3.4步骤S4,判别学习过程的收敛性:

基于最小的函数值s*及其所对应的失效域样本点

3.4.1 步骤S400,计算失效概率误差上界:

基于2.1获取预测均值

其中,

3.4.2 步骤S401,判断是否满足停止学习条件:

如果

即如果失效概率误差上界

3.4.3 步骤S402,计算上界置信区间:

如果未停止学习,可以计算失效概率误差的上界置信区间,以便进行下一轮的Kriging模型更新。这个过程涉及到进一步的正态分布算法和模型更新。其具体的包括步骤S4020~S4023。

3.4.3.1 步骤S4020,计算失效概率误差的标准差

是第i个失效概率误差,/>

步骤S4021,计算置信区间半径Ma:

Z是标准正态分布中的“Z-分数”,对应于所选择的置信水平α(取95%);

Ma可以看做边际值,指的是置信区间的半径,表示置信区间的上下限相对于均值的距离。代表了在置信水平内,对于失效概率误差的估计的不确定性范围。如果Ma越大,表示置信区间越宽,估计的失效概率误差的不确定性越大。反之,如果Ma较小,表示估计的失效概率误差的不确定性较小。

步骤S4022,计算新置信区间CI:

一旦得到失效概率误差的新置信区间CI,可以根据这个区间进行决策以判断是否停止学习或继续更新Kriging模型。

3.4.3.2 步骤S4023,学习策略方案:

按照3.2.2的内容,置信区间为[L(x),U(x)],其中L(x)是下界,U(x)是上界,根据3.4.3.1得到的新置信区间CI对上述置信区间进行调整。本技术方案选择的策略是:

1)如果置信区间较宽,表示对失效概率的估计较不确定,可以采取更保守的学习策略,即增加样本数量或调整学习的步长;

2)如果置信区间较窄,表示对失效概率的估计较为可信,可以采取更积极的学习策略,即减少样本数量或加速学习。

上述策略的表达式为:

γ是原先的学习的步长或学习速率,γ'是更新后的学习的步长或学习速率。f(CI)是一个关于置信区间CI的调整函数:

w(CI)是置信区间的宽度,其中w(CI)=U(x)−L(x)。v是调整参数,用于控制调整的幅度。

该方案使得在置信区间宽度较大时w(CI)较大,f(CI) 较小,因此γ'会相应地减小,使学习更为保守。当置信区间宽度较小时,f(CI)较大,γ'会相应地增大,使模型学习更为积极。

3.5 智能化收敛及判定机制总结:

(1)主动学习:使用主动学习的策略,特别是基于克里金模型的主动学习(ActiveLearning Kriging,ALK)方法。主动学习允许模型自主选择在哪里获取更多的训练点,这样可以集中精力在失效域附近,更加智能地优化模型。

(2)动态调整训练集:在训练过程中,动态地调整训练集。利用当前模型的预测信息,选择在失效域附近可能有用的新样本点,以不断改进模型的预测性能,减少功能函数的调用次数。这有助于避免在不相关的区域花费过多的计算资源。

(3)基于失效概率误差的终止条件:引入了基于失效概率误差的终止条件,即当Kriging模型对失效概率的估计精度达到目标水平时,停止学习过程。这样可以避免在已经足够准确的情况下继续增加不必要的训练点,减少计算成本。

(4)考虑失效概率误差的上界置信区间:在学习过程中,不仅仅是关注模型预测的失效概率,还引入了失效概率误差的上界置信区间。这样的策略在控制学习过程中的不确定性,使得在准确度满足要求时及时停止学习,从而降低计算成本。

3.6 第二种技术方案:

在3.4.3.2部分后,可引入另一种技术方案衔接至步骤S4之后,为整体ALK模型的学习引入一种自适应性的调节机制(本发明中称之为步骤S5)。该机制由D-S证据理论算法(Dempster Shafer,D-S)执行,该算法通过考虑不同渠道的信息,汇总后执行映射并形成一个修正因子ψ,通过该修正因子ψ对步骤S200中的辅助概率密度函数p(x)’执行自适应性修正。

3.6.1 步骤S500,获取证据A和证据B:

首先收集在当前时间步t下的步骤S202形成候选样本池S,作为证据A(集合):

然后收集在上个时间步t-1下的步骤S202形成候选样本池S’,作为证据B(集合):

上述时间步的赋值机制可与Kriging模型的学习速率和步长挂钩;即在当前的学习速率和步长下(根据候选样本池S)获取证据A,同时读取上个学习速率和步长下的(根据候选样本池S的)证据B。

3.6.2 步骤S501,执行Dempster's组合原则:

Dempster's组合原则是D-S证据理论中的一种数学原则。它的原理是解算证据A和证据B的集合,并输出合并信任度分配的集合Bel(C)和合并的不确定性分配Pl(C);其中C是可能的假设或状态空间。

步骤S5020,合并信任度分配Bel(C):

Ai∩B=∅表示证据A和证据B有交集,Ai∩B=∅表示证据A和证据B无交集。同样的,Ai∩C=∅和Bi∩C=∅表示证据A和证据B与假设集合C有交集。Bel(C)表示对于假设集合C的置信度(一个在[0,1]范围内的值)。通过合并不同证据的Bel(C),可得到一个更全面可信的对于假设集合C置信度的评估。这有助于综合考虑来自不同证据的信息,提高对于不同状态的置信水平。

步骤S5021,合并的不确定性分配Pl(C):

在S5020~S5021中,∅表示空集;

Pl(C)表示对于假设集合C的不确定性(一个在[0,1]范围内的值),它与Bel(C)互补。通过合并不同证据的Pl(C),可以得到一个更全面、更可信的对于假设集合C的不确定性的评估。与Bel(C)结合使用,可以提供一个更全面的认识,包括了对于某个状态的置信度以及对于该置信度的不确定性的考虑。

3.6.3 步骤S502,得到联合信任度函数Bel(A∪B):

(Pl(A)∩Pl(B))是所述证据A和所述证据B各自的交集的不确定性分配。

公式中的分子部分是证据A和证据B的交集,通过乘以对方的不确定性分配和信任度,然后除以1−Pl(A∩B) 来进行归一化,得到联合信任度函数。这个联合信任度函数可以用于综合考虑不同证据之间的关系,提供对于某个状态或假设的更全面的信任度评估。

其中,(Pl(A)∩Pl(B))的具体的获取方式为:

和/>

其中,

3.6.4 步骤S503,通过sigmoid函数将所述联合信任度函数Bel(A∪B)映射为一个[0,1]之间的区间值作为修正因子ψ:

e是自然对数的底数(约等于2.718);sigmoid函数的输入为Bel(A∪B)的输出。sigmoid函数的特点是无论输入如何,其输出范围在[0,1]之间,且对输入值的变化相对平滑,因此用于将实数映射到概率范围。

也就是说,修正因子ψ的大小会受到Bel(A∪B)的影响,从而调整了系统中的状态转移函数。sigmoid函数的输出值在Bel(A∪B)较大时趋近于1,在Bel(A∪B)较小时趋近于0。因此修正因子ψ的大小反映了Bel(A∪B)的大小。这种映射保留了因果关系,即ψ的变化与Bel(A∪B)的变化保持一致。通过这种修正,系统可以在考虑历史证据的可信程度时引入一定的不确定性修正,这个设计有助于系统在面对新的数据和变化时能够更加自适应和鲁棒。

3.6.5 步骤S504,对辅助概率密度函数p(x)’进行修正:

基于前文步骤S200的内容可得知,辅助概率密度函数p(x)’其形式为:

其中,

步骤S505需要对辅助概率密度函数p(x)’进行修正,得到新的辅助概率密度函数p(x)’’,且新的辅助概率密度函数p(x)’’经历了自适应性的修正:

p(x)’’的修正过程实际上是一种对原始函数的加权调整。这个调整的目的是引入对修正因子ψ的信任度的依赖性,从而根据当前的证据(由ψ反映)对模型进行自适应修正。

第二方面,一种用于人脸建模的垂直模型的自适应训练系统:所述系统包括处理器、与所述处理器连接的寄存器,所述寄存器中存储有程序指令,所述程序指令被所述处理器执行时,使所述处理器执行如上文所述的垂直模型的自适应训练方法。

与现有技术相比,本发明的有益效果是:

一、智能化的学习及收敛机制:本发明通过采用主动学习和Kriging模型,能够在学习过程中动态选择下一步的训练点,从而更加智能地逼近极限状态面。这有助于避免在不必要的区域添加训练点,提高模型学习的效率。而且通过动态地根据置信区间进行调整,该技术可以增强系统对不确定性和噪声的鲁棒性。这意味着即使在估计有一定的误差或不确定性的情况下,Kriging模型仍然可以提供可靠的人脸模型拓扑结果。

二、精确估计失效概率:本发明的技术关注失效概率估计的精确性,而不仅仅是符号预测的准确性。通过本发明的收敛机制可以确保Kriging模型在估计失效概率时达到预定的目标精度,从而提高模型的可靠性,进而达到人脸模型拓扑建模的高效性。

三、降低计算成本和时间:本发明通过智能地选择下一步的训练点和引入基于失效概率误差的收敛标准,该技术有望减少不必要的计算和调用功能函数的次数。这有助于降低计算成本和学习过程的时间,从而提高整体效率。同时由于只有在必要时才会进行计算和更新,这种方法可以更有效地利用计算资源。

四、避免过度调用功能函数:传统技术存在调用功能函数次数过多的问题,导致计算成本增加。本发明的技术通过引入创新性的收敛标准,及时终止学习过程,避免过度调用功能函数,提高了计算效率,进而提高了Kriging模型对人脸建模拓扑的效率。

五、自适应调整学习策略:利用置信区间的信息,本发明的技术采用动态调整学习参数的方式,使学习策略能够在不同的学习阶段表现出适应性。这有助于在模型训练的不同阶段实现更好的性能。通过动态地调整学习参数(例如步长或学习速率)基于当前的置信区间,系统展现了自适应的特性。这意味着在不同的估计不确定性情境下,系统可以自动地调整其行为,从而确保在估计准确性和计算效率之间达到一个良好的平衡。

六、基于历史环境因素的自适应调节机制:本发明还能够进一步引入D-S证据理论,考虑了Kriging模型在训练过程中所遇到的不同环境并加以应用,形成一种权重分配的转换调整策略,使得Kriging模型在学习过程中能考虑到历史因素与当前因素的冲突与不确定性,并加以进行自主调整与修正,有助于系统在面对新的数据和变化时能够更加自适应和鲁棒。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的方法流程示意图;

图2为本发明的步骤S5与其它子步骤衔接的方法流程示意图;

图3为本发明用于演示生成人脸拓扑模型的面部拓扑结构示意图;

图4为本发明的功能函数g(x)与初始训练集T预先得到人脸建模方向上的具体属性的拓扑结构示意图;

图5为本发明的步骤S3中人脸建模的拓扑结构循环更新的一个步长中的截取图;

图6为本发明的步骤S3中人脸建模的拓扑结构循环更新的一个步长中的截取图(与图5的面数选择不同);

具体实施方案

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制;

实施例一:如图1所示,对于现有的垂直于人脸建模方向的Kriging模型而言,其首先应当执行步骤S1,步骤S1具体的包括子步骤S100~S103。即生成初始训练点:

从随机变量空间σ内抽取出N个均匀分布的初始样本点,这个过程需要执行Halton序列抽样算法进行抽样;这一步是整个建模过程的起点。它的目标是生成一个初始的训练集,为后续Kriging模型的构建提供起始点。

Halton序列抽样算法将抽取来的初始样本点统一代入功能函数g(x)中,计算这些初始的样本点的响应值,其集合化后形成初始训练集T;基于当前的初始训练集T 建立或更新Kriging模型。Kriging模型通过考虑样本点之间的空间关系来估计未知位置的属性。在人脸建模中,这意味着模型将学会人脸几何结构和拓扑信息的变异性,并能够进行预测。人脸的最终拓扑结果如图3所示。

具体的,关于随机变量空间σ的抽样:随机变量空间是描述人脸建模的参数范围。通过执行Halton序列抽样算法,可以从这个空间中抽取一组初始样本点。

具体的,关于功能函数g(x):将抽取的初始样本点代入功能函数g(x) 中,该函数描述了人脸的几何形状和拓扑特征。该函数的计算依赖于抽取的初始样本点,通过将这些点代入g(x) 中,获得每个样本点在人脸建模方向上的具体属性。通过计算功能函数的响应值,得到每个样本点在人脸建模方向上的具体属性。功能函数g(x)由(常数)回归过程和随机过程两部分构成:

为ALK模型回归过程部分,代表了功能函数g(x)的全局平均响应,β为常数,z(x)为平稳高斯随机过程,反映了局部响应和全局响应之间的偏差。这一部分引入了随机性,以考虑样本点的局部差异。

通过将抽取的初始样本点代入g(x) 的定义中,计算得到每个样本点在人脸建模方向上的响应值。这包括了全局平均响应和局部随机性的贡献。

进一步的,功能函数g(x)包括:

1)全局和局部信息融合:g(x) 的设计充分考虑了全局平均响应和局部差异,使模型能够同时捕捉人脸的整体形状和局部特征。

2)适应性和随机性引入:随机过程z(x)的引入使得模型更具适应性,能够处理人脸在不同区域的变异性,而不仅仅是全局的趋势。

进一步的,功能函数g(x)与初始训练集T预先得到人脸建模方向上的具体属性,以图4为例仅展示了一个训练点处的拓扑结构;其执行的C语言程序为:

#include

#include

#include

#include

// Kriging 模型的回归系数 beta

#define N_FEATURES 10

double beta[N_FEATURES] = {0.5, 0.3, -0.2, 0.7, -0.4, 0.1, 0.2, -0.5,0.6, -0.3};

// 初始训练集 T 的样本数据

#define N_SAMPLES 100

double training_set[N_SAMPLES][N_FEATURES]; // 每个样本有 10 个特征

// 定义随机过程 z(x) 的高斯随机数生成器

gsl_rng *rng;

// 初始化 Kriging 模型

void initialize_kriging_model() {

// 初始化随机数生成器

rng = gsl_rng_alloc(gsl_rng_default);

// 设置初始训练集和其他参数

}

// 计算功能函数 g(x)

double calculate_g_function(double *sample) {

// f(x)^T·beta

double regression_part = 0.0;

gsl_vector_view beta_view = gsl_vector_view_array(beta, N_FEATURES);

gsl_vector_view sample_view = gsl_vector_view_array(sample, N_FEATURES);

// f(x)^T·beta的计算

gsl_blas_ddot(&sample_view.vector,&beta_view.vector, ®ression_part);

// z(x) 为正态分布随机数

double random_part = gsl_ran_gaussian(rng, 0.1); // 标准差为 0.1

// 计算功能函数 g(x)

double g_x = regression_part + random_part;

return g_x;

}

// 主函数

int main() {

// 初始化 Kriging 模型

initialize_kriging_model();

// 遍历初始训练集 T,计算功能函数g(x)的值

for (int i = 0; i

double g_value = calculate_g_function(training_set[i]);

printf("Sample %d: g(x) = %f ", i + 1, g_value);

}

// 释放随机数生成器,生成人脸拓扑模型

gsl_rng_free(rng);

return 0;

}

1)在一维中,Halton序列的第i个元素的抽取值

是均匀分布的基数,k是总的元素i的最大值,/>

2)同理,在多维空间中,为了确保更好的均匀性,每个维度使用不同的质数作为基数。以二维空间为例,Halton序列的第i个元素的抽取值

表示每个维度都有不同的基数

在本实施例中,关于步骤S101,获得均匀分布的初始样本点:该步骤执行了获取均匀分布的初始样本点的过程,利用Halton序列的元素作为随机变量的分量,确保了样本点在每个维度上的均匀分布:

具体的,将Halton序列的每个元素作为随机变量的一个分量。如果有k维空间,那么Halton序列的第i个元素

N是k维空间的维度总数;上述元素的形式

可以理解的是,通过Halton序列的抽样,可以获得均匀分布的样本点,确保在每个维度上的均匀性。为了使得Halton序列在每个维度上均匀分布,选择不同的质数作为基数。不同的质数用于不同的维度,确保了在每个维度上的样本点分布的差异性,从而提高了样本点的全面性。通过这个过程,确保了初始样本点的均匀分布,为后续Kriging模型的建立提供了具有代表性的输入数据,有助于更全面、准确地拟合人脸建模。这也为人脸拓扑建模的方向提供了初始信息。

具体地,第i个样本点

其中,所述样本点

通过这个表达式可以计算每个样本点

可以理解的是,上述表达式仅作对现有的ALK模型中的常数形式的Kriging模型的带入;如果ALK模型模型采用了其余形式的Kriging模型,则可以通过类似于上文的带入形式进行相应的自调整;例如使用如下C语言框架:

#include

#include

// 自带一个Kriging 模型的库,其中包含初始化、训练、预测功能

#include "kriging_library.h"

// 定义常数向量的长度

#define DIMENSION 3

int main() {

// 声明并初始化 Kriging 模型

kriging_model model;

initialize_kriging_model(&model, DIMENSION);

// 生成初始训练点,这里使用 Halton 序列

int num_samples = 10;

double** initial_samples = generate_halton_sequence(num_samples,DIMENSION);

// 带入样本点

printf("Initial Samples: ");

for (int i = 0; i

printf("Sample %d: [", i + 1);

for (int j = 0; j

printf("%lf", initial_samples[i][j]);

if (j

printf(", ");

}

}

printf("] ");

}

// 代入 Kriging 模型进行训练

for (int i = 0; i

double response = calculate_function_response(initial_samples[i]);

train_kriging_model(&model, initial_samples[i], response);

}

// 新的测试点

double test_point[DIMENSION] = {0.5, 0.5, 0.5};

// 使用 Kriging 模型进行预测

double predicted_response = predict_kriging_model(&model, test_point);

// 执行预测结果及拓扑

printf("Predicted Response at Test Point: %lf ", predicted_response);

// 释放内存

for (int i = 0; i

free(initial_samples[i]);

}

free(initial_samples);

return 0;

}

上述程序的原理是,将任意类型的kriging模型存储在库"kriging_library.h"中,利用Halton序列生成初始训练点。Halton序列是一种低差异序列,用于在多维空间中生成均匀分布的样本点。这些样本点存储在initial_samples中。随后遍历初始训练点,对每个点调用calculate_function_response函数获取功能函数的响应值,然后调用train_kriging_model函数将样本点及其响应值用于训练Kriging模型。这一步是建立Kriging模型的过程。然后生成一个新的测试点test_point,然后调用predict_kriging_model函数使用训练好的Kriging模型预测该点的响应值。在程序结束时,释放为样本点和Kriging模型分配的内存。

在本实施例中,关于步骤S102,形成初始训练集T:

将得到的样本点和对应的功能函数响应值组合形成初始训练集T:

是对应于其样本点/>

具体的,对于每个样本点

这是通过调用功能函数计算的,该函数描述了人脸的几何形状和拓扑特征。初始训练集T现在包含了样本点和其对应的功能函数响应值,它们将被用来训练Kriging模型。这个模型的目标是捕捉样本点之间的空间关系,以便对未知点进行插值或预测。

具体的,每个样本点

在本实施例中,关于步骤S103,将示例性构建一个标准的常数型Kriging模型:

首先需要明确:Kriging模型是一种基于空间插值的建模方法,旨在估计未知位置的数值,并提供对估计的不确定性的量化Kriging模型的基本思想是通过线性组合已知样本点的函数值来估计未知点的函数值,其中估计系数需要满足一定的约束条件。

因此,可通过训练集T中已知的N个样本点

是估计系数;

记估计误差为:

E(r)表示随机变量r的数学期望(即均值);

为了使均方误差最小,估计系数

为了使估计误差的方差最小,通过引入拉格朗日乘数法,建立一个约束最优化问题。约束条件包括:基于拉格朗日乘数法当估计误差的方差最小时,输入N个样本点

即,估计系数的和为 1,样本点之间的相关性满足相关函数:

基于约束最优化问题,得到了一个包含估计系数

µ是Lagrange乘数,

其中:

其中,

进一步对方程组施加高斯分布的约束,以确保 Kriging 模型满足高斯过程的性质。这一步通过引入高斯核函数来表达样本点之间的相关性。其形式为:

其中,μ是均值;exp是指数函数。如果是一纬高斯分布的指数函数,则

Kriging模型的性质总结为:基于对每个样本点

如果数据是完全随机的,也就是说无关的,那么对某个样本点

当没有 Nugget Effect 时,与估值点越近的样本点

具体的,上述步骤S103的Kriging模型C语言形式为:

#include

#include

// 结构体表示样本点

typedef struct {

double x; // 样本点的 x 坐标

double response; // 样本点的功能函数响应值

} SamplePoint;

// 训练集 T

SamplePoint trainingSet[] = {

{1.0, 10.0},

{2.0, 20.0},

// 其他样本点

};

// Kriging 模型参数

double lambda[100]; // 估计系数

double mu; // Lagrange 乘数

double nuggetEffect; // Nugget Effect

// Kriging 模型计算函数

double krigingModel(double x0) {

double estimate = 0.0;

// 计算估计值

for (int i = 0; i

double distance = fabs(trainingSet[i].x - x0);

double correlation = exp(-mu * distance * distance);

estimate += lambda[i] * correlation;

}

// 添加 Nugget Effect

estimate += nuggetEffect;

return estimate;

}

int main() {

// 使用 Kriging 模型进行人脸拓扑建模

double x0 = 3.0; // 点的位置

double faceTopology = krigingModel(x0);

// 输出三维模型

printf("Estimated face topology at x=%.2f: %.2f ", x0,faceTopology);

return 0;

}

上述程序的原理是:使用结构体SamplePoint表示样本点,其中包含样本点的x坐标和功能函数的响应值。然后声明一个训练集trainingSet,其中包含一系列已知样本点(即前文所述的T)。然后声明Kriging模型的参数,包括估计系数lambda、Lagrange乘数mu、以及NuggetEffect。随后krigingModel函数根据输入的位置x0,使用Kriging模型计算对应的人脸拓扑估计值。该函数对训练集中的每个样本点计算权值和相关度,最终得到估计值。在main函数中,设置Kriging模型的参数,并通过调用krigingModel函数估计指定位置的人脸拓扑。

需要指出的是,上述Kriging模型的形式仅仅是一种现有的常数形式的Kriging模型引入训练集T的示例。其也可以通过若干种不同形式的Kriging模型进行常规变形。

在本实施例中,关于步骤S2,构建极限状态函数代理模型,生成候选样本池S;其具体的包括子步骤S200~S202:

执行高斯混合算法,该算法是一种建模复杂概率分布的方法,用多个高斯分布的加权和来逼近真实概率分布。通过该算法,可以得到Kriging模型的辅助概率密度函数p(x)’,该函数描述了样本点在随机变量空间中的概率分布。并利用失效域集合G结合于辅助概率密度函数p(x)’,以产生n个随机变量样本

具体的,失效域集合G是在前期得到的,它包含了一系列与失效相关的样本点。在这一步,通过将失效域集合G与辅助概率密度函数p(x)’结合,产生N个随机变量样本

在本实施例中,关于步骤S200,对辅助概率密度函数p(x)’执行高斯混合算法:

高斯混合模型(GMM)是一种概率模型算法,GMM通常用于对数据进行聚类和密度估计。它假定观测数据是由若干个潜在的高斯分布组成,每个分布称为一个混合成分。GMM的核心思想是将观测数据看作是各个高斯分布的加权和。在该步骤中,辅助概率密度函数p(x)’其形式为:

其中,

具体的,高斯混合算法执行过程为:

P1、初始化:随机初始化每个高斯分布的均值

P2、GMM的Expectation-Maximization (EM)迭代:通过迭代的EM算法,估计模型参数。在E步骤,计算每个样本属于每个成分的后验概率,然后在M步骤,根据这些后验概率更新模型参数。

P3、收敛判据:重复执行EM步骤直至模型参数收敛或达到预定的迭代次数。

P4、辅助概率密度函数p(x)’的应用:得到每个样本点在辅助概率密度函数中的权重,该权重表示该样本点在不同成分中的贡献。这样的权重信息可以用于后续步骤中,例如生成候选样本池S。

具体的,

1)非负性:所有的权重必须是非负的,即:

2)总和为一:

3)设有K个混合成分,均匀分布下的权重可以按照以下公式赋值:

这确保了每个混合成分的相对重要性相同。当然可以理解的是,如果有先验信息表明某些成分应该更重要,本领域技术人员可以根据问题的特点按照其主观能动性进行调整。

具体的,

x是一个D维列向量(D是维度),μ是D维列向量,表示均值向量,

具体的,

是分配给第i个成分的样本点数目。这个均值向量的计算就是对应成分上所有样本点的坐标分量的平均值。

具体的,K 的选择是一个超参数,通过一些常规的评价指标(例如赤池信息准则(AIC)或贝叶斯信息准则(BIC))来选择最优的K。这些准则考虑了模型的拟合程度和模型的复杂度,帮助找到一个平衡点,避免过度拟合。

在本实施例中,在执行完步骤S200后,还需要获取失效域集合G:

设Kriging模型对于输入变量x的失效概率估计为

如果

具体的,阈值T1的赋值方案为:使用交叉验证和ROC曲线来赋值;其步骤包括:

P1、根据不同的阈值计算真正例率(True Positive Rate,TPR)和假正例率(FalsePositive Rate,FPR),绘制ROC曲线:

真正例 (TP): 模型正确预测的正例数量;

假负例 (FN): 模型将正例错误地预测为负例的数量;

假正例 (FP): 模型将负例错误地预测为正例的数量;

真负例 (TN): 模型正确预测的负例数量。

这些值可以通过比较模型的预测结果和实际标签来计算。在Python中使用混淆矩阵计算工具,如scikit-learn中的confusion_matrix函数,来获取这些值:

from sklearn.metrics import confusion_matrix

# y_true 为实际标签,y_pred 为模型预测结果

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1]

y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1]

# 计算混淆矩阵

conf_matrix = confusion_matrix(y_true, y_pred)

# 从混淆矩阵中获取 TP, FN, FP, TN

TP = conf_matrix[1, 1]

FN = conf_matrix[1, 0]

FP = conf_matrix[0, 1]

TN = conf_matrix[0, 0]

P2、在Python中使用混淆矩阵计算工具,绘制在ROC曲线上选择工作点,使得真正例率最大,而假正例率最小的阈值作为阈值T1:

from sklearn.metrics import roc_curve, auc

# 计算 ROC 曲线

fpr, tpr, thresholds = roc_curve(y_true, y_prob)

# 计算曲线下面积(AUC)

roc_auc = auc(fpr, tpr)

# 选择最佳阈值

best_threshold_index = np.argmax(tpr - fpr)

best_threshold = thresholds[best_threshold_index]

# best_threshold 选择的阈值 T1

具体的,关于失效域集合G:由所有被判定为失效的样本点组成的集合。每次根据当前Kriging模型的预测结果和置信区间进行判断,将符合条件的样本点加入失效域集合G。它包括了若干个失效域样本

n是失效域样本

通过这样的机制,在每次执行步骤S2时,根据当前Kriging模型的预测结果和置信区间,动态地确定失效域样本。这样得到的失效域样本可以用于后续的GMM或其他方法的建模。

失效概率

具体的,关于失效概率

失效概率

在本实施例中,关于步骤S201,利用失效域集合G结合于辅助概率密度函数p(x)’,以产生n个随机变量样本

首先按照步骤S200的内容,使用高斯混合模型的参数来生成样本。即从混合模型中按照各成分的权重随机选择一个成分,然后从失效域集合G对应的多维高斯分布中生成一个样本。每个生成的样本

符号“~”表示统计学概念中的“...分布于...”。

具体的,考虑到随机变量样本中的每个失效域样本点

可以理解的是,这一步骤的核心在于将高斯混合模型的样本与失效域集合的样本结合起来,通过生成与失效域相关的随机变量,实现对当前Kriging模型的辅助概率密度函数的更新。这样的更新策略有助于更准确地捕捉系统失效的概率分布,从而在下一轮更新Kriging模型时能够更有针对性地选择训练点。

在本实施例中,关于步骤S202,生成候选样本池S:

重复步骤S201,生成n个随机变量样本

这个过程中,高斯混合模型参数用于模拟系统行为的不确定性,而失效域集合G则提供了失效情况下的样本点。通过重复执行S201,得到了N个新的随机变量样本,形成了候选样本池S。候选样本池S的每个样本

# 参数设置

N = 100 # 生成的随机变量样本数

parameters = get_parameters() # 获取混合模型和失效域集合的参数

# 循环生成样本

candidate_samples = []

for _ in range(N):

# 随机选择一个失效域样本

x_fail = choose_random_fail_sample(parameters['G'])

# 根据辅助概率密度函数生成随机变量

y_sample = generate_random_variable(x_fail, parameters['p(x)''])

# 添加到候选样本池

candidate_samples.append(y_sample)

# 候选样本池 S

S = candidate_samples

上述程序中,get_parameters()和choose_random_fail_sample()是用于获取参数和选择失效域样本的函数,而generate_random_variable()则是用于根据辅助概率密度函数生成随机变量的函数。这个程序的目标是生成N个符合条件的随机变量样本,形成候选样本池S。

可以理解的是,通过多次模拟生成N个新的随机变量样本。这样,候选样本池S中的样本将更好地反映当前系统的不确定性和失效情况。候选样本的生成是为了在下一步中选择最具信息性的样本作为下一次更新的训练点,以优化Kriging模型的性能。整个流程通过不断迭代,逐步提升Kriging模型的预测精度和对系统行为的理解。

在本实施例中,关于步骤S3,在候选样本池S中识别下一次更新的训练点,其包括S300~S301两个子步骤:

1)步骤S300,计算候选样本池S中每一个样本的函数值

首先从候选样本池S中抽取每个随机变量样本

、/>

极限状态函数用于表示系统性能与设计要求的差异,负值表示系统在设计要求内,零值表示系统位于设计要求边界上。

2)步骤S301,选取函数值s中最小样本点作为下一次更新的训练点:

基于S300的极限状态函数G(y)所输出的每一个样本的函数值

这个选择策略确保了在选择下一次更新的训练点时,考虑了系统性能与设计要求之间的差异。通过计算候选样本池中每个样本的函数值,然后选取具有最小函数值的样本点,该策略在主动学习中引导模型的更新,使模型更加关注失效域附近的区域。这种方式有助于模型更准确地拟合失效域的结构,提高模型的预测性能。

具体的,请参阅图3~图6,步骤S3的循环形式为:

P1、利用失效域集合G生成n个随机变量样本:根据高斯混合模型的参数生成样本。从失效域集合G中随机选择失效域样本点,生成随机变量样本。

P2、生成候选样本池S:重复步骤 S201,生成n个随机变量样本,形成候选样本池S。

P3、计算候选样本池S 中每一个样本的函数值S:使用极限状态函数G(y)计算每个样本的函数值。

P4、选取函数值S 中最小样本点s∗作为下一次更新的训练点:选取具有最小函数值的样本点,找到对应的失效域样本点

这个过程中,人脸的拓扑结构(以一个训练点为例)从图4的形式逐步的变成图3的形式,这个过程中的变化随机抽取一个步长,形式为图5所示。如果考虑拓扑形式的大小,则也可以调整为如图6所示的形式。

具体的,

是输入变量/>

对于调节因子

在本实施例中,关于步骤S4,判别学习过程的收敛性:基于最小的函数值s*及其所对应的失效域样本点

在本实施例中,关于步骤S400,计算失效概率误差上界:

获取预测均值

其中,

具体的,

1)如果

2)如果

具体的,预测均值

% 样本点 X 和对应的响应值 Y

X = [x1; x2; ...; xn]; % 输入变量的样本点

Y = [y1; y2; ...; yn]; % 对应的响应值

% Kriging 模型

theta = [1, 1]; % Kriging 模型的超参数

model = fitrgp(X, Y, 'KernelFunction', 'squaredexponential', 'KernelParameters', theta);

% 新的输入变量 x_new,用于预测

x_new = [new_x1; new_x2; ...; new_xn]; % 新的输入变量

% 使用 Kriging 模型进行预测

[y_pred, y_pred_sd] = predict(model, x_new);

% 输出预测均值

disp('预测均值:');

disp(y_pred);

上述程序使用Matlab的fitrgp函数构建了一个基于高斯过程的回归(GaussianProcessRegression)模型,其中选择了squaredexponential核函数。然后,使用predict函数对新的输入变量进行预测,得到预测均值y_pred和标准差y_pred_sd。

具体的,

其中,Φ表示标准正态分布的累积分布函数,

进一步的,标准正态分布的累积分布函数Φ为:

;/>

这一公式描述了标准正态分布中随机变量小于等于z的累积概率。其中erf是误差函数(Error Function):

e是自然对数的底,约等于2.71828;dt表示积分变量,即积分过程中的微小变化量。t表示积分变量,即积分过程中的自变量。在高斯积分中,t代表积分的上限。erf(x)表示从0到x的高斯积分。

在本实施例中,关于步骤S401,判断是否满足停止学习条件:

如果

T2是目标失效误差阈值;

如果失效概率误差上界

具体的,关于目标失效误差阈值T2,本实施例给定一些具体的赋值方案:

方案1:保守性方法,T2=0.05;

在一些高度关键、风险敏感的应用中,希望采用一种保守的方法,确保失效概率的误差非常小。因此,设定相对较小的 T2,以保证系统在设计要求内的可靠性。

方案2:平衡方法,T2=0.1

在一些应用中,系统性能和成本之间需要找到一个平衡。选择适度的 T2,可以在确保系统可靠性的同时,更好地考虑成本效益。

方案3:自适应方案:如实施例四全文所示。

在本实施例中,关于步骤S402,计算上界置信区间:如果Kriging模型未停止学习,可以计算失效概率误差的上界置信区间,以便进行下一轮的Kriging模型更新。这个过程涉及到进一步的正态分布算法和模型更新。它包括子步骤S4020~S4023。

在本实施例中,关于步骤S4020,计算失效概率误差的标准差

是第i个失效概率误差,/>

具体的,步骤S4020的主要目的是计算失效概率误差的标准差

因此,步骤S4020有助于更深入地理解失效概率误差的分布特性,为后续的模型更新和优化提供了有价值的信息。

具体的,如步骤S400所示,第i个失效概率误差

因此总的失效概率误差平均值

n是样本总数,

在本实施例中,关于步骤S4021,计算置信区间半径Ma:

是标准差;Z是标准正态分布中的“Z-分数”,对应于所选择的置信水平α(取95%);

Ma可以看做边际值,指的是置信区间的半径,表示置信区间的上下限相对于均值的距离。代表了在置信水平内,对于失效概率误差的估计的不确定性范围。如果Ma越大,表示置信区间越宽,估计的失效概率误差的不确定性越大。反之,如果Ma较小,表示估计的失效概率误差的不确定性较小。

在本实施例中,关于步骤S4022,计算新置信区间CI:

一旦得到失效概率误差的新置信区间CI,可以根据这个区间进行决策以判断是否停止学习或继续更新Kriging模型。

在本实施例中,关于步骤S4023,学习策略方案:

按照上文“失效域集合G”的内容,置信区间为[L(x),U(x)],其中L(x)是下界,U(x)是上界,根据3.4.3.1得到的新置信区间CI对上述置信区间进行调整。本技术方案选择的策略是:如果置信区间较宽,表示对失效概率的估计较不确定,可以采取更保守的学习策略,即增加样本数量或调整学习的步长。如果置信区间较窄,表示对失效概率的估计较为可信,可以采取更积极的学习策略,即减少样本数量或加速学习;而上述策略的表达式为:

γ是原先的学习的步长或学习速率,γ'是更新后的学习的步长或学习速率。f(CI)是一个关于置信区间CI的调整函数:

w(CI)是置信区间的宽度,其中w(CI)=U(x)−L(x)。v是调整参数,用于控制调整的幅度,幅度的拟定是主观化的,因此需要本领域技术人员在实际执行时,发挥其主观能动性自行调整。

该方案使得在置信区间宽度较大时w(CI)较大,f(CI) 较小,因此γ'会相应地减小,使学习更为保守。当置信区间宽度较小时,f(CI)较大,γ'会相应地增大,使模型学习更为积极。

总结性的来说,本实施例采用主动学习策略,根据当前模型的预测结果和置信区间动态选择训练样本,使得模型能够更加灵活地适应不同区域的变化。这样的策略可能使得模型在训练过程中更加关注系统性能与设计要求之间的差异,提高模型在失效域附近的建模精度。使用传统的iCE方法虽然能达到近似的技术效果,但是本实施例不建议使用传统iCE方法。因为iCE方法以一种集成的收缩和扩展的方法为基础,通过逐步改善模型来实现全局优化。与此相比,ALK模型采用主动学习策略,根据当前模型的预测结果和置信区间动态选择训练样本,强调对失效概率的建模。因此,本实施例的技术方案和iCE方法在学习策略上存在本质区别,无法置换。同时iCE方法更侧重于全局优化问题的修正,而ALK模型更关注失效概率的建模,适用于需要对系统可靠性和性能进行评估的场景。因此,iCE方法在人脸建模上的实现无法实施。

而且对于本实施例而言,在关注失效域的同时,强调对失效概率的建模,适用于需要对系统可靠性和性能进行评估的场景。与全局优化问题相比,本技术更注重系统在失效域内的行为,在人脸拓扑中的布线有较强的指向性策略。同时本技术追求在保证失效概率精度的前提下减少调用功能函数的次数。通过动态调整学习步长、根据置信区间调整学习策略等方式,在提高模型高效性的同时,仍能保持对失效概率的准确建模。在学习策略中使用置信区间的宽度作为调整参数,通过调整置信区间的宽度,可以灵活地控制学习的步长,使得模型对于失效概率的估计更为灵活,适应性更强。

实施例二:本实施例基于实施例一的内容,在获取失效域集合G中,采用蒙特卡罗模拟算法来获取

P1、使用蒙特卡罗方法,将失效域上的积分表达式定义为

G1是失效域内的样本数值,G2是总的样本数值。

P2、使用辛普森法则:

f(a)和f(b)是被积函数f(x)在积分区间[a,b]的两个端点处的函数值。a和b是积分区间的端点。dx是区间的微小增量,用于表示积分区域的宽度。

具体的,这个方法是通过拟合被积函数f(x)在每个小区间上的二次多项式来进行积分估计。这里的dx在实际计算中是通过将积分区间均匀划分成若干小区间,并计算每个小区间上的积分值,然后累加得到整个积分区域的估计值。

P3、离散化:将积分区域离散化为小区域,对每个小区域进行数值积分。具体来说,可以将[a,b]区间等分为N个小区域,其中a和b是积分区间的端点:

其中n是偶数。令每个小区间的宽度为:

P4、计算积分:对每个小区域再次执行P2的辛普森法则,即执行数值积分,并将结果累加以得到最终的值:

P400、对于第一个小区间:

对于第二个小区间:

以此类推,对于第i个小区间:

P401、应用辛普森法则:对于每个小区间[x2i,x2i+2],计算辛普森法则的近似积分值Area2i:

P402、累加各小区间的积分值:将所有小区间的积分值相加以得到最终的估计积分值:

本实施例所有内容所采用的python执行程序为:

def numerical_integration_simpson_rule(a, b, N):

delta_x = (b - a) / N

integral_result = 0.0

for i in range(N):

x_i = a + i * delta_x

x_ip1 = a + (i + 1) * delta_x

# 辛普森法则

integral_result += (delta_x / 6) * (

calculate_function_value(x_i) +

4 * calculate_function_value((x_i + x_ip1) / 2) +

calculate_function_value(x_ip1)

)

return integral_result

# 计算 P_f(x)

def calculate_failure_probability():

a, b = define_integration_interval() # 确定积分区间

N = define_discretization_steps() # 定义离散化步数

integral_result = numerical_integration_simpson_rule(a, b, N)

P_f_x = integral_result

return P_f_x

上述程序中,a和b表示积分区间的端点,而delta_x表示每个小区间的宽度,即dx。calculate_function_value(x)是用于计算被积函数在给定点x处的函数值的函数。

在本实施例中,数值积分和辛普森法用于处理复杂的、难以通过解析方法求解的概率密度函数或累积分布函数。对于本具体实施方式所提供的复杂的系统模型,特别是在高维空间中,这些方法提供了一种有效的途径来估计失效概率。

因为在人脸拓扑建模中通常涉及到多维积分,而数值积分方法能够处理这种复杂性。辛普森法则是数值积分中的一种适用于一维和多维积分的方法,它通过使用多项式插值来估计积分值。这些方法在处理实际问题时非常灵活,因为它们不依赖于函数的具体形式,而是通过在积分区域上进行离散化来逼近积分值。同时辛普森法则在逼近连续函数的积分时表现良好,并且能够自适应地调整区间的划分。

实施例三:本实施例在实施例一的基础上,可引入另一种技术方案衔接至步骤S4之后,为整体ALK模型的学习引入一种自适应性的调节机制(称之为步骤S5),如图2所示:该机制由D-S证据理论算法(Dempster Shafer,D-S)执行,该算法通过考虑不同渠道的信息,汇总后执行映射并形成一个修正因子ψ,通过该修正因子ψ对步骤S200中的辅助概率密度函数p(x)’执行自适应性修正。它包括子步骤S500~S504。

在本实施例中,关于步骤S500,获取证据A和证据B:

首先收集在当前时间步t下的步骤S202形成候选样本池S,作为证据A(集合):

然后收集在上个时间步t-1下的步骤S202形成候选样本池S’,作为证据B(集合):

具体的,此步骤明确了两个时间步的划分,分别为当前时间步t和上一个时间步t-1。这样的划分有助于捕捉系统在不同时间点的状态变化。通过候选样本池的收集,形成了两组证据A和B。这些样本代表了不同时间点的系统状态。此步骤为后续的证据融合提供了基础。通过比较两个时间步的候选样本池,可以了解系统在时间上的动态变化,为模型的学习提供更多信息。该方案中通过采样连续时间步的候选样本池,支持了对系统动态变化的连续性建模,有助于更准确地捕捉系统的变化趋势。

在本实施例中,关于步骤S501,执行Dempster's组合原则:

Dempster's组合原则的作用是,它解算证据A和证据B的集合,并输出合并信任度分配的集合Bel(C)和合并的不确定性分配Pl(C);其中C是可能的假设或状态空间。

在本实施例中,关于步骤S5020,合并信任度分配Bel(C):

上式中,所有分子部分是对于有交集的证据进行权重求和。

上式中,所有分母部分是对于无交集的证据进行权重求和。

Ai∩B=∅表示证据A和证据B有交集,Ai∩B=∅表示证据A和证据B无交集。同样的,Ai∩C=∅和Bi∩C=∅表示证据A和证据B与假设集合C有交集。Bel(C)表示对于假设集合C的置信度(一个在[0,1]范围内的值)。通过合并不同证据的Bel(C),可得到一个更全面可信的对于假设集合C置信度的评估。这有助于综合考虑来自不同证据的信息,提高对于不同状态的置信水平。

具体的:Dempster's组合原则是DS证据理论的核心,用于将不同的证据合并,得出对于不同假设的置信度。通过将来自证据A和证据B的置信度进行合并,可以更全面地考虑两组证据对于不同假设的支持程度。合并后的不确定性分配Pl(C)反映了合并证据对于每个假设的不确定程度,有助于更全面地理解系统状态的不确定性。通过权重可以调整不同证据对于合并后的置信度的贡献,使得更可信或更可靠的证据在合并中发挥更大作用。

在本实施例中,关于步骤S5021,合并的不确定性分配Pl(C):

在S5020~S5021中,∅表示空集;

Pl(C)表示对于假设集合C的不确定性(一个在[0,1]范围内的值),它与Bel(C)互补。通过合并不同证据的Pl(C),可以得到一个更全面、更可信的对于假设集合C的不确定性的评估。与Bel(C)结合使用,可以提供一个更全面的认识,包括了对于某个状态的置信度以及对于该置信度的不确定性的考虑。

具体的,关于Bel(C)的关系:

(1)互补关系:Pl(C)和Bel(C)是Dempster's组合原则中的互补概念。如果Bel(C)表示对某个状态的置信度,那么Pl(C)则表示对这个置信度的不确定性。

(2)全面认识:与Bel(C)结合使用,可以提供一个更全面的认识。Bel(C)关注对于某个状态的确定性程度,而Pl(C)关注对于这种确定性的不确定性程度,两者相结合可以更全面地理解系统状态的置信度和不确定性。

可以理解的是,Pl(C)是对于假设集合C的不确定性的度量,通过对不同证据的权重进行计算,反映了合并后的证据对于每个假设的不确定程度。与Bel(C)互补,两者共同构成Dempster's组合原则的完整表达,能够更全面地描述系统状态的认知。同时Bel(C)关注对某个状态的确定性程度,Pl(C)关注对这种确定性的不确定性程度,结合起来提供了对系统状态的置信度和不确定性的综合评估。

在本实施例中,关于步骤S502,得到联合信任度函数Bel(A∪B):

(Pl(A)∩Pl(B))是所述证据A和所述证据B各自的交集的不确定性分配。

公式中的分子部分是证据A和证据B的交集,通过乘以对方的不确定性分配和信任度,然后除以1−Pl(A∩B)来进行归一化,得到联合信任度函数。这个联合信任度函数可以用于综合考虑不同证据之间的关系,提供对于某个状态或假设的更全面的信任度评估。

其中,关于Bel(A)和Bel(B):分别表示证据A和证据B对于某个状态或假设的信任度。这是Kriging模型中基于不同的证据对系统状态进行评估的信任度。

其中,关于Pl(A)和Pl(B):分别表示证据A和证据B对于某个状态或假设的不确定性。在Dempster's组合原则中,不确定性的量度。

其中,Pl(A∩B):表示证据A和证据B的交集的不确定性。在Dempster's组合原则中,交集的不确定性是两个证据共同存在的部分的不确定性。

具体的,上述表达式的分子部分分别表示考虑了另一证据的不确定性的信任度。这两部分相加,表示综合了两个证据之间的信任度。分母部分由1减去是为了进行归一化,防止重复计算交集的不确定性。通过除以该部分,得到归一化的联合信任度函数。

具体的,(Pl(A)∩Pl(B))的具体的获取方式为:

和/>

其中,

在本实施例中,关于步骤S503,通过sigmoid函数将所述联合信任度函数Bel(A∪B)映射为一个[0,1]之间的区间值作为修正因子ψ:

e是自然对数的底数(约等于2.718);sigmoid函数的输入为Bel(A∪B)的输出。sigmoid函数的特点是无论输入如何,其输出范围在[0,1]之间,且对输入值的变化相对平滑,因此用于将实数映射到概率范围。

修正因子ψ的大小会受到Bel(A∪B)的影响,从而调整了系统中的状态转移函数。sigmoid函数的输出值在Bel(A∪B)较大时趋近于1,在Bel(A∪B)较小时趋近于0。因此修正因子ψ的大小反映了Bel(A∪B)的大小。这种映射保留了因果关系,即ψ的变化与Bel(A∪B)的变化保持一致。

具体的,通过ψ的引入,系统在考虑历史证据的可信程度时引入了一定的不确定性修正。这种设计使得系统更加灵活地适应不同的情境,尤其在面对新的数据和变化时,系统能够更加自适应和鲁棒。通过步骤S503,系统引入了对历史证据的不确定性修正,通过sigmoid函数将联合信任度函数映射到[0,1]区间,提升了系统的自适应性和鲁棒性,为Kriging模型执行人脸拓扑建模提供了更灵活和可靠的基础。

在本实施例中,关于步骤S504,对辅助概率密度函数p(x)’进行修正:

基于实施例一种的步骤S200的内容可得知,辅助概率密度函数p(x)’其形式为:

其中,

步骤S505需要对辅助概率密度函数p(x)’进行修正,得到新的辅助概率密度函数p(x)’’,且新的辅助概率密度函数p(x)’’经历了自适应性的修正:

;/>

p(x)’’被修正因子ψ的修正过程实际上是一种对原始函数的加权调整。这个调整的目的是引入对修正因子ψ的信任度的依赖性,从而根据当前的证据(由ψ反映的)对模型进行自适应修正。因为修正因子ψ是通过sigmoid函数对联合信任度函数Bel(A∪B)的映射得到的。ψ反映了历史证据的可信度,通过引入对ψ的依赖性,实现了对当前证据的自适应性修正。

具体的,修正的关键在于将修正因子ψ引入到每个成分的权重

具体的,关于适应性和鲁棒性:自适应修正使得模型在面对新的数据和变化时更具适应性和鲁棒性。修正过程反映了系统对历史证据的信任度,从而使得系统在不同情境下能够更灵活地调整。

实施例四:本实施例在实施例三的基础上,在步骤S503得到了修正因子ψ后,将不执行步骤S504,而是将修正因子ψ作为如实施例一中所述的目标失效误差阈值T2:

即将ψ取补,得到目标失效误差阈值T2。之所以要取补,是因为:

(1)ψ大小反映了系统对历史证据的信任度。较小的ψ表示系统对历史证据的信任度较低,而较大的ψ 表示系统对历史证据的信任度较高。将ψ取补得到的 T2反映了与信任度相反的趋势,即当系统对历史证据的信任度较低时,T2较大,系统更容易接受新的证据。

(2)控制学习停止的保守性:通过取补,T2的设计使得系统在信任度较低时更加保守,对于目标失效要求更高。这样的设计有助于在系统对历史证据的信任度较低时,更谨慎地进行学习,以避免过度依赖新的证据,从而保持系统的鲁棒性。

(3)引入目标失效阈值:T2 被设计成与ψ的反向变化趋势相关,使得系统在不同信任度水平下能够通过调整T2控制学习的停止,从而有效地引入了目标失效误差阈值。这个阈值的设定影响系统对新证据的接受程度,从而调整了学习的保守性。

在本方案中,将ψ直接作为目标失效误差阈值T2。这表示系统在达到一定的信任度ψ后就认为目标失效。同时ψ是通过历史证据综合计算得到的信任度,因此T2与系统对历史证据的信任度相关。通俗来说:

当ψ较小时,即系统对历史证据的信任度较低时,T2较大,系统更容易接受新的证据。

当ψ较大时,即系统对历史证据的信任度较高时,T2较小,系统更保守,对目标的失效要求更高。

具体的:通过将ψ直接作为T2的赋值,系统在不同的信任度水平下表现出不同的学习和决策行为。当ψ较小时,T2较大,系统更容易接受新的证据,增加了系统的自适应性,有助于更灵活地适应环境的变化。随着ψ的增大,T2减小,系统对历史证据的信任度提高,这使系统更为保守。T2的减小反映了系统对于目标失效的更高要求,从而提高了对历史证据的敏感度。系统更谨慎地更新模型,确保对历史证据的高信任度能够反映在目标失效判断的高要求中。

可以理解的是,这种策略可以灵活调整模型学习的速度:目标失效误差阈值T2控制学习停止条件,通过ψ反映了系统对历史证据的信任度。这种设计允许在系统信任度较低时,加快学习的速度,更迅速地适应新的情境。而在系统信任度较高时,通过减小T2,减缓学习的速度,更加保守地对待新的证据,降低了不确定性的风险。同理,由于T2是根据ψ调整的,可以根据具体应用场景和系统需求进行调整。这使得系统在不同的应用场景中能够灵活应对,更好地适应各种复杂的情境和数据变化。

以上所有的实施例仅表达了本发明的相关实际应用的实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

技术分类

06120116580942