使用图网络和视频嵌入预测物理场
文章目录
- 一、说明
- 二、为什么要预测?
- 三、流体动力学模拟的可视化
- 四、DeepMind神经网络建模
- 五、图形编码
- 六、图形处理器
- 七、图形解码器
- 八、具有不同弹簧常数的轨迹可视化
- 九、预测的物理编码和推出轨迹
一、说明
这是一篇国外流体力学专家在可视化流体物理属性的设计实现。我们知道物理模型多半是微分方程,而将微分粒子看成是训练数据,能否得出解的近似形式?本篇给出这样的启发。对于重事科研工作的人无疑是个启发。
二、为什么要预测?
为什么我们需要预测实体行为?假设你想建造一艘船。事实证明,在实际建造船只之前验证您的船只设计要比事后验证要便宜得多。为此,您应该在实际制造之前检查您的发明在指定环境中的行为。您可以使用计算机模拟来做到这一点,这些模拟近似于水和船之间的物理相互作用。

三、流体动力学模拟的可视化
举一个更微不足道的例子,我们可以看看视频游戏。下面的游戏《盗贼之海》是整个游戏行业中最逼真的水表现之一。在这种情况下,模拟的准确性可能会降低,但会牺牲性能,因为您希望游戏尽可能快速流畅地运行。
我们希望这篇文章能简要介绍基于图网络的模拟器,并展示我如何扩展这种方法,以便它可以根据短视频推断任何系统的轨迹。
那么,你是怎么做到的呢?这些是纳维-斯托克斯方程。它们描述了粘性流体物质的运动,可用于描述管道中的水流或飞机机翼周围的气流。如果你碰巧不小心在三维空间中找到了它们的解决方案,请打我,因为如果你这样做了,就会有一百万美元的奖金。简而言之,数学很难。幸运的是,有一些方法可以在不计算这个怪物的情况下近似流体运动。

纳维-斯托克斯方程
这些模拟速度很快。你在这里看到的是一种称为平滑粒子流体动力学的模拟方法。粒子会影响附近的其他粒子。描述这些局部行为并将它们部署在数千个粒子上可以产生非常准确的结果。让我们试着弄清楚如何构建一个预测这种行为的神经网络。

四、DeepMind神经网络建模
为此,我们需要更明确地构建问题。输入是一组粒子。然后,这个状态应该通过一些有趣的函数来提出这些粒子的新位置。重复这个过程一百万次,我们就有了一个完整的模拟。很简单。

DeepMind的人会完全同意这一点。他们提出了一种可以预测复杂物理系统行为的方法。您看到的其中一个视频是预测的轨迹,而另一个视频是使用传统方法模拟的。你能猜到什么是什么吗?
正如你所看到的,DeepMind的人知道他们在做什么。

好的,但是如果你想预测沙子的运动呢?然后,您需要在新数据集上从头开始重新训练新模型。
如果你想有一个专门研究粘液的模型怎么办?然后,新的数据集,新的训练,新的模型。
介于两者之间呢?预测粘沙行为的模型呢?同样,它需要从头开始训练。即使你已经有一个沙子模型和一个粘液模型!
这就引出了我们的研究问题:物理系统的视频是否包含足够的信息来推广图网络?
我们想建立一个基于单个视频的系统,可以预测视频中可见的系统的行为。理想情况下,整个系统只需要一个单一的训练程序,并且能够在不同的系统中很好地推广。
所以这是我的建议。我们将建立一个模型。该模型将观看物理系统的视频,并预测其在某个潜在空间中的属性。这将允许对任何系统的物理属性进行编码,同时保留它们之间的任何差异。正如你所看到的,goop-o-sand 位于沙子和粘液之间的某个地方,表明它的行为应该是这两者的“平均值”。

