【Genesis】20を超える研究室が2年かけて開発した4D生成モデル!物理シミュレーションが可能に

2024/12/19、新たな動画生成モデルが登場!

新たに登場した「Genesis」は20を超える研究室が参加する24か月の大規模な共同研究を経て、汎用ロボットおよび物理AIアプリケーション向けに設計された4Dを生成できる生成物理エンジンです。

これまで3Dの動画生成モデルはありましたが4Dの動画生成ははじめてではないでしょうか。

本記事では、Genesisの概要から使い方、実際にどういう動画が生成されるのかについて紹介していきたいと思います。本記事を最後まで読むことで、Genesisで4D動画を生成ができるようになりますので、ぜひ最後までお読みください!

押さえておきたいポイント
  • 今後プロンプトから4D動画が生成可能
  • 生物物理エンジンでありリアルなシミュレーションが可能
  • インタラクティブにシミュレーションの確認が可能

目次

Genesisの概要

Genesisは、ロボティクス、エンボディドAI、フィジカルAIの応用を目的とした、生物物理エンジンです。20を超える研究室がGenesisの開発に関与。

参考:https://genesis-embodied-ai.github.io/

生物物理エンジン

生物学的なプロセスや挙動を物理シミュレーションとして再現するエンジンのこと。これは、従来の物理シミュレーションエンジン(剛体、軟体、流体など)を拡張し、生物特有の動作や内部プロセスをモデル化するために設計されています。

GenesisがGPUアクセラレーションによる並列計算を活用し、最適化された衝突チェック、自動休止などの機能を備え、さまざまなシーンでこれまでにないシミュレーション速度を実現しています。

例えば、単一の平面とFrankaアームを用いた操作シーンでは、Genesisは43ミリ秒FPSで動作。また、大規模シミュレーションでは、静的な状態にある物体のシミュレーションを高速化するために、自動休止機能を使用しています。

参考:https://genesis-embodied-ai.github.io/

Genesisでできること

Genesisでできることは大きく分けると次の5つです。

  • 物理シミュレーション
  • ロボティクスのシミュレーション
  • 生成AIとデータ生成
  • レンダリングとビジュアライゼーション
  • インタラクティブビューワー

一つずつ解説します。

参考:https://github.com/Genesis-Embodied-AI/Genesis

物理シミュレーション

Genesisの物理シミュレーションでは、次の5つをシミュレーションできます。

  • 剛体シミュレーション
  • 軟体シミュレーション
  • 接触力学
  • 流体の近似
  • 環境設定
参考:https://genesis-embodied-ai.github.io/

剛体シミュレーションでは、形が変形しない物体の運動や衝突をリアルに表現できます。たとえば、斜面を転がる球や、テーブルにぶつかる箱の動きなど。一方、軟体シミュレーションでは、布やゴムのような柔らかい物体が外部の力に応じて変形する様子を再現できます。

接触力学の機能では、物体同士が接触したときの摩擦や弾性の計算が可能。動的摩擦や静的摩擦を細かく設定できるため、氷の上を滑る物体と砂地に落ちた物体の動きの違いを忠実に再現できます。また、シミュレーション環境そのものも自由にカスタマイズ可能です。重力や空気抵抗を設定することで、地球以外の環境や特定の物理条件下での動作をシミュレーションできます。

さらに、流体挙動を粒子ベースで近似する機能もあります。たとえば、水滴が流れる様子や液体が溜まる動きをシミュレートできますが、これはまだ基本的なサポートに留まります。

Genesisでは、これらの物理現象をリアルタイムで計算し、シミュレーションの時間解像度や精度を調整することで、さまざまな場面に活用できます。

ロボティクスのシミュレーション

  • ロボットモデルの読み込み
  • 逆運動学と経路計画
  • 制御アルゴリズムのテスト
  • マルチロボットシミュレーショ
参考:https://genesis-embodied-ai.github.io/

ロボティクスのシミュレーションでは、URDFやMJCF形式のロボットモデルを利用して、実在するロボットの動作を仮想空間で再現できます。たとえば、ロボットアームが物体を掴む動作や、ドローンが空中を移動する様子をシミュレート可能。また、逆運動学機能を用いて、エンドエフェクターが目標位置に到達するための関節角度を計算できます。

さらに、GenesisではPID制御や力制御といったアルゴリズムを検証することで、ロボットの動作精度や応答性を高めることができます。複数のロボットが連携してタスクを実行するマルチロボットシミュレーションにも対応しており、工場ラインの協働作業やドローン群の動作検証など、幅広い場面で利用可能。

