Iniciativa AI dětem

Projekt rozpoznávání lego kostek

Autor: Jan Řepík, editorka: Eva Nečasová

Natrénujte s dětmi model strojového učení, který díky technologii počítačového vidění dokáže rozpoznávat objekty na fotografiích. V tomto článku k rozpoznání kostiček lega využijeme aplikace LandingLens a Teachable Machine.

Jak to celé funguje

Aplikace LandingLensTeachable Machine, o nichž bude v článku řeč, fungují na principu strojového učení s učitelem. Je to jedna z metod, která dovoluje umělé inteligenci učit se. Funguje to velmi jednoduše. Chceme-li AI naučit rozpoznávat objekty na fotografiích, musíme jí napřed říci, co na nich je. Pojďme si to vysvětlit na následujícím příkladu.

Vytvořili bychom rádi aplikaci, která rozpozná červené lego kostičky od modrých. Shromáždíme nejprve fotografie obou barev kostiček, tzn. připravíme zdrojová data. Poté rozdělíme fotografie modrých a červených kostiček do kategorií a ty patřičně pojmenujeme. Této fázi se říká anotace dat (viz schéma).

Když jsou data anotována, spustíme proces trénování, a tím vznikne tzv. model strojového učení. To je program, který v tomto případě dokáže rozpoznávat vzory v datech (např. modré a červené kostičky lega). Když mu pak v testovací fázi předložíme fotografie kostiček, které předtím neviděl, budeme spoléhat na to, že je s nějakou pravděpodobností rozpozná. A pokud ne, nic se neděje — model snadno doučíme!

Jdeme na to!

Aplikace LandingLens a Teachable Machine může každý použít v prohlížeči a bez předchozích znalostí. Oba nástroje mají za cíl usnadnit vytváření, pochopení a implementaci modelů strojového učení. Využívají technologii tzv. počítačového vidění — na stejném principu se orientují třeba také samořiditelná auta. K celému procesu je třeba jen počítač s webkamerou (ale jde to i bez kamery) nebo mobilní telefon a pár minut času.

LandingLens

Práce s aplikací je snadná a po pár vteřinách i přehledná. Po registraci a přihlášení (nutné) si můžete pustit video s CEO Andrew Ng představující projekt, hrát si s předtrénovanými modely nebo se pustit do tréninku vlastního.

Po kliknutí na „create project“ se spustí samotné prostředí pro trénink a správu modelu. Obrázky můžeme buď přetáhnout ze složky (pomocí drag and drop) na oblast označenou „drop to upload“, nebo tlačítkem „use webcam“ spustit webkameru a pořizovat snímky objektů s ní.

Minimální počet snímků pro trénování modelu je deset, ale čím více vstupů dodáte, tím větší bude později šance na správný výstup. Další obrázky můžete případně posléze přidat stiskem tlačítka s ikonou mráčku v pravém horním rohu. Všechny nahrané obrázky budou zatím (ne)označeny jako „unlabeled“. Další krok bude tedy klasifikace objektů na trénovacích snímcích.

Klikněte na jakýkoliv nahraný obrázek. V levém horním rohu najdete tlačítko „create class“, kde vytvořte novou třídu. V mém případě nazvanou „žlutá kostička“. Postupně na všech fotografiích označte každý objekt spadající do této třídy. Mezi fotografiemi se můžete přesouvat šipkami v levém dolním rohu nebo můžete použít šipky na klávesnici počítače.

Pokud máte, stejně jako v tomto případě, více objektů k identifikaci, vytvořte další třídu „modrá kostička“ a opakujte stejný postup. Pokud na některé fotografii žádný objekt k označení není, stiskněte tlačítko „no class to label“ nebo klávesovou zkratku N.

Když identifikaci na některém nahraném snímku vynecháte nebo snímek bez objektu neoznačíte jako „no class to label“, prostředí vás k dalšímu kroku nepustí. Pak už stačí jen stisknout tlačítko „train“.

Neuronová síť se začne učit. V obrázcích označených třídou např. žlutá hledá opakující se vzory. Pokud je najde, začne si jich „vážit“ víc. To se opakuje u dalších vzorů, až usoudí, že ví, jaké společné vzorce mají všechny obrázky obou jí známých tříd a jak se liší od pozadí. Zhruba za minutu můžete model otestovat.

Po stisknutí tlačítka „predict“ budete vyzváni k nahrání fotografie nebo sepnutí webkamery. Nahraný snímek se vám po pár vteřinách analýzy zobrazí včetně označených objektů. Ale nejspíše nebudou označeny správně. Čeká vás totiž ještě jedna část. Část empirická neboli pokus omyl. Jen tak bych nazval ladění hodnoty „confidence treshold“.

