Ce este Detectarea obiecției cu Tensorflow? și cum funcționează [Exemple]

Publicat: 2021-06-18

Cuprins

Detectarea obiectelor - Ce înseamnă?

Detectarea obiectelor este un proces prin care un obiect poate fi identificat sau localizat într-o imagine sau un videoclip cu ajutorul viziunii computerizate. Dacă avem o imagine cu o pisică și o persoană și trebuie să clasificăm obiectele în cadrul unei imagini, atunci se poate aplica tehnica de detectare a obiectelor, adică detectarea obiectelor, și pot fi localizate obiectele necesare, adică pisica și persoana. Acest lucru poate fi realizat prin casete de delimitare care sunt desenate în jurul obiectelor detectate. Prin urmare, locația obiectelor dorite este cunoscută.

Majoritatea oamenilor încă se confundă cu recunoașterea obiectelor și recunoașterea imaginilor. Diferența dintre cele două constă în faptul că, în cazul recunoașterii imaginii, o imagine întreagă este etichetată, în timp ce în recunoașterea obiectelor, obiectele din imagine sunt etichetate.

Clasa obiectului, cum ar fi o persoană, un tabel etc., și coordonatele locației obiectelor într-o imagine dată pot fi identificate prin tehnica de detectare a obiectelor. Performanța unui algoritm de detectare a obiectelor depinde de capacitatea acestuia de a localiza obiecte într-o imagine. Un astfel de exemplu de detectare a obiectelor este detectarea feței.

De ce Detectarea obiectelor?

Datorită capacităților unice care aparțin detectării obiectelor, procesul poate fi aplicat într-o mulțime de sarcini importante, cum ar fi:

  • Numărarea oamenilor într-o mulțime.
  • Conducerea în cazul mașinilor cu conducere autonomă.
  • Supraveghere video.
  • Detectarea feței.
  • Detectarea anomaliilor

Abordări de detectare a obiectelor

Algoritmii utilizați pentru metoda de detectare a obiectelor pot fi antrenați înainte de utilizare sau nesupravegheați.

Două abordări, adică abordări bazate pe învățarea automată și abordări bazate pe învățarea profundă, sunt utilizate pentru detectarea obiectelor.

  • Diverse caracteristici ale unei imagini, cum ar fi histograma de culoare sau marginile etc. sunt privite de abordările bazate pe ML. Modelele de regresie bazate pe aceste caracteristici sunt apoi generate și locația obiectului este prezisă.
  • Rețelele neuronale convoluționale (CNN) sunt folosite în cazul abordărilor bazate pe deep learning pentru detectarea unui obiect prin metode nesupravegheate.

Funcționarea unei metode de detectare a obiectelor

Sarcina de detectare a obiectelor poate fi efectuată prin următorii pași:

  • Imaginea de intrare este împărțită în mai multe segmente mici. Sunt create seturi de cutii legate între ele, care se întind pe întreaga imagine.
  • Fiecare zonă segmentată este supusă procesului de extragere a caracteristicilor. Apoi prezice prezența obiectelor valide în cutie. Procesul determină dacă există caracteristici vizuale prezente în cutie.
  • O singură cutie este construită pentru cutiile suprapuse.

Detectarea obiectelor folosind TensorFlow

TensorFlow poate fi definit ca o bibliotecă open-source pentru învățarea automată și a fost utilizată pe scară largă în mai multe aplicații precum recunoașterea imaginilor, căutarea vocală, recunoașterea obiectelor etc. Atât API-urile Python, cât și C++ sunt furnizate de TensorFlow.

  • Atât algoritmii de învățare profundă, cât și algoritmii de învățare automată sunt prezenți în TensorFlow.
  • Python este folosit ca limbaj front-end și, de asemenea, rulează eficient în C++.
  • Un grafic de calcul este creat de dezvoltatori folosind TensorFlow.
  • Operațiile matematice sunt reprezentate prin noduri într-un grafic, iar datele sunt reprezentate prin conexiuni.

TensorFlow a fost dezvoltat pentru a efectua cercetări prin învățarea automată și rețelele neuronale profunde de către echipa Google Brain din cadrul organizației Google Machine Intelligence Research.

