Modely a platformy AI
Jak funguje generace 3D pomocí text-to-3D AI: Meta 3D Gen, OpenAI Shap-E a další

By
Aayush Mittal Mittal
Schopnost generovat 3D digitální aktiva z textových vstupů představuje jednu z nejzajímavějších recentních vývojů v oblasti umělé inteligence a počítačové grafiky. Vzhledem k tomu, že trh s 3D digitálními aktivy se má rozrůst z 28,3 miliard dolarů v roce 2024 na 51,8 miliard dolarů do roku 2029, jsou modely text-to-3D AI připraveny hrát významnou roli v revoluci tvorby obsahu v odvětvích, jako je herní průmysl, film, e-commerce a další. Ale jak přesně tyto systémy AI fungují? V tomto článku se podrobně podíváme na technické detaily za generací 3D z textu.
Výzva 3D generace
Generování 3D aktiv z textu je podstatně složitější úkol než generování 2D obrázků. Zatímco 2D obrázky jsou基本ně mřížky pixelů, 3D aktiva vyžadují reprezentaci geometrie, textur, materiálů a často animací ve třech dimenzích. Tato dodatečná dimenze a složitost činí generovací úkol mnohem náročnějším.
Některé klíčové výzvy v generaci text-to-3D zahrnují:
- Reprezentace 3D geometrie a struktury
- Generování konzistentních textur a materiálů napříč 3D povrchem
- Zajištění fyzické věrohodnosti a koherence z více pohledů
- Zachycení jemných detailů a globální struktury současně
- Generování aktiv, které lze snadno vykreslit nebo 3D vytisknout
Pro řešení těchto výzev využívají modely text-to-3D několik klíčových technologií a technik.
Klíčové součásti systémů text-to-3D
Většina státních modelů generace text-to-3D sdílí několik základních součástí:
- Kódování textu: Převod vstupního textového vstupu na numerickou reprezentaci
- 3D reprezentace: Metoda pro reprezentaci 3D geometrie a vzhledu
- Generativní model: Jádro AI modelu pro generování 3D aktiva
- Vykreslování: Převod 3D reprezentace na 2D obrázky pro vizualizaci
Podívejme se na každou z nich podrobněji.
Kódování textu
Prvním krokem je převést vstupní textový vstup na numerickou reprezentaci, se kterou může AI model pracovat. To je obvykle prováděno pomocí velkých jazykových modelů, jako je BERT nebo GPT.
3D reprezentace
Existuje několik běžných způsobů, jak reprezentovat 3D geometrii v AI modelech:
- Voxely: 3D pole hodnot reprezentujících obsazení nebo funkce
- Bodové mračny: Sady 3D bodů
- Siťky: Vertexy a hrany definující povrch
- Implicitní funkce: Kontinuální funkce definující povrch (například signed distance funkce)
- Neurální radiance pole (NeRF): Neurální sítě reprezentující hustotu a barvu v 3D prostoru
Každá z nich má kompromisy v oblasti rozlišení, využití paměti a snadnosti generování. Mnoho nedávných modelů používá implicitní funkce nebo NeRF, protože umožňují dosáhnout kvalitních výsledků s přiměřenými výpočetními požadavky.
Například můžeme reprezentovat jednoduchou kouli jako signed distance funkci:
import numpy as np
<p>def sphere_sdf(x, y, z, radius=1.0):
return np.sqrt(x**2 + y**2 + z**2) - radius</p>
<p># Evaluate SDF at a 3D point
point = [0.5, 0.5, 0.5]
distance = sphere_sdf(*point)
print(f"Distance to sphere surface: {distance}")
Generativní model
Jádro systému text-to-3D je generativní model, který produkuje 3D reprezentaci z textového vstupu. Většina státních modelů používá nějakou variantu difuzního modelu, podobného těm, které se používají pro generování 2D obrázků.
Difuzní modely fungují tak, že postupně přidávají šum k datům a poté se učí tento proces revertovat. Pro generování 3D se tento proces odehrává v prostoru zvolené 3D reprezentace.
Zjednodušený pseudokód pro trénovací krok difuzního modelu by mohl vypadat takto:
def diffusion_training_step(model, x_0, text_embedding): # Sample a random timestep t = torch.randint(0, num_timesteps, (1,)) <p># Add noise to the input noise = torch.randn_like(x_0) x_t = add_noise(x_0, noise, t)</p> <p># Predict the noise predicted_noise = model(x_t, t, text_embedding)</p> <p># Compute loss loss = F.mse_loss(noise, predicted_noise)</p> return loss <p># 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()
Během generování začínáme s čistým šumem a iterativně denoizujeme, podmíněně na textovém vstupu.
Vykreslování
Pro vizualizaci výsledků a výpočet ztrát během trénování potřebujeme vykreslit naší 3D reprezentaci na 2D obrázky. To je obvykle prováděno pomocí diferenciálních vykreslovacích technik, které umožňují gradienty procházet zpět через vykreslovací proces.
Pro mesh-based reprezentace bychom mohli použít vykreslovací renderer založený na rasterizaci:
import torch import torch.nn.functional as F import pytorch3d.renderer as pr <p>def render_mesh(vertices, faces, image_size=256): # Create a renderer renderer = pr.MeshRenderer( rasterizer=pr.MeshRasterizer(), shader=pr.SoftPhongShader() )</p> <p># Set up camera cameras = pr.FoVPerspectiveCameras()</p> <p># Render images = renderer(vertices, faces, cameras=cameras)</p> return images <p># 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)
Pro implicitní reprezentace, jako je NeRF, bychom obvykle použili techniky ray marching pro vykreslování pohledů.
Sestavení celého procesu: Pipeline text-to-3D
Nyní, když jsme prošli klíčové součásti, pojďme si projít, jak se tyto součásti spojují v typickém pipeline generace text-to-3D:
- Kódování textu: Vstupní prompt je zakódován do husté vektorové reprezentace pomocí jazykového modelu.
- Počáteční generace: Difuzní model, podmíněný na textovém vstupu, generuje počáteční 3D reprezentaci (například NeRF nebo implicitní funkci).
- Multi-view konzistence: Model vykresluje multiple pohledy generovaného 3D aktiva a zajišťuje konzistenci napříč pohledy.
- Úprava: Další sítě mohou upravit geometrii, přidat textury nebo vylepšit detaily.
- Konečný výstup: 3D reprezentace je převedena do požadovaného formátu (například texturovaná síťka) pro použití v downstream aplikacích.
Zde je zjednodušený příklad, jak by to mohlo vypadat v kódu:
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() <p>def forward(self, text_prompt): # Encode text text_embedding = self.text_encoder(text_prompt).last_hidden_state.mean(dim=1)</p> <p># Generate initial 3D representation initial_3d = self.diffusion_model(text_embedding)</p> <p># Render multiple views views = self.renderer(initial_3d, num_views=4)</p> <p># Refine based on multi-view consistency refined_3d = self.refiner(initial_3d, views)</p> return refined_3d <p># Usage model = TextTo3D() text_prompt = "A red sports car" generated_3d = model(text_prompt)
Top Text to 3d Asset Models Avaliable
3DGen – Meta
3DGen je navržen tak, aby řešil problém generování 3D obsahu, jako jsou postavy, předměty a scény, z textových popisů.

