Home Umela inteligencia Ako funguje generovanie AI textu na 3D: Meta 3D Gen, OpenAI Shap-E a ďalšie

Ako funguje generovanie AI textu na 3D: Meta 3D Gen, OpenAI Shap-E a ďalšie

by
mm

Schopnosť generovať 3D digitálne aktíva z textových výziev predstavuje jeden z najzaujímavejších najnovších vývojov v oblasti AI a počítačovej grafiky. Očakáva sa, že trh s 3D digitálnymi aktívami bude rásť 28,3 miliardy USD v roku 2024 na 51,8 miliardy USD v roku 2029, modely umelej inteligencie s prevodom textu na 3D sú pripravené zohrať hlavnú úlohu pri revolúcii tvorby obsahu v odvetviach, ako sú hry, film, elektronický obchod a ďalšie. Ale ako presne tieto systémy AI fungujú? V tomto článku sa hlboko ponoríme do technických detailov generovania textu do 3D.

Výzva 3D generácie

Generovanie 3D prvkov z textu je podstatne zložitejšia úloha ako generovanie 2D obrázkov. Zatiaľ čo 2D obrázky sú v podstate mriežky pixelov, 3D prvky vyžadujú reprezentáciu geometrie, textúr, materiálov a často animácií v trojrozmernom priestore. Táto pridaná rozmernosť a zložitosť robí úlohu generovania oveľa náročnejšou.

Niektoré kľúčové výzvy pri generovaní textu na 3D zahŕňajú:

  • Predstavuje 3D geometriu a štruktúru
  • Generovanie konzistentných textúr a materiálov na 3D povrchu
  • Zabezpečenie fyzickej hodnovernosti a koherencie z viacerých hľadísk
  • Zachytenie jemných detailov a globálnej štruktúry súčasne
  • Generovanie aktív, ktoré možno ľahko vykresliť alebo 3D vytlačiť

Na zvládnutie týchto výziev využívajú modely prevodu textu do 3D niekoľko kľúčových technológií a techník.

Kľúčové komponenty systémov prevodu textu na 3D

Väčšina najmodernejších systémov na generovanie textu do 3D zdieľa niekoľko základných komponentov:

  1. Kódovanie textu: Konverzia vstupnej textovej výzvy na číselnú reprezentáciu
  2. 3D znázornenie: Metóda na reprezentáciu 3D geometrie a vzhľadu
  3. Generatívny model: Základný model AI na generovanie 3D aktíva
  4. Vykresľovanie: Prevod 3D reprezentácie na 2D obrázky na vizualizáciu

Preskúmajme každý z nich podrobnejšie.

Kódovanie textu

Prvým krokom je previesť vstupnú textovú výzvu na numerickú reprezentáciu, s ktorou môže model AI pracovať. To sa zvyčajne vykonáva pomocou veľkých jazykových modelov, ako je napr BERT alebo GPT.

3D zobrazenie

Existuje niekoľko bežných spôsobov, ako reprezentovať 3D geometriu v modeloch AI:

  1. Voxelové mriežky: 3D polia hodnôt predstavujúce obsadenosť alebo funkcie
  2. Mraky bodov: Súbory 3D bodov
  3. Siete: Vrcholy a plochy definujúce povrch
  4. Implicitné funkcie: Spojité funkcie definujúce povrch (napr. funkcie vzdialenosti so znamienkom)
  5. Neurónové vyžarovacie polia (NeRF): Neurónové siete reprezentujúce hustotu a farbu v 3D priestore

Každý z nich má kompromisy, pokiaľ ide o rozlíšenie, využitie pamäte a jednoduchosť generovania. Mnoho najnovších modelov používa implicitné funkcie alebo NeRF, pretože umožňujú vysokokvalitné výsledky s primeranými výpočtovými požiadavkami.

Napríklad môžeme reprezentovať jednoduchú guľu ako funkciu vzdialenosti so znamienkom:

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}")

Generatívny model

