You are on page 1of 57

Detekcija malih objekata na zračnim fotografijama

upotrebom YOLO detektora

Tokić, Ante

Master's thesis / Diplomski rad

2022

Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: University of


Split, Faculty of Electrical Engineering, Mechanical Engineering and Naval Architecture /
Sveučilište u Splitu, Fakultet elektrotehnike, strojarstva i brodogradnje

Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:179:401754

Rights / Prava: In copyright / Zaštićeno autorskim pravom.

Download date / Datum preuzimanja: 2023-09-14

Repository / Repozitorij:

Repository of the Faculty of Electrical Engineering,


Mechanical Engineering and Naval Architecture -
University of Split
S VE U Č I L I Š T E U S P L I T U
FAKULTET ELEKTROTEHNIKE, STROJARSTVA I
BRODOGRADNJE

DIPLOMSKI RAD

DETEKCIJA MALIH OBJEKATA NA


ZRAČNIM FOTOGRAFIJAMA
UPOTREBOM YOLO DETEKTORA

Ante Tokić

Split, rujan 2022.


SVEUČILIŠTE U SPLITU
FAKULTET ELEKTROTEHNIKE, STROJARSTVA I
BRODOGRADNJE

Diplomski studij: Računarstvo


Smjer/Usmjerenje: /
Oznaka programa: 250
Akademska godina: 2021./2022.

Ime i prezime: Ante Tokić


Broj indeksa: 482-2020

ZADATAK DIPLOMSKOG RADA

Naslov: Detekcija malih objekata na zračnim fotografijama upotrebom YOLO


detektora

Zadatak: U diplomskom radu potrebno je detaljno opisati metode dubokog učenja, s


posebnim naglaskom na YOLO detektor. U praktičnom dijelu rada koristiti
YOLO detektor za izradu modela za detekciju malih objekata na zračnim
fotografijama. Za bazu zračnih fotografija koristiti HERIDAL bazu podataka.
Dobivene rezultate evaluirati, te detaljno diskutirati o prednostima i manama
YOLO detektora.

Rad predan:

Predsjednik
Odbora za diplomski rad: Mentor:

izv. prof. dr. sc. Linda Vicković doc. Dr. sc. Dunja Božić-Štulić
IZJAVA

Ovom izjavom potvrđujem da sam diplomski rad s naslovom DETEKCIJA MALIH


OBJEKATA NA ZRAČNIM FOTOGRAFIJAMA UPOTREBOM YOLO DETEKTORA pod
mentorstvom doc. dr. sc. Dunje Božić-Štulić pisao samostalno, primijenivši znanja i vještine
stečene tijekom studiranja na Fakultetu elektrotehnike, strojarstva i brodogradnje, kao i
metodologiju znanstveno-istraživačkog rada, te uz korištenje literature koja je navedena u radu.
Spoznaje, stavove, zaključke, teorije i zakonitosti drugih autora koje sam izravno ili
parafrazirajući naveo/la u diplomskom radu citirao/la sam i povezao/la s korištenim
bibliografskim jedinicama.

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.

Prednosti slika dronom u spasilačkim operacijama:


 Vrijeme dolaska do mjesta hitne pomoći je smanjeno
 Ogromna geografska područja mogu se brzo pokriti
 Dron može lako doći do nepristupačnih područja
 Moguća je analiza situacije u stvarnom vremenu
 Toplinska slika može lako uočiti čovjeka u ekstremnim uvjetima
 Troškovi slanja zrakoplova ili vozila s posadom drastično su smanjeni
 Zoom kamere postavljene na dronove mogu se koristiti za provjeru dobrobiti osobe u
nevolji

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

Iako su dronovi prvenstveno dizajnirani za daljinsko upravljanje, uključivanje umjetne


