Objavljeno: 28.2.2017 | Avtor: Matej Huš | Monitor Marec 2017

Računalniške halucinacije

Strojno učenje omogoča prepoznavanje govora, strojno prevajanje, prepoznavanje vsebine na fotografijah, samodejno analizo besedil in številna druga opravila, ki so bila še nedavno zgolj v domeni človeka. Zdaj pa je Google pokazal, kako lahko s strojnim učenjem filmska fikcija postane realnost. Ostrenje in zviševanje ločljivosti na posnetkih je z nevronskimi mrežami dobilo povsem novo razsežnost.

Leon Harmon: The Recognition of Faces, Scientific American, 1973

Pogost prizor v filmih je preiskovalec zločina, ki se sklanja nad rameni tehnika, ki analizira posnetek nadzorne kamere z mesta kaznivega dejanja. Posnetek je slabe kakovosti in nizke ločljivosti, nato pa ga s takšno ali drugačno čarovnijo tako izostrijo, da v odsevu na kovinski površini prepoznajo obraz storilca. Resničnost je precej dolgočasnejša. Če informacije na fotografiji ni, je z nobeno metodo ne moremo čudežno izvleči iz slike. Kaj pa, če bi jo od kod drugod?

Salvador Dalí: Gala Contemplating the Mediterranean Sea which at Twenty Meters Becomes the Portrait of Abraham Lincoln-Homage to Rothko, 1976

Če si dobro ogledate spodnjo sliko, boste verjetno prepoznali, kdo je na njej. Zlasti v ZDA skoraj vsi ljudje prepoznajo, da je na njej Abraham Lincoln. Ne zato, ker bi imela slika sama po sebi dovolj informacij – vprašajte isto domorodca iz Papuanske Nove Gvineje, pa ne bo imel pojma. Lincolna prepoznamo zaradi znanja, ki ga že imamo. Poznamo Lincolna, pa tudi izvirno fotografijo, iz katere je pomanjšan pričujoči zmazek, smo že videli.

Gre za slovito fotografijo, ki jo je leta 1973 v članku The Recognition of Faces v reviji Scientific American uporabil Leon Harmon. Salvador Dalí je med bivanjem v New Yorku redno bral to revijo in prav omenjeni članek je bil navdih za eno izmed njegovih najbolj znanih slik. Dalíja je tako kot številne druge očaralo, da so človeški možgani tako zelo plastični pri zapolnjevanju vrzeli.

Možgani ves čas iščejo vzorce in videno primerjajo z že znanim. Včasih nas to prevara, kar je srž številnih iluzij, pogosto pa nam koristi. Nesorazmerno velik predel možganov je namreč namenjen obdelavi vizualnih informacij, pri čemer so možgani silno hitri in učinkoviti prav pri prepoznavanju obrazov. Evolucijsko je bilo pač pomembno, da smo že od daleč na hitro prepoznali, ali se nam bliža tovariš, sovražnik ali morda lev. In če to znajo možgani, zakaj ne bi tega znale tudi nevronske mreže, ki temeljijo na podobnih načelih? Google je zato storil prav to.

Googlovi možgani

Google Brain je raziskovalni projekt v Googlu, kjer se ukvarjajo s strojnim učenjem in umetno inteligenco. Zagnali so ga že leta 2011 in je do danes dal že nekaj rezultatov, ki jih uporabljamo vsak dan. Prepoznavanje govora, iskanje po fotografijah v Googlu+ in priporočila v YouTubu so zgledi tehnologij, ki jih poganjajo izsledki Google Braina.

Najnovejši projekt, ki ga zdaj razkrivajo javnosti, se imenuje superločljivost (super resolution), kakor se imenuje izboljševanje, torej povišanje ločljivosti fotografije. Matematično je problem poddefiniran, ker želimo dobiti fotografijo z več informacijami, kot jih ima na začetku. Z drugimi besedami: je več fotografij visoke ločljivosti, ki imajo isto nizkoločljivostno predstavitev. Želimo najti tisto, ki je njen najverjetnejši prednik.

