一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于LSTM神经网络的IISPH流体仿真计算方法

2022-08-13 23:51:42 来源:中国专利 TAG:

基于lstm神经网络的iisph流体仿真计算方法
技术领域
1.本发明属于iisph流体仿真计算技术领域,尤其涉及一种基于lstm神经网络的iisph流体仿真计算方法。


背景技术:

2.流体仿真一直以来是计算机图形学中的热门研究课题,如何真实、高效地进行流体效果的仿真计算,基于物理模型的仿真方法被大量提出。其中,国内外基本采用的方法是基于网格的欧拉方法和非网格拉格朗日方法,相比于欧拉法,拉格朗日法再流体细节的处理上更具有优势,因此被广泛使用。
3.光滑粒子流体动力学(sph,smoothed particle hydrodynamics),是拉格朗日方法中应用最广泛的一种流体仿真方法,由于sph方法存在多处不足,因此出现了很多改进方法。微可压sph方法(weakly compressible sph,wcsph),很好地解决了传统sph方法的不可压缩性问题,但需要较小的时间步长来维持模拟的稳定性。预测校正sph方法(predictive corrective incompressible sph,pcisph),相比于wcsph方法,pcisph时间步长更长,数值求解更稳定。局部泊松sph方法(local poisson sph,lpsph),根据wcsph大密度误差和pcisph全局求解泊松方程的大量耗时,通过减少求解泊松方程的时间,达到提高每一帧计算效率的目的。隐式不可压sph方法(implicit incompressible sph,iisph),通过离散化压力泊松方程,可以有效地改进大场景下的时间步长。无散度的sph方法(divergence-free sph,dfsph),利用压强对密度进行2次调整,使流体实现不可压缩性。
4.上述流体仿真方法中,为保证流体的不可压缩性,对于单个时间步长内压力加速度的求解,并没有有效改善计算效率低下的问题,反而计算过程更加复杂,耗时更长。对于大场景需要模拟上亿数量的粒子时,仿真时长呈几何倍数上升。


技术实现要素:

