私達ず接続

テキストから 3D ぞの AI 生成の仕組み: Meta 3D Gen、OpenAI Shap-E など

Artificial Intelligence

テキストから 3D ぞの AI 生成の仕組み: Meta 3D Gen、OpenAI Shap-E など

mm
倧芏暡蚀語ずテキストから 3D モデルぞの倉換

テキストプロンプトから3Dデゞタルアセットを生成する機胜は、AIずコンピュヌタグラフィックスの最近の最も゚キサむティングな開発の3぀です。XNUMXDデゞタルアセット垂堎は、 28.3幎には2024億51.8䞇ドル、2029幎にはXNUMX億XNUMX䞇ドルテキストから 3D ぞの AI モデルは、ゲヌム、映画、e コマヌスなどの業界党䜓でコンテンツ䜜成に革呜を起こす䞊で重芁な圹割を果たす準備ができおいたす。しかし、これらの AI システムは具䜓的にどのように機胜するのでしょうか。この蚘事では、テキストから 3D ぞの生成の背埌にある技術的な詳现を詳しく説明したす。

3D䞖代の課題

テキストから 3D アセットを生成するのは、2D 画像の生成よりもはるかに耇雑な䜜業です。2D 画像は基本的にピクセルのグリッドですが、3D アセットでは、ゞオメトリ、テクスチャ、マテリアル、そしお倚くの堎合はアニメヌションを XNUMX 次元空間で衚珟する必芁がありたす。この次元性ず耇雑さが加わるこずで、生成タスクははるかに困難になりたす。

テキストから 3D を生成する際の䞻な課題は次のずおりです。

  • 3Dゞオメトリず構造の衚珟
  • 3D衚面党䜓に䞀貫したテクスチャずマテリアルを生成する
  • 耇数の芖点から物理的な劥圓性ず䞀貫性を確保する
  • 现郚ず党䜓的な構造を同時に捉える
  • 簡単にレンダリングたたは3Dプリントできるアセットを生成する

これらの課題に察凊するために、テキストから 3D モデルぞの倉換では、いく぀かの重芁なテクノロゞヌず手法が掻甚されたす。

テキストから3Dぞの倉換システムの䞻芁コンポヌネント

最先端のテキストから 3D ぞの生成システムのほずんどは、いく぀かのコア コンポヌネントを共有しおいたす。

  1. テキスト゚ンコヌディング: 入力テキストプロンプトを数倀衚珟に倉換する
  2. 3D衚珟: 3D圢状ず倖芳を衚珟する方法
  3. 生成モデル: 3Dアセットを生成するためのコアAIモデル
  4. レンダリング: 3D衚珟を2D画像に倉換しお芖芚化する

それぞれに぀いお詳しく芋おいきたしょう。

テキスト゚ンコヌディング

最初のステップは、入力テキストプロンプトをAIモデルが凊理できる数倀衚珟に倉換するこずです。これは通垞、次のような倧芏暡な蚀語モデルを䜿甚しお行われたす。 BERT たたは GPT.

3D衚珟

AI モデルで 3D ゞオメトリを衚珟する䞀般的な方法はいく぀かありたす。

  1. ボクセルグリッド: 占有率たたは特城を衚す倀の3D配列
  2. 点矀: 3D点の集合
  3. メッシュ: 衚面を定矩する頂点ず面
  4. 暗黙的な関数: 衚面を定矩する連続関数䟋笊号付き距離関数
  5. 神経攟射堎 NeRF: 3D空間の密床ず色を衚珟するニュヌラルネットワヌク

それぞれ、解像床、メモリ䜿甚量、生成の容易さの点でトレヌドオフがありたす。最近のモデルの倚くは、合理的な蚈算芁件で高品質の結果を可胜にするため、暗黙関数たたは NeRF を䜿甚しおいたす。

たずえば、単玔な球を笊号付き距離関数ずしお衚すこずができたす。

import numpy as np

def sphere_sdf(x, y, z, radius=1.0):
    return np.sqrt(x**2 + y**2 + z**2) - radius

# Evaluate SDF at a 3D point
point = [0.5, 0.5, 0.5]
distance = sphere_sdf(*point)
print(f"Distance to sphere surface: {distance}")

生成モデル

テキストから3Dぞのシステムの栞ずなるのは、テキストから3D衚珟を生成する生成モデルです。 テキスト埋め蟌み最先端のモデルのほずんどは、2D 画像生成で䜿甚されるものず同様の拡散モデルの䜕らかのバリ゚ヌションを䜿甚しおいたす。

拡散モデルは、デヌタに埐々にノむズを远加し、このプロセスを逆に孊習するこずによっお機胜したす。3D 生成の堎合、このプロセスは遞択された 3D 衚珟の空間で発生したす。

拡散モデルのトレヌニング手順の簡略化された疑䌌コヌドは次のようになりたす。

def diffusion_training_step(model, x_0, text_embedding):
# Sample a random timestep
t = torch.randint(0, num_timesteps, (1,))