inteligencije (engl. AI – Artificial intelligence) u razvoj letjelica dovelo je do njihove potpune
automatizacije. Dronovi bazirani na umjetnoj inteligenciji koriste računalni vid u kombinaciji
sa senzorima kako bi tijekom leta istovremeno snimali i analizirali objekte na tlu. Dron takvog
razvoja može bih preletjeti prometnu rutu, uočiti vozilo korišteno za otmicu i poslati podatke
o marki i modelu automobila s registarskim brojem. Isto tako, u primjeru potrage dron može
preletjeti veliko područje, analizirati teren i detektirati osobu na slici koju je snimila kamera u
stvarnom vremenu i na taj način spasiti osobu za kojom se traga.
Vizualno raspoznavanje objekata već je odavno pronašlo svoju primjenu u robotici, medicini i
automobilskoj industriji i mnogim drugim. Primjerice prepoznavanje znakova u prometu
ugrađeno u samu tehnologiju automobila vozaču znatno olakšava vožnju, a samim tim
smanjuje mogućnost od nezgode. Jednako korisno je i prepoznavanje objekata slikanih dronom
što je ujedno i tema ovog diplomskog rada. Rad se temelji na automatizaciji detekcije objekata
na slici primjenom konvolucijskih neuronskih mreža YOLO (engl. You Only Look Once)
algoritma, te je podijeljen na sljedeći način.
U prvom poglavlju rada opisane su konvolucijske mreže, njihova arhitektura, podjela kao i
način rada. Također su predstavljeni neki od najvažnijih algoritama dubokog učenja za
detekciju objekata. Nadalje se opisuje YOLO algoritam koji je ključan za izradu praktičnog
dijela rada. Objašnjen je način i arhitektura algoritma te su navedene njegove postojeće verzije,
kao i njegove glavne prednosti i ograničenja. Treće poglavlje predstavlja praktični dio rada u
kojem je prikazan način kreiranja modela za detekciju malih objekata na zračnim fotografijama
primjenom spomenutog algoritma. Nakon toga, u četvrtom poglavlju su prikazani statistički
podaci uspješnosti algoritma koji se koristio u praktičnom dijelu. Na samom kraju su rezimirani
rezultati rada u obliku zaključka.

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.

2.1 Arhitektura konvolucijskih mreža


Arhitektura mreže predstavlja način povezivanja neurona u samoj mreži. Neuroni
konvolucijskih kao drugih neuronskih mreža nalaze se u povezanim slojevima, gdje svaki sloj
transformira prethodni danom funkcijom. Uobičajena struktura konvolucijske mreže počinje
ulaznim slojem, po čemu slijedi uzastopna kombinacija konvolucijskog sloja i sloja sažimanja,
a završava potpuno povezanim slojevima. Potpuno povezan sloj znači da je svaki neuron
jednog sloja povezan s neuronom drugog sloja.
Razlika konvolucijskih mreža u odnosu na standardne mreže je u primjeni matematičke
operacije konvolucije na skrivenim slojevima sloju. Stoga su osnovne gradivne jedinice ovog
tipa mreže: ulazni sloj, konvolucijski sloj, sloj sažimanja i izlazni sloj.

2.1.1 Konvolucijski sloj


Konvolucijski sloj je osnovna gradivna sloj konvolucijskih neuronskih mreža. Definira se
pomoću ulaznih podataka, veličine filtera, nadopunjavanjem i pomakom filtera. Filter je

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].

Slika 2.1 - Način rada konvolucijske mreže

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.

2.1.2 Sloj sažimanja


Nakon što se na mapu značajki primjeni ReLU funkcija, slijedi sloj sažimanja odnosno
smanjenje dimenzija mape značajki. Slično konvolucijskom sloju, operacija sažimanja pomiče

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)

2.2 Konvolucijske neuronske mreže i računalni vid


Konvolucijske neuronske mreže pokreću prepoznavanje slika i zadatke računalnog vida.
Računalni vid je polje umjetne inteligencije koje omogućuje računalima i sustavima da izvuku
smislene informacije iz digitalnih slika, videa i drugih vizualnih ulaza, a na temelju tih ulaza
može poduzeti akciju. Ova sposobnost pružanja preporuka razlikuje ga od zadataka
prepoznavanja slika. Neke uobičajene primjene ovog računalnog vida danas se mogu vidjeti u
sljedećim područjima:
 Marketing - platforme društvenih medija pružaju prijedloge o tome tko bi mogao biti
na fotografiji koja je objavljena na profilu, što olakšava označavanje prijatelja u
albumima fotografija;
 Zdravstvo - računalni vid ugrađen je u tehnologiju radiologije, omogućujući liječnicima
da bolje identificiraju kancerogene tumore u zdravoj anatomiji;
 Maloprodaja - vizualno pretraživanje ugrađeno je u neke platforme za e-trgovinu,
omogućujući brendovima da preporuče artikle koji bi nadopunili postojeću garderobu
 Automobilska industrija - dok se doba automobila bez vozača nije sasvim pojavilo,
temeljna tehnologija počela je probijati put u automobile, poboljšavajući sigurnost
vozača i putnika kroz značajke kao što je otkrivanje linije traka.

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.

3.1 Objedinjena detekcija YOLO algoritma

YOLO je predstavljen kao jedinstveni algoritam jer se razdvojene komponente spajaju


u jednu neuronsku mrežu kao konačni cjevovod. Za svaki granični okvir koji treba predvidjeti
paralelno, značajke cijele slike su globalno obrazložene. YOLO je dizajniran na takav način
da izvodi vlastiti trening s kraja na kraja (engl. end-to-end) u stvarnom vremenu uz
zadržavanje prosječne preciznosti visoke razine. Kako bi se postigla jedinstvena detekcija,
YOLO prvo razdvaja ulaznu sliku u mreže, odnosno blok veličine S X S. Ukoliko je središte

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.

