Shap-E で 3D モデルを生成

Shap-E は OpenAI によって開発された画期的なモデルで、テキストまたは画像を入力として使用して一連の 3D オブジェクトを生成し、その革新的なアプローチで 3D アプリケーションの分野を変えます。この注目すべきテクノロジーは GitHub で無料で入手できるため、ユーザーは OpenAI API キーやインターネット接続を必要とせずに、自分のコンピューター上でシームレスに実行できます。

Shap-E で特に際立っているのは、その多用途性です。作成された 3D オブジェクトは、Microsoft Paint 3D などのソフトウェアで開くことができ、3D プリント用の STL ファイルに変換することもできます。Shap-E は、その独自の機能により、テキストから 3D への生成、および画像から 3D への生成へのアプローチ方法と、その結果として得られる AI アプリケーションの創造的な可能性を再定義しています。
ここに画像の説明を挿入

推奨事項: NSDT Designerを使用して、プログラム可能な 3D シーンを迅速に構築します。

このチュートリアルでは、Google Colab でノートブックを作成し、OpenAI の Shape-E モデルをセットアップして使用して 3D モデルを生成し、Blender Studio でカスタマイズする方法を学びます。

始める前に、Blender.org にアクセスし、オペレーティング システムと互換性のある Blender Studio をダウンロードしてください。

1.Colabプロジェクトをセットアップする

まずは、Google Colab で新しいノートブックを作成しましょう。

Google Colabに移動し、新しいノートブックを作成します。
ここに画像の説明を挿入

2. リポジトリのクローンを作成します

ここで、Shape リポジトリを Google Colab Notebook にクローンする必要があります。

!git clone https://github.com/openai/shap-e

shape-e ディレクトリに入り、依存パッケージをインストールします。

%cd shap-e
!pip install -e .

3. 3D モデルを実装してベイクします。

新しいコードセル コードセルを追加します。

ここでは、必要なライブラリをすべてインポートします。

import torch

from shap_e.diffusion.sample import sample_latents
from shap_e.diffusion.gaussian_diffusion import diffusion_from_config
from shap_e.models.download import load_model, load_config
from shap_e.util.notebooks import create_pan_cameras, decode_latent_images, gif_widget

「実行」ボタンをクリックするか、CMD/CTRL + Enter を押して単一のコードセルを実行します。

くおおおおおおおおおお!

新しいコードセルを追加します。

ここでは、デバイスを利用可能な場合は cuda に設定し、利用できない場合は cpu に設定します。

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

「実行」をクリックするか、CMD/CTRL + Enterをクリックします。

新しいコードセルを追加します。

ここでモデルと重みをロードします。

xm = load_model('transmitter', device=device) 
model = load_model('text300M', device=device) 
diffusion = diffusion_from_config(load_config('diffusion')) 

「実行」をクリックするか、CMD/CTRL + Enterをクリックします。

モデルとウェイトをロードするのに時間がかかるので、しばらくお待ちください。私の場合は5分くらいかかります。はい、もちろんインターネット接続速度によって異なります。

新しいコードセルを追加します。

ここでは3Dモデルを生成していきます。

batch_size = 1 # this is the size of the models, higher values take longer to generate.
guidance_scale = 15.0 # this is the scale of the guidance, higher values make the model look more like the prompt.
prompt = "a donut" # this is the prompt, you can change this to anything you want.

latents = sample_latents(
    batch_size=batch_size,
    model=model,
    diffusion=diffusion,
    guidance_scale=guidance_scale,
    model_kwargs=dict(texts=[prompt] * batch_size),
    progress=True,
    clip_denoised=True,
    use_fp16=True,
    use_karras=True,
    karras_steps=64,
    sigma_min=1E-3,
    sigma_max=160,
    s_churn=0,
)

「実行」をクリックするか、CMD/CTRL + Enterをクリックします。

3D モデルの生成にはバッチ サイズに応じて時間がかかります。バッチ サイズが大きくなると、3D モデルの生成に時間がかかります。私の場合、batch_size=1 で 3D モデルを生成するのに約 22 秒かかります。

新しいコードセルを追加します。

ここでは 3D モデルをレンダリングします。render_mode = 'nerf' Neural Radiation Field (NeRF) を使用して 3D モデルをレンダリングします。これを render_mode = 'stf' に変更すると、Style Transfer Function (STF) レンダリング モードを使用して 3D モデルをレンダリングできます。

render_mode = 'nerf' # you can change this to 'stf'
size = 64 # this is the size of the renders, higher values take longer to render.

cameras = create_pan_cameras(size, device)
for i, latent in enumerate(latents):
    images = decode_latent_images(xm, latent, cameras, rendering_mode=render_mode)
    display(gif_widget(images))

「実行」をクリックするか、CMD/CTRL + Enterをクリックします。

モデルが回転しているのが見えますか? かっこいいですよね?

次へ移りましょう。

新しいコードセルを追加します。

ここでは、3D モデルを .ply および .obj ファイルとして保存します。

注: .obj。後で Blender Studio でカスタマイズするために使用します。

# Example of saving the latents as meshes.
from shap_e.util.notebooks import decode_latent_mesh

for i, latent in enumerate(latents):
    t = decode_latent_mesh(xm, latent).tri_mesh()
    with open(f'example_mesh_{i}.ply', 'wb') as f: # this is three-dimensional geometric data of model.
        t.write_ply(f)
    with open(f'example_mesh_{i}.obj', 'w') as f: # we will use this file to customize in Blender Studio later.
        t.write_obj(f)

「実行」をクリックするか、CMD/CTRL + Enterをクリックします。

タブを「ファイル」に切り替えて、「更新」をクリックします。example_mesh_0.ply および example_mesh_0.obj ファイルが表示されます。

ここに画像の説明を挿入

.obj ファイルをローカル コンピューターにダウンロードします。

4. Blender Studio で 3D モデルをカスタマイズする

Blender Studio を開き、新しいプロジェクトを作成します。
ここに画像の説明を挿入

デフォルトのキューブを削除します。
ここに画像の説明を挿入

[ファイル] > [インポート] > [Wavefront (.obj)] をクリックします。Google Colab からダウンロードした .obj ファイルを選択します。
ここに画像の説明を挿入

中央に 3D モデルが表示されるはずです。

ここに画像の説明を挿入

おお!、それ自体はかなりクールに見えますね。ところで、Shap-Eは素晴らしい仕事をします。

ニーズに応じて 3D モデルをカスタマイズできます。

デモンストレーションの目的で、トッピングをピンク、ドーナツを茶色に塗っただけです。
ここに画像の説明を挿入


原文へのリンク: Shap-E による 3D モデルの生成—BimAnt

おすすめ

転載: blog.csdn.net/shebao3333/article/details/132174738