Professional Documents
Culture Documents
Tokić, Ante
2022
Repository / Repozitorij:
DIPLOMSKI RAD
Ante Tokić
Rad predan:
Predsjednik
Odbora za diplomski rad: Mentor:
izv. prof. dr. sc. Linda Vicković doc. Dr. sc. Dunja Božić-Štulić
IZJAVA
Student
Ante Tokić
SADRŽAJ
1 UVOD ........................................................................................................................... 1
2 KONVOLUCIJSKE NEURONSKE MREŽE ................................................................ 3
2.1 Arhitektura konvolucijskih mreža ........................................................................... 3
2.1.1 Konvolucijski sloj ............................................................................................ 3
2.1.2 Sloj sažimanja .................................................................................................. 4
2.2 Konvolucijske neuronske mreže i računalni vid ....................................................... 5
3 YOLO ALGORITAM ................................................................................................... 6
3.1 Objedinjena detekcija YOLO algoritma .................................................................. 6
3.2 Što je YOLO? ......................................................................................................... 8
3.3 Dizajn mreže i trening ........................................................................................... 11
3.4 Glavne značajke i ograničenja YOLO-a ................................................................ 12
3.5 Verzije YOLO-a ................................................................................................... 13
3.5.1 YOLOv2 i YOLO9000 .................................................................................. 13
3.5.2 YOLOv3 ........................................................................................................ 14
3.5.3 YOLOv4 ........................................................................................................ 17
3.5.4 YOLOv5 ........................................................................................................ 21
3.5.5 PP-YOLO ...................................................................................................... 22
3.6 Prednosti i nedostatci YOLO algoritma ................................................................. 23
4 IZRADA MODELA ZA DETEKCIJU MALIH OBJEKATA NA ZRAČNIM
FOTOGRAFIJAMA ........................................................................................................... 24
4.1 Baza podataka ....................................................................................................... 24
4.2 Darknet ................................................................................................................. 25
4.3 Google Colaboratory ............................................................................................. 25
4.4 Treniranje vlastitog detektora ................................................................................ 26
4.4.1 Korak 1: Omogućiti korištenje grafičke kartice unutar Google Colab-a .......... 26
4.4.2 Korak 2: Kloniranje Darknet repozitorija i podešavanje parametara ............... 27
4.4.3 Korak 1: Prikupljanje i označavanje prilagođenog skupa podataka ................. 28
4.4.4 Korak 2: Premještanje vlastitih prilagođenih skupova podataka u vaš Cloud VM
30
4.4.5 Korak 3: Konfiguriranje datoteka za trening ................................................... 30
4.4.6 Korak 4: Preuzimanje unaprijed uvježbanih težina za konvolucijske slojeve .. 35
4.4.7 Korak 5: Uvježbavanje vlastitog prilagođenog detektora objekata .................. 35
4.5 Provjera srednje prosječne preciznosti (mAP) treniranog modela .......................... 37
4.6 Testiranje vlastitog detektora................................................................................. 39
4.7 Analiza i usporedba rezultata za različit broj iteracija ............................................ 41
5 ZAKLJUČAK ............................................................................................................. 46
LITERATURA ................................................................................................................... 47
POPIS OZNAKA I KRATICA ........................................................................................... 49
SAŽETAK .......................................................................................................................... 50
SUMMARY ........................................................................................................................ 51
1 UVOD
Dronovi su bespilotne letjelice sa širokim spektrom primjene kako u vojnoj industriji tako
i u mnogim drugim. Tako se primjerice koriste za potrebe snimanja iz zraka u filmskoj
industriji, sportskim natjecanjima i poljoprivredi, nadalje za praćenje klimatskih uvjeta, video
inspekciju, isporuku proizvoda i još mnogo toga. U novije vrijeme dronovi su postali
neizostavno sredstvo operacija traganja i spašavanja nakon prirodnih katastrofa, kao što su
požari, potresi, poplave i sl. Akcije spašavanja uglavnom provode policija, vatrogasci i
specijalizirani spasilački timovi. Potrage mogu trajati od nekoliko sati pa do nekoliko mjeseci,
ovisno o veličini područja koje se pretražuje. Brza reakcija tima može biti ključna za
preživljavanje nestale osobe [1]. Prema provedenim istraživanjima najveća šansa za
preživljavanje je unutar prvih 48 sati, od trenutka kada je akcija spašavanja započela [2].
Ukoliko osoba nije pronađena u tom periodu, vjerojatnost pozitivnog ishoda znatno se
smanjuje.
U početku su složene operacije potrage i spašavanja zahtijevale iznimnu ljudsku snagu i let
helikopterom. Takvi zračni resursi su iznimno skupi i ne pružaju garanciju uspješnosti, jer ovisi
o fokusiranosti promatrača. Također dodatni problem predstavljaju nepristupačni tereni poput
šuma, planina i mora koji su za tragače značili izlaganje opasnim i rizičnim situacijama s
mogućnosti povećanja broja žrtava prilikom same potrage. Daljinski upravljani zrakoplovi,
odnosno bespilotne letjelice opremljene sustavima za detekciju ne samo da su jeftiniji, već lete
bliže zemlji i mogu smanjiti rizik za tragače u lošim vremenskim uvjetima. Slike u stvarnom
vremenu pružaju informacije poput točne lokacije, slike terena i unesrećene osobe tako da
spasioci mogu brzo djelovati.
1
Korištenjem drona privremene komunikacijske linije mogu se postaviti tijekom hitnih
slučajeva
Dron se može koristiti za opskrbu hitnim zalihama u ratom zahvaćenim područjima
2
2 KONVOLUCIJSKE NEURONSKE MREŽE
Pojavom čovjekove potrebe za automatizacijom jednostavnih procesa, a samim tim i
olakšavanju samog života počela se razvijati metoda softverske identifikacije objekata u
stvarnom vremenu po uzoru na brzinu i točnost ljudskog oka. Tijekom godina javljale su se
različite strategije za svladavanje ovog problema, međutim relativno brzo su bile suočene s
problemima poput troškova resursa, točnosti samog izlaza, brzine obrade i slično. Neuspjeli
pokušaji doveli su do preispitivanja i isticanja cilja dostizanja točnosti ljudskog oka. Upravo ta
usporedba predstavlja trag koji se kroz povijest razvio u termin neuronske mreže za pristup
problemu detekcije.
Tako danas postoje različite vrste neuronskih mreža koje se koriste za ovisno o dostupnoj vrsti
podataka i području primjene. Primjerice, ponavljajuće neuronske mreže (engl. RNN -
Recurrent Neural Networks) koriste se najčešće za obradu prirodnog jezika, dok se
konvolucijske neuronske mreže (engl. CNN - Convolutional Neural Networks) češće koriste
za klasifikaciju i zadatke računalnog vida. Konvolucijske neuronske mreže pružaju skalabilniji
pristup klasifikaciji slika i zadacima prepoznavanja objekata, koristeći metodu množenja
matrica za prepoznavanje uzoraka unutar slike i upravo su one odabrane za praktični dio ovog
rada.
3
dvodimenzionalni niz težina čija je veličina najčešće 3x3. Kod određivanja veličine je da
veličina filtra ne bude veća od veličine ulaznih podataka. Ako je ulaz slika dimenzija 25x25x3,
tada filter može biti veličine 5x5x3 kako bi uspješno dobili izlaz. Uz veličinu određuje se
dubina koja predstavlja broj filtera koji će se koristiti. Veći broj filtera znači veću razinu
prepoznavanja detalja. Određivanjem pomaka zapravo definiramo za koji broj piksela se filter
pomiče na ulaznom podatku u određenom smjeru, dok opcija nadopunjavanja čuva podatke s
rubova slike ukoliko je postavljana i na taj način poboljšava performanse mreže.
Princip rada filtera je da na ulaznim podacima provodi operaciju konvolucije, odnosno
kretanjem po poljima slike provjerava da li je važna značajka prisutna u polju. Filter se pomiče
za definirani pomak po slici, ponavljajući postupak sve dok ne prijeđe preko cijele slike.
Konačni izlaz koji filter kreira iz ulaznih podataka poznat je kao mapa značajki [3].
Na slici 2.1 vidljivo je da izlazna vrijednost mape značajki nije nužno povezana sa svakom
vrijednošću ulaznog podatka, stoga konvolucijske slojeve nazivamo djelomično povezanim
slojevima.
Nakon svake operacije konvolucije, primjenjuje se aktivacijska funkcija poznatija kao ReLU
na mapu značajki, čim se postiže uvođenje nelinearnosti u model.
4
filtar s definiranom veličinom i pomakom preko cijelog ulaznog podatka, kako bi smanjila
osjetljivost podataka na poziciju na ulazu. Iako se puno informacija gubi u sloju udruživanja,
on također ima niz prednosti za CNN. Pomažu u smanjenju složenosti i poboljšanju
učinkovitosti. Najčešće korištene opcije sažimanja su: sažimanje maksimalnih vrijednosti i
prosječno sažimanje. Sažimanje maksimalnih vrijednosti u veličini filtera pronalazi najveću
vrijednost, dok prosječno sažimanje uzima u okviru prosječnu vrijednost koju izdvaja [4]. Na
slici 2.2 prikazane su obje verzije sažimanja.
Slika 2.2 – Sažimanje srednjih vrijednosti (lijevo) i sažimanje maksimalnih vrijednosti (desno)
5
3 YOLO ALGORITAM
„You Only Look Once“ - YOLO algoritam, novi je pristup za otkrivanje jednog ili više
objekata prisutnih na slici u stvarnom vremenu dok se crtaju granični okviri oko njih.
Jedan je od najučinkovitijih algoritama za otkrivanje objekata koji također obuhvaća mnoge od
najinovativnijih ideja koje dolaze iz istraživačke zajednice računalnog vida. Algoritam
propušta sliku kroz algoritam konvolucijskih neuronskih mreža (engl. CNN - Convolutional
Neural Network) samo jednom da bi dobio izlaz, dakle upravo ono što kaže samo ime
algoritma, slika se pogleda samo jednom. Iako je relativno sličan konvolucijskoj neuronskoj
mreži s prijedlozima regija (engl. R-CNN - Region-based Convolutional Neural Networks),
YOLO praktički radi puno brže od bržeg R-CNN (engl. Faster R-CNN) zbog svoje
jednostavnije arhitekture. Za razliku od bržeg R-CNNa, YOLO može klasificirati i istovremeno
izvršiti regresiju graničnog okvira. Uz YOLO, oznaku klase koja sadrži objekte, njihov se
položaj može predvidjeti jednim pogledom. Potpuno odstupajući od tipičnog CNN cjevovoda,
YOLO tretira otkrivanje objekata kao problem regresije prostorno odvajajući granične okvire
i njihove povezane vjerojatnosti klasa, koje se predviđaju pomoću jedne neuronske mreže. Ovaj
proces izvođenja predviđanja graničnih okvira i izračuna vjerojatnosti klase je jedinstvena
mrežna arhitektura koju je YOLO u početku predstavio. YOLO algoritam proširuje GoogLeNet
jednadžbe kako bi se koristile kao njihovo osnovno izračunavanje prosljeđivanja, što je
vjerojatno razlog za brzinu i točnost YOLO detekcije objekata u stvarnom vremenu. U
usporedba s R-CNN arhitekturama, za razliku od pokretanja klasifikatora na potencijalnom
graničnom okviru, zatim ponovnog procjenjivanja rezultata vjerojatnosti, YOLO predviđa
granične okvire i vjerojatnost klase za te granične okvire istovremeno. Na taj način se
optimizira YOLO algoritam i jedan je od značajnih razloga zašto je YOLO tako brz i manje
vjerojatno da će imati pogreške, čime se stvara mogućnost da se iskoristiti za predviđanja
objekata u stvarnom vremenu.
6
objekta postavljano u ćeliju mreže; ćelija mreže pokušava detektirati objekt na sebi. Dakle,
svaka ćelija mreže pokušava procijeniti granični okvir i njihove rezultate pouzdanosti u svim
klasama obučenim za predviđanje. Predviđene ocjene pouzdanosti odražavat će koliko je
pouzdano dati svaku oznaku i granični okvir svakom objektu. Formalno se rezultati
pouzdanosti definiraju kao 𝐏𝐫(𝑶𝒃𝒋𝒆𝒄𝒕) ∗ 𝑰𝒐𝑼𝒕𝒓𝒖𝒕𝒉
𝒑𝒓𝒆𝒅 [5]. Ako je predmet pronađen unutar
ćelije, ocjena pouzdanosti biti će jednaka presjeku nad unijom (engl. IoU - Intersection over
Union) između temeljne istine i predviđene okvira. Ukoliko predmet nije pronađen, rezultat
je jednak nuli. Objedinjena detekcija na izlazu daje rezultat pouzdanosti da ima pet
parametara: x, y, w, h i pouzdanost. Koordinate (x, y) predstavljaju središte okvira s obzirom
na granice ćelije mreže. Kao što je prethodno spomenuto, ako središte okvira ne pada unutar
granica ćelije mreže, tada ćelija nije odgovorna za njezino predviđanje. Uz svaku koordinatu
koja je normalizirana tako da se nalazi unutar raspona od 0 i 1, procijenjena visina i širina
objekta izračunavaju se u odnosu na cijelu sliku.
Na slici 3.1 prikazan je izračun koordinata okvira na slici veličine 448x448 sa S = 3. Koordinate
(x,y) izračunavaju se u odnosu na središnju ćeliju mreže. Slika prikazuje kako je x koordinata
(220-149)/149 normalizirana kao 0,48, dok je y koordinata od (190-149)/149 normalizirana
kao 0,28. Širina (engl. w - width) od 224 izračunava se kao 224/448 = 0,50 u odnosu na cijelu
sliku, a visina (engl. h - height) od 143 izračunava se kao 143/448 = 0,32 u odnosu na cijelu
sliku.
Postoji još jedna komponenta u predviđanju graničnog okvira, a to je ocjena pouzdanosti.
Ocjena pouzdanosti predviđa presjek nad unijom (IoU) između okvira predviđanja i temeljnog
7
okvira istine zajedno s ovim parametrima. Ova ocjena pouzdanosti odražava prisutnost ili
odsutnost objekta bilo koje klase unutar graničnog okvira.
Uz ove izračune, svaka ćelija mreže koja ima objekt također procjenjuje vjerojatnosti uvjetnih
klasa, dane formulom: 𝐏𝐫(𝑪𝒍𝒂𝒔𝒔𝒊 | 𝑶𝒃𝒋𝒆𝒌𝒕). Ova je vjerojatnost uvjetovana ćelijom mreže
koja sadrži jedan objekt. Stoga, ako nije prisutan nikakav predmet na ćeliji mreže, funkcija
gubitka je neće kazniti za pogrešno predviđanje klase. Budući da će mreža predvidjeti samo
jedan skup vjerojatnosti klasa po ćeliji bez obzira na broj okvira (B), ukupan broj vjerojatnosti
klasa mogao bi se uzeti kao 𝑺 𝑿 𝑺 𝑿 𝑪. Za vrijeme testiranja, kada se rezultati pouzdanosti
računaju pojedinačno za svaki okvir, vjerojatnosti uvjetne klase i predviđanje pouzdanosti se
množe prema formuli:
𝐏𝐫(𝑪𝒍𝒂𝒔𝒔𝒊 | 𝐎𝐛𝐣𝐞𝐜𝐭) ∗ 𝐏𝐫(𝐎𝐛𝐣𝐞𝐜𝐭) 𝐗 𝑰𝒐𝑼𝒕𝒓𝒖𝒕𝒉 𝒕𝒓𝒖𝒕𝒉
𝒑𝒓𝒆𝒅 = 𝐏𝐫(𝑪𝒍𝒂𝒔𝒔𝒊 ) ∗ 𝑰𝒐𝑼𝒑𝒓𝒆𝒅 .
Ocjene pouzdanosti za svaki okvir odražavaju mogućnost klase koja se prikazuje unutar okvira
i koliko točno objekt odgovara procijenjenom okviru.
8
Slika 3.2 – Primjer slike sa 3x3 mrežom
U primjeru mreže 3x3 sa slike 3.2, odgovarajući objekt ne može se identificirati iz prve
ćelije mreže. Stoga je pc vrijednost jednaka 0 i parametri graničnog okvira ne moraju biti
dodijeljeni jer nema definiranog objekta. Vjerojatnost klase ne može se identificirati jer ne
postoji odgovarajući objekt (Slika 3.3).
Peta ćelija mreže također sadrži objekt kao i prethodno spomenuta šesta ćelija. Matrica će biti
poprilično slična i za petu ćeliju mreže s različitim graničnim okvirima ovisno o položaju
objekata u relativnoj mreži. Šesta ćelija mreže ima odgovarajući objekt i stoga je pc vrijednost
jednaka 1, a granični okviri za objekt su bx, by, bw i bh. Budući da je objekt automobil, klase
za mrežu su 0,1,0 (Slika 3.4) [7]. Forma matrice je Y=3 x 3 x 8.
9
Granični okviri razlikuju se za svaku mrežu ovisno o položaju objekata u relativnoj mreži. Ako
više od dvije mreže imaju isti objekt, tada se ćelija mreže koja ima središte objekta koristi za
otkrivanje tog objekta. Za preciznu identifikaciju objekta mogu se koristiti dvije metode. Prva
metoda je presjek nad unijom (IoU), a druga metoda je Non-Max Suppression [7]. Kod metode
presjeka nad unijom koriste se stvarne i procijenjene vrijednosti graničnog okvira i obje
vrijednosti (stvarne i procijenjene) se izračunavaju pomoću sljedećih formula:
𝑰𝒏𝒕𝒆𝒓𝒔𝒆𝒄𝒕𝒊𝒐𝒏 𝑨𝒓𝒆𝒂
𝑰𝒐𝑼 =
𝑼𝒏𝒊𝒐𝒏 𝑨𝒓𝒆𝒂
Bolje je ako je izračunata IoU veća od vrijednosti praga (pretpostavljene vrijednosti za
povećanje točnosti detektiranog objekta.) 0,5. U Non-Max Suppression tehnici koja se koristi
u mnogim algoritmima računalnog vida, koriste se okviri s velikim mogućnostima, dok su
okviri s visokim IoU vrijednostima potisnuti. Ovaj proces se ponavlja više puta, sve dok se
okvir ne smatra graničnim okvirom za objekt. Svaka ćelija mreže također predviđa C uvjetne
klase vjerojatnosti za objekt u toj mreži. Te su vjerojatnosti uvjetovane stanicom mreže koja
sadrži objekt. Samo jedan skup vjerojatnosti klasa predviđa se za ćeliju mreže, bez obzira na
broj graničnih okvira za tu ćeliju mreže [7].
Slika 3.5 prikazuje model za detekciju. Sustav modelira detekciju kao problem regresije. Dijeli
sliku u mrežu S × S i za svaku ćeliju mreže predviđa B granične okvire, pouzdanost za te okvire
i vjerojatnosti C uvjetne klase. Ova su predviđanja kôdirana kao S × S × (B ∗ 5 + C) tenzor.
10
3.3 Dizajn mreže i trening
Ovaj model implementiramo kao konvolucijsku neuronsku mrežu i ocjenjujemo ga na
skupu podataka za detekciju Pascal VOC. Početni konvolucijski slojevi mreže izdvajaju
značajke iz slike, dok potpuno povezani slojevi predviđaju izlazne vjerojatnosti i koordinate.
Na arhitekturu YOLO-a izniman utjecaj je imao GoogleLeNet model za klasifikaciju slika.
Mreža se sastoji od 24 konvolucijska sloja za ekstrakciju značajki, nakon čega slijede 2 potpuno
povezana sloja za predviđanje koordinata okvira i njihovih odgovarajućih vjerojatnosti
objekata, zamjenjujući početne module GoogleLeNeta sa reduciranim 1x1 konvolucijskim
slojevima kako bi se smanjila dimenzija dubine na mapama značajki [8]. Cijela mreža
prikazana je ispod na slici 3.6.
Brzi YOLO koristi neuronsku mrežu s manje konvolucijskih slojeva (9 umjesto 24) i manje
filtara u tim slojevima. Osim veličine mreže, svi parametri obuke i testiranja isti su između
brzog i osnovnog YOLO algoritma. Ova previše pojednostavljena mrežna struktura doprinosi
11
impresivnoj brzini od 155 slika po sekundi (engl. FPS - Frames per second), postajući najbrži
detektor u literaturi za detekciju objekata, ali i dalje postižući relativno nisku srednju prosječnu
preciznosti (engl. mAP - Mean Average Precision) od 52,5 posto.
Iz prethodne slike 3.7 može se vidjeti da YOLO ima ograničenje temeljeno na bliskosti objekta.
Kao što vidimo, YOLO otkriva samo 5 osoba odjevenih kao Djed Božićnjak iz donjeg lijevog
kuta, ali na slici postoji 9 osoba odjevenih kao Djed Božićnjak.
12
3.5 Verzije YOLO-a
Osim prve verzije YOLO-a koja se naziva još naziva i YOLOv1, spomenut ćemo i neke
od najvažnijih verzija među kojima su YOLOv2 i YOLO9000, te verzije YOLOv3, YOLOv4,
YOLOv5 i PP-YOLO.
Joseph Redmon i Ali Farhadi krajem objavili su 2016. godine rad pod nazivom
„YOLO9000: Better, Faster, Stronger“. Autori su u ovom radu predložili dvije najsuvremenije
varijante YOLO-a: YOLOv2 i YOLO9000; obje su bile identične, ali su se razlikovale u
strategiji treninga. YOLOv2 je obučen za treniranje skupova podataka kao što su Pascal VOC
i MS COCO (engl. Microsoft Common Objects in Context). U isto vrijeme, YOLO9000 je
dizajniran da predvidi više od 9000 različitih kategorija objekata zajedničkim treniranjem na
skupovima podataka MS COCO i ImageNet [9]. S obzirom na značajne pogreške u lokalizaciji
kod YOLOv1, YOLOv2 ima fokus uglavnom na poboljšanju prisjećanja i lokalizacije uz
zadržavanje točnosti klasifikacije. Brzina izvedbe detekcije ostaje ista dok je vrijednost srednje
prosječne preciznosti porasla u usporedbi s vrijednostima YOLOv1 od 63,4%. Uz YOLOv2,
uveden je novi dizajn mreže uklanjanjem punog sloja veze i dodavanjem batch normalizacije.
Dodavanjem batch normalizacije svim konvolucijskim slojevima radi postizanja boljih
performansi, postignuto je više od 2% poboljšanja u odnosu na prethodnu mAP. Osim toga, za
trening je korišten klasifikator visoke rezolucije. Razlučivost klasifikatora povećana je s 224
na 448. To znači da se pri prelasku na detekciju, mreža mora istovremeno prebaciti na
otkrivanje objekata učenja i postaviti na novu ulaznu rezoluciju. Neuronska mreža YOLOv2
ima 19 konvolucijskih slojeva u usporedbi s YOLOv1 koji ima 24 sloja. Još jedna novost u
YOLOv2 je povećanje točnosti i performansi u prepoznavanju više objekata uz korištenje
sidrenih okvira (engl. anchor box) koji se još nazivaju zadani okviri (engl. default box) [10].
YOLO predviđa koordinate graničnog okvira izravno iz potpuno povezanih slojeva koji se
nalaze na vrhu slojeva za izdvajanje konvolucijskih značajki, dok jednonamjenski detektor
(engl. SSD - Single Shot Multibox Detector) i brži R-CNN predviđaju pomake za sidrene okvire
[8]. Konačno, YOLOv2 dodaje prolazni sloj kako bi dobio ekstrahirane značajke iz prethodnog
sloja i kombinirao ih s izvornim konačnim izlaznim značajkama, tako da bi se poboljšala
sposobnost detekcije malog objekta. U tom smislu, YOLOv2 podiže mAP za 1%.
13
3.5.2 YOLOv3
YOLOv3 objavili su Joseph Redmon i Ali Farhadi 2018. godine, a razvijen je kao
rezultat razvoja i optimizacije YOLOv2 algoritma. Za svoje vrijeme YOLO 9000 (odnosno
YOLOv2) je bio najbrži, ali i jedan od najpreciznijih algoritama. Međutim, nekoliko godina
kasnije više nije najprecizniji među algoritmima kao što je RetinaNet, a SSD ga nadmašuje u
pogledu točnosti. Iako više nije bio jedan od glavnih što se tiče preciznosti i dalje je bio jedan
od najbržih algoritama. Ta je brzina zamijenjena povećanjem točnosti u YOLOv3. Dok je ranija
varijanta radila na 45 FPS na Titanu X, trenutna verzija ima oko 30 FPS. To ima veze s
povećanjem složenosti temeljne arhitekture zvane Darknet. YOLOv2 koristio je prilagođenu
duboku arhitekturu darknet-19, izvorno 19-slojnu mrežu dopunjenu s još 11 slojeva za
otkrivanje objekata. S 30-slojnom arhitekturom, YOLOv2 često se borio s otkrivanjem malih
objekata. To se pripisuje gubitku sitnozrnatih značajki jer su slojevi smanjivali uzorkovanje
ulaza. ResNet (engl. Residual networks) je donio ideju preskakanja veza kako bi se aktivacije
širile kroz dublje slojeve bez nestajanja gradijenta (Slika 3.8).
YOLOv3 je osmislio bolju arhitekturu gdje je korišteni ekstraktor značajki bio hibrid YOLOv2,
Darknet-53 (53 konvolucijska sloja) i ResNet-a. Mreža je izgrađena sa strukturom uskog grla
(1x1 nakon čega slijede 3x3 slojeva zavoja) unutar svakog rezidualnog bloka plus veza za
preskakanje (Slika 3.9).
Zahvaljujući zaostalim blokovima ResNet-a, slojevi koji se preklapaju neće pogoršati
performanse mreže. Nadalje, dublji slojevi dobivaju više informacija izravno iz plićih slojeva,
tako da neće izgubiti masu sitnozrnatih značajki.
14
Slika 3.9 – Darknet53 arhitektura s 5 rezidualnih blokova (kvadratni okvir)
koji sadrže strukturu uskog grla (1x1 praćeno 3x3 konvolucijskim slojevima)
Model je koristio Darknet-53 arhitekturu prikazanu na slici 3.9 koja izvorno ima 53-
slojnu mrežu za treniranje ekstraktora značajki. Nakon toga, složena su još 53 sloja za glavu
detekcije za uvježbavanje detektora objekata, čineći YOLOv3 ukupno 106 slojeva potpuno
konvolucijske temeljne arhitekture. To je razlog sporosti YOLOv3 u usporedbi s YOLOv2.
Evo kako sada izgleda arhitektura YOLO-a.
15
Slika 3.10 – Granični okviri kod YOLOv3
YOLOv3 također predviđa ocjenu objektivnosti za svaki granični okvir koristeći logističku
regresiju. Ova ocjena bi trebala biti 1 ukoliko se prethodni granični okvir preklapa s objektom
temeljne istine više od bilo kojeg drugog prethodnog graničnog okvira.
Na primjeru ispod (Slika 3.11), prior 1 preklapa prvi objekt temeljne istine više nego bilo koji
drugi prethodni granični okvir (ima najveći IoU), a prior 2 preklapa drugi objekt temeljne istine
više nego bilo koji drugi prethodni granični okvir. Sustav dodjeljuje samo jedan prethodni
granični okvir za svaki objekt temeljne istine. Ako prethodno granični okvir nije dodijeljen
objektu temeljne istine, to ne uzrokuje gubitak za predviđanje koordinata ili klase, već samo za
objekte.
Ako granični okvir nema najviši IoU, ali preklapa objekt temeljne istine više od nekog praga,
predviđanje se ignorira (koristi se prag od 0.5) [11].
16
Za razliku od YOLO i YOLOv2, koji predviđaju izlaz na zadnjem sloju, YOLOv3 predviđa
okvire u 3 različite ljestvice kao što je ilustrirano ispod na slici 3.12.
Na svakoj ljestvici YOLOv3 koristi 3 sidrena okvira i predviđa 3 okvira za bilo koju ćeliju
mreže. Svaki je objekt još uvijek dodijeljen samo jednoj ćeliji mreže u jednom tenzoru
detekcije.
U usporedbi s YOLOv2, YOLOv3 ima manje postignuća na objektima srednje i velike veličine
[10].
3.5.3 YOLOv4
17
Chien-Yao Wang i Hong-Yuan Mark Liao objavio je četvrtu generaciju YOLO-a u travnju
2020. godine. Predstavljena je u radu pod naslovom „YOLOv4: Optimal Speed and Accuracy
of Object Detection“. YOLOv4 se smatra najbržim i najpreciznijim modelom za otkrivanje
objekata u stvarnom vremenu.
YOLOv4 je poboljšanje YOLOv3 algoritma tako što ima poboljšanje srednje prosječne
preciznosti za čak 10% i povećanje broja okvira u sekundi za 12%. Arhitektura YOLOv4 ima
4 različita bloka kao što je prikazano na gornjoj slici 3.13, a to su okosnica (engl. backbone),
vrat, glava (gusto predviđanje) i rijetko predviđanje.
18
Okosnica je arhitektura sa ekstrakcijom značajki koja je CSPDarknet53. CSPDarknet53
označava Cross-Spatial -Partial connections, koji se koristi za dijeljenje trenutnog sloja u dva
dijela, jedan za prolaz kroz konvolucijske slojeve i drugi koji ne bi prošao kroz konvolucijske
slojeve, nakon čega se rezultati spajaju. Na slici 3.14 je primjer s DenseNet-om.
Vrat pomaže u dodavanju slojeva između okosnice i gustog bloka predviđanja (glave), što je
pomalo slično onome što radi ResNet arhitektura. Arhitektura YOLOv4 koristi modificiranu
PANet (engl. Path aggregation network) mrežu, modificirani modul prostorne pažnje i
modificirano udruživanje prostorne piramide, koji se svi koriste za spajanje informacija radi
poboljšanja točnosti. Gornja slika 3.15 prikazuje prostorno piramidalno udruživanje.
Postoje i druge tehnike koje su autori algoritma koristili za poboljšanje točnosti tijekom
treninga i nakon toga. To su setovi tehnika Bag of Freebies i Bag of Specials.
19
Bag of Freebies pomaže tijekom treninga i ne povećava vrijeme zaključivanja. Ima dvije
tehnike, prvu Bag of Freebies za okosnicu, koja koristi CutMix strategiju povećanja slikovnih
podataka i mozaičko povećanje podataka (engl. Mosaic data augmentation), te DropBlock
tehniku regularizaciju koja odbacuje značajke u susjednom koreliranom području koje se
naziva blok. Druga tehnika je Bag of Freebies za detekciju, koja dodaje više okosnici, poput
samostalnog treninga, nasumičnih oblika za treniranje, te korištenje više sidara za jednu
temeljnu istinu.
Bag of Specials mijenja arhitekturu i pomalo povećava vrijeme zaključivanja. Također ima
dvije tehnike, prvu Bag of Specials za okosnicu koja koristi Mish aktivacijsku funkciju za bolju
točnost i ukupni niži gubitak, te CSP (engl. Cross stage partial connections) koja nastoji
smanjiti računsku složenost. Druga tehnika je Bag of Specials za detekciju, koja koristi SPP
(engl. Spatial Pyramid Pooling) blok, budući da on značajno povećava receptivno polje,
izdvaja najznačajnije značajke konteksta i ne uzrokuje gotovo nikakvo smanjenje brzine rada
mreže [12]. Osim SPP bloka, koristi se i SAM (engl. Spatial Attention Module) blok.
Puno je informacija o Bag of Freebies i Bag of Specials, ali da bi bilo jednostavnije, ključne
stvari su da oboje uvelike pomažu tijekom treninga i nakon treninga. Bag of Freebies koristi
tehnike kao što su povećanje podataka i napuštanje, a Bag of Specials uključuje vrat te Non-
Max tehniku suzbijanja. Slika 3.16 prikazuje arhitekturu glavnih blokova YOLOv4 algoritma.
YOLOv4 Performanse
20
YOLOv4 također se temelji na Darknetu i dobio je prosječnu preciznost (engl. AP - Average
precision) vrijednost od 43,5 posto na skupu podataka MS COCO zajedno s brzinom u
stvarnom vremenu od 65 FPS na Tesli V100, pobjeđujući najbrže i najpreciznije detektore u
pogledu brzine i točnosti.
3.5.4 YOLOv5
Mjesec dana nakon što je YOLOv4 objavljen, istraživač i direktor tvrtke Ultralystics
LLC, Glenn Jocher i njegov tim objavili su novu verziju nazvanu YOLOv5. YOLO modeli
razvijeni su na prilagođenom programskom okviru Darknet koji je Alexey Bochkovsky
uglavnom napisao u C-u. Ultralystics LLC je tvrtka koja konvertira prethodne verzije YOLO-
a na jedan od najpoznatijih programskih okvira u području dubokog učenja, PyTorch, koji je
napisan na jeziku Python.
Unatoč tome što je YOLOv5 objavljen mjesec dana nakon YOLOv4, početak istraživanja za
YOLOv4 i YOLOv5 bio je prilično blizu (ožujak – travanj 2020.). Kako bi izbjegao koliziju,
Glenn je svoju verziju YOLO-a odlučio nazvati YOLOv5. Dakle, u osnovi su oba istraživača
primijenila tadašnje najsuvremenije inovacije na području računalnog vida. To čini arhitekture
YOLOv4 i YOLOv5 vrlo sličnima i mnogi smatraju da YOLOv5 nije zasluženo peta generacija
unutar YOLO obitelji jer ne sadrži višestruka izvanredna poboljšanja u usporedbi s prethodnom
verzijom YOLOv4. Osim toga, Glenn nije objavio nikakav rad za YOLOv5, nego je samo
stvorio Github repozitorij s poboljšanjima, što je izazvalo više sumnji u YOLOv5.
Međutim, YOLOv5 je imao prednosti u inženjerstvu. YOLOv5 je napisan u programskom
jeziku Python umjesto u C programskom jeziku kao prethodne verzije. To olakšava instalaciju
i integraciju na IoT (engl. Internet of Things) uređaje. Osim toga, PyTorch zajednica također
je veća od Darknet zajednice, što znači da će PyTorch dobiti više doprinosa i potencijal rasta u
budućnosti. Budući da su napisani na 2 različita programska jezika i na 2 različita programska
okvira, usporedba performansi između YOLOv4 i YOLOv5 je teško izvediva i neprecizna. Ali
nakon nekog vremena, YOLOv5 je pokazao veće performanse od YOLOv4 pod određenim
okolnostima i djelomično je stekao povjerenje u zajednici računalnog vida uz YOLOv4 verziju.
21
𝑘, autori su odabrali 5 najprikladnijih sidrenih okvira za skup podataka MS COCO (koji sadrži
80 klasa) i koriste ih kao zadane. To smanjuje vrijeme treninga i povećava točnost mreže.
Međutim, pri primjeni ovih 5 sidrenih okvira na jedinstveni skup podataka (koji sadrži klasu
koja ne pripada 80 klasa u MS COCO skupu podataka), ti sidreni okviri ne mogu se brzo
prilagoditi temeljnim graničnim okvirima istine ovog jedinstvenog skupa podataka. Na primjer,
skup podataka žirafe preferira sidrene okvire užeg i višeg oblika od kvadratnog okvira. Kako
bi riješili ovaj problem, inženjeri računalnog vida obično pokreću algoritam klasteriranja k-
mean vrijednosti na jedinstvenom skupu podataka kako bi najprije dobili sidrene okvire koji
najbolje odgovaraju podacima. Zatim će se ti parametri ručno konfigurirati u YOLO
arhitekturi. Glenn Jocher predložio je integraciju procesa odabira sidrenih okvira u YOLOv5
verziji. Kao rezultat toga, mreža ne mora uzeti u obzir nijedan skup podataka koji će se koristiti
kao ulaz, ona će automatski „naučiti“ koji su najbolji sidreni okviri za taj skup podataka i
koristit će ih tijekom treniranja [13].
3.5.5 PP-YOLO
PP-YOLO je predstavljen u srpnju 2020. godine putem članka pod naslovom „PP-
YOLO: An Effective and Efficient Implementation of Object Detector“ kojeg je napisao Xiang
Longa zajedno sa suradnicima. Temelji se na PaddlePaddle platformi za paralelno distribuirano
duboko učenje otvorenog kôda koju su izvorno razvili znanstvenici kineske kompanije Baidu
Inc specijalizirane za proizvode i usluge umjetne inteligencije.
Prema članku, PP-YOLO može postići mAP od 45,2% MS COCO skupa podataka što
premašuje mAP od 43,5% YOLOv4 algoritma. Kada se testira brzina, PP-YOLO može postići
brzinu zaključivanja od 72,9 FPS-a, što je također više od 65 FPS-a za YOLOv4. Bolja
optimizacija tensorRT-a na ResNet modelu umjesto Darkneta glavni je razlog za ovo
poboljšanje performansi [14].
22
3.6 Prednosti i nedostatci YOLO algoritma
23
4 IZRADA MODELA ZA DETEKCIJU MALIH OBJEKATA NA
ZRAČNIM FOTOGRAFIJAMA
U praktičnom dijelu zadatka, naglasak je na neuronskoj mreži YOLOv4. Kako bi YOLOv4
mogao detektirati objekte na slikama, neuronska mreža najprije mora biti trenirana. Za potrebe
ovog diplomskog rada korištena je baza IPSAR (engl. Image Processing for Search and
Rescue), odnosno baza fotografija HGSS-a (HGSS - Hrvatska gorska služba spašavanja).
Treniranje i testiranje se izvodi na Google-ovoj platformi Google Colab. Samo izvođenje,
treniranje, validacija i testiranje odvija se na otvorenom i dostupnom programskom okviru
(engl. open-source framework) neuronskih mreža nazvanom Darknet, koji je napisa u C
programskom jeziku i u CUDA (engl. Compute Unified Device Architecture). Prednost
korištenja Darknet programskog okvira je to što je brz, jednostavan za instaliranje i podržava
računanja pomoću GPU (engl. graphics processing unit) i CPU (engl. central processing unit).
Darknet je uglavnom namijenjen za otkrivanje objekata i ima drugačiju arhitekturu, značajke
od drugih okvira za duboko učenje. Brži je od mnogih drugih NN arhitektura i pristupa poput
bržeg R-CNN itd. Morate biti u C ako trebate brzinu, a većina dubokih okvira neuronskih mreža
je napisana u c programskom jeziku. Tensorflow ima širi opseg, ali Darknet arhitektura i
YOLO su specijalizirani okvir i oni su na vrhu svoje igre u brzini i točnosti. YOLO može raditi
na CPU-u, ali korištenjem GPU dobiva se 500 puta veća brzina jer koristi CUDA i cuDNN
(engl. CUDA Deep Neural Network; GPU-ubrzana biblioteka primitiva za duboke neuronske
mreže koja pruža visoko podešene implementacije za standardne rutine kao što su konvolucija
naprijed i natrag, udruživanje, normalizacija i aktivacijski slojevi [15].
24
možemo predvidjeti krajnji rezultat. Nakon što je napravljen skup podataka, u programu
Microsoft Visual Studio editirana je yolov3-tiny.cfg datoteka. Prilikom ovog treniranja, važno
je napomenuti da je datoteka yolov3-tiny.cfg bila samo oslonac te da se ona nije koristila za
samo treniranje. Parametri datoteke yolov3-tiny.cfg su promijenjeni u svrhu ovog istraživanja
te se prilikom ovog istraživanja koristila datoteka yolov3-tiny-custom.cfg. Kod treniranja, kao
okosnica je korišten yolov3-tiny.conv.11.
4.2 Darknet
Darknet je programski okvir za neuronske mreže otvorenog kôda napisan u C i CUDA.
Osim što je brz i jednostavan za instalaciju, podržava CPU i GPU računanje. Dostupan je
GitHub-u na sljedećoj poveznici: https://github.com/pjreddie/darknet. Darknet je instaliran sa
samo dvije neobavezne ovisnosti: OpenCV (engl. Open Source Computer Vision Library) ako
korisnik želi širi izbor podržanih tipova slika ili CUDA ukoliko korisnik želi GPU računanje.
Nijedno nije obvezno, te korisnici mogu započeti samo instaliranjem osnovnog sustava koji je
testiran na Windows, Linux i Apple MacBook računalima [16].
Programski okvir sadrži YOLO algoritam, vrhunski sustav detekcije objekata u stvarnom
vremenu. Na GeForce GTX TITAN X grafičkoj kartici obrađuje slike pri 40 – 90 FPS i ima
mAP od 78,6% na VOC 2007 [17] izazovu za prepoznavanje objekata iz brojnih klasa vizualnih
objekata u realističnim scenama i mAP od 44,0% na MS COCO tets-dev [18].
Darknet prikazuje informacije dok učitava konfiguracijsku datoteku i težine, zatim klasificira
sliku i ispisuje prvih 10 klasa za sliku. Rekurentne neuronske mreže su snažni modeli za
predstavljanje podataka koji se mijenjaju tijekom vremena i Darknet može rukovati s njima bez
korištenja CUDA ili OpenCV.
25
Resursi u Google Colabu imaju prioritet za interaktivne slučajeve upotrebe. Zabranjene su
radnje povezane sa skupnim računanjem, radnje koje negativno utječu na druge, te radnje koje
uključuju probijanje lozinki, izvođenje napada uskraćivanja usluge (engl. DoS - Denial of
service), rudarenje kriptovaluti, preuzimanje torrent datoteka ili sudjelovanje u peer-to-peer
dijeljenju datoteka i povezivanje s udaljenim proxyjima [19].
Kako bi bio napravljen prilagođeni YOLOv4 detektor koji bi mogao prepoznavati bilo
koji objekt, potrebno je napraviti sljedeće stvari:
Omogućiti korištenje GPU
Klonirati repozitorij Darkneta te podesiti parametre unutar Makefile-a
Prikupiti i označiti prilagođeni skup podataka
Konfiguracija .cfg dokumenta
Kreiranje obj.data i obj.names dokumenata
Kod „Hardware accelerator” potrebno je odabrati GPU i nakon toga kliknuti „Save“:
26
Slika 4.3 - Omogućavanje korištenje grafičke kartice
27
Slika 4.7 – Pokretanje make pravila
Darknet ne prikazuje ispravno slike nakon pokretanja detektora, stoga je potrebno kreirati
pomoćnu funkciju koja će služiti za prikaz slike nakon detekcije. Pomoćne funkcije nalaze se
ispod na slici 4.8.
Slika 4.8 – Pomoćne funkcije za prikaz slika i za prijenos datoteka na Google Drive
Da bi stvorili prilagođeni detektor objekata, potreban je dobar skup podataka slika i oznaka
kako bi se detektor mogao učinkovito osposobiti za otkrivanje objekata. To se može učiniti na
dva načina: putem ili pomoću slika s Googlea ili stvaranjem vlastitog skupa podataka i
korištenjem alata za bilješke za ručno crtanje oznaka. Ovom metodom je moguće prikupiti
tisuće slika i automatski generirati njihove oznake u roku od nekoliko minuta! Prikupljanje
skupa podataka iz Google Open Images Dataset i korištenje alata za generiranje oznaka
jednostavno je i vremenski učinkovito. Skup podataka sadrži označene slike za više od 600
klasa. Za potrebe ovog diplomskog rada koristit će drugi način u kojem ćemo pripremiti vlastiti
skup podataka, stoga je potrebno pripremiti slike i oznake u YOLOv4 formatu. Prethodno je
spomenuto da je korištena baza slika od IPSAR-a i da su slike označene u Pascal VOC formatu.
Potrebno je pretvoriti Pascal VOC format u YOLOv4 format za Darknet. To je napravljeno
pomoću web aplikacije pod nazivom Roboflow, aplikacije koja dozvoljava korisnicima da
izgrade vlastite aplikacije za računalni vid, bez obzira na njihove vještine ili iskustvo.
Roboflow pruža sve alate potrebne za pretvaranje neobrađenih slika u prilagođeni obučeni
model računalnog vida i implementaciju za korištenje u aplikacijama. Osim toga, Roboflow se
može koristiti za provjeru oznake unutar okvira; za obradu slika poput promjena veličine, sivih
28
tonova, automatska orijentacija, podešavanja kontrasta; za pretvorbu postojećih VOC XML
bilješki u MS COCO JSON bilješke; za brzu procjenu kvalitete skupa podataka; za generiranje
formata bilješki kao što su TFRecords, CreateML i Turi Create i prilagođene implementacije
YOLOv3 (ravne tekstualne datoteke ili Darknet).
Prvo su učitane slike i bilješke u Roboflow i time je stvoren vlastiti skup podataka koji je
nazvan Humans Datasets, a nakon toga izvezene su slike za treniranje i validaciju zajedno s
njihovim bilješkama u YOLOv3 formatu za Darknet, koji je isti kao i YOLOv4 format za
Darknet. Pretvaranje formata prikazano je na slikama 4.9 i 4.10.
29
4.4.4 Korak 2: Premještanje vlastitih prilagođenih skupova podataka u vaš Cloud VM
Dakle, sada kada su vlastiti skupovi podataka ispravno formatirani za korištenje za treniranje i
provjeru valjanosti, potrebno ih je premjestiti u virtualnu mašinu u oblaku (engl. CVM - Cloud
Virtual Machine) kako bi, kada dođe vrijeme, zapravo mogli trenirati i potvrditi vlastiti model.
Kreirana je mapa pod nazivom yolov4 u koju su pohranjeni svi podaci potrebni za vlastito
treniranje modela. Kako bi provjerili ispravnost, potrebno je pokrenuti naredbu na slici 4.11
koja će ispisati sadržaj lokacije koja služi za pohranu.
Slika 4.11 – Ispis sadržaja lokacije na kojoj su pohranjeni podaci za treniranje modela
Sada je potrebno kopirati .zip datoteke i raspakirati ih unutar virtualne mašine u oblaku, što je
prikazano na slici 4.12.
Sljedeći korak prikazan ispod na slici 4.13 je raspakiranje .zip datoteka unutar /darknet/data
mape.
30
Slika 4.14 – Kopiranje konfiguracijske datoteke na vlastiti Google Drive
Potrebno je urediti .cfg dokument kako bi odgovarao potrebama vlastitog detektora objekata.
Na slici 4.15 je prikazano uređivanje .cfg dokumenta pomoću ugrađenog uređivača teksta
(potrebno je pritisnuti desni klik na yolov4-obj.cfg, a zatim kliknuti na „Open with“ u
padajućem izborniku i odabrati opciju „Text Editor”).
Preporučeno je imati skup = 64 i podjele = 16 za krajnje rezultate. Ukoliko se pojave bilo kakvi
problemi, potrebno je povećati podjele na 32. Ostatak izmjena u .cfg ovisi o tome na koliko
klasa se trenira vlastiti detektor. Za potrebe detektora opisanog u ovom radu, postavljene su
varijable na sljedeće vrijednosti: max_batches = 6000; steps = 4800, 5400; classes = 1 (u tri
YOLO sloja); filters = 18 (u tri konvolucijska sloja prije YOLO slojeva)
Osim toga, potrebno je konfigurirati i sljedeće varijable: width = 416; height = 416 (to može
biti bilo koji višekratnik od 32, 416 je standardna vrijednost, ponekad se mogu poboljšati
rezultati povećanjem vrijednosti poput 608, ali ta promjena će usporiti proces treniranja)
31
steps = (80% max_batches), (90% max_batches)
Primjerice, ako je max_batches = 10000, tada je varijabla steps = 8000, 9000.
Ukoliko se pojave problemi s memorijom ili ukoliko trening traje jako dugo, potrebno je u
svakom od tri YOLO sloja u konfiguracijskoj datoteci promijeniti jednu liniju programskog
kôda, odnosno random = 1 je potrebno postaviti u vrijednost 0 kako bi ubrzali trening, ali malo
smanjili točnost modela.
Potrebno je izraditi novu datoteku unutar uređivača kôda ili teksta pod nazivom obj.names gdje
će se nalaziti jedno ime klase po retku istim redoslijedom kao i classes.txt iz koraka generiranja
skupa podataka (Slika 4.17). Preporuka je da nema razmaka u nazivu klasa ukoliko se klasa
sastoji od više riječi. U ovom diplomskom radu imamo samo jednu klasu nazvanu „human“.
Osim obj.names potrebno je kreirati i datoteku obj.data i ispuniti je na način prikazan ispod na
slici 4.18. Zadnja linija kôda označava putanju do mape za sigurnosnu kopiju. Ova mapa za
sigurnosnu kopiju je mjesto gdje će se spremati težine modela tijekom treninga. Potrebno je
stvoriti sigurnosnu mapu na vlastitom Google pogonu i postaviti ispravnu putanju u obj.data
datoteku.
32
Slika 4.18 – Prikaz datoteke obj.data koja sadrži putanju do sigurnosne kopije
Nakon što su uspješno kreirane datoteke obj.names i obj.data, naredbom na slici 4.19 kopiramo
datoteke u oblak virtualne mašine.
33
Slika 4.21 – Skripta za generiranje popisa svih slika za validaciju
Nakon što su skripte spremljene na Google Drive, potrebno ih je naredbom na slici 4.22 kopirati
na virtualnu mašinu u oblaku.
34
Slika 4.25 – Prikaz datoteke test.txt nakon uspješnog izvršavanja skripte
Sljedeći korak preuzima težine za konvolucijske slojeve mreže YOLOv4 (Slika 4.26).
Korištenjem ovih težina pomaže prilagođenom detektoru objekata da bude mnogo točniji i da
ne mora dugo trenirati. Korištenje već uvježbanih težina nije nužno, ali pomoći će vlastitom
modelu da konvergira i da bude brži, stoga je preporuka da se koristi.
Ovo treniranje može potrajati nekoliko sati ovisno o tome koliko je iteracija odabrano u .cfg
datoteci. S obzirom da ovaj proces traje dosta dugo, preporuka je da treniranje radi u vremenu
dok se ne koristi računalo, primjerice tijekom spavanja. Međutim, Colab Cloud Service
izbacuje korisnika s virtualne mašine ukoliko je predugo neaktivan (30-90 minuta). Kako bi se
izbjeglo izbacivanje s virtualne mašine, potrebno je kliknuti desni klik i odabrati „Inspect” i
pozicionirati se na konzolu preglednika. Zatim je potrebno zalijepiti funkciju prikazanu na slici
4.28 u prozor konzole i pritisnuti „Enter“.
35
Funkcijom ClickConnect() postiže se da Google Colab „misli“ da je korisnik cijelo vrijeme
aktivan i time ne dopušta izbacivanje s virtualne mašine [20].
Naredba na slici 4.29 služi za pokretanje treniranja. Zastavica -dont_show je dodana kako se
slika ne bi objavila nakon pokretanja Darkneta grafikona. To zapravo ne utječe ni na što kada
se izvodi u Google Colab-u jer se slika ionako ne može ispravno ispisati izravno iz Darkneta.
Međutim, dodavanjem zastavice -dont_show izbjeći će se prikazivanje upozorenja. Zastavica
-map označava prosječnu preciznost na grafikonu kako bi vidjeli kolika je točnost modela
(zastavica se dodaje samo postoji skup podataka za provjeru valjanosti). Ukoliko se Google
Colab ruši ili dolazi do problema s memorijom, potrebno je pokrenuti naredbu %%capture sa
slike koja je zakomentirana.
Nakon treninga, moguće je promatrati grafikon koji prikazuje kako je model radio tijekom
procesa obuke pokretanjem naredbe na slici 4.30. Prikazat će se grafikon prosječnog gubitka u
odnosu na iteracije. Da bi model bio „točan“ trebalo bi težiti gubitku ispod 2.
Slika 4.31 prikazuje chart.png, odnosno prikazuje kako bi graf trebao izgledati nakon
neprekinutog treninga. Ako se trening prekine ili ako se ruši tijekom treninga, grafikon će
izgledati kao gornji, ali još uvijek se može provjeriti točnost treniranog modela u sljedećim
koracima.
36
Slika 4.31 – Grafikon nakon uspješno izvršenog treniranja
Ukoliko se dogodi pogreška ili Google Colab zbog neaktivnosti ugasi virtualnu mašinu,
djelomično istrenirani model i težine nisu izgubljene.
Svakih 100 iteracija datoteka s težinama pod nazivom yolov4-obj_last.weights sprema se u
mapu mydrive/yolo_v4_custom_dataset_demo/backup/.
Razlog zbog kojeg je ova mapa stvorena na Google Drive-u, a ne na virtualnoj mašini u oblaku
je gubitak težina i napretka u treningu ukoliko je sigurnosna kopija na oblaku virtualne mašine.
Ukoliko trening nije pokrenut s dodanom zastavicom -map, još uvijek je moguće saznati
srednju prosječnu preciznost modela nakon treninga. Na slikama ispod su prikazane naredbe
za provjeru točnosti spremljenih težina nakon 1000 iteracija (Slika 4.33) i nakon 6000 iteracija
(Slika 4.34) treniranja. Može se dogoditi i slučaj da konačna datoteka spremljenih težina bude
preopterećena, stoga je važno pokrenuti ove naredbe za izračun mAP kako bi vidjeli je li jedna
od prethodno spremljenih težina točniji model za odabranu klasu.
37
Slika 4.33 – Prikaz srednje prosječne preciznosti nakon 1000 iteracija
Slika 4.35 prikazuje rezultat izvršavanja prethodne naredbe nakon 1000 iteracija i mAP iznosi
0.372927 ili 37.29%, dok je na slici 4.36 prikazan rezultat izvršavanja naredbe nakon 6000
iteracija kod kojeg mAP iznosi 0.559424 ili 55.94%.
38
Slika 4.36 - Srednja prosječna preciznost (mAP) nakon 6000 iteracija
Naredbom prikazanoj na slici 4.38 pokreće se vlastiti detektor. Naredba kao parametre prima
konfiguracijsku datoteku yolov4-obj.cfg, spremljene posljednje težine iz treninga pod nazivom
yolov4-obj_last.weights, te na kraju prima argument sliku koja se želi koristiti kao testna slika.
39
Slika 4.39 prikazuje jednu od originalnih testnih slika pod nazivom test_GRO_0012.jpg, dok
je na slici 4.40 prikazan rezultat pokretanja vlastitog detektora na slici test_GRO_0012.jpg.
Ukoliko se originalna slika detaljnije pogleda, vidi se da na slici postoje stvarno dvije osobe i
da ih je detektor uspješno detektirao.
40
Slika 4.40 – Slika test_GRO_0012.jpg nakon detekcije ljudi
41
Slika 4.41 - Slika test_BRA_0012.jpg nakon 1000 iteracija
42
Na prethodnim slikama uočava se da je kod modela nakon 1000 iteracija veća pouzdanost nego
kod modela nakon 6000 iteracija. To nije pravi pokazatelj kvalitete detektora, nego je potrebno
izračunati mAP da bi utvrdili koji je model bolji.
Osnovna metrika koja se koristi za procjenu modela često je Točnost (engl. Accuracy) , koja
opisuje broj točnih predviđanja u odnosu na sva predviđanja.
Formula glasi:
𝑇𝑃 + 𝑇𝑁 𝑏𝑟𝑜𝑗 𝑡𝑜č𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑏𝑟𝑜𝑗 𝑡𝑜č𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎
= =
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁 𝑏𝑟𝑜𝑗 𝑢𝑘𝑢𝑝𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑣𝑒𝑙𝑖č𝑖𝑛𝑎 𝑑𝑎𝑡𝑎𝑠𝑒𝑡𝑎
Prisjećanje (engl. Recall / Sensitivity ) je mjera koliko je pozitivnih slučajeva klasifikator točno
predvidio, u odnosu na sve pozitivne slučajeve u podacima. Ponekad se naziva i osjetljivost.
Vrlo je važna u domenama kao što je medicina, gdje se želi minimizirati propuštanje pozitivnih
slučajeva (predviđanje lažno negativnih rezultata), jer najčešće propuštanje pozitivnog slučaja
ima mnogo veću cijenu od pogrešnog klasificiranja nečega kao pozitivnog.
Formula glasi:
𝑇𝑃 𝑏𝑟𝑜𝑗 𝑡𝑜č𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑝𝑜𝑧𝑖𝑡𝑖𝑣𝑛𝑖ℎ 𝑖𝑛𝑠𝑡𝑎𝑛𝑐𝑖
=
𝑇𝑃 + 𝐹𝑁 𝑏𝑟𝑜𝑗 𝑜𝑑 𝑢𝑘𝑢𝑝𝑛𝑜 𝑝𝑜𝑧𝑖𝑡𝑖𝑣𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑢 𝑑𝑎𝑡𝑎𝑠𝑒𝑡𝑢
43
Specifičnost (engl. Specificity) je mjera koliko je negativnih predviđanja točnih (pravih
negativnih).
Formula glasi:
𝑇𝑁 𝑏𝑟𝑜𝑗 𝑡𝑜č𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑛𝑖ℎ 𝑖𝑛𝑠𝑡𝑎𝑛𝑐𝑖
=
𝑇𝑁 + 𝐹𝑃 𝑏𝑟𝑜𝑗 𝑜𝑑 𝑢𝑘𝑢𝑝𝑛𝑜 𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑢 𝑑𝑎𝑡𝑎𝑠𝑒𝑡𝑢
Preciznost i prisjećanje uvijek su između 0 i 1. Niti preciznost niti prisjećanje nisu nužno
korisni sami, budući da nas uglavnom zanima cjelokupna slika. Točnost je uvijek dobro
provjeriti kao jednu od opcija. F1-rezultat (engl. F1-Score) je nešto drugo.
F1-rezultat je mjera koja kombinira i preciznost i prisjećanje. Općenito se opisuje kao
harmonijska sredina to dvoje. Harmonijska sredina samo je još jedan način za izračunavanje
„prosjeka“ vrijednosti, koji se općenito opisuje kao prikladniji za omjere (kao što su preciznost
i prisjećanje) od tradicionalne aritmetičke sredine. Formula koja se koristi za F1-rezultat u
ovom slučaju je:
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 ∗ 𝑅𝑒𝑐𝑎𝑙𝑙
2∗
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑅𝑒𝑐𝑎𝑙𝑙
Neke prednosti F1-rezultata:
Vrlo mala preciznost ili prisjećanje rezultirat će nižim ukupnim rezultatom. Stoga
pomaže uravnotežiti dvije metrike.
Ako odaberete svoju pozitivnu klasu kao onu s manje uzoraka, F1-rezultat može
pomoći u ravnoteži metrike između pozitivnih/negativnih uzoraka.
Kao što je prikazano na prvoj slici u ovom članku, ona kombinira mnoge druge metrike
u jednu, bilježeći mnoge aspekte odjednom.
Točnost se obično opisuje kao intuitivnija metrika, s F1-rezultatom koji bolje rješava
neuravnoteženiji skup podataka.
Srednja prosječna preciznost (mAP) trenutna je referentna metrika koju koristi istraživačka
zajednica računalnog vida za procjenu robusnosti modela detekcije objekata. mAP se
izračunava pronalaženjem prosječne preciznosti (AP) za svaku klasu i zatim prosjekom više
klasa. U nekom kontekstu, izračunava se AP za svaku klasu i njihov prosjek. Ali u nekom
kontekstu oni znače potpuno istu stvar. Primjerice, u COCO kontekstu nema razlike između
AP i mAP.
44
Formula za izračun srednje prosječne vrijednosti glasi:
𝑁
1
𝑚𝐴𝑃 = ∑ 𝐴𝑃𝑖
𝑁
𝑖=1
mAP uključuje kompromis između preciznosti i prisjećanja i uzima u obzir i lažno pozitivne
(FP) i lažno negativne (FN). Ovo svojstvo čini mAP prikladnom metrikom za većinu aplikacija
detekcije.
Tablica 4.1 prikazuje izračunate metrike ovisno o broju iteracija, broj detekcija kao i ukupno
vrijeme koje je potrebno modelu da izvrši detekciju.
Ukupno
Broj vrijeme
iteracija Broj detekcija AP TP FP FN Recall Precision mAP detekcije
1000 1558 37,29% 147 131 190 0,44 0,53 37,29% 21 s
Ako pogledamo tablicu te usporedimo model s 1000 iteracija i model s 6000 iteracija, vidimo
da je mAP vrijednost nakon 6000 iteracija veća 18,65% od vrijednosti nakon 1000 iteracija.
45
5 ZAKLJUČAK
Cilj ovoga rada je razvoj modela za detekciju malih objekata na zračnim fotografijama
primjenom neuronske mreže YOLOv4. Prikazan je proces izrade modela koji obuhvaća
preuzimanje skupa podataka sa zračnim fotografijama i oznakama za svaku pojedinu
fotografiju, obradu oznaka i njihovo pretvaranje u format pogodan za YOLOv4 algoritam.
Nakon pretvorbe, prikazano je kreiranje neuronske mreže, njeno treniranje te na kraju i
testiranje uspješnosti samog modela. Model je kreiran u Python programskom jeziku putem
Google Colaboratory usluge i obavlja funkciju detekcije ljudi na korisnički zadanim
fotografijama. Programski kôd modela napisan je kako bi buduće promjene i nadogradnje
bile što jednostavnije.
Prethodno kreirani praktični dio rada mogao bi se poboljšati tako da se prikupi veći broj
reprezentativnih podataka, odnosno fotografija i oznaka, čime bi se povećala preciznost
modela i broj ispravnih predviđanja. Predobrada slike (engl. image pre-processing) također je
još jedan važan korak kako biste bili sigurni da su vaše slike ispravne veličine rezolucije.
Velika razlučivost piksela poboljšava točnost, ali je u zamjeni sa sporijom obukom i
vremenom zaključivanja. Veća razlučivost piksela može pomoći vašem modelu da otkrije
male objekte. Osim poboljšanja rada u smislu preciznosti, model bi se mogao poboljšati u
smislu brzine korištenjem manjeg modela YOLOv4-tiny te boljim odabirom hardvera koji će
uključivati grafičku karticu dobrih performansi.
Rad prikazuje da je s manje od 200 linija programskog kôda moguće stvoriti vlastiti detektor
objekata koji će imati prosječnu točnost od 55.94 % na testnim fotografijama.
Implementacijom detektora usvojeno je veliko znanje o području računalnog vida, ali i
korištenja Python programskog jezik putem Google Colab usluge koja olakšava rad jer nije
potrebno usklađivati verzije programa kao što je slučaj kod lokalnog računala. Znanje stečeno
izradom diplomskog rada će biti dobar temelj za stvaranje budućih projekata slične tematike.
46
LITERATURA
[1] „AI and Aerial Imagery for Search & Rescue“, s Interneta, https://aventior.com/blogs/ai-
and-aerial-imagery-for-search-rescue/ , posjećeno 12.03.2022.
[2] B. Shah, H. Choset, „Survey on Urban Search and Rescue Robots“, s Interneta,
https://www.jstage.jst.go.jp/article/jrsj1983/22/5/22_5_582/_pdf , posjećeno 13.03.2022.
[3] „Convolutional neural network“, s Interneta,
https://en.wikipedia.org/wiki/Convolutional_neural_network ,posjećeno 18.04.2022.
[4] „What is Pooling in a Convolutional Neural Network (CNN): Pooling Layers
Explained“,s Interneta, https://programmathically.com/what-is-pooling-in-a-
convolutional-neural-network-cnn-pooling-layers-explained/ , posjećeno 19.04.2022.
[5] J. Redmon, S. Divvala, R. Girshick, A. Farhadi, „You Only Look Once: Unified, Real-
Time Object Detection“, s Interneta, https://arxiv.org/pdf/1506.02640.pdf, posjećeno
22.05.2022.
[6] Mauricio Menegaz, „Understanding YOLO“, s Interneta,
https://hackernoon.com/understanding-yolo-f5a74bbc7967 , posjećeno 04.06.2022.
[7] Mukesh Chandra Arya, Anchal Rawat, „A Review on YOLO (You Look Only One) - An
Algorithm for Real Time Object Detection“, s Interneta,
https://jespublication.com/upload/2020-110682.pdf , posjećeno 13.06.2022.
[8] Manal El Aidouni „Understanding YOLO and YOLOv2“, s Interneta,
https://manalelaidouni.github.io/Understanding%20YOLO%20and%20YOLOv2.html ,
posjećeno 22.06.2022.
[9] Aditya Sharma, „Introduction to the YOLO Family“, s Interneta,
https://pyimagesearch.com/2022/04/04/introduction-to-the-yolo-family/ , posjećeno
22.06.2022.
[10] Muhammed Enes Atik, Zaide Duran, Roni Ozgunluk, „Comparison of YOLO Versions
for Object Detection from Aerial Images“, s Interneta,
https://dergipark.org.tr/tr/download/article-file/2030695 , posjećeno 28.06.2022.
[11] Amro Kamal „YOLO, YOLOv2, and YOLOv3: All You want to know“, s Interneta,
https://amrokamal-47691.medium.com/yolo-yolov2-and-yolov3-all-you-want-to-know-
7e3e92dc4899 , posjećeno 04.07.2022.
[12] Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao „YOLOv4: Optimal
Speed and Accuracy of Object Detection“, s Interneta,
https://arxiv.org/pdf/2004.10934.pdf%20yolov4.pdf , posjećeno 05.07.2022.
47
[13] Do Thuan „Evolution of Yolo algorithm and Yolov5: The State-of-the-Art object
detention algorithm“, s Interneta,
https://www.theseus.fi/bitstream/handle/10024/452552/Do_Thuan.pdf?isAllowed=y&seq
uence=2 , posjećeno 15.07.2022.
[14] Chamidu Supeshala, „YOLO v4 or YOLO v5 or PP-YOLO?“, s Interneta,
https://towardsdatascience.com/yolo-v4-or-yolo-v5-or-pp-yolo-
dad8e40f7109#:~:text=The%20first%20three%20YOLO%20versions,YOLO%20v5%20
and%20PP%2DYOLO, posjećeno 02.08.2022.
[15] „NVIDIA cuDNN“, s Interneta, https://developer.nvidia.com/cudnn , posjećeno
10.08.2022.
[16] Draden Liang Han Sheng, „Darknet — A Neural Network Framework written in C and
CUDA“, s Interneta, https://hansheng0512.medium.com/darknet-a-neural-network-
framework-written-in-c-and-cuda-d1176c0e5c98, posjećeno 11.08.2022.
[17] „The PASCAL Visual Object Classes Challenge 2007“, s Interneta,
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/ , posjećeno 15.08.2022.
[18] „Object Detection on COCO test-dev“, s Interneta,
https://paperswithcode.com/sota/object-detection-on-coco, posjećeno 15.08.2022.
[19] „Colaboratory“, s Interneta,
https://research.google.com/colaboratory/faq.html#:~:text=Colaboratory%2C%20or%20
%E2%80%9CColab%E2%80%9D%20for,learning%2C%20data%20analysis%20and%2
0education, posjećeno 24.08.2022.
[20] Shivam Rawat, „How to prevent Google Colab from disconnecting ?“, s Interneta,
https://medium.com/@shivamrawat_756/how-to-prevent-google-colab-from-
disconnecting-717b88a128c0, posjećeno 27.08.2022.
48
POPIS OZNAKA I KRATICA
AI Artificial intelligence
YOLO You Only Look Once
RNN Recurrent Neural Networks
CNN Convolutional Neural Network
R-CNN Region-based Convolutional Neural Networks
IoU Intersection over Union
w width
h height
FPS Frames per second
mAP Mean Average Precision
MS COCO Microsoft Common Objects in Context
SSD Single Shot Multibox Detector
ResNet Residual networks
PANet Path aggregation network
CSP Cross stage partial connections
SPP Spatial Pyramid Pooling
SAM Spatial Attention Module
AP Average precision
IoT Internet of Things
DPM Deformable Parts Models
IPSAR Image Processing for Search and Rescue
HGSS Hrvatska gorska služba spašavanja
CUDA Compute Unified Device Architecture
GPU Graphics processing unit
CPU Central processing unit
cuDNN CUDA Deep Neural Network
OpenCV Open Source Computer Vision Library
DoS Denial of service
CVM Cloud Virtual Machine
49
SAŽETAK
50
SUMMARY
This Master's thesis describes the fundamental features of the YOLO algorithm for
detecting one or more objects in an image. At the beginning of the paper, convolutional neural
networks and their architecture are described, because precisely convolutional neural networks
have shown impressive results when detecting objects in a digital image, unlike other types of
neural networks, which is the main reason why the YOLO algorithm uses them. The principle
of operation of the algorithm, as well as the main features and shortcomings of the algorithm,
are also explained. Through the paper, an overview of other versions of the YOLO algorithm
was made, that is, they were described: YOLOv2 (YOLO9000), the third version called
YOLOv3, versions YOLOv4 and YOLOv5, and PP-YOLO. The emphasis is on the YOLOv4
version because it was using that version that the model for human class detection on aerial
photos from the HERIDAL database was implemented.
The work was realized with the help of Google Collaboratory, a product that allows running
Python code in the Jupiter notebook, and allows the use of free resources such as the power of
the graphics card. In addition to Google Collaboratory, the open source Darknet framework
containing the YOLO algorithm, written using the C programming language and the CUDA
platform, was used. The realized detection model requires an input image from the user and
responds by sending an image containing the bounding boxes of the detected object and a value
between 0 and 1 indicating the confidence scores. The algorithm achieves a Mean Average
Precision (mAP) of 55.94%, which is quite a good result considering the small number of
photos. The algorithm could be improved in terms of accuracy by increasing the number of
images for training and testing, and training on a larger image size, which would affect the
speed of the algorithm.
51