Někdy v létě jsem byl u kamarádů a nadšeně jim vyprávěl o třídičce lega (ostatně jako asi každému tou dobou). Zasvítily jim očička a pronesli – „To by se nám hodilo na medžiky“. Vzmohl jsem se jenom na otázku: „Na cožeto“?
I vysvětlili mi, že sbírají potištěné kousky papíru. Říkají tomu sběratelské karty Magic The Gathering. A že prý je těch kartiček asi 50 000 různých, většinou zcela bezcenných. Občas se ale najde něco cenného. No a že třídit a hledat ručně ty cenné je pekelná práce. Chvíli jsem si připadal jak v AFOL komiksu. Pak jsme začali vymýšlet, jak na to.
Dozvěděl jsem se, že kartičky, aby měly cenu, musí být nepoškozené. Takže je potřeba s nimi manipulovat velmi opatrně, nejde do nich mlátit jako do LEGO kostek. Nápadů byla spousta, nejlíp vypadal ten, že to zkusíme brát přísavkou. Takže jsem po prázdninách objednal na e-bay přísavku a začal jsem zkoušet, jestli by to šlo. Šlo.
Ovládací software jsem měl hotový z třídičky lega, takže jsem se pustil do neuronové sítě. Vycičit síť tak, aby rozeznávala 50 000 kategorií, je fakt těžké. A ani to není moc dobrý nápad – kartičky se vydávají stále nové, takže bych musel počítat každou chvíli novou síť. Měl jsem dvě možnosti:
Kartičky se vydávají v takzvaných setech, které se dají obvykle rozpoznat podle ikony na kartě. Takže stačí roztřídit karty nejdřív podle setů a teprve potom třídit jednotlivé sety – v každém setu je už jen několik set karet a na to se neuronová síť vycvičí mnohem snáz.
Druhou možností bylo použít tzv. siamskou síť – takovou, která umí říct, jestli je na dvou obrázcích totéž. Takže pak stačí kartičku porovnat se všemi známými a najít tu nejbližší (a nebo alespoň všechny dost blízké). Zkusil jsem oboje.
Tím byly všechny potřebné části vymyšlené a stačilo to „jen“ dát dohromady. Kamarádi přivezli asi 20 kilo kartiček a začalo se ladit.
Vlastní princip fungování je pak poměrně jednoduchý. Nejdřív se karta vyfotí, rozpozná, v databázi se dohledá aktuální cena a hodí se na jednu z hromádek – šrot, cenné karty, nejsem si jist. Rychlost zpracování se mi povedlo postupně zvednout z dvou karet za minutu na cca jednu za pět vteřin.
To ale způsobilo další problém – co 5 minut bylo potřeba doplnit nový paklík karet, což začalo být otravné. A protože je třídička kvůli videu umístěná ve sklepě, dost jsem se naběhal. Nakonec jsem přidělal ještě jedno servo a udělal zásobník, který karty k ramenu pomalu podává. Do zásobníku se vejde necelých 300 kartiček, což vydrží na necelou půlhodinu provozu.
V průběhu stavby se samozřejmě objevila spousta technických detailů, které bylo potřeba dořešit – kartičky se k sobě lepily, NXT serva nejsou až tak přesná… Celé je to pořád ještě prototyp. Ale funguje to spolehlivě, zatím jsem tim protřídil asi 30 000 karet.
Na závěr video z výstavy v Olomouci. Vlevo na obrazovce je obrázek z kamery, vpravo z katalogu – co si třídička myslí, že to je.