Naivni in manj naivni načini

Najbolj naiven način so seveda različne interpolacije, kjer se manjkajoče točke pri povišanju ločljivosti izračunajo iz znanih robnih vrednosti. Tak postopek je hiter, rezultat pa je slika, ki nima ostrih detajlov in deluje megleno. Zvečali smo ločljivost, dodatnih informacij pa seveda nismo vnesli. Naslednjo skupino algoritmov sestavljajo takšni, ki uporabljajo osnovne prijeme statistike, denimo gradiente robov. Nekateri algoritmi iščejo po velikih bazah manjših zaplat visokoločljivostnih fotografij, za katere imajo izračunane nizkoločljivostne predstavitve, in potem skušajo izbrati najboljšo možnost. Vsem navedenim metodam je skupno, da iz nizke ločljivosti v visoko skočijo v enem koraku. Taka transformacija je navadno hitra, ni pa preveč kakovostna.

Če imamo na voljo dovolj časa in nevronske mreže, ni nobene potrebe za skok. Fotografiji lahko ločljivost povečujemo korakoma. Konvolucijske nevronske mreže (CNN) počnejo točno to. Pri vadbi se nevronska mreža z več nivoji nauči prepoznavati določene značilnost fotografije, denimo obrise, sence itd. Uporabljajo verjetnostne modele za generacijo točk, v katerih je zaradi reda vsaka točka odvisna od vseh drugih točk. To je razumna predpostavka, ker poskušamo izboljšati fotografije realnih predmetov in ljudi, ne pa naključnega šuma. Na vseh teh izvirnih fotografijah v resnici vlada precejšen red, ki ga mora imeti tudi obnovljena fotografija povišane ločljivosti.

Kako deluje

Googlov model sestavljata dve nevronski mreži, ki sodelujeta. Prva nevronska mreža (conditioning network) je napovedna konvolucijska nevronska mreža (CNN), ki vhodno sliko nizke ločljivosti preslika v ogrodje za fotografijo visoke ločljivosti. Vzame tribarvno (RGB) sliko z ločljivostjo 8x8, jo pošlje skozi vrsto slojev in iz nje izlušči osnovne informacije, ki so najverjetneje na sliki. Pri fotografiji obraza torej najde oči, obrvi, zobe itd. Poenostavljeno povedano, je ta mreža med vadbo videla toliko parov fotografij visoke in nizke ločljivosti, da dobro prepoznava, v kakšno strukturo se izgubijo informacije pri nižanju ločljivosti, zato jih zna obnoviti. A ta mreža teh informacij ne more sestaviti v koherentno fotografijo.

Sistem sestavljata dve nevronski mreži. Prva (conditioning network) vzame vhodno sliko in išče čim bolj podobne znane slike. Druga nevronska mreža (prior network) prepoznane drobce fotografije sestavi v pravilno kompozicijo.

Zato se uporablja druga mreža (prior network), ki uporablja znano metodo PixelCNN (implementacijo najdemo tudi na Githubu). Ta mreža zmore povezati drobce informacij, ki jih je našla prva mreža, in jih sestaviti v realistično fotografijo. Tehnične podrobnosti je Google opisal v znanstvenem članku (glej okvir), ki ni ravno lahko popoldansko branje.

Če približno vemo, kaj naj bi bilo na fotografiji (desna), so rezultati (srednja) iz zelo slabe osnove (levo) osupljivi.

Rezultati

