Your browser does not support the HTML5 canvas tag.

Rozhovor s Machine learning teamom

Kto si, predstav sa nám :-)

Jožko: Ahojte, volám sa Jozef a pracujem ako Projektový manažér v Astone 8 rokov. Prešiel som množstvom projektov, s rôznymi technológiami, no riadiť projekt, ktorého obsahom je aj technológia AI bola výzva.

Zdenko: Čaute, volám sa Zdenko a pracujem ako full stack developer v Astone. Nemám problém chytiť akúkoľvek tému či už je to frontend, backend, alebo AI development. Rád sa učím nové veci a neustále sa snažím zlepšovať a aj ostatných okolo mňa.

Robo: Ahojte, volám sa Robo. V Astone som začínal ako full stack developer a teraz som už takmer rok súčasťou ML tímu, v ktorom vyvíjame inovatívne produkty pre našich zákazníkov.

Peťo: Ahojte, volám sa Peťo a pracujem v Astone ITM ako AI inžinier. Spolu s tímom navrhujeme a implementujeme inovatívne riešenia založené na počítačovom videní a umelej inteligencii.

Mal si nejaké skúsenosti s AI, keď si vstúpil do CarCheck tímu?

Jožko: Nie, s témou AI som nemal skúsenosti.

Zdenko: Nie, žiadnu. Bola to pre mňa úplne nová záležitosť.

Robo: V minulosti som sa povrchovo stretol s počítačovým videním a aj ML. Ale detailnejšie som mal možnosť skúmať tieto témy až tu, v Astone.

Peťo: So strojovým učením som sa prvýkrát stretol na vysokej škole v rámci rôznych projektov a zadaní, pričom sa mi táto oblasť ihneď zapáčila. Ako príklad môžem uviesť jeden zo zaujímavejších projektov, v ktorom sme sa snažili so spolužiačkou natrénovať stroj aby vedel separovať odpad z pohľadu na fotografiu. Hlbšie som sa ponoril do strojového učenia v rámci diplomovej práce, kde sme sa s vedúcim snažili natrénovať stroj, ktorý rozpozná používateľa mobilného zariadenia na základe jeho správania.

Čo ťa presvedčilo, zaoberať sa témou CarCheck?

Jožko: Naučiť sa pracovať s témou AI z pohľadu vývojového procesu, nastavenia tímu až po produkciu.

Zdenko: Už dlhší čas som sa chcel k téme AI dostať, ale vždy to bol ťažký oriešok, pretože za touto témou je ohromné množstvo informácií a človek ani nevie kde poriadne začať. Preto som sa potešil keď prišiel CarCheck a ostatné AI projekty, vďaka ktorým sme si všetky tieto základy vedeli postupne prejsť.

Robo: Rád sa učím nové veci a práve téma CarCheck predstavovala pre mňa novú výzvu.

Peťo: Naša firma sa špecializovala na webové aplikácie. Mňa viac lákalo strojové učenie a v téme Carcheck som videl príležitosť ako pracovať na tom, čo ma baví a osobnostne rásť.

Aký bol štart projektu? Čím ste začínali?

ML tím: Začínali sme dvaja a neskôr sa k nám pridali ďalší 2 kolegovia. Firma nám zverila do rúk vytvorenie inovatívnej aplikácie. Kolegovia absolvovali konferenciu WebSummit v Lisabone, odkiaľ sa vrátili s rôznymi nápadmi na moderné aplikácie. Keďže máme klientov z oblasti poisťovníctva, vybrali sme nápad, ktorý nahrádza manuálnu obhliadku vozidla automatickou. Definovali sme si prípady použitia a navrhli riešenie. Tak vznikol projekt CarCheck. Napríklad prvým z problémov, s ktorými sme sa potýkali bolo určiť či séria fotografií z obhliadky obsahuje všetky požadované časti vozidla. Tento problém sa nám zdanlivo podarilo vyriešiť počas prvého týždňa pričom sme použili AutoML od Googlu, ktoré sme natrénovali aby klasifikovalo o akú fotografiu vozidla sa jedná.

V čom spočívali tie najdôležitejšie rozhodnutia, ktoré ste museli v tom úvode spraviť?

ML tím: Najdôležitejšie bolo ohraničenie problému automatickej obhliadky. Potrebovali sme problém rozdeliť na podproblémy a zvoliť správne algoritmy, aby sme dokázali simulovať našim strojom prácu obhliadkara. Každý podproblém sme riešili ako izolovanú ucelenú jednotku, ktorú sme neskôr začali volať "filter". Toto rozhodnutie sa nám osvedčilo, keďže je teraz carcheck ľahko konfigurovateľný a klient si vie definovať sadu filtrov, ktorá vyhovuje jeho biznis procesu.

Čo bolo na začiatku najťažšie?

ML tím: Na začiatku bolo najťažšie nájsť vhodnú metódu pre každý filter. Totiž oblasť strojového učenia je strašne široká a neustále vznikajú nové metódy. Napríklad to, či je fotka rozmazaná, sa dá riešiť viacerými prístupmi. My sme sa museli vyskúšať viaceré a zvoliť ten, čo mal pre nás najlepšie výsledky.

Na niektoré definované problémy sme museli vytvoriť vlastný dataset pričom kolega triedil fotografie vozidiel, aby sme mohli natrénovať filter, ktorého úlohou je určiť o aký typ fotografie vozidla sa jedná.

