飞桨AI for Science流体超分FNO模型案例分享
高分辨率的CFD计算十分耗时,且输出结果文件较大,一个瞬态的结果可以占用几百MB的存储空间。因此,批量化的高分辨率CFD计算,耗时更久,数据存储需求更大,限制了高分辨率CFD的实际使用。相反,低分辨率的CFD数据计算耗时短,数据存储量小,更加适合批量化生成,但是低分辨率的CFD精度往往不足,缺少流动的细节信息。而机器学习的模型推理速度非常快,若能够利用机器学习的方法提升低分辨率的CFD精度,训练好的模型就可以快速将低分辨率CFD的结果提升为高分辨率CFD的结果,解决上述问题。
(Fukami et al. 2023)
目前,流体超分主要采用生成对抗网络(GAN)和卷积神经网络(CNN),较少见到利用傅立叶卷积网络(FNO)实现的案例。FNO模型本身具有分辨率无关性的特点,是一种适合处理超分问题的模型。本文以气泡上升场景为例,介绍基于飞桨FNO模型开发的流体超分功能,抛砖引玉,希望更多的学者参与,一同攻克流体超分难题。
飞桨AI for Science介绍
百度飞桨将AI方法应用于典型的科学与工程领域,促进数学、物理、化学、生物等多个学科的交叉融合。目前,针对通用物理科学、生物计算、量子机器学习领域发布了赛桨(PaddleScience)、螺旋桨(PaddleHelix)、量桨(Paddle Quantum)工具,并全量适配深度学习科学计算工具DeepXDE,提供数据驱动、数理融合、机理驱动等多种AI for Science方法模型,提供复杂外形障碍物绕流、结构应力应变分析、设备对流散热、材料分子模拟等丰富领域算例,广泛支持AI+计算力学、生物计算、量子计算等前沿方向的科研和产业应用。其中,AI for Science工具组件赛桨(PaddleScience)是国内首个基于AI框架的、公开且可应用于计算流体力学(CFD)领域的工具,提供端到端的应用API,重点围绕高水平科研活动场景,解决重大科研问题。
百度飞桨提供的自研科学计算套件PaddleScience实现了对PINN方法的全量支持,PaddleScience目前不仅支持自动(高阶)微分、数据并行、混合精度计算等,提供构建案例代码的简单组件,还实现了多领域的多种正、逆问题案例,同时提供详尽文档供用户和开发者使用及二次开发。
流体数据生成
在飞桨星河社区平台上调用第三方库taichi-2d-vof实现2D气泡在液体中上升的CFD模拟。该案例采用的CFD算法为VOF算法。
直接Fork项目(项目链接附在文后),安装第三方库Taichi,修改taichi-2d-vof包下的2dvof.py代码,便可以实现自定义网格、物理参数和迭代步数。其中,需要注意要通过调整迭代时间步的长短来匹配不同分辨率的网格。如果熟悉CFD,也可以自行编写求解代码,AI Studio提供CPU和GPU算力支持。
气泡上升案例的数据为低分辨率32x32,高分辨率128x128,分别有1000张不同时刻的图片。
超分FNO模型原理
超分FNO是基于飞桨FNO模型开发的具有任意分辨率提升能力的模型。其原理为利用FNO模型的分辨率无关特性,在原始FNO模型的傅立叶卷积层(Fourier Layers)后接入逆傅立叶变换层(Inverse Fourier Layer)。数据处理的流程为:
1.输入低分辨率的空间域(Spatial Domain)数据;
2.经过FC全连接层,将输入数据提升为高维低分辨率;
3.然后输入傅立叶卷积层,在高维频域(Spectral Domain)进行学习;
最后通过逆傅立叶层,将高维频域的数据投影到空间域,且具有高分辨率。
利用CFD生成的一定量低分辨率-高分辨率数据对(Image Pairs)训练FNO模型。训练好的模型可以批量化处理低分辨率数据,并快速推理得到高分辨率数据。在上述的气泡上升场景下,低分辨率的数据生成速度为每千张图片耗时12 分钟,而高分辨率的数据生成速度为每千张图片耗时60分钟。因为模型推理耗时可以忽略,所以相当于提升了5倍的数据生成速度。
训练好的模型推理结果如下(训练集上推理结果,与CFD高分结果基本一致)。
为了快速上手,建议使用少量数据进行训练。
未来,飞桨AI for Science将不断加大技术支持,为人工智能与力学科研发展赋能,汇聚科研成果、人才资源、产品创新,为AI for Science的发展提供坚实力量。
项目链接
https://aistudio.baidu.com/projectdetail/7451031(点击阅读原文跳转)
相关地址
AI Studio用户注册:https://aistudio.baidu.com/newbie
飞桨深度学习与科学计算公开课:https://aistudio.baidu.com/course/introduce/29929
飞桨PaddleScience工具组件github仓库:https://github.com/PaddlePaddle/PaddleScience
飞桨PaddleScience工具组件官方文档:https://paddlescience-docs.readthedocs.io/zh/latest/
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~