Podobno kot s Turingovim testom umetno inteligenco sodimo po tem, ali ji je človeškega sogovornika uspelo pretentati, da je sama človek, je tudi Google meril kakovost svojega mehanizma. Vsakokrat so izbrali štirideset svojih zaposlenih in jim pokazali izvirno fotografijo visoke ločljivosti ter s testirano metodo obnovljeno fotografijo, ki je bila pridobljena iz nizkoločljivostne predstavitve. Vsako fotografijo so videli eno sekundo, potem pa so morali izbrati, katera je izvirnik. Razvrstiti so morali 45 parov fotografij, izmed katerih je bilo pet preizkusnih, 40 pa pravih. Če bi bila metoda popolna, bi bil pričakovan rezultat 50-odstotna uspešnost, saj bi vsakokrat ugibali. Po drugi strani je za zanič metodo pričakovana 0-odstotna uspešnost, saj ne bi v nobenem primeru pretentala človeka.

Rezultati so bili zelo zanimivi, in so obsegali številke od 0 pa do 85 odstotkov! V nekaterih primerih je bila računalniška fotografija videti bolj realna od dejanske. Pri fotografijah zvezdnikov je bil algoritem 10-odstotno uspešen, pri fotografijah spalnice pa 28-odstotno. Če upoštevamo, da je uspeh klasične interpolacije vedno in povsod 0-odstoten, so to dobri rezultati.

Za človeški način določanja uspešnosti svoje metode se Google ni odločil le zato, ker je metoda seveda namenjena ljudem, temveč iz globljega razloga. Težko je namreč postaviti algoritem, ki bi meril kakovost fotografije. Algoritmi, ki so merili podobnost med originalno visokoločljivostno fotografijo in rezultati različnih metod, so namreč kot boljše označili naivne, kot sta bikubična interpolacija in preprosta regresija. Te so morda res bolj podobne originalu, a nimajo nobenih skoraj nobenih dodatnih informacij v primerjavi z nizkoločljivostno fotografijo, predvsem pa se že od daleč razpoznajo in ne pretentajo nikogar. Izkaže se, da najbolje vedo, kaj je ljudem všeč, prav – ljudje.

Primerjava računalniško izboljšanih (obnovljenih) fotografij in izvirnikov. Vrednosti podajajo delež ljudi, ki jih je računalniška fotografija pretentala.

Omejitve

V računalniškem žargonu informacije, ki jih pridelajo nevronske mreže in jih v vhodni fotografiji ni, imenujemo halucinacije. Fotografije visoke ločljivosti, ki jih dobimo s tako obdelavo, so res bistveno bolj gledljive od nizkoločljivostnih vhodnih podatkov. Toda primerjava z izvirniki, iz katerih so bili vhodni podatki pripravljeni, kaže pomembne razlike. V detajlih se ne ujemajo. Nevronska mreža je pravilno prepoznala, da gre za skodrane lase ali podolgovate modre oči, nato pa je sliko dopolnila z nekimi skodranimi lasmi in modrimi očmi. Kaj bomo s tem počeli, je odvisno od primera do primera.

Za dvig ločljivosti starejših fotografij ali starega filma – tu so pričakovani rezultati še boljši, ker si lahko pomagamo tudi z informacijo v prejšnji in naslednji sličici (frame) – ki bi jih želeli gledati na novi HD televiziji, to več kot zadostuje. Za povišanje ločljivosti posnetku nadzorne kamere, na podlagi katerega bi želeli obsoditi tatu, pa računalniške halucinacije na sodišču ne bodo zdržale. Vsak odvetnik bo namreč sodniku hitro pojasnil, da so na izboljšanem posnetku oči, ki jih je nevronska mreža halucinirala. In če bodo med podatki, iz katerih se je učila, prav posnetki osumljenca, ga bo seveda s halucinacijami umestila tudi na izboljšan posnetek. Povsem neuporabna pa je opisana metoda za iskanje črk in številk na zamegljeni sliki (npr. na registrski tablici), saj imajo tu vse smiselne možnosti enak nizkoločljivostni odtis. Horatio Caine iz serije CSI bo torej še nekaj časa ostal zgolj televizijski protagonist.

Tehnične podrobnosti najdete v znanstvenem članku Dahl Ryan, Norouzi Mohammad, Shlens Jonathon: Pixel Recursive Super Resolution, 2017, arXiv: arxiv.org/abs/1702.00783.

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji