Umělá inteligence | Strojové učení | Neuronová síť

Jak funguje kontroverzní program, který ženám krade plavky. Mají se čeho bát?

  • Strojové učení ještě nepřitáhlo takový zájem jako na začátku prázdnin
  • Ne, umělá inteligence nenašla lék na rakovinu
  • Naučila se svlékat ženy nejen z plavek

Chtěli byste spatřit kdejakou celebritu bez spodního prádla? A co třeba tu atraktivní sousedku, kterou máte mezi přáteli na Facebooku? Anebo polozapomenuté spolužačky ze střední a asistentky z vysoké?

Krátce před vypuknutím letních prázdnin se na internetu objevila kontroverzní aplikace DeepNude, která už podle svého názvu slibovala, že přesně toto nabídne s pomocí tzv. adversiální neuronové sítě. Sítě, která si nejprve pomocí strojového učení na tisících fotografií vytvořila statistický model ženské postavy v rouše Evině, a tak mohla její druhá část s jistou pravděpodobností vypočítat, jak asi vypadají ty části těla, které jsou citlivě schované za dvoudílnými plavkami nebo třeba kožichem z umělého norka.

Chce to hodně představivosti

DeepNude pochopitelně vyvolal šílenství zájmu především mezi muži a estonský web nakonec pod ohromným tlakem raději ukončil činnost. Bylo to totiž až příliš jednoduché. Stačilo spustit aplikaci, nahrát libovolný obrázek a chytré algoritmy a upocený procesor – nebo ještě lépe grafický čip s podporou CUDA – dokázal zázraky. Tedy zázraky…

44e86932-7ac8-41d4-9523-2a9bcb38a4e3
Vlevo modelka ze Shutterstocku, vpravo představa sítě, jak asi vypadá bez plavek

Vědychtiví experimentátoři totiž spíše než fotorealistický a nanejvýš explicitní záběr své nadřízené spatřili notně zamlženou impresionistickou malbu v pleťových barvách. Jenže ono to vlastně mnohdy stačilo, psychologie lidské sexuality je totiž velkou měrou založená na představivosti. Díky schopnosti imaginace lidského mozku si mnozí v duchu řekli: „Jistě, na první pohled je zřejmé, že se jedná o podvrh, ale ta žena tak nějak asi opravdu vypadá.“

c7c759a4-1948-482c-b0dc-285b5f1be1a1
Technologie dokáže rekonstruovat i mnohem větší kus zakrytého těla

V jednom z deseti případů se ale transformace neškodného snímku v kontroverzní přece jen povedla a skutečně se nabízelo riziko zneužití. Zejména tehdy, pokud by si s finalizací takové fiktivní fotografie pohrál jakýkoliv amatérský grafik v libovolném rastrovém editoru. Mnohdy stačilo jen sjednotit barvy a opravit nějakou tu lehčí deformaci tekutým štětcem.

Pokud vezmeme v potaz, čemu všemu jsou lidé ochotni uvěřit na sociálních sítích, nahou postavu kohosi známého kdesi na pláži by dost možná sdíleli stejnou urputností jako kdejaký hoax z posledních let.

deeb4a7b-6342-4251-ae2c-abc38d970d69
Transformace celé postavy

Kvalita transformace se zároveň bude v souvislosti s dalším vývojem nadále zlepšovat, během několika let se tedy dočkáme situace, kdy budeme moci zpochybnit jakýkoliv audiovizuální záznam reality. 

Zatímco mnohé osobnosti světa IT varují před vývojem A.I., která zničí lidstvo, v tomto kontextu jsou mnohem nebezpečnější podobné programy. Začínají totiž pomalu fungovat a jsou nesporně termonukleární zbraní informačního světa a hybridních válek zítřka. 

Pix2pix

Společenský rozměr ale nechme stranou a vraťme se zpět k samotné technologii. DeepNude není vlastně nikterak přelomový. Jen svojí aplikací. Ve své podstatě se totiž jedná jen o další variantu zmíněné adversiální sítě GAN (generative adversarial network), což je jedna z rodin neuronových sítí, která dokáže, v případě grafických dat, unikátním způsobem transformovat vstupní pixely na výstupní.