Slika 3.1 – Izračun parametara na slici dimenzija 448 x 448 piksela

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.

3.2 Što je YOLO?

YOLO algoritam temelji se na regresiji. Predviđa klasne vjerojatnosti objekta i granične


okvire koji određuju lokaciju objekta za cijelu sliku. Granični okviri objekta opisani su
varijablama bx i by, te koordinatama x i y koje predstavljaju središte okvira u odnosu na granice
ćelije mreže. Varijable bw i bh koje predstavljaju širinu i visinu, predviđaju se u odnosu na
cijelu sliku, a vrijednost c predstavlja klasu objekta. YOLO algoritam uzima sliku kao ulaz i
dijeli je na S x S mreže (3 x 3). Zatim se na svaku mrežu slike primjenjuju tehnike klasifikacije
slike i lokalizacije objekata i svaka mreža dobiva oznaku. Algoritam YOLO zatim provjerava
svaku mrežu za objekt i identificira njegovu oznaku i granične okvire. Oznaka mreže koja nema
objekt označena je kao nula. Svaka označena mreža definirana je kao S.S koja ima 8 vrijednosti
(pc, bx, by, bw, bh, c1, c2, c3). Vrijednost varijable pc pokazuje ima li određena mreža objekt
ili ne (ukoliko objekt postoji vrijednost je 1, a inače je 0). Vrijednosti varijabli bx, by, bh, bw
su parametri graničnog okvira mreže i definirani su samo ako objekt postoji unutar mreže.
Varijable c1, c2, c3 su klase. Primjerice, ako je objekt automobil, tada vrijednosti c1, c2, c3
iznose 0,0,1 respektivno (za primjer su vrijednosti c1,c2,c3 postavljene kao 0, 1, 0 ali moglo je
biti 1, 0, 0 ili 0, 1, 0) [6].

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).

Slika 3.3 - Granični okvir i vrijednosti klase za prvu ćeliju mrežu

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.

Slika 3.4 - Granični okvir i vrijednosti klase za šestu ćeliju mrežu

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 - Proces detekcije objekta putem YOLO algoritma

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.

Primjerice, za procjenu YOLO-a na PASCAL VOC-u koristimo S = 7, B = 2. PASCAL VOC


ima 20 označenih klasa tako da je C = 20. Konačno predviđanje je tenzor 7 × 7 × 30.

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.

Slika 3.6 – Arhitektura mreže

YOLO trening se sastoji od 2 faze:


 Prvo faza je osposobljavanje mreže za izvođenje klasifikacije s ulaznom razlučivosti
224x224 na ImageNet, koristeći samo prvih 20 konvolucijskih slojeva nakon čega
slijedi prosječno okupljanje i potpuno povezani sloj.
 Druga faza je treniranje mreže za detekciju dodavanjem četiri konvolucijska sloja i dva
potpuno povezana sloja. Za detekciju treniramo na ulazima rezolucije 448x448 budući
da postupno vježbanje na slikama veće razlučivosti značajno povećava točnost s
obzirom na to da su suptilne vizualne informacije vidljivije za detekciju.

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.

3.4 Glavne značajke i ograničenja YOLO-a


Predviđanjem koordinata okvira izravno iz ulaznih slika, YOLO tretira otkrivanje
objekata kao problem regresije, za razliku od metoda temeljenih na klasifikatoru. Jednostavna
mreža YOLO-a je zajedno trenirana i omogućuje predviđanje brzine od 45 slike po sekundi u
stvarnom vremenu. Štoviše, budući da istovremeno predviđa granične okvire iz cijele slike u
svim klasama, mreža globalno razmišlja o svim objektima na slici.
YOLO koristi Darknet programski okvir (engl. framework) koji je obučen na skupu podataka
ImageNet-1000. Ima loš učinak na malim objektima, osobito onima koji se pojavljuju u
skupinama, budući da svaka ćelija mreže predviđa samo B=2 granična okvira iste klase,
stvarajući prostorno ograničenje koje ograničava broj objekata predviđenih po ćeliji mreže.
Iako funkcija gubitka predviđa kvadratni korijen visine i težine graničnog okvira umjesto visine
i težine izravno u pokušaju da se riješi izjednačavanje pogreške za velike i male kutije, ovo
rješenje djelomično rješava problem, što rezultira značajnim brojem pogrešaka lokalizacije [8].
Ova arhitektura naišla je na poteškoće u generalizaciji objekata ako je slika drugih dimenzija
različitih od uvježbane slike. Osim toga, YOLO ne uspijeva pravilno detektirati objekte novih
ili neuobičajenih oblika, jer ne generalizira daleko izvan graničnih okvira u skupu za obuku.