Akú veľkú časť v tých prvých fázach tvorilo vzdelávanie v technológiách?

ML tím: Čo sa týka oblasti strojového učenia tak je dynamická a stále sa vyvíja, takže vzdelávame sa neustále bez ohľadu na to, v akej sme fáze projektu sme. Ja som mal základné vedomosti zo školy, avšak stále mám pocit, že sa účím.

Peťo a Jožko: Približne 60%. Peťo mal náskok nakoľko už mal nejaké vedomosti zo školy.

Zdenko a Robo: U nás to bolo 100% vzdelávania nakoľko s témou machine learning sme sa takmer vôbec nestretli. Prvých pár mesiacov sme sa pomaličky snažili vstrebávať informácie z rôznych zdrojov - od Peťa, rôznych návodov na webe a všemožných článkov.

Ďalšie články

Viete nám poradiť nejaké užitočné linky na stránky, fóra alebo osobnosti, ktoré vám pomáhajú pri rozširovaní vedomostí v AI

Jožko: Kurz na learn2code týkajúci sa ML, prezentovanie ML v astone.

Zdenko: Tensorflow dokumentácia, Github, študovanie rôznych vedeckých referátov a pod.

Robo: Adrian na pyimagesearch, vedecké referáty aj študovanie matematiky.

Peťo: Diplomová práca, dokumentácie k ML frameworkom, paperswithcode - skvelá stránka, kde sa dajú nájsť porovnania najlepších metód v danej oblasti s vedeckými článkami a voľne dostupnými zdrojovými kódmi.

Čo vás prekvapilo keď ste začali s implementáciou?

Jožko: Už základné MVP vybudované v AutoML malo veľmi slušné výsledky, a vedelo efektne zapôsobiť na ľudí.

Zdenko: Že neurónové siete predstavujú množstvo rôznych pospájaných matematických operácií.

Robo: Ako dokážeme neurónovú sieť "oklamať" a jednoduchou úpravou obrázkov (augmentácia) vieme mnohonásobne rozšíriť množinu dát a pomôcť jej pri trénovaní.

Peťo: Že je veľmi dôležité rozlíšenie fotografie, pričom pre dve rovnaké fotografie s iným rozlíšením vráti neurónová sieť rôzne výsledky, pokiaľ ju na takýto prípad pri trénovaní neupozorníme.

Pre aké technológie ste sa nakoniec rozhodli?

ML tím: Ako programovací jazyk sme si vybrali Python nakoľko sa s ním relatívne jednoducho pracuje a má veľkú podporu a komunitu v téme ML. Pri frameworku sme si vyberali medzi dvoma najväčšími - Tensorflow a PyTorch. Zvolili sme si Tensorflow z viacerých dôvodov:

Vytrvali ste pri nich alebo sa časom niektorá technológia musela obmeniť?

ML tím: Na niektoré prípady použítia nestačila klasifikácia a potrebovali sme implementovať detekciu objektov vo fotografiách. Doterajšie frameworky mali detekciu objektov v počiatkoch a neboli vyladené. Preto využívame ešte Darknet, ktorý je napísaný v C a je to jeden z najrýchlejších a najpresnejších frameworkov.

Ako sa využíva AI v CarChecku?

ML tím: AI sa v CarChecku používa takmer na každom kroku - odčítaní kilometrov, posudzovaní kvality fotografie, kontrole manipulácie fotografií, hľadaní poškodenia vozidla a mnohých ďaľších.

Dá sa jednoducho popísať architektúra CarChecku pre akú ste sa rozhodli?

ML tím: CarCheck je koncipovaný ako služba, ktorú je možné prispôsobiť biznis procesu obhliadky vozidla podľa potrieb zákazníka. Kombináciou viacerých mikro-služieb potom vieme vyskladať špecifický prípad použitia, ktorý vykoná celú obhliadku vozidla.

Samostatná téma v implementácii AI je "labelovanie". Čo to znamená, prečo je to potrebné a koľko sme "toho" potrebovali?

ML tím: Dataset si môžeme predstaviť ako knižku, ktorú dáva učiteľ žiakovi - žiak sa z nej dokáže naučiť len tak dobre ako dobre je táto knižka spracovaná na daný problém. Ak je v knižke chyba alebo je učivo vysvetlené zle, žiak sa toto učivo naučí zle. Naším cieľom je túto knižku napísať čo najpresnejšie a s čo najmenším počtom chýb. V prípade strojového učenia sa tento proces nazýva vytváranie a príprava datasetov. My tento proces interne nazývame labelovanie v zmysle označovanie, alebo nálepkovanie.

Labelovanie je potrebné aby sa žiak vôbec dokázal niečo naučiť. Ak nemá knižku, z ktorej by sa predmet naučil, tak nemôžeme očakávať dobré výsledky.

Kvantita dát je variabilná pre každý špecifický problém. Laicky povedané si môžete predstaviť dve cesty. Na jednej strane klasické strojové učenie, ktoré potrebuje menej dát, ale úspešnosť väčšinou nebýva dostačujúca. Na druhej strane hlboké strojové učenie, ktoré potrebuje rádovo desiatky tisíc dát, ale úspešnosť je dostačujúca aj na produkčné riešenie. Aktuálny trend sa zameriava na zlepšovanie hlbokého strojového učenia za použitia menšieho počtu dát.