Introducere

Din experiența mea de călător în timp, pot spune cu încredere că conducerea autonomă este / a fost / va fi tot nebunia. Din punct de vedere matematic, hype-ul din jurul viziunii pe computer crește exponențial în funcție de indicele iterațiilor timpului de plank. Glumeam.

Oricum, în acest post, ne vom scufunda în unele dintre cele mai recente dezvoltări ale viziunii pe computer cu învățare profundă și, în cele din urmă, vom construi un model numit „Mask R-CNN”. Această postare ar trebui să fie destul de intuitivă, dar mă aștept să cunoașteți câteva dintre modelele de bază pentru viziunea computerizată. Dacă credeți că sunteți gata, să începem.

Detectarea obiectelor vs. Segmentarea semantică vs. Segmentarea instanțelor

În această postare, presupun că vă simțiți confortabil cu sarcinile și modelele de învățare profundă de bază specifice viziunii computerizate, cum ar fi rețelele neuronale convoluționale (CNN), clasificarea imaginilor etc. Dacă acești termeni vă sună ca jargon, continuați și citiți acest post.

Ok, acum să trecem la lucrurile distractive. În afară de clasificatorul tradițional câine vs. pisică pe care majoritatea dintre noi l-am fi construit în călătoria noastră profundă de învățare, putem face mult mai mult cu aceeași idee a unei rețele neuronale.

De exemplu, în loc să ne spună doar ce este într-o imagine, ne putem instrui CNN-ul să ne spună ce parte a imaginii l-a convins să ia acea decizie. Pentru a vedea de ce este util acest lucru, asigurați-vă că verificați acest lucru Ted vorbeste. Acest lucru se poate face cerând CNN să deseneze o cutie în jurul obiectului, ca în imaginea de mai jos:

State of the art deep learning o introducere in Mask
Sursă: https://i.ytimg.com/vi/EhcpGpFHCrw/maxresdefault.jpg

În limbajul de învățare profundă, această sarcină se numește detectarea obiectelor și este într-adevăr destul de ușor de implementat. În primul rând, atunci când ne pregătim datele, trebuie să folosim un instrument pentru a desena cutii de delimitare în jurul imaginilor. Acest lucru este destul de ușor folosind instrumente online gratuite. Apoi, schimbăm stratul final / de ieșire al CNN într-un strat softmax care are 4 + k ieșiri – coordonata x a casetei de delimitare, coordonata y a casetei de delimitare, înălțimea casetei de delimitare, lățimea a casetei de delimitare și scoruri de probabilitate a clasei pentru k clase.

Primul lucru pe care l-ați putea întreba este de ce alegem lucruri ciudate de învățat, cum ar fi coordonatele x, y și înălțimea, lățimea. Nu putem învăța doar coordonatele (x, y) ale fiecărui colț al cutiei? Ei bine, putem – totuși, dacă învățăm 4 perechi de variabile, trebuie să învățăm 8 în total pentru a reprezenta caseta. Cu toate acestea, dacă folosim această tehnică, trebuie să folosim doar 4.

O altă sarcină interesantă pe care o putem rezolva este segmentarea semantică. Din nou, acesta este doar un cuvânt fantezist pentru ceea ce în esență este colorarea unei imagini ca într-o carte de colorat pentru copii.

State of the art deep learning o introducere in Mask
Sursă: http://adas.cvc.uab.es/elektra/wp-content/uploads/sites/13/2016/05/CVC10_Frame3.png

Similar cazului de detectare a obiectelor, un instrument gratuit ar putea fi folosit pentru a colora în mod esențial o imagine, care este folosit ca exemplu de bază pentru pregătirea unui set de date. Aici, rețeaua noastră neuronală este antrenată să mapeze fiecare pixel din imaginea de intrare la o anumită clasă. Crud, se poate face folosind ceva numit o rețea complet convoluțională (FCN). Această rețea este doar o serie de straturi convoluționale.

1611989590 173 State of the art deep learning o introducere in Mask
Sursă: https://cdn-media-1.freecodecamp.org/images/1*wRkj6lsQ5ckExB5BoYkrZg.png

Deci, FCN ar învăța (prin arta mistică întunecată a învățării profunde) cartografierea de la o imagine de intrare la o versiune „colorată” a acesteia, care evidențiază diferitele clase dintr-o imagine.

Un lucru important de remarcat este că segmentarea semantică nu evidențiază diferit instanțele individuale ale unei clase. De exemplu, dacă ar exista 3 vaci într-o imagine, modelul ar evidenția zona pe care o ocupă, dar nu va putea distinge o vacă de alta. Dacă dorim să adăugăm această funcționalitate, trebuie să extindem sarcina și să introducem un alt termen pentru a complica vocabularul deja extrem de mare al învățării profunde – segmentarea instanțelor.

Ok, nu a fost chiar atât de rău, nu-i așa? Termenul se explică de la sine. Scopul nostru este să segmentăm sau să separăm fiecare „instanță” a unei clase într-o imagine. Acest lucru ar trebui să vă ajute să vizualizați ceea ce încercăm să realizăm:

1611989590 956 State of the art deep learning o introducere in Mask
Sursă: https://cdn-media-1.freecodecamp.org/images/1*lMEd6AcDmpH0mDzBHyiERw.png

Modelul real pe care îl folosim pentru a rezolva această problemă este de fapt mult mai simplu decât ați putea crede. Segmentarea instanței poate fi rezolvată în esență în 2 pași:

  1. Efectuați o versiune de detectare a obiectelor pentru a desena cutii de limitare în jurul fiecărei instanțe a unei clase
  2. Efectuați segmentarea semantică pe fiecare dintre casetele de delimitare