Slika 3.7 – Problem kod YOLOv1 algoritma

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.

3.5.1 YOLOv2 i YOLO9000

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).

Slika 3.8 – ResNet arhitektura s preskakanjem veza

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.

Predviđanje graničnog okvira


Sustav predviđa granične okvire pomoću dimenzijskih klastera koji služe kao sidrišta što
prikazuje slika 3.10. Kao i YOLO9000, mreža predviđa 4 koordinate za svaki granični okvir,
tx, ty, tw, th. Ako je ćelija pomaknuta od gornjeg lijevog kuta slike (cx,cy), a prethodni granični
okvir ima širinu i visinu pw, ph, tada predviđanja odgovaraju sljedećim formulama:
𝑏𝑥 = σ(𝑡𝑥 ) + 𝑐𝑥
𝑏𝑦 = σ(𝑡𝑦 ) + 𝑐𝑦
𝑏𝑤 = 𝑝𝑤 𝑒 𝑡𝑤
𝑏ℎ = 𝑝ℎ 𝑒 𝑡ℎ

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.

Slika 3.11 – Primjer predviđanja graničnih okvira

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].

Predviđanja u različitim ljestvicama

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.

Slika 3.12 – Ilustracija YOLOv3 predviđanja u 3 različite ljestvice

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.

Predviđanje više oznaka


U nekim skupovima podataka kao što je Open Image Dataset objekt može imati više oznaka.
Na primjer, objekt se može označiti kao žena i kao osoba. U ovom skupu podataka postoji
mnogo oznaka koje se preklapaju. YOLOv2 koristi softmax funkciju za predviđanje klase,
čime se nameće pretpostavka da svaki okvir ima točno jednu klasu, što često nije slučaj (kao u
Open Image Dataset). Iz tog razloga, YOLOv3 ne koristi softmax funkciju, nego umjesto toga
jednostavno koristi neovisne logističke klasifikatore za bilo koju klasu. Tijekom obuke korišten
je binarni unakrsni gubitak entropije za predviđanja klase. Korištenjem neovisnih logističkih
klasifikatora, objekt se može otkriti kao žena i kao osoba u isto vrijeme.

U usporedbi s YOLOv2, YOLOv3 ima manje postignuća na objektima srednje i velike veličine
[10].

3.5.3 YOLOv4

Zbog potencijalne zlouporabe tehnologije, Joseph Redmon odustao je od razvoja


YOLOv4. Osobito se osvrnuo na vojne aplikacije i pitanja zaštite podataka. Povlačenje Josepha
Redmona nije bio kraj YOLO-a. Ruski programer Alexey Bochkovskiy zajedno sa suradnicima

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 značajno nadmašuje postojeće performansama detekcije i u smislu superiorne brzine.


U odnosu na objavljeni rad , istraživački tim ga spominje kao detektor objekata koji „brzo radi“
i koji se može glatko trenirati i koristiti u proizvodnim sustavima.
Glavni cilj bio je optimizirati detektor neuronskih mreža za paralelna izračunavanja, tim
također uvodi razne različite arhitekture i arhitektonske odabire nakon pažljivog analiziranja
učinaka na izvedbu brojnih detektora, značajki predloženih u prethodnim modelima YOLO.

Slika 3.13 –YOLOv4 arhitektura

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.

Slika 3.14 – Ilustracija CSP na primjeru DenseNet-a

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.

Slika 3.15 - Prikaz prostornog piramidalnog udruživanja

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.

Glava (gusto predviđanje) koristi se za lociranje graničnih okvira i za klasifikaciju. Proces je


isti kao onaj opisani za YOLOv3, detektiraju se koordinate granične kutije (x, y, visina i širina)
kao i rezultat. Glavni cilj YOLO algoritma je podijeliti ulaznu sliku na nekoliko stanica mreže
i predvidjeti vjerojatnost da ćelija sadrži objekt pomoću sidrenih okvira. Izlaz je tada vektor s
ograničenim koordinatama okvira i vjerojatnosti klasa.

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.

Slika 3.16 – Arhitektura 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.

Prilagodljivi sidreni okviri


Joseph Redmon predstavio je strukturu sidrenih okvira u YOLOv2 i postupak za odabir
sidrenih okvira veličine i oblika koji vrlo nalikuju temeljnim graničnim okvirima istine u setu
za treniranje. Korištenjem algoritma klasteriranja k-mean vrijednosti s različitim vrijednostima

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.

PP-YOLO se temelji na YOLOv3 modelu. Cilj PP-YOLO algoritma je implementacija


detektora objekata s relativno uravnoteženim djelovanjem i učinkovitošću koji se može izravno
primijeniti u stvarnim scenarijima primjene, umjesto predlaganja novog modela detekcije.
Značajne promjene uključuju zamjenu Darknet53 okosnice YOLOv3 s ResNet okosnicom i
povećanje veličine grupe za treniranje sa 64 na 192.

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