5.针对现有技术中的上述不足,本发明提供的一种基于lstm神经网络的iisph流体仿真计算方法,在保证流体不可压缩性计算结果的高精度情况下,能够有效解决现有方法中压力加速度求解效率低下的问题。
6.为了达到以上目的,本发明采用的技术方案为:
7.本方案提供一种基于lstm神经网络的iisph流体仿真计算方法,包括以下步骤:
8.s1、定义粒子场景文件,并利用iisph流体仿真方法输出某一帧流体中粒子的属性值;
9.s2、利用粒子属性值构建训练集;
10.s3、搭建lstm神经网络回归模型,并利用训练集学习流体仿真,对lstm神经网络回归模型进行训练;
11.s4、利用训练好的lstm神经网络回归模型替换原有粒子压力加速度的求解模块,并计算粒子下一帧的速度与位置,以进行连续的流体仿真。
12.进一步地,所述步骤s2包括以下步骤:
13.s201、设光滑核半径内领域粒子数目的最大阈值,并将数目不足的位置补0,以使粒子各属性值构造为一个长度固定的特征向量;
14.s202、利用所述特征向量构建训练集。
15.再进一步地,所述特征向量的表达式为:
[0016][0017]
其中,βi表示在处的特征向量,xi表示粒子i的位置,xj表示粒子j的位置,表示粒子i的输入压强,表示粒子j的输入压强,表示粒子的中间密度,ρi表示粒子i的密度,ρj表示粒子j的密度,是粒子的位置。
[0018]
再进一步地,所述步骤s3中lstm神经网络回归模型的表达式为:
[0019][0020]
其中,表示某一帧中第i个粒子的压力加速度,reg(
·
)表示lstm神经网络回归模型,βi表示粒子i的特征向量
[0021]
再进一步地,所述步骤s4中粒子下一帧的速度与位置的表达式为:
[0022][0023][0024][0025]
其中,vi(t)表示当前帧粒子i的速度,vi(t δt)表示下一帧中粒子i的速度,δt表示两帧间的时间步长,表示粒子的中间速度,表示某一帧中第i个粒子的压力加速度,xi(t δt)表示下一帧中粒子i的位置,xi(t)表示当前帧中粒子i的位置。
[0026]
本发明的有益效果是:
[0027]
(1)本发明根据iisph一次流体仿真过程中输出某一帧各粒子的属性作为训练集,训练集包括当前粒子及周边光滑核半径内粒子的位置、密度、中间密度及输入压强,利用lstm神经网络回归模型处理多变量数据的相关性,充分提取粒子各输入属性与输出压力加速度的关系特征,本发明在保证流体的不可压缩性和压力加速度精度情况下,有效提高计算速度,不需要计算当前粒子所受到的压力,直接进行压力加速的求解,计算下一帧粒子的速度与位置,减少消耗的计算资源,有效地提高模型预测的准确性。
[0028]
(2)本发明能提升流体仿真单个时间步长内计算效率,原始方法每迭代计算一次需要遍历当前所有粒子,随着迭代次数增多会增加计算消耗,通过本发明中的回归模型仅需遍历一次当前所有粒子即可完成压力项计算,更新粒子属性。同时,本发明通过更新粒子位置,以进行下一帧流体仿真。
附图说明
[0029]
图1为本发明的方法流程图。
[0030]
图2为本实施中lstm神经网络回归模型结构示意图。
[0031]
图3为本实施例中某一帧液体仿真效果图。
具体实施方式
[0032]
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0033]
实施例
[0034]
如图1所示,本发明提供了一种基于lstm神经网络的iisph流体仿真计算方法,其实现方法如下:
[0035]
s1、定义粒子场景文件,并利用iisph流体仿真方法输出某一帧流体中粒子的属性值;
[0036]
在iisph算法中,t δt粒子速度可以表示为:
[0037][0038]
其中,vi(t δt)表示下一帧粒子i的速度,δt表示帧与帧之间的时间步长,mi表示粒子i的质量,f
iadv
(t)表示除了压力以为的其他力,如重力、粘力等,f
ip
(t)表示需要求取的压力。与pcisph、lpsph等方法类似,iisph方法首先根据除压力外的其他作用力f
iadv
(t)对速度进行更新,计算一个中间速度:
[0039][0040]
其中,vi(t)表示当前帧粒子i的速度。
[0041]
基于连续性方程,密度的变化率可以表示为:
[0042][0043]
其中,表示粒子速度散度,表示粒子i的密度随时间变化,ρi表示粒子i的密度,ρi(t δt)表示粒子i下一帧的密度,ρi(t)表示粒子i当前帧的密度。
[0044]
其计算公式为:
[0045][0046]
其中,表示光滑核函数,v
ij
(t δt)=vi(t δt)-vj(t δt)表示为粒子i与粒子j之间的相对速度,依赖于t时刻的压力f
ip
(t)。将公式(4)代入公式(3),可以得到一个中间密度
[0047][0048]
对于不可压缩流体而言,其密度应该维持在静态密度ρ0,因此ρi(t δt)=ρ0。在获
取到中间密度后,后期所有的密度增量都是由压力造成的,因此中间密度与下一时间步长的密度的变化率为:
[0049][0050][0051]
其中,表示粒子压力加速度,表示邻域粒子j的压力加速度。
[0052]
其中,压力加速度的计算公式为:
[0053][0054]
将公式(8)代入公式(6)中可以得到一个线性方程组:
[0055][0056]
粒子压强pi(t)采用松弛雅可比迭代求解:
[0057][0058]
其中,l表示迭代次数,ω为松弛系数,a
ij
的计算公式为:
[0059][0060]
根据上述公式计算,现有iisph方法步骤总结为:
[0061]
1)预测
[0062]
遍历所有粒子:
[0063]
a.计算t时刻的密度ρi(t);
[0064]
b.计算除压力外其他作用力产生的中间速度
[0065]
遍历所有粒子:
[0066]
a.根据中间速度计算中间密度
[0067]
b.将t时刻的压强初始化为上一时间步长t-δt中压强的一半;
[0068]
c.计算参数a
ii

