Du kanske har hört talas om hur kraftfulla text-till-bild AI-modeller har blivit under de senaste åren. Men visste du att samma teknik kan hjälpa till att ta steget från 2D till 3D?
AI-genererade 3D-modeller har ett brett användningsfall i dagens digitala landskap. Videospel och film förlitar sig på skickliga 3D-artister och modelleringsprogram som Blender för att skapa 3D-tillgångar för att fylla datorgenererade scener.
Men är det möjligt att industrin skulle kunna använda maskininlärning för att skapa 3D-tillgångar med mindre ansträngning, liknande hur 2D-artister idag börjar använda teknik som DALL-E och midjourney?
Den här artikeln kommer att utforska en ny algoritm som försöker skapa en effektiv text-till-3D-modell med hjälp av befintliga diffusionsmodeller.
Vad är Dreamfusion?
Ett stort problem med att skapa en diffusionsmodell som genererar 3D-tillgångar direkt är att det helt enkelt inte finns mycket 3D-data tillgänglig. 2D-diffusionsmodeller har blivit så kraftfulla på grund av den stora datamängden av bilder som finns på internet. Detsamma kan inte sägas med 3D-tillgångar.
Vissa generativa 3D-tekniker löser denna brist på data genom att dra fördel av detta överflöd av 2D-data.
DreamFusion är en generativ modell som kan skapa 3D-modeller baserat på en tillhandahållen textbeskrivning. DreamFusion-modellen använder en förtränad text-till-bild-diffusionsmodell för att generera realistiska tredimensionella modeller från textuppmaningar.
Trots att det inte finns några 3D-träningsdata har detta tillvägagångssätt genererat sammanhängande 3D-tillgångar med högtroget utseende och djup.
Hur fungerar det?
DreamFusion-algoritmen består av två huvudmodeller: en 2D-diffusionsmodell och en neurala nätverk som kan konvertera 2D-bilder till en sammanhängande 3D-scen.
Googles bildtext-till-bild-modell
Den första delen av algoritmen är diffusionsmodellen. Denna modell är ansvarig för att konvertera text till bilder.
Bild är en diffusionsmodell som kan generera ett stort urval av bildvariationer av ett visst objekt. I det här fallet bör våra bildvarianter täcka alla möjliga vinklar för det angivna objektet. Om vi till exempel ville generera en 3D-modell av en häst, skulle vi vilja ha 2D-bilder av hästen från alla möjliga vinklar. Målet är att använda Imagen för att ge så mycket information som möjligt (färger, reflektioner, densitet) för nästa modell i vår algoritm.
Skapa 3D-modeller med NeRF
Därefter använder Dreamfusion en modell som kallas en Neural strålningsfält eller NeRF för att faktiskt skapa 3D-modellen från den genererade bilduppsättningen. NeRFs kan skapa komplexa 3D-scener med en datauppsättning av 2D-bilder.
Låt oss försöka förstå hur en NeRF fungerar.
Modellen syftar till att skapa en kontinuerlig volymetrisk scenfunktion optimerad från den tillhandahållna datamängden av 2D-bilder.
Om modellen skapar en funktion, vad är input och output?
Scenfunktionen tar in en 3D-plats och en 2D-visningsriktning som indata. Funktionen matar sedan ut en färg (i form av RGB) och en specifik volymdensitet.
För att generera en 2D-bild från en specifik synvinkel kommer modellen att generera en uppsättning 3D-punkter och köra dessa punkter genom scenfunktionen för att returnera en uppsättning färg- och volymdensitetsvärden. Volymåtergivningstekniker kommer sedan att konvertera dessa värden till en 2D-bildutgång.
Använda NeRF och 2D diffusionsmodeller tillsammans
Nu när vi vet hur en NeRF fungerar, låt oss se hur den här modellen kan generera korrekta 3D-modeller från våra genererade bilder.
För varje tillhandahållen textprompt tränar DreamFusion en slumpmässigt initierad NeRF från början. Varje iteration väljer en slumpmässig kameraposition i en uppsättning sfäriska koordinater. Tänk på modellen inkapslad i en glaskula. Varje gång vi genererar en ny bild av vår 3D-modell väljer vi en slumpmässig punkt i vår sfär som utsiktspunkt för vår utdata. DreamFusion kommer också att välja en slumpmässig ljusposition l att använda för rendering.
När vi har en kamera och ljusposition kommer en NeRF-modell att renderas. DreamFusion kommer också att slumpmässigt välja mellan en färgad rendering, en texturless rendering och en rendering av albedo utan någon skuggning.
Vi har tidigare nämnt att vi vill att vår text-till-bild-modell (Imagen) ska producera tillräckligt många bilder för att skapa ett representativt urval.
Hur åstadkommer Dreamfusion detta?
Dreamfusion ändrar helt enkelt ingångsuppmaningen något för att uppnå de avsedda vinklarna. Till exempel kan vi uppnå höga höjdvinklar genom att lägga till "vy ovanifrån" till vår prompt. Vi kan skapa andra vinklar genom att lägga till fraser som "framifrån", "sidovy" och "bakifrån".
Scener återges upprepade gånger från slumpmässiga kamerapositioner. Dessa renderingar passerar sedan genom en poängdestillationsförlustfunktion. En enkel lutning nedstigning kommer långsamt att förbättra 3D-modell tills den matchar scenen som texten beskriver.
När vi har renderat 3D-modellen med NeRF kan vi använda Marching Cubes-algoritm för att mata ut ett 3D-nät av vår modell. Detta mesh kan sedan importeras till populära 3D-renderare eller modelleringsprogram.
Begränsningar
Även om DreamFusions produktion är tillräckligt imponerande eftersom den använder befintliga text-till-bild-diffusionsmodeller på ett nytt sätt, har forskarna noterat några begränsningar.
SDS-förlustfunktionen har observerats ge övermättade och överutjämnade resultat. Du kan observera detta i den onaturliga färgen och bristen på exakta detaljer som finns i utdata.
DreamFusion-algoritmen är också begränsad av upplösningen på Imagen-modellens utdata, som är 64 x 64 pixlar. Detta leder till att de syntetiserade modellerna saknar finare detaljer.
Slutligen har forskarna noterat att det finns en inneboende utmaning i att syntetisera 3D-modeller från 2D-data. Det finns många möjliga 3D-modeller som vi kan generera från en uppsättning 2D-bilder, vilket gör optimering ganska svårt och till och med tvetydig.
Slutsats
DreamFusions 3D-renderingar fungerar så bra på grund av möjligheten hos text-till-bild-diffusionsmodeller för att skapa vilket objekt eller scen som helst. Det är imponerande hur ett neuralt nätverk kan förstå en scen i 3D-rymden utan några 3D-träningsdata. Jag rekommenderar att läsa hela papper för att lära dig mer om de tekniska detaljerna i DreamFusion-algoritmen.
Förhoppningsvis kommer denna teknik att förbättras för att så småningom skapa fotorealistiska 3D-modeller. Föreställ dig hela videospel eller simuleringar som använder AI-genererade miljöer. Det kan sänka inträdesbarriären för videospelsutvecklare att skapa uppslukande 3D-världar!
Vilken roll tror du att text-till-3D-modeller kommer att spela i framtiden?
Kommentera uppropet