当前位置: 首页 > article >正文

飞桨AI for Science流体超分FNO模型案例分享

fa1af78de480b62cd269e90d65af0be7.gif

高分辨率的CFD计算十分耗时,且输出结果文件较大,一个瞬态的结果可以占用几百MB的存储空间。因此,批量化的高分辨率CFD计算,耗时更久,数据存储需求更大,限制了高分辨率CFD的实际使用。相反,低分辨率的CFD数据计算耗时短,数据存储量小,更加适合批量化生成,但是低分辨率的CFD精度往往不足,缺少流动的细节信息。而机器学习的模型推理速度非常快,若能够利用机器学习的方法提升低分辨率的CFD精度,训练好的模型就可以快速将低分辨率CFD的结果提升为高分辨率CFD的结果,解决上述问题。

5851a6dd3e82904fd2194b6da188e09a.png

(Fukami et al. 2023)

目前,流体超分主要采用生成对抗网络(GAN)和卷积神经网络(CNN),较少见到利用傅立叶卷积网络(FNO)实现的案例。FNO模型本身具有分辨率无关性的特点,是一种适合处理超分问题的模型。本文以气泡上升场景为例,介绍基于飞桨FNO模型开发的流体超分功能,抛砖引玉,希望更多的学者参与,一同攻克流体超分难题。

405bccb9257e07ec3dba76de1a5bdba3.png

飞桨AI for Science介绍

百度飞桨将AI方法应用于典型的科学与工程领域,促进数学、物理、化学、生物等多个学科的交叉融合。目前,针对通用物理科学、生物计算、量子机器学习领域发布了赛桨(PaddleScience)、螺旋桨(PaddleHelix)、量桨(Paddle Quantum)工具,并全量适配深度学习科学计算工具DeepXDE,提供数据驱动、数理融合、机理驱动等多种AI for Science方法模型,提供复杂外形障碍物绕流、结构应力应变分析、设备对流散热、材料分子模拟等丰富领域算例,广泛支持AI+计算力学、生物计算、量子计算等前沿方向的科研和产业应用。其中,AI for Science工具组件赛桨(PaddleScience)是国内首个基于AI框架的、公开且可应用于计算流体力学(CFD)领域的工具,提供端到端的应用API,重点围绕高水平科研活动场景,解决重大科研问题。

百度飞桨提供的自研科学计算套件PaddleScience实现了对PINN方法的全量支持,PaddleScience目前不仅支持自动(高阶)微分、数据并行、混合精度计算等,提供构建案例代码的简单组件,还实现了多领域的多种正、逆问题案例,同时提供详尽文档供用户和开发者使用及二次开发。

5a8b0f266308068b153a65e8b4aae47b.png

9ff7083797cb3a82e1f85d7a31c11e53.png

流体数据生成

在飞桨星河社区平台上调用第三方库taichi-2d-vof实现2D气泡在液体中上升的CFD模拟。该案例采用的CFD算法为VOF算法。

直接Fork项目(项目链接附在文后),安装第三方库Taichi,修改taichi-2d-vof包下的2dvof.py代码,便可以实现自定义网格、物理参数和迭代步数。其中,需要注意要通过调整迭代时间步的长短来匹配不同分辨率的网格。如果熟悉CFD,也可以自行编写求解代码,AI Studio提供CPU和GPU算力支持。

60fdd0ea0c2185a1c763ae2747a6fd2f.png

气泡上升案例的数据为低分辨率32x32,高分辨率128x128,分别有1000张不同时刻的图片。

694917488a5f98353f9caf2038a81ba6.png

ae93a8ac28655ed52ffa51b127e6f8e7.png

超分FNO模型原理

超分FNO是基于飞桨FNO模型开发的具有任意分辨率提升能力的模型。其原理为利用FNO模型的分辨率无关特性,在原始FNO模型的傅立叶卷积层(Fourier Layers)后接入逆傅立叶变换层(Inverse Fourier Layer)。数据处理的流程为:

1.输入低分辨率的空间域(Spatial Domain)数据;

2.经过FC全连接层,将输入数据提升为高维低分辨率;

3.然后输入傅立叶卷积层,在高维频域(Spectral Domain)进行学习;

最后通过逆傅立叶层,将高维频域的数据投影到空间域,且具有高分辨率。

7ccbbacc622bb4a98fe8bfbf9203da88.png

利用CFD生成的一定量低分辨率-高分辨率数据对(Image Pairs)训练FNO模型。训练好的模型可以批量化处理低分辨率数据,并快速推理得到高分辨率数据。在上述的气泡上升场景下,低分辨率的数据生成速度为每千张图片耗时12 分钟,而高分辨率的数据生成速度为每千张图片耗时60分钟。因为模型推理耗时可以忽略,所以相当于提升了5倍的数据生成速度。

训练好的模型推理结果如下(训练集上推理结果,与CFD高分结果基本一致)。

为了快速上手,建议使用少量数据进行训练。

a1b88c268d89ab5e7d6b7dc80b0e3fb8.png

未来,飞桨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/

9d23892d5f4542db6efd4badaaf6ff16.png

756aa1b5cfa181a0e711390b9f8a2e05.png

dc23aea734a127842dc83fc124141ff7.png

8f9cf248cbbae6ca82c3126d5e4a83fc.png

7554213e4deda46f6cae7464a5e8d880.gif

关注【飞桨PaddlePaddle】公众号

获取更多技术内容~


http://www.kler.cn/news/232766.html

相关文章:

  • django安装使用
  • 2. Maven 继承与聚合
  • 微信小程序(三十四)搜索框-带历史记录
  • Qt PCL学习(二):点云读取与保存
  • Redis Centos7 安装到启动
  • 标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程
  • Spring Boot动态加载Jar包与动态配置技术探究
  • C++从零开始的打怪升级之路(day35)
  • 嵌入式软件的设计模式与方法
  • TCP和UDP相关问题(重点)(4)——4.使用TCP的协议有哪些?使用UDP的协议有哪些?
  • 第59讲订单数据下拉实现
  • 2024-02-08 思考-日记
  • MySQL组复制的介绍
  • 32. 最长有效括号
  • django中自定义视图样式
  • LCP 30. 魔塔游戏
  • 亲测解决vscode的debug用不了、点了没反应
  • 【开源项目阅读】Java爬虫抓取豆瓣图书信息
  • 蓝桥杯每日一题------背包问题(一)
  • 【C++】初识模板:函数模板和类模板
  • Linux I/O 重定向简介
  • DBdoctor恭祝大家龙行龘龘,前程朤朤
  • 多线程JUC:等待唤醒机制(生产者消费者模式)
  • 【react】react+es6+antd5.13.2+ts,antd表格的操作如何在父组件写?
  • LabVIEW双光子荧光显微成像系统开发
  • MPLS VPN功能组件(3)
  • itextpdf使用:使用PdfReader添加图片水印
  • 【Unity】重力场中的路径预测方法
  • 排序算法---插入排序
  • 在django中集成markdown文本框