[0069]
2)压力求解
[0070]
a.初始化迭代次数l=0;
[0071]
b.迭代执行,直至密度误差小于指定阈值;
[0072]
遍历所有粒子
[0073]
a.计算压强
[0074]
b.更新压强值
[0075]
c.迭代次数l 1。
[0076]
3)更新位置
[0077]
更新下一时刻t δt的速度与位置。
[0078]
粒子的密度和所受外力计算可以通过光滑核函数求出:
[0079][0080]
其中,aj表示某种需要累加的物理量(如密度、粘力、压力),mj和ρj是光滑核半径h内粒子的质量和密度,是该粒子的位置,是可供选择的适当光滑核函数。
[0081]
s2、利用粒子属性值构建训练集,其实现方法如下:
[0082]
s201、设光滑核半径内领域粒子数目的最大阈值,并将数目不足的位置补0,以使粒子各属性值构造为一个长度固定的特征向量;
[0083]
s202、利用所述特征向量构建训练集。
[0084]
本实施例中,对于步骤一中计算过程,可以计算出某一帧粒子的各种属性值,基于iisph方法中各数值求解器的值,本发明随机选取流体仿真中不同的场景,每一个场景都包括一些水,一些可碰撞的物体包括球体、长方体、雕像等,总共选取100帧以上的数据,并从每一帧的数据中随机选取四分之一的粒子数,以保证神经网络的泛化能力。
[0085]
将这些属性值构造成一个长度固定的特征向量,作为本发明中神经网络的输入训练集。为保证特征向量的长度一致,本发明设光滑核半径内邻域粒子数目最多为50,并将数目不足的位置补0。输入特征包括:位置x、密度ρ、中间密度ρ
adv
,输入压强输出特征为压力加速度a
p
,则最终点处的特征向量βi为:
[0086][0087]
其中,βi表示在处的特征向量,xi表示粒子i的位置,xj表示粒子j的位置,表示粒子i的输入压强,表示粒子j的输入压强,表示粒子的中间密度,ρi表示粒子i的密度,ρj表示粒子j的密度。
[0088]
该特征向量能够在后续的工作中,精准地预测粒子下一帧的状态,计算出加速度,进行连续的流体仿真。
[0089]
s3、搭建lstm神经网络回归模型,并利用训练集学习流体仿真,对lstm神经网络回归模型进行训练;
[0090]
本实施例中,lstm神经网络回归模型包括:输入层、隐藏层、输出层。输入层和输出层只有一层,隐藏层为两层。其中输入层神经元数量为输入特征向量一致,隐藏层神经元数量分别为256、128、32,输出层神经元数量为1,代表输出压力加速度,各层神经元相互连接。
[0091]
训练过程为正向传播,公式如下:
[0092]ft
=σ(wf·
[h
t-1
,x
t
] bf)
[0093]it
=σ(wi·
[h
t-1
,x
t
] bi)
[0094]c′
t
=tanh(wc·
[h
t-1
,x
t
] bc)
[0095]ct
=c
t-1
·ft
i
t
·c′
t
[0096]ot
=σ(wo·
[h
t-1
,x
t
] bo)
[0097]ht
=o
t
·
tanh(c
t
)
[0098]
其中,f
t
表示为遗忘门输出,遗忘门是将上一时间点输出h
t-1
和当前时间点的输入x
t
,通过sigmoid激活函数,得到f
t
的过程;i
t
和c'
t
表示为输入门输出,输入门包含一个和遗忘门相同的结构,通过sigmoid激活函数,输出为c

t
,表示当前时间点有多少输入信息被保留,另一部分是对输入信息的处理,通过tanh函数,输出为c

