Umělá inteligence | Strojové učení | Fotky

Customvision.ai: Vytvořte si vlastní umělou inteligenci, aniž byste rozuměli, jak vlastně funguje

  • Vycvičte si vlastní neuronovou síť na rozpoznávaní fotek
  • Poběží to na serverech Microsoftu
  • A je to zdarma

Se strojovým učením se už setkal každý z vás – tedy pokud vás právě nerozmrazili z krychle koňaku, do kterého jste spadli dejme tomu před deseti lety. Ačkoliv lze strojové učení a neuronové sítě použít k ledasčemu, k těm nejatraktivnějším aplikacím patří počítačové vidění. Hlavně proto, že jej v tomto případě můžeme dostatečně průkazně srovnávat se sebou samotnými.

A tak na vlastní oči pozorujeme, jak Google nebo Windows 10 nacházejí naše blízké na fotografiích, jak Google a Bing hledají fotky koček mnohem lépe než před pěti lety a jak se o to po malých krůčcích pokouší také tuzemský Seznam.

Vycvičte si neuronovou síť bez jediného řádku kódu

Strojové učení je dnes na internetu opravdu docela běžnou záležitostí, ale co víc, můžete si ho vyzkoušet i vy! Že jste posledních pár let nestrávili sepisováním doktorské práce z oblasti aplikované umělé inteligence a v malíku nemáte ani populární knihovnu TensorFlow od Googlu? Nevadí. Svoji vlastní a docela mocnou neuronovou síť totiž můžete postavit bez jediného řádku kódu.

Loni se totiž na scéně objevilo hned několik služeb pro snadnou klasifikaci obrázků a tvorbu vlastních modelů. Co to znamená v praxi? Dejme tomu, že byste chtěli rozpoznat, jestli je součástí fotografie nějaký unikátní objekt. Třeba houpací křeslo po babičce. Doma byste měli stovky a tisíce digitalizovaných fotografií z alb, jak je ale roztřídit a najít pouze snímky s křeslem?

Buď byste ručně prohlédli fotografii po fotografii, což by byla úmorná práce na dlouhé dny a možná i týdny, nebo byste si udělali rychlokurz počítačové grafiky (a tím opravdu nemyslím práci s Photoshopem) a vytvořili unikátní algoritmus na hledání babiččiných křesel. Anebo…

Anebo, aniž byste měli nejmenší tušení, jak to funguje, byste to dali celé za úkol neuronové síti. Ta by se sama naučila, jak vypadají fotografie, na kterých je babiččino křeslo a jak vypadají fotografie, na kterých žádné křeslo není. Výsledkem takového strojového učení by tedy byl pravděpodobnostní model, který byste pak mohli aplikovat na jakoukoliv vstupní fotografii.

Program pro umělou inteligenci by prošel pixel po pixelu a jeho neurony by s pomocí nacvičeného modelu – tedy znalosti – řekly: „Hele, pixelové struktury na této fotografii mají z 65 % stejný charakter jako struktury na fotografiích babiččina křesla, takže to bude asi to křeslo.“

Microsoft Custom Vision

A teď to nejdůležitější. Přesně toto za vás udělají služby jako Vize.ai a také experimentální Custom Vision od Microsoftu. Zatímco ta první nabízí vedle komerčních i bezplatný paušál, ta druhá je bezplatná sama o sobě, je totiž demonstrací pokročilejších (a také už zpoplatněných) technologií od Microsoftu. Custom Vision si dnes proto vyzkoušíme v akci.

Obě služby principiálně fungují velmi podobně a jsou ve své podstatě grafickou a naprosto blbuvzdornou nadstavbou textových nástrojů pro strojové učení. Dejme tomu, že si budeme chtít vycvičit neuronovou síť na vyhledávání mopsů – dusících se psíku s rozšlápnutými čumáky.

Abychom kohokoliv cokoliv naučili, potřebujeme nějakou učebnici – studijní fotky. Proto jsou dnes ve strojovém učení zdaleka nejdále firmy jako Google, Facebook nebo právě Microsoft, své strojové algoritmy totiž mohou testovat a vylepšovat na milionech snímků od svých uživatelů.