Acest model uimitor de simplu funcționează extrem de bine. Funcționează, deoarece dacă presupunem că pasul 1 are o precizie ridicată, atunci segmentarea semantică în pasul 2 este furnizată de un set de imagini care sunt garantate să aibă doar 1 instanță din clasa principală. Sarcina modelului din pasul 2 este de a lua doar o imagine cu exact 1 clasă principală și de a prezice ce pixeli corespund clasei principale (pisică / câine / om etc.) și ce pixeli corespund fundalului unei imagini .

Un alt fapt interesant este că, dacă suntem capabili să rezolvăm problema cu caseta multi-limitare și problema segmentării semantice în mod independent, am rezolvat în esență sarcina de segmentare a instanțelor! Vestea bună este că au fost construite modele foarte puternice pentru a rezolva ambele probleme, iar punerea celor două laolaltă este o sarcină relativ banală.

Acest model particular are un nume – Mask R-CNN (prescurtare pentru „rețea neuronală convoluțională regională”) și a fost construit de echipa de cercetare Facebook AI (FAIR) în aprilie 2017.

Principiul de lucru al Mask R-CNN este din nou destul de simplu. Tot ceea ce au făcut ei (cercetătorii) a fost să unească 2 modele de stadiul tehnicii existente anterior și să se joace cu algebra liniară (cercetare de învățare profundă pe scurt). Modelul poate fi aproximativ împărțit în 2 părți – o rețea de propunere de regiune (RPN) și un clasificator de mască binară.

Primul pas este să obțineți un set de casete de delimitare care ar putea conține un obiect de relevanță. Cuvântul elegant al zilei este RoI Align. Rețeaua RoI Align funcționează pe principiile de detectare a obiectelor (discutate mai sus, ați uitat deja!), Dar produce ieșiri multiple posibil mai degrabă căsuțe de delimitare decât una singură definită. Aceste cutii sunt rafinate folosind un alt model de regresie, despre care nu vom discuta aici. Mai multe detalii despre rețeaua RoI Align pot fi găsite Aici.

A doua etapă este de fapt do colorarea. Au contraire la ceea ce s-ar putea crede, acest pas este, de asemenea, destul de ușor! Tot ce trebuie să faceți este să aplicați modelul actual de ultimă generație pentru segmentarea semantică la fiecare casetă de delimitare. Partea interesantă este că, din moment ce avem garanția de a avea cel mult 1 clasă în fiecare casetă, trebuie doar să ne instruim modelul de segmentare semantică ca un clasificator binar, ceea ce înseamnă că trebuie doar să învățăm maparea de la pixeli de intrare la 1/0. 1 ar reprezenta prezența unui obiect, iar 0 ar fi fundalul. Apoi, pentru un plus de fler, am putea colora fiecare dintre pixelii care se mapează la 1 pentru a obține rezultate funky care arată astfel:

1611989591 371 State of the art deep learning o introducere in Mask
Sursă: https://cdn-media-1.freecodecamp.org/images/1*E_5qBTrotLzclyaxsekBmQ.png

Concluzie

Aplicațiile acestei tehnologii sunt de anvergură. Unele dintre cazurile de utilizare mai profitabile includ captarea mișcării, conducerea autonomă și sistemele de supraveghere. Dar vom lăsa toate aplicațiile acestei tehnologii în mintea cititorului.

În cea mai mare parte, segmentarea instanțelor este acum destul de realizabilă și este timpul să începem să ne gândim la modalități inovatoare de utilizare a acestei idei de a face algoritmi de viziune computerizată la un nivel de pixel cu pixel. Un exemplu bun ar fi un nou algoritm interesant numit DensePose. Din anumite motive necunoscute, acest model nu primește prea multă presă. Dar potențialul este mai mare decât cel al gravitației unei găuri negre!

Pur și simplu, gândiți-vă la DensePose ca la cinect la prețuri ieftine. În esență, poate face orice poate face un sistem avansat de captare a mișcării pentru o fracțiune dintr-o fracțiune din cost. În teorie, ați putea rula acest model pe un dispozitiv de 10 USD, cum ar fi raspberry pi!

Dintr-o perspectivă teoretică (cunoscută și ca cea mai rece), această tehnologie ar putea fi extinsă la alte tipuri de plase neuronale (altele decât CNN și FCN). Ideea principală aici este aceea de a lua cea mai elementară porțiune a unor date (un pixel în acest caz) și de a decide cum contribuie la structura generală.

Ipotetic, am putea clasifica fiecare mostră individuală dintr-un semnal și să decidem cum contribuie la o secvență de muzică. Dacă suntem și mai ambițioși, am putea identifica ce părți ale unei secvențe de muzică sunt cele mai atrăgătoare și le putem combina cu părți atractive din alte melodii, rezultând un mod nou de a contopi melodiile noastre preferate!

Într-o notă mai serioasă, am putea folosi aceeași tehnică pentru date mai importante. De exemplu, am putea antrena un model Mask R-CNN pentru a evidenția care corect zonele unei scanări RMN se corelează cu anumite tipare comportamentale / psihologice sau care sub-secvențe de ADN corespund unor trăsături particulare, putând avea ca rezultat descoperiri în AI medicală.

Modelul Mask R-CNN, la baza sa, este despre divizarea datelor în elementele sale fundamentale. Ca oameni, avem părtiniri inerente în modul în care privim lumea. AI, pe de altă parte, are potențialul de a privi lumea în moduri pe care oamenii nici nu le-am putut înțelege și așa cum a fost spus odată de un om care stăpânea arta de a căuta cele mai fundamentale adevăruri:

0*1sJ2YoLd6akGeewj