10 KiB
Detekcija objekata
Modeli za klasifikaciju slika s kojima smo se dosad susretali uzimaju sliku i proizvode kategorijski rezultat, poput klase 'broj' u MNIST problemu. Međutim, u mnogim slučajevima ne želimo samo znati da slika prikazuje objekte – želimo odrediti njihovu točnu lokaciju. Upravo to je cilj detekcije objekata.
Prethodni kviz
Slika s YOLO v2 web stranice
Naivan pristup detekciji objekata
Pretpostavimo da želimo pronaći mačku na slici. Vrlo naivan pristup detekciji objekata bio bi sljedeći:
- Podijeliti sliku na niz pločica.
- Provoditi klasifikaciju slike na svakoj pločici.
- Pločice koje rezultiraju dovoljno visokom aktivacijom mogu se smatrati da sadrže traženi objekt.
Slika iz vježbenice
Međutim, ovaj pristup je daleko od idealnog jer omogućuje algoritmu da vrlo neprecizno odredi okvir objekta. Za precizniju lokaciju potrebno je provesti neku vrstu regresije kako bi se predvidjele koordinate okvira – a za to su potrebni specifični skupovi podataka.
Regresija za detekciju objekata
Ovaj blog post pruža odličan uvod u detekciju oblika.
Skupovi podataka za detekciju objekata
Možete naići na sljedeće skupove podataka za ovu zadaću:
- PASCAL VOC – 20 klasa
- COCO – Uobičajeni objekti u kontekstu. 80 klasa, okviri i maske za segmentaciju
Metrike za detekciju objekata
Presjek kroz uniju (Intersection over Union)
Dok je za klasifikaciju slika lako izmjeriti koliko dobro algoritam radi, za detekciju objekata moramo mjeriti i točnost klase, kao i preciznost lokacije predviđenog okvira. Za ovo drugo koristimo metodu Presjek kroz uniju (IoU), koja mjeri koliko se dobro dva okvira (ili dva proizvoljna područja) preklapaju.
Slika 2 iz ovog izvrsnog blog posta o IoU
Ideja je jednostavna – podijelimo područje presjeka između dvije figure s područjem njihove unije. Za dva identična područja IoU bi bio 1, dok bi za potpuno nepovezana područja bio 0. Inače će varirati od 0 do 1. Obično uzimamo u obzir samo one okvire za koje je IoU iznad određene vrijednosti.
Prosječna preciznost (Average Precision)
Pretpostavimo da želimo izmjeriti koliko dobro je prepoznata određena klasa objekata C. Za mjerenje koristimo metriku Prosječne preciznosti, koja se računa na sljedeći način:
- Razmotrite krivulju Preciznost-Poziv koja pokazuje točnost ovisno o vrijednosti praga detekcije (od 0 do 1).
- Ovisno o pragu, dobit ćemo više ili manje detektiranih objekata na slici, te različite vrijednosti preciznosti i poziva.
- Krivulja će izgledati ovako:
Slika iz NeuroWorkshop
Prosječna preciznost za određenu klasu C je područje ispod ove krivulje. Preciznije, os poziva obično se dijeli na 10 dijelova, a preciznost se prosječuje preko svih tih točaka:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP i IoU
Razmatramo samo one detekcije za koje je IoU iznad određene vrijednosti. Na primjer, u PASCAL VOC skupu podataka obično se pretpostavlja \mbox{IoU Threshold} = 0.5, dok se u COCO skupu AP mjeri za različite vrijednosti \mbox{IoU Threshold}.
Slika iz NeuroWorkshop
Prosječna preciznost po klasama – mAP
Glavna metrika za detekciju objekata naziva se Prosječna preciznost po klasama, ili mAP. To je vrijednost Prosječne preciznosti, prosječna preko svih klasa objekata, a ponekad i preko \mbox{IoU Threshold}. Detaljan proces izračuna mAP opisan je
u ovom blog postu), kao i ovdje s primjerima koda.
Različiti pristupi detekciji objekata
Postoje dvije široke kategorije algoritama za detekciju objekata:
- Mreže za predlaganje regija (R-CNN, Fast R-CNN, Faster R-CNN). Glavna ideja je generirati regije interesa (ROI) i provoditi CNN preko njih, tražeći maksimalnu aktivaciju. Ovo je donekle slično naivnom pristupu, osim što se ROI generiraju na pametniji način. Jedan od glavnih nedostataka ovih metoda je što su spore jer zahtijevaju mnogo prolaza CNN klasifikatora preko slike.
- Jedan prolaz (YOLO, SSD, RetinaNet) metode. U tim arhitekturama dizajniramo mrežu da predviđa i klase i ROI u jednom prolazu.
R-CNN: CNN temeljen na regijama
R-CNN koristi Selektivno pretraživanje za generiranje hijerarhijske strukture ROI regija, koje se zatim prosljeđuju kroz CNN ekstraktore značajki i SVM klasifikatore za određivanje klase objekta, te linearnu regresiju za određivanje koordinata okvira. Službeni rad
Slika iz van de Sande et al. ICCV’11
Slike iz ovog bloga
F-RCNN – Brzi R-CNN
Ovaj pristup je sličan R-CNN-u, ali regije se definiraju nakon što su primijenjeni slojevi konvolucije.
Slika iz službenog rada, arXiv, 2015
Brži R-CNN
Glavna ideja ovog pristupa je korištenje neuronske mreže za predviđanje ROI – takozvane Mreže za predlaganje regija. Rad, 2016
Slika iz službenog rada
R-FCN: Potpuno konvolucijska mreža temeljena na regijama
Ovaj algoritam je čak brži od Faster R-CNN-a. Glavna ideja je sljedeća:
- Ekstrahiramo značajke koristeći ResNet-101.
- Značajke se obrađuju pomoću Pozicijski osjetljive mape rezultata. Svaki objekt iz
Cklasa dijeli se nak\times kregije, i treniramo mrežu da predviđa dijelove objekata. - Za svaki dio iz
k\times kregija sve mreže glasaju za klase objekata, a klasa objekta s najviše glasova se odabire.
Slika iz službenog rada
YOLO – You Only Look Once
YOLO je algoritam za detekciju u stvarnom vremenu s jednim prolazom. Glavna ideja je sljedeća:
- Slika se dijeli na
S\times Sregije. - Za svaku regiju, CNN predviđa
nmogućih objekata, koordinate okvira i povjerenje=vjerojatnost * IoU.
Slika iz službenog rada
Ostali algoritmi
- RetinaNet: službeni rad
- SSD (Single Shot Detector): službeni rad
✍️ Vježbe: Detekcija objekata
Nastavite učenje u sljedećoj vježbenici:
Zaključak
U ovoj lekciji ste prošli kroz razne načine na koje se detekcija objekata može ostvariti!
🚀 Izazov
Pročitajte ove članke i vježbenice o YOLO-u i isprobajte ih sami:
- Dobar blog post koji opisuje YOLO
- Službena stranica
- Yolo: Keras implementacija, vježbenica korak-po-korak
- Yolo v2: Keras implementacija, vježbenica korak-po-korak
Kviz nakon predavanja
Pregled i samostalno učenje
- Detekcija objekata autora Nikhila Sardane
- Dobra usporedba algoritama za detekciju objekata
- Pregled algoritama dubokog učenja za detekciju objekata
- Uvod u osnovne algoritme za detekciju objekata korak-po-korak
- Implementacija Faster R-CNN-a u Pythonu za detekciju objekata