6c0dbb6e-85e8-4781-92c6-e0ae2950a71a
Pokusím se proměnit neuronovou síť v detektor mopsů. Nejprve tedy nahraji několik snímků s mopsem a tuto skupinu pojmenuji mops.

Ale nebojte se, milion mopsů potřebovat nebudete – mělo by jich stačit pár desítek. Pomohou třeba výsledky z vyhledávačů a ruční stažení miniatur. Na Custom Vision po přihlášení skrze účet Microsoftu vytvoříme nový projekt a z počítače nahrajeme fotky psů, přičemž je všechny označíme klíčovým slovem mops.

Tímto jsme vlastně vytvořili třídu – řekli neuronové síti, že toto je mops. Když objeví nějakou podobnou fotku, vrátí nám slovo mops.

Jedna třída ale nestačí. Potřebujeme ještě druhou. Pro náš experiment může sloužit jako pravý opak mopse. Mohli bychom tedy stáhnout fotografie dalších psů jiných plemen, kterým přidělíme třídu Toto není mops.

Vlčák není mops

Kdybychom tuto negační třídu nevytvořili, neuronová síť by se z fotografií naučila, že mops je cosi, co je hnědé, často je za tím zelené pozadí a má to čtyři nohy – čtyři fleky hnědých pixelů. Jenže to má háček. Tento popis přeci bude splňovat i prachsprostý vlčák.

Když však vlčáky, zlaté retrívry a další zařadíme do třídy Toto není mops, dáme tím neuronové síti během učení najevo, že je pro mopse charakteristické něco jiného – jeho podivný čenich.

5738304a-ec59-4a85-8d0a-3bd669a199d1
Druhá třída se psy ostatních plemen

Microsoft se v dokumentaci Custom Vision chlubí, že používá takové učící algoritmy, které dosahují použitelných výsledků už při několika desítkách studijních obrázků. Je to dáno mnoha faktory včetně toho, že neuronová síť v pozadí je už částečně předučená.

To znamená, že to není naprosté novorozeně, které poprvé otevřelo oči a hned by se mělo učit rozdíl mezi mopsem a vlčákem, ale spíše batole, které si ten svět okolo sebe už trošku osahalo a zná základní tvary, barvy, rozdíly…

No a zadruhé je Custom Vision nastavená na agresivní hledání rozdílů, což nemusí být vždy ideální, protože snadno přehlédne drobné nuance. Pokud by je měla rozlišit a pochopit, pár desítek snímků ji stačit opravdu nebude.

Čím kontrastnější studijní data, tím přesnější výsledky

V rámci svého vlastního experimentu Boženka, ve kterém se pokouším vycvičit neuronovou síť na rozeznávání typu počasí na libovolné fotografii, se studijní data skládají bezmála z dvaceti tisíc různých snímků jasné, polojasné a zamračené oblohy. Jen díky tomuto množství se moje neuronová síť po čase naučila rozlišovat i takové nuance jako třeba různý jas budov.

130232e6-6732-4c28-884e-2280cf88b9bc
Když může A.I. na snímcích hledat kočky, proč by nemohla rozpoznávat i počasí a vytvářet předpověď počasí nebo třeba třídit fotky z dovolené?

Když jsem ji tedy jednou předložil snímek, na kterém byla podvečerní zamračená obloha nad městem, stejně jej označila jako hezké počasí, protože z ozářených budov podvečerním Sluncem bylo jasné, že musí být kdesi mimo záběr a oblaka jsou pouze v zorném poli meteorologické kamery ČHMÚ, z jejichž dat čerpám.

Z toho plyne zajímavá otázka. Jak takový snímek vlastně klasifikovat? Je to ošklivá obloha, nebo naopak hezká? V těchto situacích si člověk teprve uvědomí, jak jsou neuronové sítě v počítačovém vidění komplexní.

