24. novembra 2024
pocitoci

Ako vidia počítače?

Počítače ako elektronické zariadenia vykonávajú obrovské množstvo výpočtov za sekundu. Na rozdiel od ľudí nemajú žiadnu prirodzenú schopnosť kognitívneho myslenia, ktorá sa nám vyvinula počas evolúcie a ktorú používame okrem iného pri rozpoznávaní obrazu. Na otázku ako vidia počítače teda môžeme odpovedať veľmi jednoducho. Počítače nevidia. 

Denne sa však stretávame s aplikáciami ako rozpoznanie tváre alebo evidenčných čísiel aut. Ako tieto systémy fungujú? Ako dokážeme prinútiť stroje, ktoré vo svojej podstate poznajú len niekoľko základných matematických operácií, aby boli schopné rozpoznať ľudskú tvár v súbore jednotiek a núl?

Ako vidí oko?

Obraz o okolitom svete vidíme vďaka svetlu, ktoré vyžarujú alebo odrážajú predmety a objekty okolo nás. Svetlom nazývame práve tú časť elektromagnetického žiarenia, ktorá je viditeľná pre ľudské oko. Elektromagnetické žiarenie je vo svojej podstate periodická zmena istých vlastností elektromagnetického poľa, teda vlnenie.

Základnou elementárnou časticou elektromagnetického poľa je fotón. Keďže sa jedná o vlnenie, môžeme sa pozerať na jeho vlnovú dĺžku a frekvenciu. Ak si predstavíme vlny na vode, vlnová dĺžka je vzdialenosť dvoch nasledujúcich vrcholov. Frekvencia vyjadruje koľkokrát vlna prejde určitým miestom za jednu sekundu. Tieto dve veličiny sú veľmi úzko späté.

Ľudské oko je citlivé len na žiarenie v rozsahu vlnových dĺžok približne od 400 do 800 miliardtín metra. Evolúcia nás teda obmedzuje len na malú časť elektromagnetického spektra. Keď priťahujeme strunu na gitare, mení sa frekvencia kmitania a subjektívne vnímame zmenu tónu. To, čo vnímame ako zmenu farby, je v skutočnosti zmena vlnovej dĺžky a frekvencie svetla. Zmena vnímaného jasu odpovedá zmene intenzity svetla, čo v príklade s vlnami na vode predstavuje výšku vlny.

Analýza obrazu

Bežné svetlo nie je zložené len z jednej frekvenčnej zložky, ale ako komplexné vlnenie pokrýva celé spektrum. To čo vnímame ako biele svetlo je zmes všetkých farieb viditeľného spektra. Farebné predmety vnímame vtedy, ak do okolia vyžarujú svetlo, v ktorom určité farebné zložky dominujú.

V orientácií pomocou zraku nám pomáha naša schopnosť rozlišovať objekty a predmety. Keďže predmety okolo nás vyžarujú rôzne spektrum elektromagnetického žiarenia, vnímame ich ako rôznofarebné. Vďaka tomu vieme rozlíšiť hranice jednotlivých objektov, vnímame kontrasty, vidíme hrany a rozlišujeme tvary.

Tu však treba oddeliť, ktorá časť videnia sa stará o zachytenie obrazu a ktorá o analýzu obsahu. Ľudské oko zachytáva obraz pomocou svetlocitlivých receptorov, no pre vyhodnotenie obsahu potrebujeme mozog. Dalo by sa povedať, že oko bez mozgu je ako kamera bez počítača. Kamera potrebuje počítač, aby vyhodnotil, čo sa v obraze deje. Kamera, podobne ako ľudské oko, je v princípe tvorená veľkým množstvom svetlocitlivých snímačov. Červené, zelené a modré svetlo sa zachytáva separátnymi senzormi v každom bode obrazu, pretože z týchto troch zložiek je možné kombinovať akúkoľvek farbu. Čím viac pixelov (snímaných bodov) pokrýva určitú plochu, tým je rozlíšenie obrazu vyššie a obraz kvalitnejší.

Ako vidí počítač

V pamäti počítača sú výstupy týchto senzorov zapísané v číselnej podobe. Pri množstve aplikácií je postačujúce použiť čierno-biely obraz, ktorý získame kombináciou farebných zložiek do jedného čísla. V tom prípade nám intenzitu (jas) daného pixelu vyjadruje len jedna numerická hodnota, čo je podstatné zjednodušenie.

Obraz uložený v počítačovej pamäti si môžeme predstaviť ako mriežku (odborne: dvojrozmerné pole), ktorej rozmery určuje rozlíšenie. V každej bunke poľa je číselná hodnota, ktorá udáva intenzitu svetla na danom mieste. Obraz uložený vo forme pola čísel však zatiaľ nič nehovorí o jeho obsahu, zatiaľ sú to len rôzne jasné bodky. Analyzovať obsah nám umožnia techniky digitálneho spracovania obrazu. Možností a postupov je veľa. Tie základné a zároveň najdlhšie známe využívajú analytický prístup, pri ktorom potrebujeme určitú znalosť o scéne a snažíme sa nájsť isté zákonitosti alebo pravidlá. 

Jednoduchý príkladom môže byť úloha zistiť, či na obrázku je obloha alebo nie. Náš analytický predpoklad bude, že obloha je modrá. Algoritmus môžeme navrhnúť tak, aby spočítal všetky pixely, kde je dominantná modrá farba. Ak je modrých pixelov výrazná časť z celkového počtu pixelov, na obrázku je pravdepodobne obloha. Problémom je, že do tohto algoritmu môže vstupovať niekoľko parametrov, ktoré nám budú určovať, kedy považovať pixel za modrý alebo čo znamená výrazná časť z celkového počtu pixelov. Ďalším problémom je samotný analytický predpoklad, keďže modrá plocha na obrázku nemusí byť len obloha. Tento jednoduchý algoritmus by fungoval len na špecifických obrázkoch, čomu hovoríme, že daný problém sa nepodarilo generalizovať

Ako niečo klasifikovať

V predchádzajúcom príklade sme použili len jednu informáciu o obsahu obrazu – zastúpenie modrej farby. Pre riešenie väčšiny problémov je však potrebné vedieť o obraze väčšie množstvo informácií, napríklad z akých elementárnych častí sa obraz skladá, teda či sa v ňom nachádzajú určité tvary alebo farby. Tento proces ziskavania relevantných informácií sa nazýva extrakcia príznakov.

Za extrakciou príznakov z pravidla nasleduje rozhodovanie, do akej kategórie obraz spadá, čo vykonáva klasifikátor. Čím viac príznačných informácií o obsahu obrazu máme, tým je konečné rozhodnutie komplexnejšie. Užitočné obrazové príznaky sú hrany, ktoré predstavujú výraznú zmenu jasu a často ohraničujú konkrétne predmety alebo oblasti. Detekovať hrany v obraze je možné pomocou derivácie, čo je matematický nástroj na určovanie rýchlosti zmeny. V miestach, kde dochádza k ostrým prechodom v jase bude výsledok derivácie rozdielny oproti monotónnym plochám.

Keďže obraz je dvojrozmerný signál, rýchlosť zmeny je možné sledovať v rôznych smeroch. V reálnych aplikáciach sa preto používajú sofistikovanjšie prístupy. Do príkladu detekcie oblohy môžeme do rozhodovania pridať ďalšiu podmienku na základe detekcie hrán v obraze. Presnosť algoritmu by sa pravdepodobne zvýšila, no stále zostáva problémom určiť prah rozhodovania. Postupné pridávanie príznakov a ich vyhodnotenie by nás pravdepodobne priviedlo k určitej uspokojivej presnosti. Tento analytický prístup môže byť však vo veľa prípadoch veľmi náročný a zdĺhavý. 

Učiť sa vidieť

Analytický prístup k riešeniu problémov je dnes stále viac nahradzovaný učiacimi sa algoritmami. Tie automaticky extrahujú informácie podľa toho, ktoré vyhodnotia ako najrelevantnejšie pre konkrétnu úlohu. Tu prichádza na scénu strojové učenie a umelá inteligencia. To, že algoritmus učíme vykonávať určitú úlohu znamená, že nastavujeme jeho vnútorné parametre tak, aby sme minimalizovali chybovosť na výstupe. Tieto parametre môžu byť napríklad už spomínané prahy určujúce, kedy je pixel dosť modrý alebo aká časť obrazu musí byť pokrytá modrou farbou. Ako však vieme naučiť počítače extrahovať príznaky z obrazu?

Najčastejšie sa používa matematická operácia konvolúcia obrazu a konvolučného jadra. Konvolučné jadro je tabuľka niekoľkých koeficientov  (napríklad s rozmermi 3×3), pomocou ktorých počítame novú hodnotu pixelu na pozícií v obraze, ktorú jadro práve prekrýva. Posúvaním jadra po všetkých pixeloch vykonáme filtráciu celého obrazu. Správnym nastavením jadra vieme docieliť napríklad priemerovanie jasu v určitých oblastiach, čo v merítku celého obrazu spôsobí rozmazanie.

Koeficienty jadra teda ovplyvňujú, aké elementárne tvary sa budú v obraze filtrovať alebo zvýrazňovať. Ak bude takýchto filtrov veľké množstvo, vznikne konvolučná neurónová sieť, pričom nastavenie koeficientov jadier môžeme nechať na proces strojového učenia. Filtrácia obrazu v konvolučných sieťach prebieha v rôznych úrovniach rozlíšenia, vďaka čomu je schopná extrahovať príznaky v rôznych škálach. Konvolučné siete sa učia extrahovať príznaky, ktoré následne vyhodnotí klasifikátor.

Väčšina algoritmov strojového učenia je navrhnutá tak, že majú vstup a výstup. Vstupom sú v našom prípade obrazové dáta a výstupom rozhodnutie, či je na obrázku obloha alebo nie. Na základe aktuálneho nastavenia nám algoritmus vráti odpoveď, napríklad: je tam obloha. Na to aby sme mohli algoritmus učiť však musíme poznať skutočnú pravdu. Ak vieme, že v skutočnosti na obrázku obloha nieje, algoritmus sa pomýlil a jeho parametre musia byť prenastavené tak, aby nabudúce už takúto chybu nespravil.

Môžeme teda povedať, že algoritmy strojového učenia sa učia na základe predošlej skúsenosti. Dôležité je však podotknúť, že sa učia vykonávať len konkrétnu úlohu a táto forma umelej inteligencie je teda výrazne obmedzená a neškodná. Samozrejme, dopad automatizácie a nahradzovanie niektorých ľudských činností počítačmi môže mať dopad na zamestnanosť, čo je však iná téma.

Najznámejšou a v súčasnosti najpoužívanejšou formou strojového učenia sú neurónové siete, ktorými sa snažíme napodobniť procesy fungovania ľudského mozgu. Vo výsledku nám príliš nezáleží, prečo sa daný algoritmus rozhodol tak alebo onak. Ide nám len o to, aby mal čo najmenšiu chybovosť. Napriek tomu, že tieto algoritmy navrhujeme, sú pre nás z určitého pohľadu čiernymi skrinkami, pretože príliš neskúmame na základe čoho sa rozhodujú a aké príznaky si vyberajú. 

Či už teda použijeme analytický prístup alebo strojové učenie, v každom prípade sa snažíme pomocou počítača napodobniť ľudské rozhodovanie. Neživým počítačom dávame určitú vedomosť o konkrétnom probléme, preto hovoríme o umelej inteligencií. Na otázku ako vidia počítače stále ostáva odpoveď, že počítače nevidia. Pri špecifických úlohách však dokážu napodobniť ľudskú schopnosť rozpoznávať obraz, ak sú na to naprogramované.

[Jakub]

Pridaj komentár