Un API (Application Programming Interface) împiedică dezvoltatorii să scrie coduri de la zero prin furnizarea unui set de operațiuni comune. API-ul de detectare a obiectelor TensorFlow este aplicat pentru a antrena modelele pentru detectarea obiectelor. Cadrul este construit pe TensorFlow. Caracteristicile care aparțin sistemului de detectare a obiectelor TensorFlow sunt:

  • Modelele care sunt deja antrenate se numesc „Model Zoo” și sunt disponibile în cadru.
  • Seturile de date utilizate pentru instruirea diferitelor modele instruite sunt:
  • Setul de date COCO.
  • Setul de date KITTI.
  • Setul de date de imagini deschise

Cadrul TensorFlow de detectare a obiectelor constă din diverse modele având arhitectură variată și, prin urmare, precizii diferite de predicție. Tipurile de arhitectură ale modelelor deja antrenate sunt:

1. MobileNet-SSD

O rețea de convoluție unică identifică locația casetei de delimitare la o singură trecere. Arhitectura constă dintr-un strat de bază (MobileNet) cu mai multe straturi de convoluție. Locațiile casetelor de delimitare sunt prezise prin operația pe hărțile caracteristicilor. Informațiile prezente cu fiecare casetă de delimitare sunt enumerate mai jos:

  • Locații compensate ale casetei de delimitare în cele patru colțuri (cx, cy, w, h).
  • Probabilitățile clasei C (c1, c2, …cp)

Forma cutiei nu este prezisă de SSD, mai degrabă locațiile cutiei sunt prezise. Numărul K de casete de delimitare este determinat pentru fiecare locație a hărții caracteristice. Forma casetei de delimitare k este deja stabilită înainte de antrenamentul propriu-zis.

Următoarea ecuație calculează pierderea.

L=1/N (clasa L + caseta L)

Unde, N: numărul de casete potrivite, clasa L: pierdere softmax, caseta L: eroare asociată cu casetele potrivite.

2. MobileNet

O convoluție standardizată este factorizată într-o convoluție și o convoluție care este punctual, adică 1*1 convoluții. Calculul este redus cu reducerea dimensiunii modelului prin factorizare.

3. Inception-SSD

Inception-SSD are aceeași arhitectură ca și MobileNet-SSD, totuși, baza arhitecturii în cazul MobileNet-SSD a fost MobileNet, iar aici este modelul Inception.

4. RCNN mai rapid

Predicția locației obiectului se bazează pe algoritmii de propunere a regiunii. Rețelele de detectare și-au redus timpul de funcționare prin progresul în SSPnet și Fast R-CNN. O hartă de caracteristici convoluționale este generată atunci când o imagine de intrare este introdusă în rețeaua neuronală în cazul RCNN Faster.

Propunerea regiunii este apoi identificată prin harta caracteristicilor convoluționale și deformată în pătrate. Pătratele sunt apoi remodelate într-o dimensiune care este fixată printr-un strat de pooling ROL (Stratul Regiunii de interes). Acesta este apoi folosit ca intrare la un strat care este conectat complet.

Stratul softmax este folosit pentru prezicerea clasei de propunere de regiune din vectorul caracteristic ROL. De asemenea, sunt prezise valorile de deplasare a casetei de delimitare.

Selectarea modelului TensorFlow de detectare a obiectelor

Modelul TensorFlow de detectare a obiectelor potrivit poate fi ales din API-ul TensorFlow pe baza cerințelor specifice ale utilizatorului. Rețeaua de detectare single-shot, adică rețeaua SSD poate fi folosită dacă utilizatorul necesită un model de mare viteză. Modelul este destul de rapid și poate detecta fluxul video la un fps ridicat.

Cu toate acestea, dacă este necesară o precizie mai mare, FasterRCNN ar putea fi o alegere mai bună, deoarece precizia modelului este mare, dar are o viteză relativ mai mică. Prin urmare, utilizatorul poate explora diferitele oportunități disponibile în funcție de cerințele sale.

Un exemplu de TensorFlow pentru detectarea obiectelor