Rozsah, jak velkou pravděpodobnost bude model považovat za jistotu, musíte sliderem nastavit tak, aby pokud možno model identifikoval všechny objekty a zároveň nebyl příliš citlivý. Hodnotu ověřte i na dalších snímcích. Může se stát, že na jednom snímku AI identifikuje vše správně a na druhém ani polovinu, ať se snažíte hodnotu ladit sebevíc. Netrapte se. To je pouze známkou malého množství vstupních dat. Proto model testujete, je to součástí procesu. Nahrajte ještě několik fotografií pořízených z dalších úhlů, na jiném pozadí nebo za jiných světelných podmínek. Nechte znovu model vytrénovat, ihned si pak všimnete, jak se preciznost předpovědi zlepší. Pak stačí stisknout tlačítko „deploy“ a hotovo.

Právě jste natrénovali, otestovali a doladili svou vlastní umělou inteligenci. Jednoduché, že? A ještě o něco jednodušší je následující aplikace.

Google Teachable Machine

Na stránce aplikace vás uvítá video s příklady využití Teachable Machine a stručný popis fungování. Registrace není třeba.

Po stisku „get started“ se zobrazí nabídka, které vstupy chceme použít. Teachable Machine umí jako vstup použít fotografie z webkamery a pevného disku nebo zvuky, ale také umí z videa identifikovat postavení lidského těla. Zvolte fotografie, ale musíte vybrat ještě jednou. Mezi snímky barevnými s vysokým rozlišením a černobílými s nízkým rozlišením. Druhá volba je vhodná pro pozdější použití v automatizaci, ale vás bude nyní zajímat vstup barevný s vysokým rozlišením — Standard Image Model.

Nyní se nám zobrazí již samotné prostředí pro trénink. Vypadá jinak než předešlé, ale něco vám už bude možná připadat povědomé. Máte tu připravená dvě okna označená „class 1“ a „class 2“. To jsou třídy. Na rozdíl od LandingLens nebudete nahrávat obrázky a na nich třídy označovat, ale rovnou nahrávat obrázky s objektem do tříd.

Třídy můžete přejmenovat. Já použil opět pojmenování modrá a žlutá kostička. U obou tříd vidíte tlačítka „webcam“ a „upload“. Prvním spustíte webkameru a po stisku tlačítka „capture“ začne aplikace ukládat fotografie do třídy. Případně můžete připravené snímky nahrát z pevného disku druhým tlačítkem. Stejný postup opakujte u druhé třídy.

Klasifikace kostiček je hotová a přišel čas natrénovat model. I když... ještě chybí jedna třída. U minulého příkladu s LandingLens jste na fotografiích rozlišovali mezi předmětem a pozadím označením předmětu. Takové označení v Teachable Machine není. Nelze označovat objekty na fotkách.

Vytvořte proto ještě jednu třídu pomocí tlačítka „add a class“, kam nahrajte fotky pozadí bez předmětů. Dáte tak modelu možnost na výstupu správně identifikovat i případ, kdy v záběru žádná kostička nebude. A můžete tlačítkem „train model“ spustit trénování.

Neuronová síť se začne učit, hledat podobné vzory v rámci tříd. Model jste vytrénovali a jde se na testování. V pravé části obrazovky se sepne webkamera, případně hned nad záběrem z webkamery lze přepnout na nahrávání obrázků z pevného disku. A to je další rozdíl mezi Teachable Machine a LendingLens. Teachable Machine umí sice identifikovat předměty v živém záběru z webkamery, ale nepozná více tříd v záběru najednou.

Otestováno? Přidat další obrázky anebo třídy můžete stejným postupem, jako když jste nahrávali první. Hotový vycvičený model můžete uložit tlačítkem „export“ na později. To je další rozdíl proti LandingLens, kde se projekt ukládá automaticky a po přihlášení se k němu můžete kdykoliv vrátit. Tak hotovo. Druhá umělá inteligence vytrénována. Gratuluji!

Co s tím dál?

Obě aplikace můžete využít v hodinách na rozpoznávání doslova čehokoliv obrazového. Důležitý je samotný proces trénování — model je třeba ladit a testovat, stejně jako se to děje v běžné praxi. A pokud jste využili aplikace na něco zajímavého, budeme moc rádi, pokud nasdílíte své zkušenosti v naší facebookové skupině!