Kod

Artificiell Intelligens

Hur AI används till att fejka porträtt

publicerad 5 månader sedan av
Josefine Byström

Artificiell Intelligens, förkortat AI, har många applikationer och en av dessa är att skapa hyperrealistiska ansikten. När jag först hittade hemsidan ThisPersonDoesNotExist.com var det svårt att tro att dessa personer verkligen inte existerade. Det är inte bara det att deras ansikten ser verkliga ut, men också med tanke på hur många personer det finns på jorden verkade det mer än troligt att det skulle finnas någon som såg ut så. Faktum är dock att bilderna är genererade med en specifik teknik inom maskininlärning kallad StyleGANv2 som använder artificiella neurala nätverk för att skapa realistiska porträttbilder.

Dessa människor finns inte på riktigt - porträtterna är framtagna med hjälp av Artificiell Intelligens. Bild: Nvidia
Dessa människor finns inte på riktigt – porträtterna är framtagna med hjälp av Artificiell Intelligens. Bild: Nvidia

Artificiella neurala nätverk (ANN) är en modell som används för att försöka efterlikna ett biologiskt neuralt nätverk, till exempel tankeprocessen i din hjärna när du läser den här texten. Människor lär sig saker genom att successivt bygga om hjärnan, en process som kräver upprepad förstärkning av synapser mellan olika neuroner. ANN utvecklas på samma sätt genom att träna modellen med upprepad förstärkning av artificiella neurala nätverk. För att skapa förfalskade porträtt har Nvidia, företaget bakom modellen som hemsidan använder, tränat upp ansiktsgeneratorn med hjälp av 70,000 porträtt av verkliga människor. Dessa porträtt finns i ett dataset som heter Flickr-Faces-HQ (FFHQ) och bilderna är i png-format med upplösningen 1024×1024 pixlar. 

Tekniken som Nvidia använder kallas för GAN, vilket är när två neurala nätverk tävlar mot varandra i ett slags nollsummespel. Det ena nätverket kallas för “generatorn” och skapar avbilden av själva ansiktet och det andra, som kallas “diskrimineraren”, avgör om den nya avbilden är det riktiga ansiktet eller inte. Om diskrimineraren drar slutsatsen att det genererade exemplet inte liknar det riktiga exemplet tillräckligt mycket får generatorn skapa ett nytt. Generatorn lär sig därmed att ett misstag har gjorts, vilket ökar noggrannheten varje gång den skapar ett nytt ansikte, tills diskrimineraren inte kan avgöra vilket ansikte som är riktigt och vilket som inte är det. 

Strukturen av GAN med syfte att skapa verkliga, men falska porträtt. Illustration av Josefine Byström
Strukturen av GAN med syfte att skapa verkliga, men falska porträtt. Bild: Josefine Byström

En populär liknelse, skriver Michael Kullberg,  är att ‘se generatorn som en pengaförfalskare och diskrimineraren som en polis som vill tillåta riktiga pengar och avvisa förfalskningar. Generatorn, eller förfalskaren, måste därför lära sig att skapa exempel som kommer från samma distribution som träningsdatan.’ 

Men även efter flera veckor av träning är det fortfarande möjligt att porträtten inte ser helt verkliga ut. På första bilden nedan har generatorn försökt illustrera en hand under barnets haka men brist på klara linjer bidrar till att bilden inte ser verklig ut. I andra bilden ser man hur det vid sidorna om kvinnan finns två personer som inte heller ser verkliga ut. Detta kallas “disentanglement”, eller avvikelser på svenska. Detta visar på att det är lättare att skapa själva ansiktena med GAN än vad det är att skapa bakgrunden och positionering, vilket Nvidia håller med om i deras uppsats om den nya tekniken.

  • Bakgrunden på porträtten som https://ThisPersonDoesNotExist.com/ skapat ser ibland lite konstiga ut. Bild: Nvidia
  • Bakgrunden på porträtten som https://ThisPersonDoesNotExist.com/ skapat ser ibland lite konstiga ut. Bild: Nvidia

Samma kod som används för Nvidias StyleGANv2 kan användas med andra dataset (kollektioner av bilder) som innehåller till exempel sovrum, bilar eller katter. Hemsidan https://ThisCatDoesNotExist.com/ genererar bilder på katter som inte finns i verkligheten. Det är betydligt svårare att skapa dessa bilder än människoansikten, vilket man tydligt kan se genom den demoniska gris-katten i andra bilden nedan. Detta beror på att det finns fler variationer i bakgrunden, poser och zoomnivåer jämfört med vad som finns hos porträtt av människor. 

  • Programmet kan också skapa bilder av katter, men ibland går det snett. Bild: Nvidia
  • Programmet kan också skapa bilder av katter, men ibland går det snett. Bild: Nvidia

Trots att GAN är ett väldigt imponerande program och ett otroligt genombrott inom AI för det med sig nackdelar för samhället. Deepfakes, som använder GAN för att klistra in människors ansikten i olika filmklipp, kan användas på fel sätt. Tekniken skulle till exempel vara väldigt användbar i politisk propaganda, eller för att ‘bevisa’ att en kändis sagt/gjort något som skulle förstöra deras karriär. Förmågan att manipulera och generera realistiska bilder skulle dessutom ha en enorm effekt på hur moderna samhällen tänker kring bevis och tillit till statliga organisationer.


Om du skulle vilja testa samma modell som https://thispersondoesnotexist.com/ använder med ditt egna dataset av bilder, har Nvidia gjort detta möjligt genom att lägga ut deras pythonkod på Github vilket är kompatibelt med både Windows och Linux. Där kan man träna nätverket med sina egna bilder, men det skulle ta väldigt lång tid att skapa en egen porträttgenererare. Jag har själv programmerat en modell som kan identifiera handskrivna nummer, och fick köra koden över natten. Det var med endast 100 repetitioner, så räkna med några veckor för ett program som kan skapa många ansikten! Nvidia säger följande; ‘För bästa resultat rekommenderar Nvidia, inte helt oväntat, en hårdvara med minst åtta grafikprocessorer, även om det fungerar redan med en gpu. Träningstiden varierar då mellan fem veckor med en gpu, och en vecka med åtta gpu:er.’ Lycka till!

Källor som användes i den här artikeln