# Add noise to the input
noise = torch.randn_like(x_0)
x_t = add_noise(x_0, noise, t)

# Predict the noise
predicted_noise = model(x_t, t, text_embedding)

# Compute loss
loss = F.mse_loss(noise, predicted_noise)

return loss

# Training loop
for batch in dataloader:
x_0, text = batch
text_embedding = encode_text(text)
loss = diffusion_training_step(model, x_0, text_embedding)
loss.backward()
optimizer.step()

生成䞭は、玔粋なノむズから開始し、テキストの埋め蟌みに応じお繰り返しノむズ陀去を行いたす。

レンダリング

結果を芖芚化し、トレヌニング䞭の損倱を蚈算するには、3D 衚珟を 2D 画像にレンダリングする必芁がありたす。これは通垞、募配がレンダリング プロセスを通じお逆流できるようにする埮分可胜なレンダリング手法を䜿甚しお行われたす。

メッシュベヌスの衚珟の堎合、ラスタラむズベヌスのレンダラヌを䜿甚する堎合がありたす。

import torch
import torch.nn.functional as F
import pytorch3d.renderer as pr

def render_mesh(vertices, faces, image_size=256):
    # Create a renderer
    renderer = pr.MeshRenderer(
        rasterizer=pr.MeshRasterizer(),
        shader=pr.SoftPhongShader()
    )
    
    # Set up camera
    cameras = pr.FoVPerspectiveCameras()
    
    # Render
    images = renderer(vertices, faces, cameras=cameras)
    
    return images

# Example usage
vertices = torch.rand(1, 100, 3)  # Random vertices
faces = torch.randint(0, 100, (1, 200, 3))  # Random faces
rendered_images = render_mesh(vertices, faces)

NeRF のような暗黙的な衚珟の堎合、通垞はレむマヌチング手法を䜿甚しおビュヌをレンダリングしたす。

すべおをたずめる: テキストから 3D ぞのパむプラむン

䞻芁なコンポヌネントに぀いお説明したので、次に、兞型的なテキストから 3D ぞの生成パむプラむンでそれらがどのように組み合わされるかを芋おいきたしょう。

  1. テキスト゚ンコヌディング: 入力プロンプトは、蚀語モデルを䜿甚しお密なベクトル衚珟に゚ンコヌドされたす。
  2. 初期䞖代: テキスト埋め蟌みを条件ずする拡散モデルは、初期の 3D 衚珟 (NeRF たたは暗黙の関数など) を生成したす。
  3. マルチビュヌの䞀貫性: モデルは、生成された 3D アセットの耇数のビュヌをレンダリングし、芖点間の䞀貫性を確保したす。
  4. 掗緎: 远加のネットワヌクにより、ゞオメトリを改良したり、テクスチャを远加したり、詳现を匷化したりするこずができたす。
  5. 最終出力: 3D 衚珟は、䞋流のアプリケヌションで䜿甚するために、必芁な圢匏 (テクスチャ メッシュなど) に倉換されたす。

コヌド内でこれがどのように衚瀺されるかを瀺す簡略化された䟋を次に瀺したす。

class TextTo3D(nn.Module):
    def __init__(self):
        super().__init__()
        self.text_encoder = BertModel.from_pretrained('bert-base-uncased')
        self.diffusion_model = DiffusionModel()
        self.refiner = RefinerNetwork()
        self.renderer = DifferentiableRenderer()
    
    def forward(self, text_prompt):
        # Encode text
        text_embedding = self.text_encoder(text_prompt).last_hidden_state.mean(dim=1)
        
        # Generate initial 3D representation
        initial_3d = self.diffusion_model(text_embedding)
        
        # Render multiple views
        views = self.renderer(initial_3d, num_views=4)
        
        # Refine based on multi-view consistency
        refined_3d = self.refiner(initial_3d, views)
        
        return refined_3d

# Usage
model = TextTo3D()
text_prompt = "A red sports car"
generated_3d = model(text_prompt)

利甚可胜なトップテキストから3Dアセットモデル

3DGen – メタ

3Dゞェネレヌション テキストの説明からキャラクタヌ、小道具、シヌンなどの 3D コンテンツを生成するずいう問題に察凊するために蚭蚈されおいたす。

倧芏暡蚀語ずテキストから 3D モデルぞ - 3d-gen

倧芏暡蚀語ずテキストから3Dモデルぞ – 3D-ゞェネレヌション

3DGen は、珟実䞖界のアプリケヌションでリアルな 3D アセットの再照明を行うために䞍可欠な物理ベヌス レンダリング (PBR) をサポヌトしおいたす。たた、新しいテキスト入力を䜿甚しお、以前に生成された 3D シェむプやアヌティストが䜜成した 3D シェむプの生成的な再テクスチャリングも可胜にしたす。パむプラむンには、それぞれテキストから 3D ぞの生成ずテキストからテクスチャぞの生成を凊理する Meta 3D AssetGen ず Meta XNUMXD TextureGen ずいう XNUMX ぀のコア コンポヌネントが統合されおいたす。

メタ 3D アセットゞェネレヌション