YOLO je vrhunski algoritam za otkrivanje objekata u stvarnom vremenu koji nadilazi


prijašnja ograničenja brzine detekcije CNN-a, istovremeno održavajući dobru ravnotežu
između brzine i točnosti. YOLOv2, najnovija verzija YOLO-a koja postiže mAP stopu od 76,8
pri 67 FPS-a i 78,6 mAP stope pri 76 FPS-a, nadmašuje regionalne algoritme kao što je brži R-
CNN u brzini i točnosti . Još jedna velika prednost YOLO-a su njegove globalne vještine
zaključivanja koje kôdiraju kontekstualne informacije o cijeloj slici, a ne o određenoj regiji.
Uz ove globalne vještine zaključivanja, povećava se i sposobnost predviđanja lažnih pozitivnih
rezultata u pozadini, poboljšavajući vještine zaključivanja algoritma u cjelini. Konačno, sa
sposobnošću YOLO-a da nauči osnovne prikaze označenih objekata, nadmašio je druge metode
detekcije, uključujući model deformabilnog dijela (engl. DPM - Deformable Parts Models) i
R-CNN kada generalizira prirodne slike među slikama poput umjetničkih djela.
Zbog YOLO-ove generalizacije i primjenjivosti u novim domenama i neočekivanim
rezultatima, smatra se jednim od najboljih algoritama za detekciju objekata u domeni. Iako
YOLO ima mnogo jedinstvenih prednosti, ima i slabosti. Jedna od značajnih slabosti YOLO-a
su njegova prostorna ograničenja na graničnim okvirima. Ova se prostorna ograničenja
održavaju jer svaka ćelija može predvidjeti samo dvije kutije i jednu klasu. Ograničava broj
predvidljivih objekata međusobno u blizini u skupinama (kao što je prepoznavanje jata ptica,
košara sličnog voća). Budući da se poučava samo putem ulaznih podataka, YOLO također ima
slabost u generaliziranju objekata u neobičnim ili novim omjerima. Međutim, ovo bi se moglo
smatrati općenitijim problemom u domeni detekcije objekata. Budući da model koristi samo
relativno grube značajke za predviđanje, arhitektura ima nekoliko slojeva uzorkovanja prema
dolje iz ulaznih slika, što se može spomenuti kao opća slabost YOLO-a. U usporedbi s idealnim
algoritmom, YOLO-ova funkcija gubitka (koja aproksimira performanse detekcije) tretira
pogreške s istim gubitkom unatoč veličini kutija objekata. To nije korisno jer mala pogreška u
malom polju nije ekvivalentna maloj pogrešci u velikom polju, što ima značajniji učinak na
IoU, dajući na kraju netočne lokalizacije. Stoga se ovo može uzeti kao neka od područja koja
bi YOLO algoritam mogao poboljšati.

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].

4.1 Baza podataka


Slike za treniranje, validaciji i testiranje su preuzete iz posebno razvijene baze podataka
slika, nazvanoj HERIDAL koja se nalazi na sljedećoj poveznice:
http://ipsar.fesb.unist.hr/HERIDAL%20database.html.
Za skup podataka (engl. dataset) je korištena klasa čovjek. Izvorna baza fotografija i anotacija
je u Pascal VOC formatu, pa je prije korištenja skupa podataka potrebno napraviti pretvorbu iz
Pascal VOC anotacija za klasu koju koristimo u skupu podataka u format za YOLOv4 (u ovom
slučaju anotacije za klasu ljudskog lica). Najprije je napravljen skup podataka s 1 000 slika po
klasi. Taj skup podataka je korišten da se provede više treninga s različitim parametrima kako
bi se istražilo da li različiti parametri utječu na krajnji rezultat. Nakon toga, napravljen je skup
podataka s 5 000 slika po klasi kako bi se istražilo da li i broj slika utječe na krajnji rezultat.
Također, istražilo se da li pomoću prosječnog gubitka prilikom treninga s jednom klasom

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.

4.3 Google Colaboratory


Colaboratory, ili skraćeno „Colab“, proizvod je Google Research-a. Colab svakome
omogućuje pisanje i izvršavanje proizvoljnog Python kôda putem preglednika, a posebno je
prikladan za strojno učenje, analizu podataka i obrazovanje. Colab je hostirana usluga Jupyter
bilježnice koja ne zahtjeva postavljanje za korištenje, a istovremeno pruža besplatan pristup
računalnim resursima uključujući GPU-ove. Jupyter je projekt otvorenog kôda na kojem se
Colab temelji. Colab omogućuje korištenje i dijeljenje Jupyter prijenosnih računala s drugima
bez potrebe za preuzimanjem, instaliranjem ili pokretanjem bilo čega. Colab resursi nisu
zajamčeni i nisu neograničeni, a ograničenja korištenja ponekad variraju. To je neophodno
kako bi Colab mogao besplatno pružati resurse.

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].

