サイトアイコン NegativeMindException

Physics Forests:機械学習で流体シミュレーションを近似する

CG分野(特にレンダリング)では、現実の物体・現象の性質をモデル化して扱う。計算リソースには限りがあるので、大抵の場合は視覚に大きく影響する要素だけをモデル化して関数などで表現する。

実測値や物理法則に基づいた計算を行う「物理モデル」に対して、人間の経験則から導いたそれらしい近似計算方法を「推論モデル」なんて呼んだりしますね。LambertPhongなど、初期の反射モデルは大体が推論モデル。CGの質感を計算する「レンダリング」は人間の眼を相手にする分野なので、計算のごまかしが効くことが多いのかも。

これが「質感」ではなく、「動き」となるとなかなかごまかすのは難しいらしい。従来、CGで水や煙などの流体の挙動を計算するにはNavier-Stokes方程式を解くというのがお決まりで、計算負荷を抑えるには離散化(格子・粒子)の解像度を粗くしたりするのが高速化の常套手段だった。(つまり物理モデル)

で、このNavier-Stokes方程式の計算を機械学習で近似してしまおう、というのがSiggraph Asia 2015で発表された”Data-Driven Fluid Simulations using Regression Forests“という研究。Physics Forestsという公式サイトがありますね↓

PHYSICS FORESTS

従来の流体シミュレーション手法は、平均的なサイズのシーン中の非常に小さな時間ステップの計算であっても、安定性を保証するために大規模な計算リソースを必要としました。近年、並列演算の環境は大きく進歩し、圧力計算の効率的なアルゴリズムが登場しているにもかかわらず、リアルタイムの流体シミュレーションは非常に限定された条件下でなければ不可能でした。

本論文では、機械学習をベースとした新しい手法を提案します。本手法では、物理ベースの流体シミュレーションを回帰問題として定式化し、各フレームでの粒子全ての加速度を推定します。

我々は、Navier-Stokes方程式から直接個々の力と制約をモデル化し、未知のテストデータでも粒子の位置・速度を確実に予測できる強い汎化特性を持つ特徴ベクトルを設計しました。我々は、既存のシミュレーション手法で大規模な学習セットを作成し、Regression Forestsによる機械学習で粒子の挙動を近似しました。

GPU実装により、既存の粒子シミュレーションの先端手法と比較して1〜3桁ほど高速化し、200万個の粒子のシミュレーションをリアルタイムに演算可能となりました。

機械学習を使って計算負荷の低い「なんちゃって流体シミュレーション」を実現したってことなのかな。計算対象は粒子なんですね。
https://github.com/arXivTimes/arXivTimes/issues/123

2018年8月29日 追記:このPhysics Forestsのインタラクティブデモが公開されました。メールアドレスを登録するとダウンロードできます。↓
http://apagom.com/physicsforests/downloads/

推奨動作環境
Windows (64-bit) または Linux (64-bit)
NVIDIAのCUDAコア搭載グラフィックスカード(GTX1080 以上)


スポンサーリンク





この手法は、以前勉強した機械学習手法のRandom Forestを回帰問題用に拡張したRegression Forestという手法がベースになっている。


Regression Forestは、Random Forestの葉ノードを実数値にするやつですね。それぞれの決定木の結果値の平均を取るやつ。(雑な理解)

Random Forest系の手法は複数の決定木の処理を並列化しやすいので、マルチスレッドでの高速化がかなり期待できるリアルタイム向きの機械学習手法だ。

確かKinectの人検出もRandam Forestだし、DlibFace AlignmentRegression Forestをベースにした実装ですね↓
Dlib:C++の機械学習ライブラリ
画像認識系の人達の間では、高性能な顔の器官検出(Face Alignment)が手軽に利用できることで知られているC++のライブラリ Dlib。(表記は大文字、小文字どっちなんでしょう?) 英語のWikipediaによると、2002年から開...


動画を見てみると、映像作品やゲーム中で出てくる分には普通にシミュレーションと言われても気づかなそう。人間の目は細部の動きに対して意外と鈍感なのかも。



論文の著者の1人の所属が”Disney Research Zurich”って書いてあるけど、こういう技術がディズニー映画で活用されたりするんだろうか。



2019年2月追記:今度はディープラーニングで流体シミュレーションする研究が登場した↓
Deep Fluids:流体シミュレーションをディープラーニングで近似する
チューリッヒ工科大学(ETH Zurich)、ミュンヘン工科大学、Pixarによるディープラーニングで流体シミュレーションを近似する研究 Deep Fluids: A Generative Network for Parameterized...

Siggraph 2017 Real-Time Live!