Jadrom systému prevodu textu do 3D je generatívny model, ktorý vytvára 3D reprezentáciu z vkladanie textu. Väčšina najmodernejších modelov využíva určitú variáciu modelu difúzie, podobnej tým, ktoré sa používajú pri vytváraní 2D obrazu.

Difúzne modely fungujú tak, že k údajom postupne pridávajú šum a potom sa učia tento proces zvrátiť. Pre 3D generovanie sa tento proces deje v priestore zvolenej 3D reprezentácie.

Zjednodušený pseudokód pre krok tréningu modelu difúzie môže vyzerať takto:

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()

Pri generovaní vychádzame z čistého šumu a iteratívneho odšumovania, podmieneného vložením textu.

Vykresľovanie

Aby sme mohli vizualizovať výsledky a vypočítať straty počas tréningu, musíme vykresliť našu 3D reprezentáciu na 2D obrázky. Zvyčajne sa to robí pomocou diferencovateľných techník vykresľovania, ktoré umožňujú prechod prechodov späť cez proces vykresľovania.

Pre reprezentácie založené na sieti môžeme použiť renderer založený na rasterizácii:

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)

Pre implicitné reprezentácie, ako sú NeRF, zvyčajne používame techniky lúčového pochodu na vykreslenie pohľadov.

Dáme to všetko dohromady: Potrubie prevodu textu na 3D

Teraz, keď sme pokryli kľúčové komponenty, poďme si prejsť, ako sa spájajú v typickom procese generovania textu do 3D:

  1. Kódovanie textu: Vstupná výzva je zakódovaná do hustej vektorovej reprezentácie pomocou jazykového modelu.
  2. Počiatočná generácia: Difúzny model, podmienený vložením textu, generuje počiatočnú 3D reprezentáciu (napr. NeRF alebo implicitnú funkciu).
  3. Konzistencia viacerých pohľadov: Model vykresľuje viaceré pohľady na vygenerovaný 3D prvok a zabezpečuje konzistentnosť medzi jednotlivými uhlami pohľadu.
  4. Spresnenie: Ďalšie siete môžu vylepšiť geometriu, pridať textúry alebo vylepšiť detaily.
  5. Konečný výstup: 3D reprezentácia sa prevedie do požadovaného formátu (napr. textúrovaná sieť) na použitie v nadväzujúcich aplikáciách.

Tu je zjednodušený príklad toho, ako to môže vyzerať v kóde:

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)

Top Text to 3D Asset Models available

3DGen – Meta

3DGen je navrhnutý tak, aby riešil problém generovania 3D obsahu – ako sú postavy, rekvizity a scény – z textových popisov.

Veľké jazyky a modely prevodu textu do 3D – 3d-gen

Veľké jazykové modely a modely na prevod textu na 3D – 3d-gen

3DGen podporuje fyzicky založené vykresľovanie (PBR), ktoré je nevyhnutné pre realistické presvetlenie 3D prvkov v aplikáciách v reálnom svete. Umožňuje tiež generatívnu retextúru predtým vygenerovaných alebo umelcom vytvorených 3D tvarov pomocou nových textových vstupov. Potrubie integruje dve základné komponenty: Meta 3D AssetGen a Meta 3D TextureGen, ktoré spracovávajú generovanie textu do 3D a textu na textúru.

Meta 3D AssetGen

Meta 3D AssetGen (Siddiqui et al., 2024) je zodpovedný za počiatočné generovanie 3D aktív z textových výziev. Tento komponent vytvorí 3D sieť s textúrami a mapami materiálu PBR za približne 30 sekúnd.

Meta 3D TextureGen

Meta 3D TextureGen (Bensadoun a kol., 2024) vylepšuje textúry generované AssetGen. Môže sa tiež použiť na generovanie nových textúr pre existujúce 3D siete na základe dodatočných textových popisov. Táto fáza trvá približne 20 sekúnd.

Point-E (OpenAI)