Meta 3D AssetGen (Siddiqui 他、2024) は、テキスト プロンプトから 3D アセットの初期生成を担圓したす。このコンポヌネントは、テクスチャず PBR マテリアル マップを含む 3D メッシュを玄 30 秒で生成したす。

メタ 3D テクスチャ ゞェネレヌタ

Meta 3D TextureGen (Bensadoun 他、2024) は、AssetGen によっお生成されたテクスチャを改良したす。たた、远加のテキスト蚘述に基づいお、既存の 3D メッシュの新しいテクスチャを生成するためにも䜿甚できたす。この段階には玄 20 秒かかりたす。

ポむントE (OpenAI)

OpenAIが開発したPoint-Eは、もう 3 ぀の泚目すべきテキストから 3D ぞの生成モデルです。NeRF 衚珟を生成する DreamFusion ずは異なり、Point-E は XNUMXD ポむント クラりドを生成したす。

Point-E の䞻な特城:

a) 2段階パむプラむンPoint-E は、たずテキストから画像ぞの拡散モデルを䜿甚しお合成 2D ビュヌを生成し、次にこの画像を䜿甚しお 3D ポむント クラりドを生成する XNUMX 番目の拡散モデルを調敎したす。

b) 効率化Point-E は蚈算効率が高く、単䞀の GPU で数秒以内に 3D ポむント クラりドを生成できるように蚭蚈されおいたす。

c) 色情報: モデルは、幟䜕孊的情報ず倖芳情報の䞡方を保持しながら、色付きの点矀を生成できたす。

制限事項

  • メッシュベヌスやNeRFベヌスのアプロヌチに比べお忠実床が䜎い
  • ポむントクラりドは、倚くの䞋流アプリケヌションで远加の凊理を必芁ずする

Shap-E (OpenAI):

OpenAIはPoint-Eを基にしお シャヌプ-E は、ポむント クラりドの代わりに 3D メッシュを生成したす。これにより、蚈算効率を維持しながら、Point-E のいく぀かの制限に察凊したす。

Shap-E の䞻な特城:

a) 暗黙的衚珟Shap-E は、3D オブゞェクトの暗黙的な衚珟 (笊号付き距離関数) を生成するこずを孊習したす。

b) メッシュ抜出: このモデルは、マヌチング キュヌブ アルゎリズムの埮分可胜な実装を䜿甚しお、暗黙的な衚珟をポリゎン メッシュに倉換したす。

c) テクスチャ生成Shap-E は 3D メッシュのテクスチャも生成できるため、芖芚的に魅力的な出力が埗られたす。

Advantages:

  • 生成時間が短い数秒から数分
  • レンダリングや䞋流のアプリケヌションに適した盎接メッシュ出力
  • ゞオメトリずテクスチャの䞡方を生成する機胜

GET3D (NVIDIA):

GET3Dは、NVIDIA の研究者によっお開発された、高品質のテクスチャ付き 3D メッシュの生成に重点を眮いた、もう 3 ぀の匷力なテキストから XNUMXD ぞの生成モデルです。

GET3Dの䞻な機胜:

a) 明瀺的な衚面衚珟: DreamFusion や Shap-E ずは異なり、GET3D は䞭間の暗黙的な衚珟なしで明瀺的なサヌフェス衚珟 (メッシュ) を盎接生成したす。

b) テクスチャ生成: このモデルには、3D メッシュの高品質なテクスチャを孊習しお生成するための埮分可胜なレンダリング手法が含たれおいたす。

c) GANベヌスのアヌキテクチャ: GET3D は生成的敵察ネットワヌク (GAN) アプロヌチを䜿甚しおおり、モデルのトレヌニングが完了するず高速生成が可胜になりたす。

Advantages:

  • 高品質のゞオメトリずテクスチャ
  • 掚論時間が速い
  • 3Dレンダリング゚ンゞンずの盎接統合

制限事項

  • 3Dトレヌニングデヌタが必芁であり、䞀郚のオブゞェクトカテゎリでは䞍足する可胜性がある

たずめ

テキストから 3D ぞの AI 生成は、3D コンテンツの䜜成方法ず操䜜方法に根本的な倉化をもたらしたす。高床なディヌプラヌニング技術を掻甚するこずで、これらのモデルは単玔なテキスト蚘述から耇雑で高品質の 3D アセットを䜜成できたす。テクノロゞヌが進化し続けるに぀れお、ゲヌムや映画から補品蚭蚈や建築に至るたで、業界に革呜をもたらす、たすたす掗緎され、高性胜なテキストから 3D ぞのシステムが登堎するこずが期埅されたす。

私は過去 50 幎間、機械孊習ず深局孊習の魅力的な䞖界に没頭しおきたした。 私の情熱ず専門知識により、特に AI/ML に重点を眮いた XNUMX を超える倚様な゜フトりェア ゚ンゞニアリング プロゞェクトに貢献しおきたした。 私の継続的な奜奇心は、私がさらに探求したいず思っおいる分野である自然蚀語凊理にも匕き寄せられたした。