Právě práci s grafickými daty před pár lety zpopularizoval tým z Kalifornské univerzity v Berkeley pod vedením Phillipa Isoly, který pomocí GAN vytvořil program, který podle náčrtku kabelky vytvořil její fotorealistickou verzi, anebo podle různých barevných ploch, kdy každému odstínu odpovídal nějaký objekt, vytvořil fotorealistický snímek ulice. Ulice, která ve skutečnosti nikde na světě neexistuje.

cce7a437-ee38-4b76-b240-64100283039d
Transformační příklady Isolovy technologie

Isolova práce pod obecným označením pix2pix se dočkala hromady dalších implementací a dnes je na této technice postavený celý zástup transformačních algoritmů, z nichž mnohé na GitHubu nabízejí i živé ukázky. Třeba Image-to-Image Demo od Christophera Hesseho, ve kterém můžete myší na monitoru nakreslit onu zmíněnou kočku a neuronová síť ji podle nákresu opravdu vytvoří.

Jak? Naučila se, jaké kontury odpovídají jakým částem těla, takže když nakreslíte kulatou hlavu a uprostřed dvě kolečka, podle svého modelu odhadne, že se jedná o oči a pokusí se je vygenerovat, protože jejich podobu má opět v modelu.

86995ce1-4cae-419f-b838-0d0799d76618
Každá barva představuje jiný objekt. V tomto případě to jsou části budovy, jejíž fotorealistickou podobu poté síť vygeneruje, nicméně v případě DeepNude a jemu podobných to je lidská postava.

A to se už konečně dostáváme zpět k DeepNude, který také vychází z technologie pix2pix. Program tentokrát netransformuje kresbičku do neexistující fotorealistické kočičky, ale provede to samé s dvoudílnými plavkami, protože se naučil jak vypadá ženské tělo a její partie. Podle konkrétní lidské figury prostě dopočítá ženské poprsí a případně i klín.

PepeNude a armáda dalších

Zatímco DeepNude už z oficiálních stránek zmizel, GitHub se brzy zaplnil jeho dalšími implementacemi, což se jeho provozovateli z etických důvodů příliš nelíbí, a tak se snaží omezit v přístupu k těmto projektům. Třeba tak, že se k nim dostanou jen přihlášení uživatelé. Díky tomu tak dnes najdete na GitHubu třeba kopii PepeNude, jehož kód autor pro jistotu vystavil i na další podobné služby, takže jen tak z internetu nezmizí.

e102db9b-ba91-470a-aa28-5d40164834a527d17321-a139-4896-ab9f-55269158e8922162d701-f2db-4b23-b44c-6a951c199a3fc0af9492-1e05-4c5b-85ec-734ad2024da6
PepNude aka Easy-DeepNude je alternativní implementací původního DeepNude. K inferenci (viz blok níže) používá prakticky stejný model.

PepeNude je napsaný v Pythonu a ke zpracování hotového modelu neuronové sítě (inferenci) používá framework Torch/PyTorch. V něm je ostatně napsaná i původní předloha a nakonec i starý pix2pix.

Zájemci vše stáhnou v několika balíčcích ZIP, jejichž souhrnná velikost dosahuje několika gigabajtů. Program poté funguje buď jako textová aplikace pro snadné skriptování a automatizaci, anebo v grafickém rozhraní, ve kterém jen otevřete libovolnou fotografii, v případě grafické karty s podporou CUDA zaškrtnete políčko a stisknete tlačítko Process!

Pak už jen stačí počkat a za pár sekund až minut – dle hardwarové výbavy vašeho počítače – se už můžete trapně červenat při pohledu na svlečené kamarádky z Facebooku, které jste bohužel právě proměnili jen v pouhou věc sexuálního zájmu. Gratulujeme…

Co je to vlastně strojové učení?

Plnohodnotná odpověď by zabrala pár desítek normostran, a tak vše maximálně zjednoduším. Představte si, že máme několik tisíc malých a už upravených obrázků s ručně psanými číslicemi. To jsou studijní data, se kterými pracuje většina neuronových sítí, a my pomocí těchto studijních dat budeme chtít naučit algoritmus, jak jednotlivé číslice vypadají.

