Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 11 KB

File metadata and controls

179 lines (101 loc) · 11 KB

Detectarea Obiectelor

Modelele de clasificare a imaginilor pe care le-am abordat până acum au luat o imagine și au produs un rezultat categoric, cum ar fi clasa 'număr' într-o problemă MNIST. Totuși, în multe cazuri nu dorim doar să știm că o imagine conține obiecte - vrem să putem determina locația lor exactă. Acesta este scopul detectării obiectelor.

Detectarea Obiectelor

Imagine de pe site-ul YOLO v2

O Abordare Naivă pentru Detectarea Obiectelor

Presupunând că dorim să găsim o pisică într-o imagine, o abordare foarte naivă pentru detectarea obiectelor ar fi următoarea:

  1. Împărțim imaginea în mai multe secțiuni.
  2. Aplicăm clasificarea imaginilor pe fiecare secțiune.
  3. Secțiunile care generează o activare suficient de mare pot fi considerate ca conținând obiectul în cauză.

Detectare Naivă a Obiectelor

Imagine din Notebook-ul de exerciții

Totuși, această abordare este departe de a fi ideală, deoarece permite algoritmului să localizeze foarte imprecis caseta de delimitare a obiectului. Pentru o localizare mai precisă, trebuie să aplicăm un fel de regresie pentru a prezice coordonatele casetelor de delimitare - și pentru aceasta, avem nevoie de seturi de date specifice.

Regresie pentru Detectarea Obiectelor

Acest articol de blog oferă o introducere excelentă în detectarea formelor.

Seturi de Date pentru Detectarea Obiectelor

Este posibil să întâlniți următoarele seturi de date pentru această sarcină:

  • PASCAL VOC - 20 clase
  • COCO - Obiecte Comune în Context. 80 clase, casete de delimitare și măști de segmentare

COCO

Metrice pentru Detectarea Obiectelor

Intersecția peste Uniune

În timp ce pentru clasificarea imaginilor este ușor să măsurăm cât de bine performează algoritmul, pentru detectarea obiectelor trebuie să măsurăm atât corectitudinea clasei, cât și precizia locației casetei de delimitare inferate. Pentru aceasta din urmă, folosim așa-numita Intersecția peste Uniune (IoU), care măsoară cât de bine se suprapun două casete (sau două zone arbitrare).

IoU

Figura 2 din acest articol excelent despre IoU

Ideea este simplă - împărțim aria de intersecție dintre două figuri la aria uniunii lor. Pentru două arii identice, IoU ar fi 1, în timp ce pentru arii complet separate va fi 0. În alte cazuri, va varia de la 0 la 1. De obicei, luăm în considerare doar acele casete de delimitare pentru care IoU depășește o anumită valoare.

Precizia Medie

Să presupunem că dorim să măsurăm cât de bine este recunoscută o anumită clasă de obiecte $C$. Pentru a măsura acest lucru, folosim metrica Precizia Medie, care se calculează astfel:

  1. Considerăm curba Precizie-Recall care arată acuratețea în funcție de o valoare de prag de detectare (de la 0 la 1).
  2. În funcție de prag, vom detecta mai multe sau mai puține obiecte în imagine și vom obține valori diferite de precizie și recall.
  3. Curba va arăta astfel:

Imagine din NeuroWorkshop

Precizia Medie pentru o clasă dată $C$ este aria de sub această curbă. Mai precis, axa Recall este de obicei împărțită în 10 părți, iar Precizia este mediată pe toate aceste puncte:

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP și IoU

Vom lua în considerare doar acele detectări pentru care IoU depășește o anumită valoare. De exemplu, în setul de date PASCAL VOC, de obicei $\mbox{IoU Threshold} = 0.5$ este presupus, în timp ce în COCO AP este măsurat pentru diferite valori ale $\mbox{IoU Threshold}$.

Imagine din NeuroWorkshop

Precizia Medie Generală - mAP

Principala metrică pentru detectarea obiectelor se numește Precizia Medie Generală, sau mAP. Este valoarea Preciziei Medii, mediată pe toate clasele de obiecte și, uneori, și pe $\mbox{IoU Threshold}$. Procesul de calculare a mAP este descris în detaliu în acest articol de blog), și de asemenea aici cu exemple de cod.

Diferite Abordări pentru Detectarea Obiectelor

Există două clase largi de algoritmi de detectare a obiectelor:

  • Rețele de Propunere a Regiunilor (R-CNN, Fast R-CNN, Faster R-CNN). Ideea principală este de a genera Regiuni de Interes (ROI) și de a aplica CNN pe acestea, căutând activarea maximă. Este oarecum similar cu abordarea naivă, cu excepția faptului că ROI-urile sunt generate într-un mod mai inteligent. Unul dintre principalele dezavantaje ale acestor metode este că sunt lente, deoarece necesită multe treceri ale clasificatorului CNN peste imagine.
  • Metode One-pass (YOLO, SSD, RetinaNet). În aceste arhitecturi, proiectăm rețeaua pentru a prezice atât clasele, cât și ROI-urile într-o singură trecere.

R-CNN: CNN Bazat pe Regiuni

R-CNN folosește Selective Search pentru a genera o structură ierarhică de regiuni ROI, care sunt apoi trecute prin extractoare de caracteristici CNN și clasificatoare SVM pentru a determina clasa obiectului, și regresie liniară pentru a determina coordonatele casetei de delimitare. Lucrare oficială

RCNN

Imagine de van de Sande et al. ICCV’11

RCNN-1

Imagini din acest blog

F-RCNN - Fast R-CNN

Această abordare este similară cu R-CNN, dar regiunile sunt definite după ce straturile de convoluție au fost aplicate.

FRCNN

Imagine din Lucrarea Oficială, arXiv, 2015

Faster R-CNN

Ideea principală a acestei abordări este de a folosi o rețea neuronală pentru a prezice ROI-urile - așa-numita Rețea de Propunere a Regiunilor. Lucrare, 2016

FasterRCNN

Imagine din lucrarea oficială

R-FCN: Rețea Complet Convoluțională Bazată pe Regiuni

Acest algoritm este chiar mai rapid decât Faster R-CNN. Ideea principală este următoarea:

  1. Extragem caracteristici folosind ResNet-101.
  2. Caracteristicile sunt procesate de Position-Sensitive Score Map. Fiecare obiect din $C$ clase este împărțit în regiuni $k\times k$, și antrenăm pentru a prezice părți ale obiectelor.
  3. Pentru fiecare parte din regiunile $k\times k$, toate rețelele votează pentru clasele de obiecte, iar clasa de obiect cu votul maxim este selectată.

r-fcn image

Imagine din lucrarea oficială

YOLO - You Only Look Once

YOLO este un algoritm în timp real, cu o singură trecere. Ideea principală este următoarea:

  • Imaginea este împărțită în regiuni $S\times S$.
  • Pentru fiecare regiune, CNN prezice $n$ obiecte posibile, coordonatele casetei de delimitare și încrederea=probabilitatea * IoU.

YOLO

Imagine din lucrarea oficială

Alte Algoritmi

✍️ Exerciții: Detectarea Obiectelor

Continuă învățarea în următorul notebook:

ObjectDetection.ipynb

Concluzie

În această lecție ai explorat rapid toate modurile diferite prin care detectarea obiectelor poate fi realizată!

🚀 Provocare

Citește aceste articole și notebook-uri despre YOLO și încearcă-le singur:

Recapitulare & Studiu Individual