Zpět k našim mopsům. Hrátky se strojovým učením mají pro běžného smrtelníka vedle potřeby kvalitních studijních dat ještě jednu překážku. Je to výpočetně velmi náročná operace. Zatímco batole potřebuje k dostatečně uspokojivému rozpoznávání mopsů až několik let života a větší než malé množství plín, neuronová síť pouze výkonný procesor – ideálně ten grafický s akcelerací CUDA.

b0741dce-9df3-4ee5-9d7c-f9d17afe6527
Na maličkém setu studijních dat proběhlo učení prakticky okamžitě

Podobné železo však doma nemá každý, i jednoduché učení tedy může trvat na starém počítači dlouhé minuty i hodiny. Custom Vision však běží v cloudu v datacentrech Microsoftu, čili s výkonem problém nemá. Stačí klepnout na tlačítko Train a nejpozději za pár minut (ale při pár desítkách snímků spíše za několik sekund) bude hotovo.

Nyní si náš model můžeme vyzkoušet na libovolném vstupním obrázku, který nebyl součástí studijní sady, a Custom Vision nám sdělí, s jakou pravděpodobností v něm identifikoval některou z tříd.

75cc5172-f783-41e8-90ff-5542c774b5b38f590de8-15b5-495e-b0dd-3e76dfa878c9
Hotový model mohu ihned vyzkoušet. Nahrál jsem snímky mopse a čivavy. Ani jedna z fotografií není součástí studijního setu. jedná se tedy o fotografie, které neuronová síť vidí poprvé. Uspěla.
483a4319-82e2-4102-aafd-61ea062208c4128ab949-2eb9-42ce-8381-bac9c8101afe
A ještě druhý projekt s dvěma třídami Hezké počasí a Hnusné počasí. Tentokrát má každá třída 100-200 fotografií k učení.
obrázek 029.pngobrázek 030.png
Test nacvičeného modelu opět překvapil. Ačkoliv obloha tvoří na testovacích fotografiích nejvýše 1/3 scény, model správně identifikoval snímek s hezkým a škaredým počasím.

Tisíc počítačového vidění denně

Jenže pozor, není to jen demo na odpolední prokrastinaci a experimentování s vhodnými studijními daty. Custom Vision může i reálně fungovat. Pokud totiž přeci jen umíte alespoň trošku programovat, můžete použít bezplatné API. Pomocí HTTP POST se tedy svého modelu můžete dotazovat z vlastního programu nebo třeba webového skriptu a to tak, že službě pošlete adresu snímku k detekci, anebo rovnou celou fotografii. Toto API můžete použít 1 000× denně a pod svým účtem založíte až 20 různých projektů – dvacítku zcela odlišných modelů, které budou pracovat s vlastními sety studijních fotek.

db2844be-367e-458c-ae97-45c182ae2568
Každý vycvičený model mohu použít i pomocí HTTP POST API

To je už docela použitelné a Microsoft to nedělá jen tak. Službu sice nabízí zcela zdarma, ale s vidinou toho, že mu podobnými hrátkami sami vylepšíte jeho neuronové sítě. Pokud totiž vycvičíte dobrý model, pravděpodobně jste použili i kvalitní studijní data a v rámci podmínek souhlasíte s tím, že je bude moci pro učení použít i Microsoft.

e6a39970-adc3-4e53-b846-6eee7cc9a3aa8f139e09-d961-475b-99dd-a77f31631f8a 285580a5-ac68-4ddd-88f6-5c9bdb277859
Zkouška API modelu v programu pro testování HTTP/REST dotazů Insomnia. Z výsledku ve formátu JSON v pravé části je vidět, že fotografii krumlov.jpg model označil z 99,7 % třídou Hezké počasí.

V každém případě, Custom Vision je zajímavý experiment, který přiblíží některé principy strojového učení i naprostým zelenáčům. A věřte, že hledání kvalitních – obsahově pestrobarevných studijních dat, abyste v dalším testu dosáhli zase o něco lepšího výsledku, jehož úspěšnost se bude pomalu přibližovat 100 %, je vlastně docela zábava!

Diskuze (6) Další článek: Facebook testuje Downvote, vzdálenou alternativu k tlačítku Nelíbí se mi

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