不同系统的物理编码的可视化。从顶部:沙子、水、粘液、沙子
因此,让我们使用这种物理编码来预测系统的运动。首先,视频编码器观看视频并计算系统的物理特性。此编码将根据它观看的视频而有所不同。
然后,将这种编码与来自原始粒子的信息相结合。
首先,我们从原始粒子中创建一个图形。每个粒子都变成一个图顶点。边缘是在相邻粒子之间创建的。每条边都包含有关其连接的粒子之间位移的信息。每个粒子存储其最后三个速度以及视频编码器提供的物理属性。
现在,边和顶点都存储向量。我们可以将这些向量通过它们各自的编码器来获得潜在图。编码图的结构与原始图完全相同,但边和顶点的编码已使用这些小型神经网络进行了更新。

五、图形编码
完善!现在,每条边都有一些编码,每个顶点都有一些其他编码。我们将执行一个称为消息传递的过程。在此示例中,我们将重点关注紫色节点。
首先,我们找到连接到紫色节点的三条边。让我们关注具有 E-Zero 编码的边缘。我们将按以下方式构造一个向量。由于每条边总是只连接两个节点,因此我们将采用这两个节点的编码。在本例中为 V-0 和 V-1。此外,我们还将包括边缘本身的编码。我们对连接到紫色节点的每个边重复此过程。
然后,这些向量通过另一个神经网络,然后相加在一起。
此输出最终通过另一个小模块,以获得新的节点编码。此过程的输出将反馈到原始节点。然后一遍又一遍地重复整个过程。在我的实验中,我执行了其中三个消息传递步骤。

六、图形处理器
完善!现在是最后一步。每个粒子都有一个与其编码相关的向量。
我们最终可以解码图形,最终获得每个粒子的加速度。既然我们有加速度,我们就可以计算出新的速度。有了新的速度,我们可以计算出每个粒子的新位置。现在,我们可以重复整个过程,在下一个时间步获取系统的状态。

七、图形解码器
让我们来测试一下。在进入流体之前,我在一个更简单的系统上测试了我刚才描述的方法。该系统由 10 个颗粒组成,与弹簧连接。这种设置自然地转换为图形,其中弹簧被简单地替换为边缘。此外,由于系统仅在一个值 k 上有所不同,即弹簧常数,因此从视频计算的物理编码仅包含一个数字。
为了训练模型,我为具有不同弹簧常数的系统生成了轨迹。在右侧,您可以看到 5 种不同类别的系统。在我的实验中,我改变了系统类的数量。有些模型仅使用弹簧常数非常低或非常高的轨迹进行训练,而有些模型甚至使用 10 个不同的系统类别进行训练。
总的来说,每个数据集始终包含 320 条轨迹。每条轨迹长 3 秒,共计 300 个时间步长。此外,每个带有图形的样本都具有轨迹的关联视频。
在训练过程中,以非标准方式选择样本以增加数据集中的方差。首先,选择单个时间步长。这包含输入图以及目标加速度。假设此时间步长来自弹簧常数 k 等于 4000 的类。然后,从具有该特定弹簧常数的系统的所有视频中,随机选择一个。然后,该视频与图形一起传递到网络,以计算加速度。
重要的是,视频编码器与图网络同时进行训练。这意味着视频编码器仅根据预测的加速度来学习物理特性。

八、具有不同弹簧常数的轨迹可视化
这是结果!根据视频,物理编码是不同的。在顶部,您可以看到一个具有低弹簧常数和低物理编码的系统的视频。底部是具有更硬弹簧的系统的视频,导致高物理编码。
右边是预测的轨迹。有趣的是,他们俩都是从完全相同的初始条件开始的。但是,根据物理编码,我的模型设法生成了类似于视频中可见的系统的卷展。右上角的弹簧比右下角的弹簧灵活得多。在称其为成功之前,让我们再看一些数据

九、预测的物理编码和推出轨迹
首先,仅使用两个系统的轨迹训练的模型,要么具有非常低的弹簧常数,要么具有非常高的弹簧常数。虽然这两个类的一步误差非常低,但对于介于两者之间的系统来说,误差要大得多。这可能是因为模型只看到了这些极端情况,因此它不能在它们之间轻松插值。
如果模型使用 5 个不同的类进行训练,则会出现类似的现象,训练期间存在的系统的误差较低,而模型从未见过的系统的误差较高。
最后,如果模型看到了 10 个具有 10 个不同弹簧常数的不同系统,则误差最小。这些结果与神经网络的直觉一致,因为它们在处理原始分布中存在的数据时做得很好,但很难脱离分布。

