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