#day47. My application of DL #50storychallenge #100daychallenge
Ova priča će možda imati poduži uvod ali sada kada proučavam neku materiju volim pročitam i background ili istoriju iz više razloga.
Počeću sa upisom na III god fakulteta gde sam izabrala smer Inženjerstvo biotehničkih sistema na Mašinskom fakultetu. Imala sam tu čast da budem prva zvanična generacija Bachelor studija i bilo nas je svega 7 na tom smeru. S toga smo dobili priliku da obilazimo neke od najboljih naših fabrika koje se bave proizvodnjom i preradom hrane. Tehnološke linije kapaciteta nekoliko tona na sat koje se nalaze u našim fabrikama su po poslednjim evropskim standardima sa najsavremenijom tehnologijom. Tada sam prvi put videla kako se vrši mašinska inspekcija poljoprivrednih proizvoda mašinom koja se generalno zove kolor sorter i bukvalno je preveden engleski naziv (color sorter). Kolor sorteri mogu da prebiraju poljoprivredne proizvode na osnovu boje i strukture u zavisnosti koji otpički uređaj koriste. Kapaciteti su od 3 do 50t/h a postoje i mašine koje sortiraju 100t/h proizvoda. Na sledećoj slici ću dati šematski prikaz jedne izvedbe kolor sortera koji koristi kamere i laser kao optičke uređaje.
Da ne bih širila priču više, ostavljam vam link samo do jednog videa da steknete intuiciju koliko su moćne ove mašine.
Ja sam se bukvalno zaljubila u nju kada sam je videla u Frikomu a kasnije sam imala prilike da je vidim u još par fabrika. A 2017. god. sam čak i završila obuku za programiranje mašine i na kraju sam ja držala obuke zaposlenima i napisala im priručnik za dalje rukovanje i programiranje mašine. Tako da znam i praktični deo. Od 2011. godine sam pokušavala da osmislim ideju za doktorat sa temom primene mašinskog vida i da u neku ruku aplikujem je na kolor sorter. Većina naučnih radova koja se bavi mašinskim vidom i poljoprivredom/prehrambenim proizvodima, ocenjivanjem kvaliteta, prepoznavanjem i sl., se svodi na segmentaciju slike i primenom statističkih i klasičnih pristupa image processing-a. I ja sam pokušavala nešto ali nisam dobila neke posebne rezultate. Šta ja mogu da smislim što već nije hiljade istraživača pre mene? Jedna od ideja je bila primena fraktalne analize slike, odnosno samo jednog parametra — lakunarnosti. Da se površinska tekstura proizvoda opiše preko lakunarnosti uzimajući u obzir R, G, B komponente slike. Analizu sam vršila nad graškom, boranijom, malinom i kupinom. Baš iz razloga jer su različite boje u pitanju i druge fizičke karakteristike kao što je oblik. Statistički rezultati su bili obećavajući a realizacija algoritmom klizajućeg kvadrata nije dala očekivane rezultate kod svih ispitivanih proizvoda. Kod malina su bili ok rezultati ali su kao dodatni kriterijumi dodati i srednja vrednos i entropija. Ovo je primer jedne test slike.
Kako meni ovi rezltati nisu bili dovoljni, nastavila sam da tražim druge mogućnosti. Postavila sam sebi sledeća pitanja:
Koje su to poslednje tehnologije koje se primenjuju za obradu slike?
Koja oblast nije dovoljno istražena u mom domenu?
Da li mogu neki postojeći algoritam da primenim na moje podatke?
Onda sam slučajno naišla na članak o mašinskom učenju o kom sam pisala u prvoj priči ikad ovde na Mediumu i samo mi je kliknulo — TO JE TO. To je budućnost i nisam naišla na direktnu primenu u fabrikama na tehnološkoj operaciji mašinske inspekcije.
Završavajuči nedelju po nedelju kursa ML, polako sam dobijala ideje šta bih mogla da iskoristim. Skoro za svaki algoritam bih našla neki moj primer gde bih ga primenila. Ali sam naišla i na barijeru: nisam znala toliko dobro programiranje i kako/gde da napišem ili ispravim kod. Za samo polaganje kursa mogla sam da se snađem sa osnovama. Zapisala sam ideje pa kada se steknu mogućnosti i što se tiče znanja i broja potrebnih podataka za treniranje, biće interpretirane.
Dalje sam ipak rešila da započnem DL secijalizaciju na Courseri gde su osnovna znanja dobijena na prvom ML kursu detaljnije pojašnjena. Kada sam stigla do 4. kursa o konvolucijskim neuronskim mrežama — rekla sam sebi nema dalje. To je bilo 2018. i u jednoj nedelji su posvećena čini mi se dva, tri video za detekciju i lokalizaciju objekata i prikazana prva verzija Yolo algortitma (You Only Look Once). Tako da je ipak bilo dalje 2019. god kada sam počela intenzivno 6 meseci da radim na drugom delu teze i videla da da je polovinom 2018. izašla treća verzija Yolo v3 dodatno unapređena i sa mogućnošću detektovanja sitnih objekata. Meni je odmah pao na pamet — grašak! :DDD
Isprva sam ja to zamišljala kako je sve to gotovo napravljeno, ja to negde skinem, ubacim svoje slike, istreniram, pokrenem i ćao. Međutim oko same instalacije je bilo poprilično cimanja. Srećom, za mog supruga mogu slobodno da kažem da je jedan od najboljih programera ikad. Jedna od njegovih ‘vrlina’ je to da ne odustaje kada nešto započne. Inače, Yolo zahteva poprilično jaku konfiguraciju računara. Godinu dana ranije smo dobili računar na poslu sa jako dobrom grafičkom karticom koja bi mogla da odradi posao. Međutim, konstatno smo imali neki bag prilikom treniranja mojih podataka. Na kraju smo se odlučili za zakupljivanje virtualne mašine i online treniranja. Sada ću preneti deo teksta iz teze sa malo definicija.
“ Za potrebe istraživanja, otvoren je nalog na virtuelnoj mašini i izvršena je instalacija Yolo v3 okruženja. YOLO implementacija je ovde bazirana na Python programskom jeziku (https://github.com/ultralytics/yolov3). Virtualne mašine su softverski sistemi koji omogućavaju pokretanje izolovanog operativnog sistema. Bitna stavka je prenosivost virtualnih mašina tzv. “Cloud” virtualne mašine, kojima se pristupa preko interneta. Takve virtualne mašine imati različite namene, kao što su: veb server, baza podataka, kao mašina za obradu podataka, ili kao neuronska mreža.
“Deep learning” virtualna mašina
Za potrebe ove studije korišćena je “Deep Learning” virtualna mašina zakupljena na Google Cloud platformi (https://cloud.google.com). Za upotrebu virtualne mašine umesto klasičnog računarskog sistema, preovladali su sledeći razlozi:
- treniranje konvolucijskih mreža na računarima sa prosečnom grafičkom
karticom je jako sporo, pa čak i neupotrebljivo
- cena grafičke kartice i potrebnog hardvera je reda veličine 5000 evra
- virtualna mašina dolazi sa preinstaliranim softverom što skraćuje vreme
podešavanja okruženja.
Slika ispod prikazuje veb formu za zakupljivanje virtualne mašine na Google Cloud platformi. Korisnik može konfigurisati brojne stavke poput: broja procesora, tipa grafičke kartice, veličine diska, preinstaliranog softvera, regiona u kome se nalazi server.
Konfiguracija korišćenog računara za treniranje u svrhu istraživanja u ovoj disertaciji obuhvata: GPUs: 1 x NVIDIA Tesla K80, CPU platform: Intel Haswell, 4 vCPUs, 15 GB memory; SSD hard disk.
Pokretanje virtualne mašine se obavlja kroz veb interfejs po principu start/stop prikazanom na sledećoj slici.
Povezivanje na virtualnu mašinu se obavlja preko SSH protokola. Operativni sistemi na serveru uglavnom nemaju svoj grafički interfejs i njima se upravlja preko terminala kroz koji se zadaju tekstualne komande.
Kontrola verzije (GitHub)
Konfigurisanje i treniranje YOLO mreže uglavnom se obavlja kreiranjem i izmenama tekstualnih fajlova. Tokom istraživanja, javila se potreba za čestim eksperimentisanjem što je uključivalo često menjanje ili vraćanje na prethodne verzije treninga. Kako bi svaka verzija uvek bila dostupna, kao i razne kopije fajlova i foldera, korišćen je najpopularniji sistem za kontrolu verzije, GIT, odnosno GitHub (https://github.com/). Osnovna jedinica je repozitorijum koji predstavlja skup fajlova i direktorijuma. “
Kada smo zakupili mašinu, dobili smo 300 dolara za treniranje, odnosno za sate. E sad od nekoliko faktora zavisi koliko će trajati trening: veličina trening seta, broj epoha, batch size, learning rate. Ja sam izvršila ukupno 9 treninga, nakon augmentacije podataka sam imala ravno 4000 slika za trening i 40 za validaciju i test. Kroz treninge sam menjala sve ove hiperparametre i rezultati su bili zadovoljavajući gde je F1 mera iznosila od 92 do 97%. Prvo sam koristila istrenirane anchor boxes sa COCO data setu a onda sam istrenirala na svojim anchor-ima. Yolo v3 koristi 9 ovih okvira za detekciju. Šta su anchor boxes možete pročitati u priči #dan32.
Konkretne brojke, slike, hiperparametre ću okačiti ovde čim mi se rad objavi i odbranim tezu, ne bih trebala ranije.
Moglo bi se reći da je prilično jednostavno istrenirati da prepoznaje voće kao što su maline, međutim raznih defekata može da ima malina, pogotovo ako nam je stalo da detektujemo te maline. Zaindustrisjke potrebe bi bilo jednostavno naučiti šta je dobra malina i isprogramirati mašinu da na šta god ostalo naiđe da izbaci sa trake. Ja sam u mom istraživanju definisala 5 klasa: usaglašena malina, neusaglašena, neusaglašena+peteljka, peteljka i defekt.
Usaglašen i neusaglašen je zvaničan termin koji se koristi pri definisanju kvaliteta inače bih stavila dobra i loša malina. U četvrtom treningu sam uspela da algoritam detektuje peteljku.
Nastaviću sa ovim delom priče i sa pričom uopšte uskoro jer večeras nemam više vremena.
Sneak peak: upsešna primena Yolo v3 algoritma na klasifikaciju malina na slikama dobijenih iz kolor sortera Optyx.
Radujem se nastavku pisanja ove priče.
Poslednji put ažurirano: 30.05.
Do sutra…