Large Language and Text-to-3D Models – 3d-gen
3DGen podporuje fyzicky založené vykreslování (PBR), které je nezbytné pro realistické 3D aktiva v reálných aplikacích. Také umožňuje generativní retexturování dříve vygenerovaných nebo umělecky vytvořených 3D tvarů pomocí nových textových vstupů. Roura integruje dvě základní součásti: Meta 3D AssetGen a Meta 3D TextureGen, které zajišťují generaci text-to-3D a text-to-texture, respectively.
Meta 3D AssetGen
Meta 3D AssetGen (Siddiqui et al., 2024) je zodpovědný za počáteční generaci 3D aktiv z textových vstupů. Tato součást produkuje 3D síťku s texturami a PBR materiálovými mapami za khoảng 30 sekund.
Meta 3D TextureGen
Meta 3D TextureGen (Bensadoun et al., 2024) upravuje textury vygenerované AssetGen. Také může být použit pro generování nových textur pro existující 3D síťky na základě dalších textových popisů. Tato fáze trvá přibližně 20 sekund.
Point-E (OpenAI)
Point-E, vyvinutý OpenAI, je další významný model generace text-to-3D. Na rozdíl od DreamFusion, který produkuje NeRF reprezentace, Point-E generuje 3D bodové mračny.
Klíčové funkce Point-E:
a) Dvoufázový pipeline: Point-E nejprve generuje syntetický 2D pohled pomocí text-to-image difuzního modelu, poté používá tento obrázek pro podmíněný druhý difuzní model, který produkuje 3D bodové mračno.
b) Účinnost: Point-E je navržen tak, aby byl výpočetně efektivní, schopný generovat 3D bodová mračna v sekundách na jednom GPU.
c) Barva informace: Model může generovat barevná bodová mračna, zachovávající jak geometrické, tak vzhledové informace.
Limitace:
- Nižší kvalita ve srovnání s mesh-based nebo NeRF-based přístupy
- Bodová mračna vyžadují další zpracování pro mnoho downstream aplikací
Shap-E (OpenAI):
Navazující na Point-E, OpenAI představil Shap-E, který generuje 3D síťky místo bodových mračen. Tím řeší některé limitace Point-E a zachovává výpočetní efektivitu.
Klíčové funkce Shap-E:
a) Implicitní reprezentace: Shap-E učí generovat implicitní reprezentace (signed distance funkce) 3D objektů.
b) Extrakce síťky: Model používá diferenciální implementaci marching cubes algoritmu pro převod implicitní reprezentace na polygonální síťku.
c) Generování textur: Shap-E může také generovat textury pro 3D síťky, vedoucí k vizuálně atraktivnějším výstupům.
Výhody:
- Rychlé časy generování (sekundy až minuty)
- Přímý výstup síťky vhodný pro vykreslování a downstream aplikace
- Schopnost generovat jak geometrii, tak textury
GET3D (NVIDIA):
GET3D, vyvinutý NVIDIA (NVDA ), je další silný model generace text-to-3D, který se zaměřuje na produkci vysoce kvalitních texturovaných 3D sítek.
Klíčové funkce GET3D:
a) Explicitní povrchová reprezentace: Na rozdíl od DreamFusion nebo Shap-E, GET3D přímo generuje explicitní povrchové reprezentace (síťky) bez mezilehlých implicitních reprezentací.
b) Generování textur: Model zahrnuje diferenciální vykreslovací techniku pro naučení a generování vysoce kvalitních textur pro 3D síťky.
c) Architektura založená na GAN: GET3D používá generativní adversní síť (GAN), která umožňuje rychlou generaci, jakmile je model trénován.
Výhody:
- Vysoce kvalitní geometrie a textury
- Rychlé časy inference
- Přímá integrace s 3D vykreslovacími enginy
Limitace:
- Vyžaduje 3D trénovací data, která mohou být vzácná pro některé kategorie objektů
Závěr
Generace text-to-3D AI představuje zásadní posun v tom, jak vytváříme a interagujeme s 3D obsahem. Díky využití pokročilých technik hlubokého učení mohou tyto modely produkovat komplexní, vysoce kvalitní 3D aktiva z jednoduchých textových popisů. Jakmile se technologie bude dále vyvíjet, můžeme očekávat stále sofistikovanější a schopnější systémy text-to-3D, které budou revolucí v odvětvích, jako je herní průmysl, film, produktový design a architektura.
Já pět let se ponořím do fascinujícího světa strojového učení a hlubokého učení. Mé vášně a odborné znalosti mě vedly k tomu, abych se podílel na více než 50 různých projektech softwarového inženýrství, se zvláštním zaměřením na AI/ML. Mé pokračující zvědavosti mě také přivedly k přirozenému jazykovému zpracování, oblasti, kterou jsem ochoten prozkoumat dále.
Objevte více


Instalace balíčků Pythonu jako ukazatel lokální adopce umělé inteligence


Nejlepší model OpenAI právě vyšel za bránou vlády


Zvyšování intenzity závodů v oblasti umělé inteligence: Strategické partnerství AMD s OpenAI


OpenAI Uzavřela Sedmiletou, 38 Miliardovou Smlouvu S AWS O Cloud Partnership


Optimalizace neuronových radiance polí (NeRF) pro renderování v reálném čase ve 3D v e-commerce platformách


Claudeův Model Context Protocol (MCP): Průvodce pro vývojáře
