Prakticke vyuziti TensorFlow k rozpoznavani motylu :)

Po letech jsem oprasil jeden ze svych starickych projektu. Mam uz par let na internetu nahozeny http://urcovanimotylu.cz ktery slouzi pro jednoduchou detekci druhu motyla z nahrane fotky (CR – denni motyli).

Webik jsem si si kdysi napsal v AngularJS pro NodeJS a volal externi Python script ktery pomoci Tensorflow provadel detekci. Starickou verzi Tensorflow jsem pouzil i pro nauceni ze zakladnich podkladovych fotek. Sam Tensorflow rika, ze pro spravne nauceni je lepsi, kdyz pro kazdy druh budu mit alespon 20 fotek. Jenze kde je sehnat? Navic spravne urcene ? Na to jsem tehdy bohuzel neprisel, a proto jsem si napsal script co mi stahoval vysledky z images.google.com. Samozrejme takove reseni je znatelne neprakticke – krom slozitejsiho hackovani vyhledavani je predevsim problem v tom, ze kdekdo si vyfoti nekde motyla, hodi oko na internet nebo atlasu a napise k popisku fotky prvni druh ktery uvidi. Nicmene v takovych 20% vysledku je to spatne. Druhym problemem pak je, ze mnoho vysledku vubec neobsahuje motyla, ale housenku, kuklu, nebo jeste hure nejaky domaci vyrobek trebas z vysivani. Kazdopadne jsem tak nejak „nakradl“ pro nauceni cca 200 fotek pro kazdyho motyla a system tak nejak zafungoval. Samozrejme to neumi detekovat druhy ktere jsou si velmi blizke, ale co uz .. byl to prvni pokus co jsem s machine learning delal 🙂

Rok s rokem sesel, uteklo jich par … za tu dobu jsem nabral nejake nove znalosti a zkusenosti z mych ruznych diagnostickych a statistickych pokusu u domen a rozhodl se udelal maly upgrade. Pripravil jsem si tedy novy web https://lepidoptera.ai ktery jsem nove pripravil v kombinaci PHP, jQuery a Pythonni interni webserver pro praci s Tensorflow. Take jsem narazil na uzasny web inaturalist.org kde lide z celeho sveta foti a hlasi ruzne nalezy, a jini lide pak potvrzuji jestli jsou druhy spravne zarazene, a to cele ma k dispozici API. Vyuzil jsem pristupu a stahnul jsem si veskere dostupne zaznamy/fotografie k babockam rodu Junonia (litaji na jizni polokouli) a za pomoci Tensorflow jsem ucil jak ktery druh vypada v ruznych pozicich. Pak jsem zkusil vysledek:

Vybral jsem si trebas motyla druhu Junonia stygia a dal vyhledat na Flicker, nasel jsem napriklad tuto fotografii:

Junonia stygia

A tu pouzil nasledne na mem webu https://lepidoptera.ai

Jak je videt, detekce se jaksi vubec nezdarila, nebot dle scriptu se jedna o velmi podobneho Junonia gregorii.

Vybral jsem tedy jineho, a to rodu Junonia natalica:

Junonia natalica

Zde uz byl vysledek vice uspokojivy, ale stale nedostatecny:

Pravdou je, ze rozdil mezi Junonia erigone a spravnou Junonia natalica je pouze v mnozstvi bilych skvrn na hornich kridlech, coz mozna pri nedostatecnym nauceni ze vzorku ktere jsou z ruznych uhlu se muze decentne vytratit. Kazdopadne jmena druhu jsou prolinkovane na prehled obrazku ze kterych se ucil, takze pokud nam system takhle detekuje 2 druhy na 33%, pak se lze uz snadno dopatrat ktery to je.

Nicmene zkusim posledni, tentokrat Junonia atlites:

Grey Pansy Butterfly (Junonia atlites)

V tomto pripade uz je script naprosto presvedcive presny:

Tech druhu je vicero a schvalne jsem pouzil na prikladech i ty u kterych se plete. Ono totiz zavisi hodne na jakym zdroji dat se uci, a jakym zpusobem se uci. Bohuzel vetsina zdrojovych fotek obsahuje kolem sebe velky balast, a tak by bylo idealni pred ucenim vse co neni motyl odstranit … v praxi by na to slo opet vyuzit TensorFlow a jeho detekce objektu, diky cemuz bych mohl ziskat kvalitni podkladovou zakladnu ze ktere by se mel byt schopen naucit i mnohem vetsi detaily a rozpoznat tak i komplikovanejsi druhy.

Az na to prijdu jak, tak trebas udelam i nejakych technicky navod 🙂

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..