Point-E, vyvinutý spoločnosťou OpenAI, je ďalší pozoruhodný model generovania textu na 3D. Na rozdiel od DreamFusion, ktorý vytvára reprezentácie NeRF, Point-E generuje 3D mračná bodov.

Kľúčové vlastnosti Point-E:

a) Dvojstupňové potrubie: Point-E najskôr vygeneruje syntetický 2D pohľad pomocou modelu difúzie textu na obrázok, potom použije tento obrázok na úpravu druhého difúzneho modelu, ktorý vytvorí 3D mračno bodov.

b) Efektívnosť: Point-E je navrhnutý tak, aby bol výpočtovo efektívny, schopný generovať 3D mračná bodov v priebehu niekoľkých sekúnd na jednom GPU.

c) Informácie o farbe: Model dokáže generovať farebné mračná bodov so zachovaním geometrických informácií aj informácií o vzhľade.

Obmedzenia:

  • Nižšia vernosť v porovnaní s prístupmi založenými na mesh alebo NeRF
  • Mraky bodov vyžadujú dodatočné spracovanie pre mnohé následné aplikácie

Shap-E (OpenAI):

Na základe Point-E bol predstavený OpenAI Tvar-E, ktorý generuje 3D siete namiesto mračien bodov. To rieši niektoré obmedzenia Point-E pri zachovaní výpočtovej efektivity.

Kľúčové vlastnosti Shap-E:

a) Implicitná reprezentácia: Shap-E sa učí generovať implicitné reprezentácie (funkcie vzdialenosti so znamienkom) 3D objektov.

b) Extrakcia sieťoviny: Model používa diferencovateľnú implementáciu algoritmu pochodových kociek na konverziu implicitnej reprezentácie na polygonálnu sieť.

c) Generovanie textúry: Shap-E dokáže generovať aj textúry pre 3D siete, výsledkom čoho sú vizuálne príťažlivejšie výstupy.

Výhody:

  • Rýchle časy generovania (sekundy až minúty)
  • Priamy sieťový výstup vhodný pre rendering a následné aplikácie
  • Schopnosť vytvárať geometriu aj textúru

GET3D (NVIDIA):

GET3Dvyvinutý výskumníkmi NVIDIA, je ďalším výkonným modelom generácie textu na 3D, ktorý sa zameriava na vytváranie vysokokvalitných štruktúrovaných 3D sietí.

Kľúčové vlastnosti GET3D:

a) Explicitné zobrazenie povrchu: Na rozdiel od DreamFusion alebo Shap-E, GET3D priamo generuje explicitné povrchové reprezentácie (siete) bez prechodných implicitných reprezentácií.

b) Generovanie textúry: Model obsahuje diferencovateľnú techniku ​​vykresľovania na učenie a generovanie vysokokvalitných textúr pre 3D siete.

c) Architektúra založená na GAN: GET3D používa prístup generatívnej adversariálnej siete (GAN), ktorý umožňuje rýchle generovanie po natrénovaní modelu.

Výhody:

  • Vysoko kvalitná geometria a textúry
  • Rýchle vyvodzovacie časy
  • Priama integrácia s 3D renderovacími motormi

Obmedzenia:

  • Vyžaduje 3D tréningové údaje, ktorých môže byť pri niektorých kategóriách objektov málo

Záver

Generovanie umelej inteligencie typu text-to-3D predstavuje zásadný posun v tom, ako tvoríme 3D obsah a ako s ním komunikujeme. Využitím pokročilých techník hlbokého učenia môžu tieto modely vytvárať zložité, vysokokvalitné 3D prvky z jednoduchých textových popisov. Ako sa technológia neustále vyvíja, môžeme očakávať, že uvidíme čoraz sofistikovanejšie a schopnejšie systémy prevodu textu do 3D, ktoré prinesú revolúciu v odvetviach od hier a filmu až po dizajn produktov a architektúru.

Source Link

Related Posts

Leave a Comment