2017年追記:Siggraph 2017のReal-Time Live!でもデモされたらしい。
http://www.4gamer.net/games/999/G999902/20170821104/







公式サイトからUnrealEngineフォーラムのスレッドへのリンクがあるけど、UnrealEngine用のプラグインを開発してるみたいですね。
https://forums.unrealengine.com/community/work-in-progress/114470-physics-forests-a-new-real-time-fluid-solver

デモ動画

これ、リアルタイムなのか。



こっちの動画は、NVIDIA Pascal TITAN X(CUDA)を1枚挿した普通のPCで演算したとのこと。(それって普通か?)

CG分野での演算高速化の技術って、人間の眼を騙す近似手法が突破口になっている気がする。
そして、最近は機械学習が負荷の高い演算の事前キャッシュとして機能している感じ。

一見複雑に見える自然界の現象は、シンプルなルールが再帰的に連鎖することで成り立っている。
というのが物理計算やプロシージャルモデリングの根底にある思想だと思う。つまり、ミクロな振る舞いを積み上げることでマクロな振る舞いを再現している。

一方で機械学習によるアプローチは、マクロな振る舞いだけに着目して模倣することで演算量を削減している感じ。(描画対象のスケールが変わると対応できなくなのかな?)
考え方がCGの演算リソースが乏しかった時代に回帰しているような気もするけど、たぶん繰り返しながら進化していくんでしょうね。
物理シミュレーションの場合はスケールに依らず時間・空間解像度が上がるだけで演算コストが爆上がりしてしまうけど、機械学習でそのスケールの「経験則」を習得できれば大丈夫なのかな。

この流れで行くと、流体シミュレーションだけでなく、グローバルイルミネーションやプロシージャルモデリングも機械学習で高速に近似する時代はすぐに来そうだな。


スポンサーリンク

関連記事

  • Russian3DScannerのトポロジー転送ツール『WrapX』
  • NeRF (Neural Radiance Fields):深層学習による新規視点合成
  • 海外ドラマのChromaKey
  • 『ローグ・ワン/スター・ウォーズ・ストーリー』のVFXブレイクダウン まとめ
  • Adobe Photoshop CS5の新機能
  • ZBrush 2021.6のMesh from Mask機能を使ってみる
  • Photo Bash:複数の写真を組み合わせて1枚のイラストを制作する
  • Structure from Motion (多視点画像からの3次元形状復元)
  • グローバルイルミネーションに手を出す前に、やり残したことがあるんじゃない?
  • ドラマ『ファーストクラス』のモーショングラフィックス
  • ZBrushで仮面ライダー3号を造る 仮面編 リファレンス画像の表示
  • R-CNN (Regions with CNN features):ディープラーニングによる一般物体...
  • ZBrushで仮面ライダー3号を造る 仮面編 Dam Standardブラシでディティールを彫る
  • Windows10でPyTorchをインストールしてVSCodeで使う
  • Polyscope:3Dデータ操作用GUIライブラリ
  • Rerun:マルチモーダルデータの可視化アプリとSDK
  • viser:Pythonで使える3D可視化ライブラリ
  • PyTorch3D:3Dコンピュータービジョンライブラリ
  • 3Dスキャンに基づくプロシージャルフェイシャルアニメーション
  • 白組による『シン・ゴジラ』CGメイキング映像が公開された!
  • 『ピクサー展』へ行ってきた
  • Mayaのプラグイン開発
  • Open3D:3Dデータ処理ライブラリ
  • Unreal Engineの薄い本
  • 布のモデリング
  • 2012 昨日のクローズアップ現代を見た
  • 写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
  • ZBrushで仮面ライダー3号を造る 仮面編
  • 自前Shaderの件 解決しました
  • アニゴジ関連情報
  • Mixamo:人型3Dキャラクターアニメーション制作サービス
  • trimesh:PythonでポリゴンMeshを扱うライブラリ
  • ZBrushの練習 手のモデリング
  • 日立のフルパララックス立体ディスプレイ
  • HD画質の無駄遣い
  • iOSで使えるJetpac社の物体認識SDK『DeepBelief』
  • ヒーローに変身なりきりアーケードゲーム『ナレルンダー』
  • MeshLab:3Dオブジェクトの確認・変換に便利なフリーウェア
  • AndroidもopenGLも初心者さ (でもJavaは知ってるよ)
  • Accord.NET Framework:C#で使える機械学習ライブラリ
  • 単純に遊びに行くのはだめなのか?
  • Unity Scriptコーディング→Unreal Engine Scriptコーディング
  • モバイルバージョンを終了