具有不同弹簧常数的系统的真实加速度和预测加速度之间的平均欧几里得距离
我想向你展示的另一件有趣的事情是物理编码。在第一个模型中,各种系统的平均编码似乎明显对应于真正的弹簧常数。
其他模型也可以说类似的事情。真实弹簧常数与预测的视频编码之间也存在明显的对应关系。
现在有趣的是这些编码的差异。突出显示的区域表示结果的标准差。如您所见,对于原始分布中存在的系统,方差很小,而对于训练数据集中不存在的系统来说,方差相当大。
对于使用 5 个类训练的模型,方差明显较小,表明模型对其预测更加“自信”。
对于在 10 个系统类上训练的最终模型,这种影响甚至更大。

由在不同数量的物理系统类别上训练的模型预测的视频编码
根据我们所知道的,让我们回答最初的问题。我们能否使用短视频对系统的物理特性进行可靠的编码?是的,我们能。
我们能否在一个程序中训练整个系统?是的,我们能。最后,我们能否可靠地在不同的材料之间进行插值?
正如我们所看到的,模型在分布之外难以泛化。然而,随着训练分布变得更加精细,并且在系统类中包含更多的变化,整个频谱的误差就会变小。
相关文章:
使用图网络和视频嵌入预测物理场
文章目录 一、说明二、为什么要预测?三、流体动力学模拟的可视化四、DeepMind神经网络建模五、图形编码六、图形处理器七、图形解码器八、具有不同弹簧常数的轨迹可视化九、预测的物理编码和推出轨迹 一、说明 这是一篇国外流体力学专家在可视化流体物理属性的设计…...
将java项目上传到GitHub步骤
文章目录 一、GitHub 作用二、github如何修改默认分支为master三、手把手教你把项目上传github上四、github怎么删除仓库或项目五、github配置ssh key密钥的步骤六、执行到push时报错的解决办法七、github怎么修改仓库语言 一、GitHub 作用 GitHub 是一个存放软件代码的网站&a…...
Electron项目中将CommonJS改成使用ES 模块(ESM)语法preload.js加载报错
问题 将Electron项目原CommonJS语法改成使用ES 模块(ESM)语法,preload.js一直加载不到,报错如下: VM111 renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js VM111 renderer_init:2 E…...
Stable Diffusion 模型分享:Counterfeit-V3.0(动漫)
本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 高质量动漫风格模型。 条目内容类型大模型基础模…...
软件开发者如何保护自己的知识产权?
最近一个关于开源软件的知识产权纠纷的案例,非常有代表性, 其中涉及到的平台openwrt,一口君十几年前曾玩过, 通过这个案例,我们可以学习如何在今后工作中保护自己的知识产权, 以及如何合理直接或者间接利…...
Promise魔鬼面试题
文章目录 题目解析难点分析分析输出step1step2step3step4step5step6 参考/致谢:渡一袁老师 题目 Promise.resolve().then(() > {console.log(0);return Promise.resolve(4);}).then((res) > {console.log(res);});Promise.resolve().then(() > {console.l…...
Vue3+Nuxt3 从0到1搭建官网项目(SEO搜索、中英文切换、图片懒加载)
Vue2Nuxt2 从 0 到1 搭建官网~ Vue3Nuxt3 从0到1搭建官网项目 安装 Nuxt3,创建项目初始化的 package.json项目结构初始化项目pages 文件下创建index.vue引入sass修改 app.vue 文件查看效果 配置公共的css、metaassets下的cssreset.scss 重置文件common.scss 配置nux…...
面试经典150题——三数之和
面试经典150题 day29 题目来源我的题解方法一 暴力解法 超时方法二 扩展两数之和(双指针)方法三 扩展为通用的n数之和 题目来源 力扣每日一题;题序:15 我的题解 方法一 暴力解法 超时 进行三重循环遍历,判断和是否为…...
go动态创建/增加channel并处理数据
背景描述 有一个需求,大概可以描述为:有多个websocket连接,因此消息会并发地发送过来,这些消息中有一个标志可以表明是哪个连接发来的消息,但只有收到消息后才能建立channel或写入已有channel,在收消息前无…...
asp.net成绩查询系统
说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql server数据库 功能模块: asp.net成绩查询系统 学生功能有查看成绩和修改账号密码等 后台管理员可以进行用户管理 管理员添加管理员查询注…...
Express路由
什么是路由 官方定义:路由确定了应用程序如何响应客户端对特定端点的请求。 路由的使用 一个路由的组成有 请求方法、路径 和 回调函数 组成。 Express中提供了一些列方法,可以很方便的使用路由,使用格式如下: app.<metho…...
在做题中学习(53): 寻找旋转数组中的最小值
153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode) 解法:O(logn)->很可能就是二分查找 思路:再看看题目要求,可以画出旋转之后数组中元素的大小关系: 首先,数组是具有二段性的(适配二分查…...
C#语言进阶(三) 元组
总目录 C# 语法总目录 元组目录 元组1. 元组元素命名2. 元组的解构3. 元组的比较 元组 元组(tuple)是一组存储值的便捷方式。 元组的目的主要是,不使用out参数而从方法中返回多个值。(匿名类型无法做这个操作)元组能做匿名类型所有操作。 元组是值类型࿰…...
实用的Chrome 浏览器命令
Google Chrome 浏览器提供了许多快捷命令和实用功能,可以帮助用户提高效率和改善浏览体验。这里列举了一些非常实用的Chrome浏览器命令: 1. **CtrlT** / **CmdT** - 打开一个新的标签页。 2. **CtrlShiftT** / **CmdShiftT** - 重新打开最后关闭的标签页…...
IDEA远程连接docker服务,windows版docker desktop
1.windows上安装docker desktop docker desktop下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 有的windows系统不支持安装docker desktop 安装完之后我们可以直接打开,可以选择不登录使用 我们用IDEA连接到docker …...
Rust 和 Go 哪个更好?
在讨论 Rust 与 Go 两种编程语言哪种更优秀时,我们将探讨它们在性能、简易性、安全性、功能、规模和并发处理等方面的比较。同时,我们看看它们有什么共同点和根本的差异。现在就来看看这个友好而公平的对比。 Rust 和 Go 都是优秀的选择 首先ÿ…...
【免费Java系列】大家好 ,今天是学习面向对象高级的第八天点赞收藏关注,持续更新作品 !
这是java进阶课面向对象第一天的课程可以坐传送去学习http://t.csdnimg.cn/Lq3io day08-Map集合、Stream流、File类 一、Map集合 同学们,在前面几节课我们已经学习了Map集合的常用方法,以及遍历方式。 下面我们要学习的是Map接口下面的是三个实现类H…...
RPC 失败。curl 16 Error in the HTTP2 framing layer
报错: (base) hh-virtual-machine:~/work$ git clone https://github.com/yangzongzhuan/RuoYi-Vue3.git 正克隆到 RuoYi-Vue3... error: RPC 失败。curl 16 Error in the HTTP2 framing layer fatal: 在引用列表之后应该有一个 flush 包这个错误通常是由于 Git 在…...
(图论)最短路问题合集(包含C,C++,Java,Python,Go)
不存在负权边: 1.朴素dijkstra算法 原题: 思路:(依然是贪心的思想) 1.初始化距离:dis[1]0,dis[i]INF(正无穷) 2.循环n次: 找到当前不在s中的dis最小的点&…...
电脑文件批量重命名不求人:快速操作,高效技巧让你轻松搞定
在数字化时代,电脑文件的管理与整理显得尤为重要。当面对大量需要重命名的文件时,一个个手动修改不仅耗时,还容易出错。那么,有没有一种方法可以快速、高效地完成这一任务呢?答案是肯定的,下面就来介绍几种…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
