View a markdown version of this page

独自のビデオから 3D ガウシアンスプラットをトレーニングする - Deadline クラウド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

独自のビデオから 3D ガウシアンスプラットをトレーニングする

このチュートリアルでは、キャプチャしたビデオから独自の 3D ガウシアンスプラット点群をトレーニングする方法について説明します。GitHub の Gaussian Splatting パイプラインジョブバンドルを Deadline Cloud ファームに送信します。ジョブはビデオファイルを入力として受け取り、出力としてガウシアンスプラット.plyファイルを生成します。ジョブが完了すると、SuperSplat などのガウシアンスプラットビューワーで結果を表示できます。

パイプラインは、次の 1 つのタスクを実行します。

  1. FFmpeg ビデオ処理ツールを使用してビデオフレームを抽出します。

  2. COLMAPGLOMAP を使用して Structure-from-Motion を解決し、ピンホールモデルとゆがんだ画像を保存します。

  3. NeRF Studio splatfactoSplatfacto in the Wild、または simple_trainer.py gsplat ライブラリの例を使用してガウシアンスプラットをトレーニングし、指定した.plyファイルに出力を保存します。

次の動画は、Deadline Cloud での Gaussian Splatting パイプラインワークフローを示しています。

推定時間: ファームのセットアップを含む数時間。入力ビデオと選択した設定に応じて、ジョブ自体は 10 分で終了するか、数時間かかることがあります。

このチュートリアルを実行すると、ジョブを処理する GPU ワーカーインスタンスに対して料金が発生します。このセクションでは、これらのコストを確認する方法トレーニングジョブのコストを理解するを示します。

概要

このチュートリアルを完了するには、次の手順に従います。

  1. 「前提条件」を完了します。

  2. ファームをセットアップします。

  3. 被写体のビデオをキャプチャします。

  4. gsplat_pipeline ジョブを送信します。

  5. ジョブをモニタリングします。

  6. ガウシアンスプラットファイルをダウンロードして表示します.ply

  7. リソースをクリーンアップします。

前提条件

開始する前に、次の設定を完了します。

ファームをセットアップする

ガウシアンスプラットリングジョブを実行するには、CUDA GPU フリートを備えた Deadline Cloud ファームが必要です。セットアップするには、次の手順を実行します。

  1. CUDA ファームのサンプル CloudFormation テンプレートの手順に従って、CUDA GPU フリートを持ち、conda パッケージを構築できる Deadline Cloud ファームを作成します。

  2. NeRF Studio サンプル conda パッケージレシピの指示に従って、NeRF Studio conda パッケージを CUDA ファームの Amazon S3 チャネルに構築します。

注記

デフォルトの NERFSTUDIO (splatfacto) トレーナーのみが必要な場合は、CUDA ファーム CloudFormation テンプレートをデプロイしたり、カスタム NeRF Studio conda パッケージを構築したりする必要はありません。最小要件は、GPU フリートを持つ Deadline Cloud ファーム、conda チャネルconda-forgeに含まれるキュー環境、conda パッケージ ですffmpeg colmap glomap nerfstudio cudaGSPLAT_SIMPLE_TRAINER および NERFSTUDIO_SPLATFACTOWトレーナーオプションは、カスタムビルドの NeRF Studio conda パッケージでのみ使用できるコマンドによって異なります。

被写体のビデオをキャプチャする

スマートフォンなどのビデオ対応カメラを使用して、ガウシアンスプラットの被写体のビデオをキャプチャできます。以下のヒントを考慮してください。

  • カメラアプリでズームレベル 0.5 など、広い視野を使用します。視野が広いほど、Structure-from-Motion で使用するイメージペア間で共通するオブジェクトが増えます。

  • ビデオの安定化をオフにします。オフにすると、すべてのフレーム間で同一のレンズ光学系が保持され、ソルブの品質が向上します。

  • 被写体に応じてカメラの動きを計画します。ベンチや自転車などのオブジェクトをキャプチャするには、異なる高さと距離で被写体を数回軌道を回ります。部屋の内部をキャプチャするには、カメラを内側に向けて部屋の外側をたどり、異なるカメラの高さで繰り返します。外地形などの構造化されていないスペースをキャプチャするには、ガウシアンスプラットングに必要なものをすべて含める方法と、そのすべてを複数の異なる角度からキャプチャする方法を検討してください。

  • 低速で安定したモーションで動画をキャプチャします。

  • カメラを動かし続けます。1 つの場所からの停止とパンは避けてください。

カメラからキャプチャしたビデオをコンピュータにコピーして、ファームに送信します。

gsplat_pipeline ジョブを送信する

