#day28. How to train YOLO? #100daychallenge
Ulazni podatak u Yolo je slika. Za apsolutni početak potrebno je da definišeš koji problem rešavaš, odnosno šta želiš da YOLO detektuje na slici/videu? Da li imaš više razlučitih objekata, odnosno klasa? Da tačno definišeš nazive klasa. Iako izgleda jednostavan početak, u zavisnosti od problema, treba odvojiti određeno vreme i razmisliti o ovim pitanjima. U stvari, preporuka za svaki korak da se odvoji malo više vremena kako bi se optimizovala cela ‘konstrukcija’. Bar za prva eksperimentisanja, jer kasnije kroz praksu imaćete svoje definisane korake i potencijalne kritične tačke.
Zašto ovo odmah napominjem? Za treniranje mreže trebaće vam popriličan broj slika za trening set. Greška pri označavanju ili menjanju imena klase zahtevaće dodatnu količinu vremena jer se taj posao uglavnom manuelno obavlja. Ali o tome ću detaljnije uskoro.
Ja ću pisati o slikama, nisam koristila video snimke za sada. Pa da počnemo.
Za početak je potrebno posedovati određeni broj slika na kojima se nalazi objekat/objekti od interesa koje hoćete da algoritam nauči. Ti objekti bi tebalo da imaju razne varijacije kako bi algoritam naučio što više mogućih ‘poza’ pa kada vidi sliku koja nije trenirana da mu deluje ‘poznato’ odnosno ‘već viđeno’. U zavisnosti od veličine trening seta moguće je isti uvećati različitim metodama augmentacije podataka. U sledećoj priči ću pisati samo o augmentaciji i koje tehnike sam ja iskoristila.
Na svakom primeru slike je potrebno lokalizovati objekat pravougaonikom (u daljem tekstu graničnim okvirom) kao što je prikazano na slici, dodeliti odgovarajuću klasu i smestiti ih u jedan folder. U drugom dokumentu je potrebno definisati koordinate objekta. Za sve navedene operacije postoje gotovi softveri koji su namenjeni direktno za Yolo algoritam. Ja sam koristila softver LabelImg.
Definiše se izlazni vektor y=(ps, bx, by, bh, bw, c) čije su komponente:
-Pc (nivo poverenja) predstavlja verovatnoću da se neki objekat nalazi na slici i izlaz je 1 ili 0.
-bx i by koordinate predstavljaju centar okvira u odnosu na lokaciju ćelije Ove koordinate su normalizovane da budu vrednosti od 0 do 1.
-bh i bw su dimenzije okvira u odnosu na veličinu slike i vrednosti mogu biti veće od 1.
-c predstavlja pripadajući broj klase.
Kako je poznat izlaz, Yolo spada u nadgledano učenje. Za test fazu, slika se deli na jednake ćelije po dužini i širini, npr. 3x3 ili 19x19 i sl. Bilo bi poželjno odabrati neparan broj kako bi centar objekta mogao da se nađe u jednoj od ćelija a ne u preseku (Redmon i Farhadi 2016).
Za detektovanje objekta je odgovorna jedna ćelija i to ona u kojoj se nalazi centar tog objekta. Primer slike sa jednim objektom od interesa sa izračunatim koordinatama je prikazan na sedećoj slici.
Nivo poverenja reflektuje prisustvo ili odustvo objekta bilo koje klase. Ukoliko se objekat ne nalazi u ćeliji, nivo poverenja treba da bude 0. U suprotnom se računa skor tzv. presek nad unijom (IoU — Intersection Over Union) objašnjenje u posebnoj priči. Kada je izlaz 1, računaju se dalje sve navedene vrednosti pozicije objekta na slici kao što su koordinate težišta objekta (bx, by), visina (bh) i širina (bw) koji su relativni u odnosu na celu sliku. C predstavlja broj klasa C1…Cn tj. uslovnu klasu verovatnoće Pr(Klasa i|Objekat). Ove verovatnoće uslovljene su postojanjem objekta u datoj ćeliji. Ukoliko se centar okvira ne poklapa sa centrom ćelije, onda ta ćelija nije odgovorna za taj objekat.
Svakoj ćeliji pridružuje se vektor čiji je broj elemenata uvek 5 + broj klasa . Npr. ukoliko postoji 30 klasa, onda će izlaz biti vektor od 35 brojeva. Za vreme testiranja množi se verovatnoća uslovne klase i verovatnoće pouzdanosti individualne ćelije, j-na (Redmon 2015).
Toliko za ovu priču. Nadam se da vam je bila zanimljiva i dovoljno jednostavno objašnjen početni postupak da možete polako razmišljati u pravcu kako biste vi upotrebili ovaj algortiam. U narednim sledi: augmentacija podataka, IoU, Anchor boxes, Non-max Suppression…
Do sutra…
‘Girl, you’re over here doubting yourself while so many people are afraid of your potential. Stop that.’