t
;c
t
表示为网络结构中细胞状态更新;h
t
表示为输出门输出,输出门决定当前时刻细胞状态被过滤程度,首先是和输入门相同的结构,通过sigmoid激活函数,计算得到输出被过滤概率o
t
,然后将细胞状态c
t
使用tanh函数激活,最后使用o
t
过滤激活结果得到当前时刻输出h
t
。lstm的细胞状态c
t
变动缓慢,表示长期记忆;h
t
变动较快,表示短期记忆。每一层中的wf,bf,wi,bi,wc,bc,wo,bo都是层内共享的权值。该网络使用均方误差(mse)作为损失函数:
[0099][0100]
其中,y表示为输出值,n为样本数量。
[0101]
本实施例中,在学习阶段,本发明的目的是建立一个lstm神经网络回归模型,能够使用特征向量来预测下一帧中每一个粒子的压力加速度。通过特征向量,本发明可以制定回归问题为:
[0102][0103]
其中,表示某一帧中第i个粒子的压力加速度,reg(
·
)表示lstm神经网络回归模型,βi表示粒子i的特征向量,通过可以计算下一帧粒子的速度与位置,如:
[0104][0105][0106]
其中,vi(t)表示当前帧粒子i的速度,vi(t δt)表示下一帧中粒子i的速度,δt表示两帧间的时间步长,表示粒子的中间速度,表示某一帧中第i个粒子的压力加速度,xi(t δt)表示下一帧中粒子i的位置,xi(t)表示当前帧中粒子i的位置。
[0107]
本实施例中,通过本方法能够直接学习到iisph中压力项求解器的计算方式,直接根据粒子的当前状态计算出压力加速度。
[0108]
s4、利用训练好的lstm神经网络回归模型替换原有粒子压力加速度的求解模块,并计算粒子下一帧的速度与位置,以进行连续的流体仿真。
[0109]
本实施例中,替换原有的压力求解项,利用神经网络模型,计算输入的各粒子属性值,包括当前粒子及光滑核半径内粒子的位置、密度、中间密度、输入压力,输出为压力加速度,根据公式(13)和公式(14)计算下一帧当前粒子的速度与位置,进行连续的流体仿真。
[0110]
本方法针对传统方法中单个时间步长内计算开销大,花费时间长的问题,采用深度学习神经网络回归学习流体仿真中iisph方法,用来替换传统模型中的压力项计算作为新的数据驱动,在保证数据精度的情况下,缩小了计算所需要的时间,能够针对小规模流体仿真,达到实时仿真的目的。
[0111]
本发明能应用于游戏场景以及影视特效中,随着计算机性能的提升,各种大型游戏层出不穷,如何实时模拟出逼真的流体特效成为该领域内所研究的热点。由于传统方法
中为保证流体细节效果的精细,导致整体计算耗时效率低下,不能满足游戏开发和影视特效画面的实时生成。对此,针对存在的问题,本发明根据神经网络的拟合效果,提出使用神经网络回归的方法,替换iisph方法步骤中复杂非线性关系的构建,在保证精确计算的情况下,能够高效地提升流体仿真整体的效率。具体方法如下:
[0112]
a1、定义粒子游戏场景文件,并利用iisph流体仿真方法输出游戏场景中某一帧流体中粒子的属性值;
[0113]
a2、利用粒子属性值构建训练集;
[0114]
a3、搭建lstm神经网络回归模型,并利用训练集学习流体仿真,对lstm神经网络回归模型进行训练;
[0115]
a4、利用训练好的lstm神经网络回归模型替换原有粒子压力加速度的求解模块,并计算粒子下一帧的速度与位置,以进行连续的流体仿真。
[0116]
本发明通过替换原始方法中压力项的求解,能够使用神经网络预测粒子受到的压力加速度,从而计算粒子下一帧的速度与位置,减少计算所花费的时间,最终形成完整的流体动画,实现高质量的实时流体仿真,从而给用户带来更好的游戏体验和影视观看感受。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献