4.4 Treniranje vlastitog detektora

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

4.4.1 Korak 1: Omogućiti korištenje grafičke kartice unutar Google Colab-a


Kako bi detekcija bila 100 puta brža nego kod korištenja CPU, potrebno je u Google
Colaboratory-u omogućiti korištenje GPU (prikazano na slikama 4.1, 4.2 i 4.3). GPU se
omogućava na sljedeći način:
Odabirom „Edit” na alatnoj traci:

Slika 4.1 – Ulazak u postavke za omogućavanje korištenje grafičke kartice

Potrebno je odabrati „Notebook settings” u padajućem izborniku:

Slika 4.2 – Ulazak u postavke za omogućavanje korištenje grafičke kartice

Kod „Hardware accelerator” potrebno je odabrati GPU i nakon toga kliknuti „Save“:

26
Slika 4.3 - Omogućavanje korištenje grafičke kartice

Grafička kartica je sada omogućena za korištenje.

4.4.2 Korak 2: Kloniranje Darknet repozitorija i podešavanje parametara


Sljedeći korak je kloniranje repozitorija Darknet-a izvođenjem naredbe na slici 4.4 te
podešavanje parametara unutar datoteke Makefile izvođenjem naredbe na slici 4.5 kako bi
omogućili korištenje OpenCV i GPU za klonirani repozitorij. Provjeru dostupnosti CUDA
arhitekture izvršavamo naredbom prikazanoj na slici 4.6. Nakon toga potrebno je pokrenuti
naredbu make darknet (Slika 4.7) koja će omogućiti da se datoteke za izvršavanje mogu
pokretati.

Slika 4.4 – Kloniranje Darkneta

Slika 4.5 – Podešavanje parametara unutar Makefile dokumenta

Slika 4.6 – Provjera dostupnosti CUDA arhitekture

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

4.4.3 Korak 1: Prikupljanje i označavanje prilagođenog skupa podataka

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.

Slika 4.9 – Prikaz pretvaranja formata oznaka

Slika 4.10 – Odabir formata oznaka za YOLOv4

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.

Preporučeno je preimenovanje mape skupa podataka trening sa svojim slikama i tekstualnim


datotekama na lokalnom računalu da se zove obj, a zatim treba stvoriti .zip mapu mape obj.
Nakon toga potrebno je učitati .zip datoteku na Google Drive. Isto treba učiniti i sa skupom
podataka za provjeru valjanosti, ali pod nazivom test. Sada na Google Drive-u postoje obj.zip
i test.zip. To će uvelike smanjiti vrijeme potrebno za prijenos vlastitog skupa podataka u oblak
virtualne mašine.

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.

Slika 4.12 – Kopiranje .zip datoteka na oblak virtualne mašine

Sljedeći korak prikazan ispod na slici 4.13 je raspakiranje .zip datoteka unutar /darknet/data
mape.

Slika 4.13 – Raspakiranje .zip datoteka

4.4.5 Korak 3: Konfiguriranje datoteka za trening

Sljedeći korak uključuje pravilno konfiguriranje prilagođenih datoteka .cfg, obj.data,


obj.names, train.txt i test.txt. Važno je sve ove datoteke konfigurirati s krajnjim oprezom male
pogreške mogu uzrokovati velike probleme s vašim prilagođenim treningom. Slika 4.14
označava naredbu kojom se kopira konfiguracijska datoteka na vlastiti Google Drive kako bi
je mogli modificirati.

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”).

Slika 4.15 – Odabir uređivača kôda za prilagodbu datoteke

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)

Općenito, za bilo koji detektor, varijable se postavljaju na sljedeći način:


max_batches = (broj klasa) * 2000
Vrijednost ne bi smjela biti manje od 6000. Primjerice, ukoliko se trenira 1, 2 ili 3 klase to će
biti 6000, međutim detektor za 5 klasa bi imao max_batches = 10000.

31
steps = (80% max_batches), (90% max_batches)
Primjerice, ako je max_batches = 10000, tada je varijabla steps = 8000, 9000.

filters = (broj klasa + 5) * 3


Dakle, za treniranje jedne klase filtri su jednaki 18, ali za 4 klase su filtri su jednaki 27.

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.

Nakon što je dovršeno uređivanje konfiguracijske datoteke, te su spremljene promjene,


potrebno je vratiti konfiguracijsku datoteku nazad u oblak virtualne mašine naredbom na slici
4.16.

Slika 4.16 – Vraćanje konfiguracijske datoteke nazad u oblak virtualne mašine

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“.

Slika 4.17 – Datoteka obj.names koja sadrži klasu

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.

Slika 4.19 – Kopiranje datoteka na oblak virtualne mašine

Posljednje konfiguracijske datoteke potrebne prije početka treniranja prilagođenog detektora


su datoteke train.txt i test.txt koje sadrže relativne putove do svih slika treninga i slika za
provjeru valjanosti.
Na slikama 4.20 i 4.21 prikazane su datoteke napisane u Python programskom jeziku. Prvi kôd
otvara putanju do slika za treniranje u mapi obj te prolazi kroz mapu, provjerava završava li
slika s datotečnom ekstenzijom .jpg i sprema nazive svake slike u novi redak. Popis slika za
treniranje je spremljen u datoteku pod nazivom train.txt. Drugi kôd radi identično kao i prvi
kôd, jedina razlika je što učitava slike za validaciju u mapi test te sprema popis slika u datoteku
pod nazivom test.txt.

Slika 4.20 - Skripta za generiranje popisa svih slika za treniranje

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.

Slika 4.22 – Prijenos skripti u oblak virtualne mašine

Nakon kopiranja, slijedi pokretanje naredbi za generiranje datoteka (Slika 4.23) te


provjeravanje uspješnosti izvršavanja naredbe (Slika 4.24). Ukoliko je naredba uspješno
izvršena, unutar darknet/data, pojavit će se dvije nove datoteke train.txt i test.txt.

Slika 4.23 – Pokretanje skripti za generiranje datoteka train.txt i test.txt

Slika 4.24 – Provjera uspješnosti izvršavanja skripti

Primjer uspješno generirane datoteke test.txt nalazi se na slici 4.25.

34
Slika 4.25 – Prikaz datoteke test.txt nakon uspješnog izvršavanja skripte

4.4.6 Korak 4: Preuzimanje unaprijed uvježbanih težina za konvolucijske slojeve

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.

Slika 4.26 – Preuzimanje unaprijed uvježbanih težina za konvolucijske slojeve

4.4.7 Korak 5: Uvježbavanje vlastitog prilagođenog detektora objekata

U prethodnim koracima objašnjeni su postupak pripreme podataka i konfiguracije datoteka


koje pomažu modelu kako bi mogao uspješno trenirati. Sada je prilagođeni detektor objekata
YOLOv4 spreman za treniranje na klasi za koju smo pripremi podatke. Na slici 4.27 definiran
je format naredbe za pokretanje treniranja detektora.

Slika 4.27 – Format naredbe za pokretanje treninga

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].

Slika 4.28 – Funkcija koja održava korisnika aktivnim

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.

Slika 4.29 – Pokretanje treniranja vlastitog modela

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.30 – Naredba za prikaz grafikona napretka treniranja

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.

Slika 4.32 prikazuje naredbu za pokretanje treninga iz posljednje spremljene datoteke s


težinama tako da nije potrebno ponovno pokretati trening ispočetka.

Slika 4.32 – Pokretanje prekinutog treninga iz posljednje spremljene datoteke

4.5 Provjera srednje prosječne preciznosti (mAP) treniranog modela

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.34 - Prikaz srednje prosječne preciznosti nakon 6000 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%.

Slika 4.35 – Srednja prosječna preciznost (mAP) nakon 1000 iteracija

38
Slika 4.36 - Srednja prosječna preciznost (mAP) nakon 6000 iteracija

4.6 Testiranje vlastitog detektora

Nakon uspješnog treniranja detektora i nakon provjere srednje prosječne vrijednosti


preciznosti, vrijeme je za testiranje detektora. Nizom naredbi prikazanih na slici 4.37 mijenjaju
se vrijednosti unutar konfiguracijske datoteke. Prvo je potrebno pozicionirati se unutar
direktorija u kojem je .cfg datoteka, a zatim vrijednost batch koja je bila jednaka 64 promijeniti
na novu vrijednost koja je jednaka 1, te vrijednost subdivisions koja je prethodno bila jednaka
16 postaviti također na novu vrijednost 1. Nakon toga potrebno je vratiti se u prethodni
direktorij, odnosno u korijenski direktorij Darkneta.

Slika 4.37 – Postavljanje konfiguracijske datoteke na testni način

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.

Slika 4.38 – Pokretanje detektora na slici spremljenoj unutar direktorija /mydrive/images/test

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.

Slika 4.39 – Originalna slika test_GRO_0012.jpg

40
Slika 4.40 – Slika test_GRO_0012.jpg nakon detekcije ljudi

4.7 Analiza i usporedba rezultata za različit broj iteracija


Prilikom validacije i testiranja YOLOv4 modela korišteno je ukupno 101 slika iz
HERIDAL baze podataka, što predstavlja otprilike 10% slika od cjelokupnog skupa podataka.
Ključna stvar je da su za validaciju i testiranje korištene različite slike od onih slika koje su
korištene u treniranju modela. Ukoliko se koriste iste slike za treniranje i testiranje modela,
rezultati bi mogli pokazivati nestvarni rezultat, odnosno prikazati model boljim nego što on
zapravo je.
Na sljedećim slikama prikazana je usporedba rezultata za model nakon 1000 iteracija (Slika
4.41) i nakon 6000 iteracija (Slika 4.42). Obe slike detektiraju objekte, odnosno ljude na
slikama, ali model nakon 1000 iteracija je krivo detektirao jednu od osoba.

41
Slika 4.41 - Slika test_BRA_0012.jpg nakon 1000 iteracija

Slika 4.42 - Slika test_BRA_0012.jpg nakon 6000 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.

Kako bi bolje razumjeli i usporedili rezultate izvršavanja detekcije na slikama, potrebno je


objasniti ključne metrike.
Točno pozitivni (engl. TP - True positive) znači da je model predvidio oznaku i ispravno se
podudara prema osnovnoj istini. Točno negativni (engl. TN - True negative) označava da
model ne predviđa oznaku i nije dio temeljne istine. Lažno pozitivni (engl. FP - False positive)
označava da je model predvidio oznaku, ali ona nije dio temeljne istine. Lažno negativni (engl.
FN - False negative) označava da model ne predviđa oznaku, ali je dio temeljne istine.

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:
𝑇𝑃 + 𝑇𝑁 𝑏𝑟𝑜𝑗 𝑡𝑜č𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑏𝑟𝑜𝑗 𝑡𝑜č𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎
= =
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁 𝑏𝑟𝑜𝑗 𝑢𝑘𝑢𝑝𝑛𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 𝑣𝑒𝑙𝑖č𝑖𝑛𝑎 𝑑𝑎𝑡𝑎𝑠𝑒𝑡𝑎

Preciznost (engl. Precision) je mjera koliko je pozitivnih predviđanja točnih (istinskih


pozitivnih).
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.

Tablica 4.1 Usporedba rezultata ovisno o broju iteracija

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

2000 812 43,41% 174 108 163 0,52 0,62 43,40% 21 s

3000 806 53,47% 185 103 152 0,55 0,64 49,69% 21 s

4000 562 54,58% 165 48 172 0,49 0,77 53,47% 17 s

5000 538 55,94% 191 67 146 0,57 0,74 54,58% 21 s

6000 534 55,94% 191 67 146 0,57 0,74 55,94% 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

U ovom diplomskom radu opisane su temeljne značajke YOLO algoritma za detekciju


jednog ili više objekata na slici. Na početku radu opisane su konvolucijske neuronske mreže i
njihova arhitektura jer su upravo konvolucijske neuronske mreže pokazale impresivne rezultate
pri detekciji objekata na digitalnoj slici, za razliku od drugih vrsta neuronskih mreža, što je i
glavni razlog zašto ih YOLO algoritam koristi. Objašnjen je i princip rada algoritma, te glavne
značajke i nedostaci algoritma. Kroz rad je napravljen pregled i ostalih verzija YOLO
algoritma, odnosno opisani su: YOLOv2 (YOLO9000), treća verzija nazvana YOLOv3, verzije
YOLOv4 i YOLOv5, te PP-YOLO. Naglasak je na verziju YOLOv4 jer je upravo korištenjem
te verzije implementiran model za detekciju klase čovjeka na zračnim fotografijama iz baze
HERIDAL.
Rad je realiziran pomoću Google Colaboratory-a, proizvoda koji omogućava pokretanje
Python kôda u Jupiter bilježnici, te omogućava korištenje besplatnih resursa kao što je snaga
grafičke kartice. Osim Google Colaboratory-a, korišten je programski okvir otvorenog kôda
Darknet koji sadrži YOLO algoritam i koji je napisan pomoću C programskog jezika i CUDA
platforme. Realizirani model za detekciju zahtjeva ulaznu sliku korisnika te odgovara slanjem
slike koja sadrži granične okvire detektiranog objekta i vrijednost između 0 i 1 koja označava
ocjenu pouzdanosti. Algoritam postiže srednju prosječnu preciznost (mAP) od 55,94%, što je
poprilično dobar rezultat s obzirom na mali broj fotografija. Algoritam bi se mogao poboljšati
u smislu preciznosti na način da se poveća broj slika za treniranje i testiranje, te da se treniranje
radi na većoj veličini slike, što bi utjecalo na brzinu algoritma.

KLJUČNE RIJEČI: YOLO, Neuronske mreže, CNN, Darknet, Google Colab

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.

KEYWORDS: YOLO, Neural networks, CNN, Darknet, Google Colab

51

You might also like