Utilizarea API-ului TensorFlow pentru detectarea obiectelor nu necesită cunoștințe anterioare despre învățarea automată sau rețelele neuronale. Fișierele furnizate de API vor fi utilizate în cea mai mare parte. Singura cerință este cunoașterea elementelor de bază ale python.

1. Descărcarea TensorFlow

  • TensorFlow poate fi descărcat fie prin git, fie descărcat manual.
  • Descărcarea TensorFlow prin git este una dintre cele mai ușoare modalități de descărcare. Pentru descărcarea prin git, sistemul ar trebui să aibă deja git preinstalat în el. Odată ce git este instalat, următoarea comandă trebuie introdusă în terminal.
  • Trebuie accesat următorul link și trebuie să faceți clic pe butonul verde. Fișierele arhivate trebuie descărcate și extrase.
  • Dosarul trebuie redenumit în modele din model-master.
  • Un mediu trebuie creat virtual. Unul dintre obiectivele principale ale creării unui mediu virtual python este crearea unui mediu python izolat. Acesta trebuie utilizat pentru proiecte sub python. Prin urmare, dependențele fiecărui proiect vor fi diferite.
  • Următoarele comenzi trebuie utilizate în promptul anacondei:

În acest caz, mediul virtual se numește obj_detection

conda create -n obj_detection -> pentru configurarea virtuală a mediului

conda activate obj_detection -> pentru activarea mediului virtual

2. Instalarea dependențelor

  • Dependențele care sunt cerute de API trebuie să fie instalate pe computerul local.
  • Dependențele pot fi instalate după activarea mediului virtual.
  • Ar trebui introdusă următoarea comandă

pip install tensorflow

  • Dacă este prezent un GPU, este necesară următoarea comandă

pip install tensorflow-gpu

  • Celelalte dependențe vor fi instalate prin următoarea comandă

pip install pillow Cython lxml jupyter matplotlib contextlib2 tf_slim

3. Descărcarea tamponelor de protocol (Protobuff)

  • Bufferele de protocol sunt anumite mecanisme de structurare a datelor în serie, precum XML.
  • „Protobuff” trebuie descărcat de pe link .
  • Extrageți fișierele și copiați fișierele în subdosarul numit „cercetare” din folderul „modele” deja descărcat.
  • Dosarul care conține fișierele protobuf trebuie să fie navigat și să ruleze următoarea comandă

protoc object_detection/protos/*.proto –python_out=.

  • Executarea cu succes a comenzii va crea un fișier python pentru fiecare dintre fișierele proto din folderul protos sub detectarea obiectelor din folderul modele.

Concluzie

Detectarea obiectelor este o tehnică aplicată pe scară largă în diverse aplicații în timp real. Am aflat că tehnica poate fi realizată prin aplicarea algoritmilor de învățare automată sau de învățare profundă.

De asemenea, cu aplicarea unui API, adică TensorFlow, utilizatorii trebuie să aibă cunoștințe prealabile despre conceptul de programare python. Numai atunci metodele de detectare a obiectelor care utilizează API-ul TensorFlow au putut fi înțelese corect. TensorFlow este o platformă open-source pentru învățarea automată. Prin urmare, pentru a înțelege mecanismul de funcționare al TensorFlow și aplicarea acestuia, este mai bine să obțineți cunoștințe despre conceptele de învățare automată.

Dacă sunteți un profesionist de nivel mediu care dorește să învețe programarea Python, să implementeze modele ML împreună cu cloud computing, puteți consulta cursul „ Maestru în învățare automată și inteligență artificială ” oferit de upGrad . Cursul certificat în comun de IIIT Bangalore & LJMU vă va alinia obiectivele cu pregătirea de experți și vă va permite să vă pregătiți pentru intrarea în companiile de vis. Tot ce ai nevoie este să ai o diplomă de licență. Echipa noastră de asistență este disponibilă pentru a vă răspunde dacă există întrebări legate de cursul upGrad.

Conduceți revoluția tehnologică condusă de inteligența artificială

PROGRAM EXECUTIVE PG ÎN MACHINE LEARNING ȘI INTELIGENTĂ ARTIFICIALĂ
Aplica acum