生成AIとデータ生成

  • 自然言語プロンプト
  • AIトレーニング用データ生成
  • カスタムデータ生成
参考:https://genesis-embodied-ai.github.io/

生成AIとデータ生成の機能では、プロンプトを使ってシミュレーションシーンを簡単に作成できます。たとえば、「テーブルに置かれたボールが転がるシーン」という指示を与えると、そのようなシミュレーションを生成。この機能により、手作業による複雑な設定が不要になり、効率よくシミュレーション環境を構築できます。

さらに、生成されたシミュレーションからRGB画像、深度マップ、セグメンテーションマスクといった多様なデータ形式を出力可能。これらのデータはAIモデルのトレーニングに活用でき、研究開発やプロトタイピングの効率を大幅に向上させます。

ちなみに2024/12/20時点では、プロンプトを入力しての動画生成はまだ実装されていませんでした。下記のポストに「The Genesis physics engine and simulation platform is fully open source at https://github.com/Genesis-Embodied-AI/Genesis…. We’ll gradually roll out access to our generative framework in the near future.」と書かれています。

和訳:「Genesis 物理エンジンとシミュレーション プラットフォームはhttps://github.com/Genesis-Embodied-AI/Genesis…で完全にオープン ソースです。近い将来、生成フレームワークへのアクセスを徐々に展開していきます」

レンダリングとビジュアライゼーション

  • リアルタイムレンダリング
  • 多様な出力モード
  • 動画記録

レンダリングとビジュアライゼーションでは、Genesisのシミュレーション結果をリアルタイムで視覚化できます。シーンの描画は高速なラスタライズ技術を用いて行われ、カメラ位置や視野角を自由に設定することで、視点を調整しながらシミュレーションの観察が可能です。

さらに、RGB画像や深度マップ、セグメンテーションマスク、法線マップなど、シミュレーション結果をさまざまな形式で出力できます。これらはAIトレーニング用データや分析ツールとして活用されます。

また、カメラを用いてシーンを記録し、MP4形式の動画として保存することも可能です。この機能により、シミュレーション結果をわかりやすく共有したり、後から見直すための資料として保存ができます。

インタラクティブビューワー

  • リアルタイム操作
  • ヘッドレスモード
  • 視覚的デバッグ

インタラクティブビューワーでは、シミュレーション中に視点を自由に動かしたり、物体の動きをリアルタイムで見ることができます。マウスやキーボードを使ってカメラの位置や角度を調整しながら、シミュレーション結果をインタラクティブに確認可能。

また、GUIを使わずスクリプトだけでシミュレーションを実行するヘッドレスモードもサポートしており、大量のデータを生成したり、高度なカスタムシナリオを構築する際に活用できます。

Genesisのライセンス

Apacheライセンス 2.0は特許ライセンスを含んでいるため、商用利用を含む幅広い使用が可能。再配布や改変時に、元のライセンス条項と表示が求められます。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用⭕️
私的使用⭕️
参考:https://github.com/Genesis-Embodied-AI/Genesis/blob/main/LICENSE

なお、動画生成AI最高のパラメータ数を持つHunyuanVideoについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

Genesisの使い方

GenesisはPythonをベースに作られており、PyPI経由で利用可能。PyTorchもインストールが必要です。

サンプルコードはGithubに上がっています。APIリファレンスはこちら

Genesisをgoogle colaboratoryで実装していきます。

まずは必要ライブラリのインストール

!pip install genesis-world
!pip install torch

次にGitHubからクローン

!git clone https://github.com/Genesis-Embodied-AI/Genesis.git

最後に実行するexamplesからtutorialsのvisualizationを選び、実行します。

!python /content/Genesis/examples/tutorials/visualization.py.py

動画を出力するものはかなり時間がかかります。google colaboratory A100でも30分以上経過しても完了しませんでした。

上記動画は80倍速になっています。

また、google colaboratoryで実装する場合、show_viewer=Falseにしないとエラーになります。

examples・tutorialsのどちらのフォルダのpythonファイルでも実行できます。

Genesisで物理シミュレーションを再現

Genesisはリアルな物理シミュレーションが可能です。また、将来的にはプロンプトから4D動画の生成もできるようになります。

Genesisが4D動画を生成できるのは、おそらくリアルな物理シミュレーションが可能だからでしょう。例えば、以下のような動画が生成できます。

今回はいくつか物理シミュレーションを行ってみます。

行うのは次の2つです。

  • ボールが傾斜を転がる
  • 水滴が落ちる

ボールが傾斜を転がる