ガウシアンスプラットジョブを送信するには
  1. deadline-cloud-samples GitHub リポジトリのローカルコピーがない場合は、クローンを作成するか、ZIP としてダウンロードします

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles
  2. job_bundles ディレクトリから、次のコマンドを実行します。

    deadline bundle gui-submit gsplat_pipeline
  3. ジョブ固有の設定タブに切り替え、入力ビデオファイル出力プライファイルの両方のパスを選択します。

  4. 送信を選択するか、最初に設定をカスタマイズします。入力ビデオの複雑さが高い場合は、概算イメージ数の値を増やす必要がある場合があります。

使用する Gaussian Splatting トレーナーを選択し、その CLI オプションをカスタマイズすることもできます。例えば、モンテカルロマルコフチェーン (MCMC) トレーナーと両側グリッドオプションを使用して最大 200 万個のスプラットを生成するには、次の変更を行います。

  1. Gaussian Splatting Trainer を から NERFSTUDIOに切り替えますGSPLAT_SIMPLE_TRAINER

  2. GSplat Simple Trainer Options テキストを から --strategy.cap-max 1000000に変更--strategy.cap-max 2000000して 200 万個のスプラットを取得し、 から --no-use-bilateral-grid に変更--use-bilateral-gridして両側グリッドオプションを有効にします。

注記

CUDA フリートが提供するよりも高いメモリ使用量を必要とする入力ビデオまたはオプションを選択した場合は、フリートの最小設定を更新する必要があります。更新されたパラメータ値を使用して CloudFormation テンプレートを再デプロイするか、Deadline Cloud コンソールから設定を編集します。

ジョブのモニタリング

ジョブを送信すると、Deadline Cloud モニタージョブテーブルからそのステータスをモニタリングできます。入力ビデオと選択した設定によっては、ジョブが 10 分で終了するか、数時間かかる場合があります。

ジョブが実行されたら、タスクのコンテキストメニューを開き、ログの表示を選択してログビューを開きます。パイプラインがステップを実行すると、タスク実行の詳細に表示されるステータスメッセージを更新します。

エラーが発生した場合、このビューのログ出力は原因を追跡するのに役立ちます。一般的な原因には、メモリ不足やカメラの姿勢の解決失敗などがあります。パイプラインは、FFmpeg フレーム抽出、GLOMAP Structure-from-Motion solving、または NeRF Studio トレーニングのいずれかのステップで失敗する可能性があります。エラーを解決するには、フリートインフラストラクチャを調整するか、低い画像解像度または画像数を使用します。

Gaussian Splatting .ply をダウンロードして表示する

出力をダウンロードして表示するには
  1. ジョブが正常に完了したら、Deadline Cloud Monitor のタスクテーブルで完了したタスクのコンテキストメニューを開き、出力のダウンロードを選択します。設定に応じて、ダウンロードの進行状況を表示するか、ダウンロードに使用できる CLI コマンドを表示します。Deadline Cloud は、ジョブの送信時に選択した場所に.plyファイルを保存します。

  2. ブラウザで結果を表示するには、SuperSplat Editor ウェブサイトを開き、オペレーティングシステムのファイルブラウザから SuperSplat ページにファイルをドラッグします。

  3. スプラットの表示/非表示 オプションを切り替え、シーンを回転して移動し、キャプチャのサブジェクトを見つけます。

SuperSplat では、ガウシアンスプラッティングを編集することもできます。たとえば、球を選択し、選択を反転させ、その外側のスプラットを削除してシーンをトリミングできます。SuperSplat ドキュメントでは、エディタの使用方法について説明しています。または、任意のツールに.plyファイルをインポートすることもできます。

トレーニングジョブのコストを理解する

Deadline Cloud Monitor には、実行するジョブのコストを見積もり、各トレーニングコストを示す使用状況エクスプローラー機能が含まれています。CUDA 対応インスタンスが十分な中断率で利用可能であるオフピーク時間中にテストをスムーズに実行できる場合、スポット CUDA フリートのコストはオンデマンドフリートよりも低くなります。Usage Explorer は、アイドル状態のワーカーインスタンス時間や Amazon S3 バケットのストレージなど、ジョブ実行時間外のコストを表示しません。

クリーンアップ

継続的な課金を回避するには、このチュートリアル用に作成したリソースをクリーンアップします。

チュートリアルリソースをクリーンアップするには
  1. CUDA ファーム CloudFormation テンプレートをデプロイした場合は、 CloudFormation コンソールからスタックを削除します CloudFormation 。

  2. 既存のファームを使用し、このチュートリアル専用の GPU フリートを作成した場合は、そのフリートを停止または削除します。既存の共有フリートを使用した場合は、そのままにします。

次の手順

ニーズに合わせてgsplat_pipelineジョブバンドルをプルアタッチ、編集、リミックスできます。独自の 3D 再構築パイプラインをカスタマイズすることも、同じパターンに従って Deadline Cloud CUDA ファームで異なる CUDA ワークロードを実行することもできます。サンプル README は、以下の詳細な指示に従って動作します。

以下のリソースは追加情報を提供します。