本記事ではText2meshと呼ばれる機械学習手法を用いて、テキストから3Dオブジェクトを生成する方法を紹介します。
Text2Meshとは
以下の記事では、テキストから2Dの画像を生成する方法を紹介させていただきました。本記事はこちらの3Dバージョンです
[FuseDream] AIを使ってテキストから絵を描く [日本語対応]
FuseDreamと呼ばれる機械学習手法を用いてAIにテキストを入力し画像を生成させる方法を紹介しています。
Text2Meshは、入力されたテキストに準拠した色や幾何学的詳細を予測し、3Dメッシュを構築する機械学習手法です。
FuseDream同様にCLIPを利用して、生成した3Dメッシュと入力テキストの類似度スコアが最大化されるように3Dメッシュを構築します。
特徴は、事前にトレーニングされた生成モデルも特殊な3Dメッシュデータセットも必要としないことです。様々な3Dメッシュ上で無数のスタイルを合成することが可能となっています。
Text2Meshの導入手順
セットアップ1: conda環境構築
それでは早速、開発環境にText2Meshをセットアップしていきます。
動作確認は下記の環境で行っています。
OS: Ubuntu 18.04.3 LTS
GPU: GeForce GTX 1080
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
それでは、Text2Meshをインストールしていきます。他の機械学習環境に影響を与えないためにMinicondaの仮想環境上に構築していきます。Minicondaのインストール手順は公式ドキュメントをご参照ください。
それではセットアップを始めていきます。
githubからコードを取得後、ymlファイルを使ってconda環境構築を構築していきます。
以上で環境構築は完了です。
ymlファイルが提供されているとセットアップが簡単で良いですね。
もしtorchの動作確認でGPUがあるにも関わらず認識されないなどの不具合がある場合は、一度torchをアンインストールして、
ご自身のcudaバージョンに合わせてPytorch
1.9.0をインストールされ直すことをおすすめします。
Text2Meshの実行
それでは早速Text2Meshを試してみます。
なお実行時のコマンドのサンプルは./demo/run_all.sh
に記載されています。
始めに"Santa Claus in a long coat"を入力してみます。
"Santa Claus in a long coat"の出力結果は以下の通りです。イテレーションが進むごとにオブジェクトが徐々に完成されていますね。
--seed
を変更すると、初期値として設定する乱数が変更されるため生成される3Dメッシュも異なります。
先ほどの"Santa Claus in a long coat"のseedを29から123に変更してみます。
さきほどとは明らかに異なる出力結果が出力されました。先ほどよりビビッドな出力結果となりましたね。
objファイルさえ用意すれば人以外の生成も可能です。
以下は、"A horse in a green coat holding a carrot"の出力結果です。
人参の色が口以外の箇所にもマッピングされていますが、緑のコートの布のようなテクスチャが見事に再現されています。
まとめ
本記事では、Text2Meshで3Dメッシュの生成方法を紹介しました。
生成されたobjファイルはMtlLibを用いてオブジェクトとして読み込むことが可能です。
精度がさらに向上すれば3Dオブジェクトの作成が自動化される未来も訪れそうです。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - Text2Mesh: Text-Driven Neural Stylization for Meshes
0 件のコメント :
コメントを投稿