ではボールが傾斜を転がるシミュレーションを行っていきます。google colaboratoryだと非常に時間がかかってしまうので、Vast.aiでJupyter Notebookで実装をしました。

サンプルコードはこちら
import genesis as gs
import numpy as np

# 初期化
gs.init(backend=gs.gpu)

# シーンの作成
scene = gs.Scene(show_viewer=False)

# カメラの設定
camera = scene.add_camera(
    res=(1280, 720),  # 解像度
    pos=(3, -3, 3),   # カメラ位置
    lookat=(0, 0, 0), # 注視点
    fov=60            # 視野角
)

# 傾斜面を追加
plane = scene.add_entity(
    material=gs.materials.Rigid(
        needs_coup=True  
    ),
    morph=gs.morphs.Plane(pos=(0, 0, -0.1), euler=(30, 0, 0))
)

# ボールを追加
ball = scene.add_entity(
    material=gs.materials.Rigid(
        needs_coup=True,  
        rho=1000          # 密度を設定
    ),
    morph=gs.morphs.Sphere(pos=(0, 0, 1), radius=0.1)
)

# シーンのビルド
scene.build()

# 記録開始
camera.start_recording()

# シミュレーション実行
for i in range(200):
    scene.step()       # シミュレーションの1ステップを進める
    camera.render()    # フレームをレンダリング
    
    # カメラのアニメーション(円形移動)
    angle = i * 0.02
    camera.set_pose(
        pos=(3 * np.cos(angle), 3 * np.sin(angle), 3),
        lookat=(0, 0, 0)
    )

# 記録終了と保存
camera.stop_recording(save_to_filename="bouncing_ball_fixed.mp4", fps=30)
print("Video saved as bouncing_ball_fixed.mp4")

確かにボールが転がっている物理シミュレーションができましたが、これがリアルなシミュレーションなのかを確認する術がありません。

水滴が落ちる

続いて水滴が落ちる物理シミュレーションを行います。こちらもVast.aiを使っています。

サンプルコードはこちら
import genesis as gs
import numpy as np

# 初期化
gs.init(backend=gs.gpu)

# シーンの作成
scene = gs.Scene(show_viewer=False)

# カメラの設定
camera = scene.add_camera(
    res=(1280, 720),  # 解像度
    pos=(2, -2, 2),   # カメラ位置
    lookat=(0, 0, 0), # 注視点
    fov=60            # 視野角
)

# 地面(平面)の作成
plane = scene.add_entity(
    material=gs.materials.Rigid(
        needs_coup=True
    ),
    morph=gs.morphs.Plane()
)

# 水滴(液体として追加)
water_droplet = scene.add_entity(
    material=gs.materials.PBD.Liquid(),  # 液体の設定
    morph=gs.morphs.Sphere(
        pos=(0, 0, 1),  # 初期位置
        radius=0.1      # 半径
    )
)

# シーンのビルド
scene.build()

# 記録開始
camera.start_recording()

# シミュレーション実行
for i in range(300):
    scene.step()       
    camera.render()    # フレームをレンダリング
    
    # カメラのアニメーション(少しずつ上昇)
    camera.set_pose(
        pos=(2, -2, 2 + i * 0.01),  # カメラが徐々に上昇
        lookat=(0, 0, 0)
    )

# 記録終了と保存
camera.stop_recording(save_to_filename="liquid_simulation.mp4", fps=30)
print("Video saved as liquid_simulation.mp4")

水滴の落下から、落下後の水の広がりまでシミュレーションできています。このシミュレーションを活用した生成動画を見るのが楽しみです。

なお、世界に激震を与えたOpenAIの動画生成AI Soraについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

まとめ

本記事では、Genesisの概要から使い方まで紹介をしました。これまでもいくつもの動画生成AIがリリースされていますが、今回のように物理シミュレーションが先に発表されてから動画生成できるようになるのははじめてではないでしょうか。

リアルな物理シミュレーションが可能だから、よりリアリティの高い動画も生成されるようになります。

Genesisで動画生成できる日が来るのを楽しみ待ちましょう!

最後に

いかがだったでしょうか?

Genesisで可能性を広げる4D動画生成の未来へ。新たなシミュレーション技術が、革新的なプロジェクトを後押しします。

株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!

開発実績として、

・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント

などの開発実績がございます。

まずは、無料相談にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • 翔平

    総合病院で10年間理学療法士として勤務し、その後Pythonを独学で学びデータアナリストとして転職。趣味はキックボクシング

  • URLをコピーしました!
  • URLをコピーしました!
目次