Deep Fluids:流体シミュレーションをディープラーニングで近似する

チューリッヒ工科大学(ETH Zurich)、ミュンヘン工科大学、Pixarによるディープラーニングで流体シミュレーションを近似する研究 Deep Fluids: A Generative Network for Parameterized Fluid Simulationsプロジェクトページソースコードが公開されている。

Deep Fluids

本研究では、削減済みのパラメータセットから流体シミュレーションを合成する新しい生成モデルを提案します。畳み込みニューラルネットワークを離散パラメータ化した流体シミュレーションの速度場(velocity fields)で訓練しました。

訓練データの代表的な特徴を学習するディープラーニングアーキテクチャの特性により、本研究の生成モデルは訓練データセットを正確に近似しつつ、中間値をもっともらしく補間することができます。この生成モデルは、全ての時刻で速度場(velocity fields)の無発散(divergence-free)を保証する新しい損失関数を導入することで流体に最適化されています。

本研究ではさらに、複雑なパラメータを削減した空間で扱えること、潜在空間(latent space)で第2のネットワークと統合することでシミュレーションをリアルタイムに実現できることを示します。
本手法では流体の多種多様な挙動をモデル化しているため、高速なシミュレーション構築、異なるパラメータを持つ流体の補間、タイムリサンプリング、潜在空間(latent space)シミュレーション、シミュレーションデータの圧縮などに応用できます。

本手法による速度場の再構築は、同データをCPUで再シミュレーションするよりも最大で700倍高速に生成でき、圧縮率は最大1300倍となります。


スポンサーリンク

5月に開催されるEurographics 2019で発表されるそうです。


スポンサーリンク


ETH Zurichといえば、数年前にRegression Forestベースの流体シミュレーション近似手法Pysics Forestsを発表していましたね↓
Physics Forests:機械学習で流体シミュレーションを近似する
CG分野(特にレンダリング)では、現実の物体・現象の性質をモデル化して扱う。計算リソースには限りがあるので、大抵の場合は視覚に大きく影響する要素だけをモデル化して関数などで表現する。実測値や物理法則に基づいた計算を行う「物理モデル」に対して...


機械学習による流体シミュレーション近似を突き詰めていくと、やっぱりニューラルネットワークに行き着くということなのだろうか。

GitHubで公開されているDeep Fluidsのソースコードを見ると、TensorFlowベースで実装されているようだ↓
https://github.com/byungsook/deep-fluids

mantaflowという流体シミュレーションのフレームワークを使って訓練用のデータセットを用意するんですね↓

mantaflow

mantaflowは、コンピューターグラフィックスでの流体シミュレーションの研究を対象としたオープンソースのフレームワークです。
並列化されたC++のsolverコア、pythonシーン定義のインターフェイス、プラグインシステムにより、新しいアルゴリズムの迅速なプロトタイピング・テストが可能です。mantaflowには広範囲のNavier-Storkes solverの変種が含まれています。
mantaflowはとても用途が広く、ディープラーニングのフレームワーク(例:numpyを介してTensorFlow)と連携してインポート/エクスポートを可能な他、matlabのプラグインとしてスタンドアローンにコンパイルすることもできます。
最新版のダウンロードはこちら

Physics Forestsで著者の1人にDisney Research所属の人がいたように、Deep Fluidsの著者の中にはPixar所属の人がいますね。

CGで一昔前は物理ベースと言われていたジャンルが、演算コストが頭打ちになってだんだんナレッジ(知識)ベースへと移ってきているということだろうか。
大きな目で見ると、現象をデフォルメして軽い処理で近似していた時代に戻っているような気もする。

多次元パラメータを扱う関数の多いCG分野はディープラーニング(というかニューラルネットワーク)に向いてるのかもな。
畳み込みって、テクスチャマッピングやShading処理そのものだし、GPUとの相性も良い。
https://shiropen.com/seamless/deep-fluids

NVIDIAがGPGPUと言い始めたころ、その使用例は流体計算が多かった気がするけど、時代を経て手を変え品を変え、結局GPUで流体計算しているのも何だか不思議。


スポンサーリンク

関連記事

書籍『イラストで学ぶ ディープラーニング』
OpenMVS:Multi-View Stereoによる3次元復元ライブラリ
単純に遊びに行くのはだめなのか?
UnityでShaderの入力パラメータとして行列を渡す
ROSの薄い本
『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイクダウン
Windows Server 2008にAutodesk Maya 2009をインストール
トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ
トランスフォーマー :リベンジのメイキング (デジタルドメイン)
PyMC:Pythonのベイズ統計ライブラリ
AmazonEC2のインスタンスをt1.microからt2.microへ移行する
ZBrush 2018へのアップグレード
ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を修正
ZBrushでアヴァン・ガメラを作ってみる 脚のポーズ調整
注文してた本が届いた
Unityの各コンポーネント間でのやり取り
色んな三面図があるサイト
GoogleのDeep Learning論文
UnityでPoint Cloudを表示する方法
ヘッドマウントディスプレイとビジュアリゼーションの未来
Mayaのシェーディングノードの区分
ニューラルネットワークで画像分類
スクラッチで既存のキャラクターを立体化したい
映画から想像するVR・AR時代のGUIデザイン
粘土をこねるようなスカルプトモデリング
OANDAのfxTrade API
アニゴジ関連情報
Siggraph Asia 2009 カンファレンスの詳細
OpenCVで平均顔を作るチュートリアル
布のモデリング
映画『ゴジラ-1.0』 メイキング情報まとめ
Photo Bash:複数の写真を組み合わせて1枚のイラストを制作する
Theia:オープンソースのStructure from Motionライブラリ
ZBrushで仮面ライダー3号を造る 仮面編 DynaMesh
PSPNet (Pyramid Scene Parsing Network):ディープラーニングによ...
SculptrisとBlenderで作ったGodzilla 2014 (Fan Made)
ZBrush キャラクター&クリーチャー
Google App EngineでWordPress
UnityのGlobal Illumination
『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン まとめ
3DCGのモデルを立体化するサービス
「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか

コメント