Blender ウォッチング
1枚の写真から高速で3Dオブジェクトを生成できる「TripoSR」の凄さを確認する
2024年3月15日 16:33
本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。
今回は機械学習により1枚の画像から3Dモデルを生成可能な「TripoSR」を試してみたいと思います。そのパフォーマンスや実用性、そして 「たった1枚の画像から3Dモデル生成という無茶振りをどう処理するつもりなのか」 を探っていきたいと思います。
TripoSRとは
「TripoSR」は、Tripo AIとStability AIが共同で開発した、画像から3Dモデルデータを高速・低リソースで生成する、高速3Dオブジェクト再構築モデルだそうです。
- ▼TripoSRのご紹介:単一画像からの高速3Dオブジェクト生成 — Stability AI Japan https://ja.stability.ai/blog/triposr-3d-generation
デモページによる利用
まずは手軽に試せるデモページを使用してみましょう。
- ▼TripoSR - a Hugging Face Space by stabilityai
- https://huggingface.co/spaces/stabilityai/TripoSR
手持ちの画像をアップロードできますが、まずは下の方にあるサムネイルをクリックしてみましょう。「Input Image」にその画像が表示された後、あっというまに画像処理後のデータが「Processed Image」に、3Dモデルがその右側に表示されます。
オプション
「Marching Cubes Resolution」でメッシュモデルのグリッドの解像度を変更できます。
指定可能な値は「32」から「320」で、デフォルトは「256」です。大きい値ほど足などの細い部分や曲線状の部分の表現が改善します。
背景付き画像のアップロード
背景付き画像をアップロードして[Generate]ボタンを押すと、サンプル画像と同じようにすぐに3Dモデルを表示できます。デフォルトでは自動的に背景を削除してくれます。細い脚などはあまり得意ではありませんが、思ったよりうまく切り抜いてくれる印象です。
逆にサンプル画像のように、すでに背景を削除済みの画像の場合、「Remove Background」オプションを切ると品質が向上するとのこと。
その下の「Foreground Ratio」はモデル化する形状が画面中で占める割合を決める物です。「0.5」から「1」までが指定可能で、大きくすると余白部分が減り、モデルの品質も改善されるそうです。
そして実際に上記2つのオプションを試してみたのが下図です。それぞれに頂点数に違いはあるものの、Foreground Ratioが「0.5」の場合を除き、他のモデルに大きな違いは認められませんでした。元の画像によってはもっと差が感じられる結果になるのかもしれません。
モデルの利用
「Blender」でダウンロードしたモデルを確認してみましょう。
モデルを読み込むには、[ファイル]メニューから[インポート]で[Wavefront (OBJ)]または[glTF 2.0 (.glb/.gltf)]を実行します。
モデルにはテクスチャはなく、代わりに「頂点カラー」で色付けされています。以前の「Luma AI」の「Interactive Scenes」同様、実際に使用するにはマテリアルを付加し、[カラー属性]ノードを追加してやる必要があります。
モデルの構造と推論について
「TripoSR」が出力するモデルの生成には「torchmcubes」というライブラリを使用しており、「Blender」でいう分割数(解像度)の決まっている「スカルプトモデル」にような構造になっています。そのため、端がギザギザしており、曲線もなめらかではありません。逆にいえば「Blender」での「スカルプティング」のベースモデルとして活用するのに適しているのかもしれません。
推論に関してはまだ学習が足りないのか、改善の余地はかなりありそうです。
たとえばサンプルの「marble.png」では、腕で隠れた胸部がえぐれているように凹んでいたり、スズメの画像を食わせてみたところでは、横からの写真では比較的うまくモデル化していたにもかかわらず、前からの写真の場合では平べったい何かができてしまいました。
背面の処理ですが、腕や脚のような筒状の物は思ったよりうまく生成されている印象を受けました。ただ、上記のように学習されていない物でも同じように処理してくれる保証はありません。そもそも1枚の写真で立体物を生成するのが無茶なので、この辺は仕方ないでしょう。
ローカル環境での利用
ローカル構築で利用することもできます。GPUで高速生成するには「ビデオメモリが6GBのCUDA対応(NVIDIAの)ビデオカード」が必要ですが、CPUでもそこそこの速度で生成可能です(メインメモリが同様に必要)。
導入にはコマンドプロンプトや各種設定の知識があり、多数のライブラリを扱う都合上、トラブルを自力で解決できることが望ましいです。
詳しいインストール方法や使用方法についてはまたの機会に。
終わりに
実用にはまだ足りないものの、文字列から生成物を提示していくのではなく、2Dのように画像から作成する物を推測していくアプローチは面白いと感じました。
画像を1枚用意するだけで生成時間やリソースも少なめで気軽に色々試せる利点もあります。
ではまた。