1d78b788-968e-4434-bdb2-bb31b5898bf9
Ukázka studijních dat pro učení číslic z americké databáze MNIST

Dejme tomu, že má každý obrázek rozměry 32×32 pixelů a je černobílý. Nejprimitivnější způsob strojového učení by pak mohl vypadat následovně. Jelikož víme, že všechny obrázky mají rozměr 32×32 pixelů, vytvoříme stejně velké pole neuronů – primitivních rozhodčích, kteří na vstupu dostanou nějakou informaci a zpracují ji podle předem stanovené váhy.

V našem případě bude vahou barva pixelu. Když bude černá, znamená to, že je tento pixel součástí aktuální číslice. Takže pokud dorazí obrázek číslice 1, všechny neurony, které zaznamenaly černou barvu, si uloží údaj, že jsou důležité pro číslici 1 – zvýší své skóre. No, a neurony, které zrovna zaznamenaly bílou, si zase sníží skóre významnosti pro číslici 1.

d4ee0b1d-afd6-4c1a-acc9-4fd3ae7db00f
Vlevo první číslice 1 a reakce matice neuronů po prvním průchodu

Po prvním obrázku s číslicí 1 může dorazit další obrázek s číslici 1, která ale tentokrát vypadá trošku jinak, což je velmi důležité – obecně platí, že čím pestřejší studijní data máme, tím bude kvalitnější i znalost naší neuronové sítě. Bude si moci namodelovat o to více možných variant.

7b07905d-66c4-43e7-8554-bfb8ca72363b
Průchod druhé číslice. Opět se jedná o 1, ale tentokrát má trošku jiný tvar. Skóre tedy navýší jen některé neurony, které reprezentují typický tvar číslice. Model se začíná zpřesňovat.

Jelikož 1 tentokrát vypadá trošku jinak, aktivují se zase jiné neurony naší šachovnice, ale zároveň i ty, které už 1 „viděly“ – ty opět zvýší své skóre a dalšími a dalšími průchody budeme postupně získávat obraz o tom, které pixely s největší pravděpodobností znázorňují číslici 0, které číslici 1 a tak dále.

A přesně toto je onen statistický model strojového učení, který si náš primitivní program vytvořil. Po průchodu stovek a stovek snímků nyní můžeme celý proces otočit a konečně využít naučenou znalost našeho softwarového stroje – tomuto procesu se říká inference.

6eff2686-0305-473e-9025-1b6115133ab7
Hotový statistický model číslic vzešlý ze strojového učení, který se skládá z dvou vah. Modrá pozitivní váha říká, že tyto pixely jsou pro daný znak velmi typické. Červená negativní váha zase říká, že tyto pixely se v dané číslici spíše nevyskytují.

Na čtvrtku papíru nakreslíme třeba číslici 3, vyfotíme ji, fotku zmenšíme na rozměr 32×32 pixelů a předložíme ji našemu stroji. Ten se tentokrát nebude učit, ale namísto toho se zeptá svých neuronů, jakou číslici na fotografii „vidí.“ Každý z neuronů tedy analyzuje svůj přidělený pixel a porovná jej s tím, co se naučil během tréninku. Potom se odpovědi ze všech neuronů sečtou a program nám řekne, že jsme s největší pravděpodobností na papír nakreslili 3, pak třeba 8 a 6, protože mají nejpodobnější pixely.

To je celé. Pointa spočívá v tom, že si program strojovým učením sám vytvořil model toho, jak vypadají číslice. My jsme mu na začátku stanovili jen několik primitivních podmínek – vah.

Současné neuronové sítě jsou samozřejmě mnohem komplikovanější, protože to jsou opravdu sítě – nikoliv jedna jediná vrstvička neuronů. Každá z vrstev neuronů tedy může analyzovat něco jiného počínaje barvami a konče tvary a tyto informace si různě předávat. Základní princip vah a postupného vytváření statistického modelu, který může nabývat velikosti třeba i stovek MB, je ale velmi podobný.

Diskuze (36) Další článek: Žít na Měsíci bude náročné, ale posune to naše vesmírné technologie

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,