-
Notifications
You must be signed in to change notification settings - Fork 178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【快乐开源】为 PaddleScience 添加 SDF 计算函数 #376
Comments
认领3 |
This was referenced Jun 17, 2023
Closed
Merged
Closed
Merged
Merged
为 PaddleScience 添加 SDF 计算函数 已全部完成,感谢参与的小伙伴们!
欢迎继续参与 科学计算快乐开源的其他任务! |
github-project-automation
bot
moved this from In Progress
to Done
in Call for Contributions
Jun 27, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1. 背景
坐标点是科学计算问题求解时常用的输入数据对象,这些坐标点从指定的几何计算域中采样得到。从训练优化的角度来看,给所有样本点(坐标点)设置一样的权重并不是一个最优的方法,因此在一些优化 trick 中会将每个点的 SDF(signed distance function) 值作为其权重,以此来加强难样本(靠近计算域中心)的权重,减少简单样本(靠近计算域边界)的权重,最终进一步提升模型训练的精度。
PaddleScience 目前的几何模块由简单几何和复杂几何组成,复杂几何由 ppsci.geometry.Mesh 类来表示,并基于 pymesh 库进行 SDF 值的计算;而简单几何(如 ppsci.geometry.Disk)还未具备 SDF 计算功能,因此我们希望给所有的简单几何类,添加 SDF 计算功能。
Tips: SDF 函数一般用于计算一个点(多个点同理)到某一个几何边界的最短(欧式)距离(内部为负,外部为正),而在科学计算套件中,这些计算点通常来自几何内部,因此根据 SDF 的定义,其值往往是负数。如$[l, r]$ 的一维线段内部一个点 $x$ 的 sdf 函数就是
2. 收益 (整体进度:7/7)
使得简单几何具备 SDF 加权功能,从功能上与复杂几何更为统一,提升基于简单几何的案例优化空间,熟悉 PaddleScience 套件
3. 开发流程
3.1 安装 PaddleScience
下载安装 PaddleScience 套件:https://paddlescience-docs.readthedocs.io/zh/latest/zh/install_setup/#121-git
3.2 代码开发
以为 ppsci.geometry.Disk 模块添加 SDF 函数为例
还需修改一下:
ppsci/geometry/geometry.py
的代码,3.4 SDF 可视化验证
在编写完 SDF 代码之后,我们需要对 SDF 计算结果进行验证,可以按照以下代码手动实例化一个几何对象,然后在其内部进行采样,再调用 sdf_func 对内部采样点计算其 sdf 值,最后用 ppsci 的可视化接口保存为 vtu 文件。用 ParaView 软件打开查看。vtu 文件生成的示例代码如下:
3.5 整理代码并提交PR
参考 PaddleScience文档-贡献指南-整理代码并提交
4. 参考资料
The text was updated successfully, but these errors were encountered: