Ultima actualizare la 27 ianuarie 2021
Poate fi o provocare pentru începători să facă distincția între diferite sarcini de viziune computerizată legate între ele.
De exemplu, clasificarea imaginilor este simplă, dar diferențele dintre localizarea obiectelor și detectarea obiectelor pot fi confuze, mai ales atunci când toate cele trei sarcini pot fi la fel de bine denumite recunoaștere de obiecte.
Clasificarea imaginilor implică atribuirea unei etichete de clasă unei imagini, în timp ce localizarea obiectelor implică desenarea unei cutii de delimitare în jurul unuia sau mai multor obiecte dintr-o imagine. Detectarea obiectelor este mai dificilă și combină aceste două sarcini și trasează o cutie delimitatoare în jurul fiecărui obiect de interes din imagine și le atribuie o etichetă de clasă. Împreună, toate aceste probleme sunt denumite recunoaștere a obiectelor.
În această postare, veți descoperi o introducere delicată în problema recunoașterii obiectelor și modelele de învățare profundă de ultimă generație concepute pentru a o aborda.
După ce veți citi această postare, veți ști:
- Recunoașterea obiectelor se referă la o colecție de sarcini conexe pentru identificarea obiectelor în fotografiile digitale.
- Rețelele neuronale convoluționale bazate pe regiune, sau R-CNN, sunt o familie de tehnici pentru abordarea sarcinilor de localizare și recunoaștere a obiectelor, concepute pentru performanțe de model.
- You Only Look Once, sau YOLO, este o a doua familie de tehnici de recunoaștere a obiectelor, concepute pentru viteză și utilizare în timp real.
Dă startul proiectului tău cu noua mea carte Deep Learning for Computer Vision, care include tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.
Să începem.
A Gentle Introduction to Object Recognition With Deep Learning
Fotografie de Bart Everson, unele drepturi rezervate.
Overview
Acest tutorial este împărțit în trei părți; acestea sunt:
- Ce este recunoașterea obiectelor?
- Familia de modele R-CNN
- Familia de modele YOLO
Vreți rezultate cu Deep Learning pentru Computer Vision?
Faceți acum cursul meu rapid gratuit de 7 zile prin e-mail (cu cod de probă).
Click pentru a vă înscrie și primiți și o versiune gratuită a cursului în format PDF Ebook.
Download Your FREE Mini-Course
Ce este Recunoașterea obiectelor?
Recunoașterea obiectelor este un termen general pentru a descrie o colecție de sarcini de viziune computerizată înrudite care implică identificarea obiectelor în fotografiile digitale.
Clasificarea imaginilor implică prezicerea clasei unui obiect dintr-o imagine. Localizarea obiectelor se referă la identificarea locației unuia sau mai multor obiecte într-o imagine și la desenarea unei cutii de abundență în jurul întinderii lor. Detectarea obiectelor combină aceste două sarcini și localizează și clasifică unul sau mai multe obiecte dintr-o imagine.
Când un utilizator sau un practician se referă la „recunoașterea obiectelor”, acesta se referă adesea la „detectarea obiectelor”.
… vom folosi termenul de recunoaștere a obiectelor în sens larg pentru a cuprinde atât clasificarea imaginilor (o sarcină care necesită un algoritm pentru a determina ce clase de obiecte sunt prezente în imagine), cât și detectarea obiectelor (o sarcină care necesită un algoritm pentru a localiza toate obiectele prezente în imagine
– ImageNet Large Scale Visual Recognition Challenge, 2015.
Ca atare, putem distinge între aceste trei sarcini de viziune prin calculator:
- Image Classification: Predicția tipului sau clasei unui obiect dintr-o imagine.
- Intrare: O imagine cu un singur obiect, cum ar fi o fotografie.
- Ieșire: O etichetă de clasă (de exemplu, unul sau mai multe numere întregi care sunt puse în corespondență cu etichetele de clasă).
- Localizarea obiectelor: Localizarea prezenței obiectelor într-o imagine și indicarea locației acestora cu ajutorul unei cutii de delimitare.
- Intrare:
- Intrare:
- Intrare: O imagine cu unul sau mai multe obiecte, cum ar fi o fotografie.
- Rezultat: Una sau mai multe cutii de delimitare (de exemplu, definite de un punct, lățime și înălțime).
- Detectarea obiectelor: Localizează prezența obiectelor cu o cutie delimitatoare și tipurile sau clasele obiectelor localizate într-o imagine.
- Intrare: O imagine cu unul sau mai multe obiecte, cum ar fi o fotografie.
- Output: Una sau mai multe cutii de delimitare (de exemplu, definite de un punct, lățime și înălțime) și o etichetă de clasă pentru fiecare cutie de delimitare.
O altă extensie a acestei defalcări a sarcinilor de viziune computerizată este segmentarea obiectelor, denumită și „segmentarea instanțelor de obiecte” sau „segmentarea semantică”, în care instanțele obiectelor recunoscute sunt indicate prin evidențierea pixelilor specifici ai obiectului în loc de o cutie de delimitare grosieră.
Din această defalcare, putem vedea că recunoașterea obiectelor se referă la o suită de sarcini dificile de viziune pe calculator.
Overview of Object Recognition Computer Vision Tasks
Cele mai multe dintre inovațiile recente în problemele de recunoaștere a imaginilor au venit ca parte a participării la sarcinile ILSVRC.
Aceasta este o competiție academică anuală cu o provocare separată pentru fiecare dintre aceste trei tipuri de probleme, cu intenția de a promova îmbunătățiri independente și separate la fiecare nivel, care pot fi valorificate la scară mai largă. De exemplu, a se vedea lista celor trei tipuri de sarcini corespunzătoare de mai jos, preluată din documentul de analiză ILSVRC din 2015:
- Clasificarea imaginilor: Algoritmii produc o listă de categorii de obiecte prezente în imagine.
- Single-object localization: Algoritmii produc o listă a categoriilor de obiecte prezente în imagine, împreună cu o cutie delimitatoare aliniată la axă care indică poziția și scara unei instanțe a fiecărei categorii de obiecte.
- Detectarea obiectelor: Algoritmii produc o listă a categoriilor de obiecte prezente în imagine, împreună cu o cutie delimitatoare aliniată la axă care indică poziția și scara fiecărei instanțe a fiecărei categorii de obiecte.
Vezi că „localizarea unui singur obiect” este o versiune mai simplă a definiției mai largi a „localizării obiectelor”, care limitează sarcinile de localizare la obiectele de un singur tip din cadrul unei imagini, ceea ce putem presupune că este o sarcină mai ușoară.
Mai jos este un exemplu care compară localizarea unui singur obiect și detectarea obiectelor, preluat din lucrarea ILSVRC. Observați diferența dintre așteptările adevărului de bază în fiecare caz.
Compararea dintre localizarea unui singur obiect și detectarea obiectelor.Preluat din: ImageNet Large Scale Visual Recognition Challenge.
Performanța unui model de clasificare a imaginilor este evaluată folosind eroarea medie de clasificare între etichetele de clasă prezise. Performanța unui model pentru localizarea unui singur obiect este evaluată folosind distanța dintre caseta de delimitare așteptată și cea prezisă pentru clasa așteptată. În timp ce performanța unui model pentru recunoașterea obiectelor este evaluată folosind precizia și reamintirea pentru fiecare dintre cele mai bune cutii de delimitare a obiectelor cunoscute din imagine.
Acum că suntem familiarizați cu problema localizării și detectării obiectelor, să aruncăm o privire asupra unor modele recente de învățare profundă cu performanțe de top.
Familia de modele R-CNN
Familia de metode R-CNN se referă la R-CNN, care poate însemna „Regions with CNN Features” (Regiuni cu caracteristici CNN) sau „Region-Based Convolutional Neural Network” (Rețea neuronală convoluțională bazată pe regiuni), dezvoltată de Ross Girshick, et al.
Aceasta include tehnicile R-CNN, Fast R-CNN și Faster-RCNN concepute și demonstrate pentru localizarea și recunoașterea obiectelor.
Să aruncăm o privire mai atentă asupra punctelor principale ale fiecăreia dintre aceste tehnici, pe rând.
R-CNN
R-CNN a fost descrisă în lucrarea din 2014 de Ross Girshick, et al. de la UC Berkeley intitulat „Rich feature hierarchies for accurate object detection and semantic segmentation.”
Este posibil să fi fost una dintre primele aplicații de amploare și de succes ale rețelelor neuronale convoluționale la problema localizării, detectării și segmentării obiectelor. Abordarea a fost demonstrată pe seturi de date de referință, obținând atunci rezultate de ultimă oră pe setul de date VOC-2012 și pe setul de date de detectare a obiectelor ILSVRC-2013 de 200 de clase.
Modelul R-CNN propus de ei este alcătuit din trei module; acestea sunt:
- Modulul 1: Propunere de regiune. Generează și extrage propuneri de regiuni independente de categorie, de exemplu, cutii de delimitare candidate.
- Modulul 2: Extractor de caracteristici. Extragerea caracteristicilor din fiecare regiune candidată, de exemplu, utilizând o rețea neuronală convoluțională profundă.
- Modulul 3: Clasificatorul. Clasifică caracteristicile ca fiind una dintre clasele cunoscute, de exemplu, modelul de clasificare SVM liniar.
Arhitectura modelului este rezumată în imaginea de mai jos, preluată din lucrare.
Sumarul arhitecturii modelului R-CNNPrelucrat din ierarhii de caracteristici bogate pentru detectarea precisă a obiectelor și segmentarea semantică.
Se utilizează o tehnică de viziune pe calculator pentru a propune regiuni candidate sau cutii de delimitare a obiectelor potențiale din imagine, numită „căutare selectivă”, deși flexibilitatea designului permite utilizarea altor algoritmi de propunere de regiuni.
Extractorul de caracteristici utilizat de model a fost AlexNet deep CNN, care a câștigat concursul de clasificare a imaginilor ILSVRC-2012. Ieșirea CNN a fost un vector de 4.096 de elemente care descrie conținutul imaginii care este alimentat la un SVM liniar pentru clasificare, mai exact un SVM este antrenat pentru fiecare clasă cunoscută.
Este o aplicație relativ simplă și directă a CNN-urilor la problema localizării și recunoașterii obiectelor. Un dezavantaj al abordării este că este lentă, necesitând o trecere de extracție a caracteristicilor bazate pe CNN pentru fiecare dintre regiunile candidate generate de algoritmul de propunere a regiunilor. Aceasta este o problemă, deoarece lucrarea descrie modelul care operează cu aproximativ 2.000 de regiuni propuse pe imagine la momentul testului.
Codul sursă Python (Caffe) și MatLab pentru R-CNN, așa cum este descris în lucrare, a fost pus la dispoziție în depozitul R-CNN GitHub.
Fast R-CNN
Din cauza marelui succes al R-CNN, Ross Girshick, pe atunci la Microsoft Research, a propus o extensie pentru a aborda problemele de viteză ale R-CNN într-o lucrare din 2015 intitulată „R-CNN rapidă.”
Documentul se deschide cu o trecere în revistă a limitărilor R-CNN, care pot fi rezumate după cum urmează:
- Formarea este o conductă în mai multe etape. Implică pregătirea și operarea a trei modele separate.
- Formarea este costisitoare în spațiu și timp. Antrenarea unui CNN profund pe atât de multe propuneri de regiuni pe imagine este foarte lentă.
- Detectarea obiectelor este lentă. Efectuarea de predicții folosind un CNN profund pe atât de multe propuneri de regiune este foarte lentă.
A fost propusă o lucrare anterioară pentru a accelera tehnica numită rețele de punere în comun a piramidei spațiale, sau SPPnets, în lucrarea din 2014 „Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition”. Aceasta a accelerat extragerea caracteristicilor, dar a folosit în esență un tip de algoritm de memorare a trecerii înainte.
R-CNN rapidă este propusă ca un singur model în loc de o conductă pentru a învăța și a scoate regiuni și clasificări direct.
Arhitectura modelului ia ca intrare fotografia un set de propuneri de regiuni care sunt trecute printr-o rețea neuronală convoluțională profundă. Un CNN pre-antrenat, cum ar fi un VGG-16, este utilizat pentru extragerea caracteristicilor. Sfârșitul CNN-ului profund este un strat personalizat numit Region of Interest Pooling Layer, sau RoI Pooling, care extrage caracteristicile specifice pentru o anumită regiune candidată de intrare.
Sursa CNN-ului este apoi interpretată de un strat complet conectat, apoi modelul se bifurcă în două ieșiri, una pentru predicția clasei prin intermediul unui strat softmax, și alta cu o ieșire liniară pentru caseta de delimitare. Acest proces este apoi repetat de mai multe ori pentru fiecare regiune de interes dintr-o anumită imagine.
Arhitectura modelului este rezumată în imaginea de mai jos, preluată din lucrare.
Sumarul arhitecturii modelului Fast R-CNN.
Tomat din: Fast R-CNN.Modelul este semnificativ mai rapid pentru a se antrena și pentru a face predicții, dar necesită în continuare un set de regiuni candidate care să fie propuse împreună cu fiecare imagine de intrare.
Codul sursă Python și C++ (Caffe) pentru Fast R-CNN, așa cum este descris în lucrare, a fost pus la dispoziție într-un depozit GitHub.
Faster R-CNN
Arhitectura modelului a fost îmbunătățită în continuare atât pentru viteza de instruire, cât și pentru detecție de către Shaoqing Ren, et al. de la Microsoft Research în lucrarea din 2016 intitulată „Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks.”
Arhitectura a stat la baza rezultatelor de pe primul loc obținute atât în cadrul sarcinilor din cadrul concursului de recunoaștere și detectare a obiectelor ILSVRC-2015, cât și în cadrul concursului MS COCO-2015.
Arhitectura a fost concepută atât pentru a propune, cât și pentru a rafina propunerile de regiuni ca parte a procesului de instruire, denumită rețea de propuneri de regiuni, sau RPN (Region Proposal Network). Aceste regiuni sunt apoi utilizate împreună cu un model R-CNN rapid într-un singur model de proiectare. Aceste îmbunătățiri reduc atât numărul de propuneri de regiuni, cât și accelerează funcționarea în timp de testare a modelului până aproape de timp real, cu performanțe de ultimă generație.
… sistemul nostru de detecție are o rată de cadre de 5 fps (incluzând toate etapele) pe un GPU, atingând în același timp o precizie de ultimă generație în detectarea obiectelor pe seturile de date PASCAL VOC 2007, 2012 și MS COCO cu doar 300 de propuneri pe imagine. În cadrul concursurilor ILSVRC și COCO 2015, Faster R-CNN și RPN stau la baza propunerilor câștigătoare ale locului 1 în mai multe piste
– Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
Deși este vorba de un singur model unificat, arhitectura este compusă din două module:
- Modulul 1: Rețeaua de propuneri de regiuni. Rețea neuronală convoluțională pentru propunerea regiunilor și a tipului de obiect care trebuie luat în considerare în regiune.
- Modulul 2: Fast R-CNN. Rețea neuronală convoluțională pentru extragerea caracteristicilor din regiunile propuse și emiterea casetei de delimitare și a etichetelor de clasă.
Ambele module operează pe aceeași ieșire a unui CNN profund. Rețeaua de propunere a regiunilor acționează ca un mecanism de atenție pentru rețeaua Fast R-CNN, informând cea de-a doua rețea despre unde să se uite sau să acorde atenție.
Arhitectura modelului este rezumată în imaginea de mai jos, preluată din lucrare.
Sumarul arhitecturii modelului Faster R-CNN.Preluat din: Faster R-CNN: Towards Real-Time Object Detection With Region Proposal Networks.
RPN funcționează prin preluarea ieșirii unui CNN profund pre-antrenat, cum ar fi VGG-16, și trecerea unei rețele mici peste harta de caracteristici și ieșirea mai multor propuneri de regiuni și o predicție de clasă pentru fiecare. Propunerile de regiuni sunt cutii de delimitare, bazate pe așa-numitele cutii de ancorare sau pe forme predefinite concepute pentru a accelera și îmbunătăți propunerea de regiuni. Predicția clasei este binară, indicând prezența sau nu a unui obiect, așa-numita „obiectivitate” a regiunii propuse.
Se utilizează o procedură de formare alternantă în care ambele subrețele sunt formate în același timp, deși intercalate. Acest lucru permite ca parametrii din deep CNN cu detector de caracteristici să fie adaptați sau reglați cu precizie pentru ambele sarcini în același timp.
În momentul redactării acestui articol, această arhitectură Faster R-CNN este vârful familiei de modele și continuă să obțină rezultate apropiate de cele mai avansate în sarcinile de recunoaștere a obiectelor. O extensie suplimentară adaugă suport pentru segmentarea imaginilor, descrisă în lucrarea din 2017 „Mask R-CNN.”
Codul sursă Python și C++ (Caffe) pentru Fast R-CNN, așa cum este descris în lucrare, a fost pus la dispoziție într-un depozit GitHub.
Familia de modele YOLO
O altă familie populară de modele de recunoaștere a obiectelor este denumită colectiv YOLO sau „You Only Look Once”, dezvoltată de Joseph Redmon, et al.
Modelurile R-CNN pot fi, în general, mai precise, însă familia de modele YOLO sunt rapide, mult mai rapide decât R-CNN, realizând detectarea obiectelor în timp real.
YOLO
Modelul YOLO a fost descris pentru prima dată de Joseph Redmon, et al. în lucrarea din 2015 intitulată „You Only Look Once: Unified, Real-Time Object Detection”. Rețineți că Ross Girshick, dezvoltatorul R-CNN, a fost, de asemenea, autor și contributor la această lucrare, pe atunci la Facebook AI Research.
Abordarea implică o singură rețea neuronală antrenată de la un capăt la altul, care ia o fotografie ca intrare și prezice direct cutiile de delimitare și etichetele de clasă pentru fiecare cutie de delimitare. Tehnica oferă o acuratețe de predicție mai mică (de exemplu, mai multe erori de localizare), deși funcționează la 45 de cadre pe secundă și până la 155 de cadre pe secundă pentru o versiune optimizată din punct de vedere al vitezei a modelului.
Arhitectura noastră unificată este extrem de rapidă. Modelul nostru YOLO de bază procesează imagini în timp real la 45 de cadre pe secundă. O versiune mai mică a rețelei, Fast YOLO, procesează un număr uimitor de 155 de cadre pe secundă …
– You Only Look Once: Unified, Real-Time Object Detection, 2015.
Modelul funcționează prin împărțirea mai întâi a imaginii de intrare într-o grilă de celule, unde fiecare celulă este responsabilă pentru prezicerea unei cutii de delimitare dacă centrul unei cutii de delimitare cade în interiorul celulei. Fiecare celulă din grilă prezice un bounding box care implică coordonatele x, y, precum și lățimea și înălțimea și încrederea. O predicție de clasă se bazează, de asemenea, pe fiecare celulă.
De exemplu, o imagine poate fi împărțită într-o grilă de 7×7 și fiecare celulă din grilă poate prezice 2 cutii de delimitare, rezultând 94 de predicții de cutii de delimitare propuse. Harta probabilităților de clasă și casetele de delimitare cu confidențe sunt apoi combinate într-un set final de casete de delimitare și etichete de clasă. Imaginea preluată din lucrarea de mai jos rezumă cele două ieșiri ale modelului.
Summary of Predictions made by YOLO Model.Preluat din: You Only Look Once: Unified, Real-Time Object Detection
YOLOv2 (YOLO9000) și YOLOv3
Modelul a fost actualizat de Joseph Redmon și Ali Farhadi în efortul de a îmbunătăți și mai mult performanța modelului în lucrarea lor din 2016 intitulată „YOLO9000: Better, Faster, Stronger.”
Deși această variantă a modelului este denumită YOLO v2, este descrisă o instanță a modelului care a fost antrenată pe două seturi de date de recunoaștere a obiectelor în paralel, capabilă să prezică 9.000 de clase de obiecte, de unde și numele „YOLO9000.”
O serie de modificări de instruire și arhitecturale au fost aduse modelului, cum ar fi utilizarea normalizării pe loturi și imagini de intrare de înaltă rezoluție.
Ca și Faster R-CNN, modelul YOLOv2 utilizează cutii de ancorare, cutii de delimitare predefinite cu forme și dimensiuni utile care sunt adaptate în timpul instruirii. Alegerea cutiilor de delimitare pentru imagine este preprocesată cu ajutorul unei analize k-means pe setul de date de antrenament.
Important, reprezentarea prezisă a cutiilor de delimitare este modificată pentru a permite ca schimbările mici să aibă un efect mai puțin dramatic asupra predicțiilor, rezultând un model mai stabil. În loc să se prezică direct poziția și dimensiunea, se prezic decalajele pentru deplasarea și remodelarea cutiilor de ancorare predefinite în raport cu o celulă de grilă și se amortizează cu ajutorul unei funcții logistice.
Exemplu de reprezentare aleasă la prezicerea poziției și formei cutiei de delimitareTomat din: YOLO9000: Better, Faster, Stronger
Mai multe îmbunătățiri ale modelului au fost propuse de Joseph Redmon și Ali Farhadi în lucrarea lor din 2018 intitulată „YOLOv3: An Incremental Improvement”. Îmbunătățirile au fost rezonabil de minore, incluzând o rețea de detectare a caracteristicilor mai profundă și modificări minore de reprezentare.
Further Reading
Această secțiune oferă mai multe resurse pe această temă, dacă doriți să aprofundați.
Papers
- ImageNet Large Scale Visual Recognition Challenge, 2015.
R-CNN Family Papers
- Rich feature hierarchies for accurate object detection and semantic segmentation, 2013.
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition, 2014.
- Fast R-CNN, 2015.
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
- Mask R-CNN, 2017.
YOLO Family Papers
- You Only Look Once: Unified, Real-Time Object Detection, 2015.
- YOLO9000: Better, Faster, Stronger, 2016.
- YOLOv3: An Incremental Improvement, 2018.
Code Projects
- R-CNN: Regions with Convolutional Neural Network Features, GitHub.
- Fast R-CNN, GitHub.
- Faster R-CNN Python Code, GitHub.
- YOLO, GitHub.
Resurse
- Ross Girshick, Homepage.
- Joseph Redmon, Homepage.
- YOLO: Real-Time Object Detection, Homepage.
Articole
- A Brief History of CNNs in Image Segmentation: From R-CNN to Mask R-CNN, 2017.
- Object Detection for Dummies Part 3: R-CNN Family, 2017.
- Object Detection Part 4: Fast Detection Models, 2018.
Summary
În această postare, ați descoperit o introducere delicată în problema recunoașterii obiectelor și modelele de învățare profundă de ultimă generație concepute pentru a o aborda.
În mod specific, ați învățat:
- Recunoașterea obiectelor se referă la o colecție de sarcini conexe pentru identificarea obiectelor în fotografiile digitale.
- Rețelele neuronale convoluționale bazate pe regiune, sau R-CNN, sunt o familie de tehnici pentru abordarea sarcinilor de localizare și recunoaștere a obiectelor, concepute pentru performanțe de model.
- You Only Look Once, sau YOLO, este o a doua familie de tehnici de recunoaștere a obiectelor, concepute pentru viteză și utilizare în timp real.
Aveți întrebări?
Puneți întrebări în comentariile de mai jos și voi face tot posibilul să vă răspund.Dezvoltați astăzi modele de Deep Learning pentru viziune!
Dezvoltați-vă propriile modele de viziune în câteva minute
…cu doar câteva linii de cod python
Descoperiți cum în noul meu Ebook:
Deep Learning for Computer VisionAcesta oferă tutoriale de autoinstruire pe subiecte precum:
clasificare, detectarea obiectelor (yolo și rcnn), recunoașterea fețelor (vggface și facenet), pregătirea datelor și multe altele….În sfârșit, aduceți Deep Learning în proiectele dvs. de viziune
Scapați de academie. Just Results.
See What’s Inside
Tweet Share Share Share.
- Intrare:
- Intrare: