Un ghid 2021 pentru segmentarea semantică

Nodul sursă: 872271

Introducere

Învățarea profundă a avut un mare succes atunci când a lucrat cu imagini ca date și se află în prezent într-o etapă în care funcționează mai bine decât oamenii pentru mai multe cazuri de utilizare. Cele mai importante probleme pe care oamenii au fost interesați să le rezolve cu viziunea computerizată sunt clasificarea imaginilor, detectarea și segmentarea obiectelor în ordinea crescândă a dificultății lor.

În vechea sarcină simplă a clasificării imaginilor, suntem doar interesați să obținem etichetele tuturor obiectelor care sunt prezente într-o imagine. În detectarea obiectelor, trecem mai departe și încercăm să știm împreună cu toate obiectele care sunt prezente într-o imagine, locația în care sunt prezente obiectele cu ajutorul casetelor de delimitare. Segmentarea imaginii o duce la un nou nivel încercând să afle cu exactitate limita exactă a obiectelor din imagine.

Sursa http://cs224d.stanford.edu/index.html

În acest articol vom trece prin acest concept de segmentare a imaginii, vom discuta despre cazurile de utilizare relevante, diferite arhitecturi de rețea neuronală implicate în obținerea rezultatelor, metrici și seturi de date de explorat.

Ce este segmentarea imaginii

Știm că o imagine nu este altceva decât o colecție de pixeli. Segmentarea imaginii este procesul de clasificare a fiecărui pixel într-o imagine aparținând unei anumite clase și, prin urmare, poate fi considerat o problemă de clasificare pe pixel. Există două tipuri de tehnici de segmentare

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Segmentarea semantică : - Segmentarea semantică este procesul de clasificare a fiecărui pixel aparținând unei anumite etichete. Nu diferă în diferite instanțe ale aceluiași obiect. De exemplu, dacă există 2 pisici într-o imagine, segmentarea semantică dă aceeași etichetă tuturor pixelilor ambelor pisici
  2. Segmentarea instanțelor : - Segmentarea instanței diferă de segmentarea semantică în sensul că dă o etichetă unică fiecărei instanțe a unui anumit obiect din imagine. După cum se poate vedea în imagine, mai sus tuturor celor 3 câini li se atribuie culori diferite, adică etichete diferite. Cu segmentarea semantică, tuturor li s-ar fi atribuit aceeași culoare.

Așa că vom ajunge acum la punctul în care am avea nevoie de acest tip de algoritm

Utilizarea cazurilor de segmentare a imaginii

Scris de mana recunoscut : - Junjo și toți au demonstrat modul în care segmentarea semantică este utilizată pentru a extrage cuvinte și linii din documente scrise de mână Lucrare de cercetare din 2019 să recunoască personaje scrise de mână

Sursă

Mod portret Google : - Există multe cazuri de utilizare în care este absolut esențial să separați planul de fundal. De exemplu, în modul portret Google, putem vedea fundalul estompat în timp ce prim-planul rămâne neschimbat pentru a da un efect rece

Sursă: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Povești YouTube : - Google a lansat recent o caracteristică Povești YouTube pentru creatorii de conținut pentru a arăta diferite medii în timp ce creează povești.

Sursă: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Machiaj virtual : - Aplicarea lip-stick-ului virtual este posibilă acum cu ajutorul segmentării imaginii

Sursă: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

4. Încercare virtuală : - Încercarea virtuală a hainelor este o caracteristică interesantă, disponibilă în magazine folosind hardware specializat care creează un model 3D. Dar cu învățarea profundă și segmentarea imaginii, același lucru poate fi obținut folosind doar o imagine 2d

Sursă: - https://arxiv.org/pdf/1807.07688.pdf

Căutare vizuală a imaginilor : - Ideea de a segmenta hainele este utilizată și în algoritmii de recuperare a imaginilor în eCommerce. De exemplu, Pinterest / Amazon vă permite să încărcați orice imagine și să obțineți produse similare, făcând o căutare de imagini bazată pe segmentarea porțiunii de pânză

Sursa: - https://github.com/paucarre/tiefvision

Autovehicule de conducere : - Mașinile care conduc singuri au nevoie de o înțelegere completă a mediului înconjurător la un nivel perfect de pixeli. Prin urmare, segmentarea imaginii este utilizată pentru a identifica benzile și alte informații necesare

Sursă: - https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Nanonets ajută fortune 500 de companii să permită experiențe mai bune la scară largă, utilizând segmentarea semantică.

Metode și tehnici

Înainte de apariția învățării profunde, tehnicile clasice de învățare automată precum SVM, Random Forest, K-means Clustering au fost folosite pentru a rezolva problema segmentării imaginilor. Dar, ca și în cazul majorității afirmațiilor problemei legate de imagine, învățarea profundă a funcționat global mai bine decât tehnicile existente și a devenit o normă acum când se ocupă de segmentarea semantică. Să trecem în revistă tehnicile utilizate pentru a rezolva problema

Rețea complet convoluțională

Arhitectura generală a unui CNN constă din câteva straturi convoluționale și de strângere, urmate de câteva straturi complet conectate la sfârșit. Lucrarea Rețelei complet convoluționale lansată în 2014 susține că stratul final complet conectat poate fi considerat a face o convoluție 1 × 1 care acoperă întreaga regiune.

Sursă: - https://arxiv.org/abs/1411.4038

Prin urmare, straturile dense finale pot fi înlocuite de un strat de convoluție care obține același rezultat. Dar acum avantajul de a face acest lucru este că dimensiunea intrării nu mai trebuie să fie fixată. Atunci când se implică straturi dense, dimensiunea intrării este limitată și, prin urmare, atunci când trebuie furnizată o intrare de dimensiuni diferite, aceasta trebuie redimensionată. Dar prin înlocuirea unui strat dens cu convoluție, această constrângere nu există.

De asemenea, atunci când este furnizată o dimensiune mai mare a imaginii ca intrare, ieșirea produsă va fi o hartă a caracteristicilor și nu doar o ieșire de clasă, ca pentru o imagine de dimensiune normală. De asemenea, comportamentul observat al hărții de caracteristici finale reprezintă harta de căldură a clasei solicitate, adică poziția obiectului este evidențiată în harta de caracteristici. Deoarece ieșirea hărții de caracteristici este o hartă de căldură a obiectului solicitat, acestea sunt informații valabile pentru cazul nostru de utilizare a segmentării.

Deoarece harta caracteristică obținută la stratul de ieșire este un eșantionat din cauza setului de circumvoluții efectuate, am dori să o prelevăm în sus utilizând o tehnică de interpolare. Eșantionarea bilineară funcționează, dar lucrarea propune utilizarea eșantionării învățate cu deconvoluție, care poate învăța chiar o eșantionare non-liniară.

Partea de eșantionare descendentă a rețelei se numește codificator și partea de eșantionare sus se numește decodor. Acesta este un model pe care îl vom vedea în multe arhitecturi, adică reducerea dimensiunii cu codificator și apoi prelevarea de probe cu decodor. Într-o lume ideală, nu am vrea să reducem eșantionul folosind pooling și să păstrăm aceeași dimensiune pe tot parcursul, dar acest lucru ar duce la o cantitate imensă de parametri și ar fi factibil de calculat.

Sursă: - https://arxiv.org/abs/1411.4038

Deși rezultatele obținute au fost decente, rezultatul observat este dur și nu neted. Motivul pentru aceasta este pierderea informațiilor la nivelul de caracteristică final din cauza eșantionării de 32 de ori folosind straturi de convoluție. Acum devine foarte dificil pentru rețea să efectueze eșantionări 32x folosind aceste mici informații. Această arhitectură se numește FCN-32

Pentru a aborda această problemă, lucrarea a propus alte 2 arhitecturi FCN-16, FCN-8. În FCN-16, informațiile din stratul de pooling anterior sunt utilizate împreună cu harta finală a caracteristicilor și, prin urmare, acum sarcina rețelei este de a învăța eșantionarea de 16x, care este mai bună în comparație cu FCN-32. FCN-8 încearcă să o facă și mai bună prin includerea informațiilor dintr-un strat de pooling anterior.

Deconectat

U-net se construiește deasupra rețelei complet convoluționale. A fost construit în scopuri medicale pentru a găsi tumori în plămâni sau în creier. De asemenea, constă dintr-un codificator care eșantionează în jos imaginea de intrare pe o hartă de caracteristici și decodificatorul care eșantionează în sus harta de caracteristici pentru a introduce dimensiunea imaginii folosind straturi de deconvoluție învățate.

Sursă: - https://arxiv.org/abs/1505.04597

Contribuția principală a arhitecturii U-Net este conexiunile rapide. Am văzut mai sus în FCN că, din moment ce eșantionăm o imagine ca parte a codificatorului, am pierdut multe informații care nu pot fi recuperate cu ușurință în partea codificatorului. FCN încearcă să soluționeze acest lucru prin preluarea informațiilor din straturile de grupare înainte de stratul final de caracteristici.

U-Net propune o nouă abordare pentru a rezolva această problemă de pierdere a informațiilor. Propune trimiterea informațiilor către fiecare strat de eșantionare sus din decodor din stratul de eșantionare corespunzător din codificator, așa cum se poate vedea în figura de mai sus, captând astfel informații mai fine, păstrând totodată calculul scăzut. Deoarece straturile de la începutul codificatorului ar avea mai multe informații, acestea ar spori operațiunea de eșantionare în sus a decodificatorului, oferind detalii fine corespunzătoare imaginilor de intrare, îmbunătățind astfel rezultatele mult. Lucrarea a sugerat, de asemenea, utilizarea unei noi funcții de pierdere pe care o vom discuta mai jos.

DeepLab

Deeplab dintr-un grup de cercetători de la Google a propus o multitudine de tehnici pentru a îmbunătăți rezultatele existente și pentru a obține rezultate mai fine la costuri de calcul mai mici. Cele 3 îmbunătățiri principale sugerate ca parte a cercetării sunt

1) Convoluții atroase
2) Combinarea piramidală spațială atroasă
3) Utilizarea câmpurilor aleatorii condiționate pentru îmbunătățirea rezultatului final
Să discutăm despre toate acestea

Convoluție atroce

Una dintre problemele majore cu abordarea FCN este reducerea excesivă din cauza operațiunilor consecutive de punere în comun. Datorită seriilor de punere în comun, imaginea de intrare este eșantionată în jos cu 32x, care este din nou eșantionată pentru a obține rezultatul segmentării. Eșantionarea cu 32x duce la pierderea informațiilor, care este foarte importantă pentru obținerea unei rezultate fine într-o sarcină de segmentare. De asemenea, deconvoluția până la eșantionul cu 32x este o operație costisitoare de calcul și memorie, deoarece există parametri suplimentari implicați în formarea unei eșantionări învățate.

Lucrarea propune utilizarea convoluției Atrous sau a convoluției găurilor sau a convoluției dilatate, care ajută la înțelegerea contextului larg folosind același număr de parametri.

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

Convoluția dilatată funcționează prin mărirea dimensiunii filtrului prin adăugarea de zerouri (numite găuri) pentru a umple golul dintre parametri. Numărul de găuri / zerouri completate între parametrii filtrului este numit de o rată de dilatare pe termen lung. Când rata este egală cu 1, nu este altceva decât convoluția normală. Când rata este egală cu 2, se introduce un zero între fiecare alt parametru, ceea ce face ca filtrul să arate ca o circumvoluție 5 × 5. Acum are capacitatea de a obține contextul convoluției 5 × 5 în timp ce are parametri de convoluție 3 × 3. În mod similar pentru rata 3, câmpul receptiv merge la 7 × 7.

În Deeplab, ultimele straturi de grupare sunt înlocuite pentru a avea pasul 1 în loc de 2, menținând astfel rata de eșantionare în jos la doar 8x. Apoi se aplică o serie de convoluții atroce pentru a surprinde contextul mai larg. Pentru antrenament, masca etichetată de ieșire este eșantionată cu 8x pentru a compara fiecare pixel. Pentru inferență, eșantionarea bilineară este utilizată pentru a produce ieșiri de aceeași dimensiune, care oferă rezultate suficient de decente la costuri de calcul / memorie mai mici, deoarece eșantionarea biliniară nu are nevoie de parametri, spre deosebire de deconvoluție pentru eșantionarea sus.

ASPP

Spațiul Piramidal Pooling este un concept introdus în SPPNet pentru a capta informații pe mai multe scări dintr-o hartă de caracteristici. Înainte de introducerea imaginilor de intrare SPP, sunt furnizate imagini la rezoluții diferite și hărțile de caracteristici calculate sunt utilizate împreună pentru a obține informații pe mai multe scări, dar acest lucru necesită mai mult timp și calcul. Cu Pooling Piramidal Spațial, informațiile pe mai multe scări pot fi capturate cu o singură imagine de intrare.

Sursă: - http://kaiminghe.com/eccv14sppnet/index.html

Cu modulul SPP, rețeaua produce 3 ieșiri cu dimensiuni 1 × 1 (adică GAP), 2 × 2 și 4 × 4. Aceste valori sunt concatenate prin convertirea într-un vector 1d captând astfel informații la mai multe scale. Un alt avantaj al utilizării SPP este că pot fi furnizate imagini de intrare de orice dimensiune.

ASPP preia conceptul de fuzionare a informațiilor de la diferite scări și le aplică la convoluțiile Atrous. Intrarea este complicată cu diferite rate de dilatație, iar ieșirile acestora sunt fuzionate împreună.

Sursă: - http://liangchiehchen.com/projects/DeepLab.html

După cum se poate observa, intrarea este însoțită de filtre 3 × 3 cu rate de dilatare 6, 12, 18 și 24, iar ieșirile sunt concatenate împreună, deoarece sunt de aceeași dimensiune. O ieșire de convoluție 1 × 1 este, de asemenea, adăugată la ieșirea condensată. Pentru a furniza, de asemenea, informații globale, ieșirea GAP este adăugată mai sus după eșantionare. Ieșirea fuzionată a ieșirilor dilatate variate 3 × 3, ieșirea 1 × 1 și GAP este trecută prin convoluție 1 × 1 pentru a ajunge la numărul necesar de canale.

Deoarece imaginea necesară pentru a fi segmentată poate fi de orice dimensiune în intrare, informațiile multi-scară de la ASPP ajută la îmbunătățirea rezultatelor.

Îmbunătățirea ieșirii cu CRF

Pooling-ul este o operație care ajută la reducerea numărului de parametri într-o rețea neuronală, dar aduce, de asemenea, o proprietate de invarianță. Invarianța este calitatea unei rețele neuronale neafectate de ușoare traduceri în intrare. Datorită acestei proprietăți obținute cu punerea în comun, ieșirea de segmentare obținută de o rețea neuronală este grosieră și limitele nu sunt definite în mod concret.

Sursă: - http://liangchiehchen.com/projects/DeepLab.html

Pentru a rezolva acest lucru, lucrarea propune utilizarea modelului grafic CRF. Câmpul aleator condiționat operează o etapă de post-procesare și încearcă să îmbunătățească rezultatele produse pentru a defini limitele de formare. Funcționează prin clasificarea unui pixel bazat nu numai pe eticheta sa, ci și pe alte etichete de pixeli. După cum se poate vedea din figura de mai sus, granița grosieră produsă de rețeaua neuronală devine mai rafinată după trecerea prin CRF.

Deeplab-v3 a introdus normalizarea lotului și a sugerat rata de dilatare înmulțită cu (1,2,4) în interiorul fiecărui strat într-un bloc Resnet. De asemenea, adăugarea caracteristicilor de nivel imagine la modulul ASPP, care a fost discutat în discuția de mai sus despre ASPP, a fost propusă ca parte a acestei lucrări

Sursă: - https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3 + a sugerat să existe un decodor în loc de eșantionare bilineară simplă de 16x. Decodorul ia un indiciu de la decodorul utilizat de arhitecturi precum U-Net, care iau informații din straturile codificatorului pentru a îmbunătăți rezultatele. Ieșirea codificatorului este eșantionată 4x folosind eșantionarea biliniară și concatenată cu caracteristicile codificatorului, care este din nou eșantionată 4x după efectuarea unei convoluții 3 × 3. Această abordare dă rezultate mai bune decât o eșantionare directă de 16x în sus. De asemenea, se propune ca arhitectura Xception modificată să fie utilizată în locul Resnet ca parte a codificatorului, iar acum se utilizează circumvoluții separabile în adâncime, deasupra convoluțiilor Atrous, pentru a reduce numărul de calcule.

Rețeaua globală de convoluție

Sursă: - https://arxiv.org/pdf/1703.02719.pdf

Segmentarea semantică implică efectuarea simultană a două sarcini

i) Clasificare
ii) Localizare

Rețelele de clasificare sunt create pentru a fi invariante la traducere și rotație, dând astfel nicio importanță informațiilor despre locație, în timp ce localizarea implică obținerea de detalii exacte despre locație. Astfel, în mod inerent, aceste două sarcini sunt contradictorii. Majoritatea algoritmilor de segmentare acordă mai multă importanță localizării, adică al doilea din figura de mai sus și astfel pierd din vedere contextul global. În această lucrare, autorul propune o modalitate de a acorda importanță sarcinii de clasificare și, în același timp, fără a pierde informațiile de localizare

Sursă: - https://arxiv.org/pdf/1703.02719.pdf

Autorul propune să realizeze acest lucru utilizând nuclee mari ca parte a rețelei, permițând astfel conexiuni dense și, prin urmare, mai multe informații. Acest lucru se realizează cu ajutorul unui bloc GCN așa cum se poate vedea în figura de mai sus. Blocul GCN poate fi considerat ca un filtru de convoluție akxk unde k poate fi un număr mai mare de 3. Pentru a reduce numărul de parametri, filtrul akxk este împărțit în continuare în blocuri 1 xk și kx 1, kx1 și 1xk care sunt apoi însumate. Astfel, prin creșterea valorii k, se captează un context mai mare.

În plus, autorul propune un bloc Boundary Refinement, care este similar cu un bloc rezidual văzut în Resnet care constă dintr-o conexiune rapidă și o conexiune reziduală care sunt însumate pentru a obține rezultatul. Se observă că a avea un bloc de rafinare a limitelor a dus la îmbunătățirea rezultatelor la limita segmentării.

Rezultatele au arătat că blocul GCN a îmbunătățit precizia de clasificare a pixelilor mai aproape de centrul obiectului, indicând îmbunătățirea cauzată de captarea contextului pe distanțe lungi, în timp ce blocul Boundary Refinement a ajutat la îmbunătățirea preciziei pixelilor mai aproape de limită.

Vedeți mai mult de o dată - KSAC pentru segmentarea semantică

Familia Deeplab folosește ASPP pentru a avea câmpuri receptive multiple care captează informații folosind diferite rate de convoluție atroce. Deși ASPP a fost semnificativ util în îmbunătățirea segmentării rezultatelor, există unele probleme inerente cauzate de arhitectură. Nu există informații partajate între diferitele straturi paralele din ASPP, afectând astfel puterea de generalizare a nucleelor ​​din fiecare strat. De asemenea, din moment ce fiecare strat acoperă diferite seturi de eșantioane de antrenament (obiecte mai mici cu o rată atră mai mică și obiecte mai mari cu rată atră mai mare), cantitatea de date pentru fiecare strat paralel ar fi mai mică, afectând astfel generalizabilitatea generală. De asemenea, numărul de parametri din rețea crește liniar cu numărul de parametri și, astfel, poate duce la supra-montare.

Sursă: - https://arxiv.org/pdf/1908.09443.pdf

Pentru a rezolva toate aceste probleme, autorul propune o nouă structură de rețea numită Kernel-Sharing Atrous Convolution (KSAC). Așa cum se poate vedea în figura de mai sus, în loc de a avea un nucleu diferit pentru fiecare strat paralel este ASPP, un singur nucleu este împărțit, îmbunătățind astfel capacitatea de generalizare a rețelei. Prin utilizarea KSAC în locul ASPP, 62% din parametri sunt salvați atunci când se utilizează rate de dilatare de 6,12 și 18.

Un alt avantaj al utilizării unei structuri KSAC este numărul de parametri independenți de numărul de rate de dilatare utilizate. Astfel putem adăuga cât mai multe rate fără a crește dimensiunea modelului. ASPP oferă cele mai bune rezultate cu rate 6,12,18, dar precizia scade cu 6,12,18,24, indicând o posibilă supra-montare. Dar precizia KSAC se îmbunătățește considerabil, indicând capacitatea de generalizare îmbunătățită.

Această tehnică de partajare a nucleului poate fi, de asemenea, văzută ca o mărire în spațiul caracteristic, deoarece același nucleu este aplicat pe rate multiple. Similar cu modul în care mărirea intrărilor oferă rezultate mai bune, mărirea caracteristicilor efectuată în rețea ar trebui să contribuie la îmbunătățirea capacității de reprezentare a rețelei.

Segmentare video

Pentru cazuri de utilizare, cum ar fi mașinile cu conducere automată, robotica etc., este nevoie de o segmentare în timp real a videoclipului observat. Arhitecturile discutate până acum sunt concepute pentru precizie și nu pentru viteză. Deci, dacă acestea sunt aplicate pe cadru pe un videoclip, rezultatul ar avea o viteză foarte mică.

De asemenea, în general, într-un videoclip există o mulțime de suprapuneri în scene pe cadre consecutive care ar putea fi utilizate pentru îmbunătățirea rezultatelor și a vitezei, care nu vor intra în imagine dacă analiza se face pe cadru. Folosind aceste indicii, să discutăm arhitecturile special concepute pentru videoclipuri

STFCN

Spatio-Temporal FCN propune să utilizeze FCN împreună cu LSTM pentru a face segmentarea video. Suntem deja conștienți de modul în care FCN poate fi utilizat pentru a extrage caracteristici pentru segmentarea unei imagini. LSTM sunt un fel de rețele neuronale care pot capta informații secvențiale în timp. STFCN combină puterea FCN cu LSTM pentru a capta atât informațiile spațiale, cât și informațiile temporale

Sursă: - https://arxiv.org/abs/1608.05971

După cum se poate vedea din figura de mai sus, STFCN constă dintr-un modul FCN, spațio-temporal urmat de deconvoluție. Harta caracteristică produsă de un FCN este trimisă modulului spațio-temporal care are, de asemenea, o intrare din modulul cadrului anterior. Modulul bazat pe ambele intrări captează informațiile temporale în plus față de informațiile spațiale și le trimite peste care este eșantionat până la dimensiunea originală a imaginii folosind deconvoluție similară cu modul în care se face în FCN

Deoarece atât FCN, cât și LSTM lucrează împreună ca parte a STFCN, rețeaua este capabilă să fie antrenabilă și depășește abordările de segmentare a unui singur cadru. Există abordări similare în care LSTM este înlocuit cu GRU, dar conceptul este același de a capta atât informațiile spațiale, cât și cele temporale

CNN video semantice prin Reprezentarea deformare

Această lucrare propune utilizarea fluxului optic pe cadre adiacente ca o intrare suplimentară pentru a îmbunătăți rezultatele segmentării

Sursă: - https://arxiv.org/abs/1708.03088

Abordarea sugerată poate fi conectată la orice arhitectură standard ca un plug-in. Ingredientul cheie care se joacă este modulul NetWarp. Pentru a calcula harta de segmentare, fluxul optic dintre cadrul curent și cadrul anterior este calculat, adică Ft și este trecut printr-un FlowCNN pentru a obține Λ (Ft). Acest proces se numește Transformarea fluxului. Această valoare este trecută printr-un modul warp care ia, de asemenea, ca intrare harta caracteristicilor unui strat intermediar calculat prin trecerea prin rețea. Aceasta oferă o hartă de caracteristici deformată, care este apoi combinată cu harta de caracteristici intermediară a stratului curent și întreaga rețea este instruită de la un capăt la altul. Această arhitectură a obținut rezultate SOTA pe seturile de date de referință video CamVid și Cityscapes.

Convnete Clockwork pentru segmentarea semantică video

Această lucrare propune îmbunătățirea vitezei de execuție a unei rețele neuronale pentru sarcina de segmentare a videoclipurilor, profitând de faptul că informațiile semantice dintr-un videoclip se schimbă lent în comparație cu informațiile de la nivelul pixelilor. Deci, informațiile din straturile finale se schimbă într-un ritm mult mai lent în comparație cu straturile de început. Lucrarea sugerează momente diferite

Sursă: - https://arxiv.org/abs/1608.03609

Figura de mai sus reprezintă rata de schimbare a comparației pentru un nivel de nivel mediu pool4 și un strat profund fc7. În stânga vedem că, deoarece există multe modificări între cadre, ambele straturi arată o schimbare, dar schimbarea pentru pool4 este mai mare. În dreapta vedem că nu există prea multe schimbări între cadre. Prin urmare, pool4 arată o schimbare marginală, în timp ce fc7 arată o schimbare aproape nulă.

Cercetarea utilizează acest concept și sugerează că, în cazurile în care nu există prea multe modificări între cadre, nu este nevoie să se calculeze din nou caracteristicile / ieșirile și pot fi utilizate valorile cache din cadrul anterior. Deoarece rata de schimbare variază în funcție de straturi, pot fi setate diferite ceasuri pentru diferite seturi de straturi. Când bifează ceasul, se calculează noile ieșiri, în caz contrar sunt utilizate rezultatele memorate în cache. Rata căpușelor de ceas poate fi fixată static sau poate fi învățată dinamic

Sursă: - https://arxiv.org/abs/1608.03609

Segmentare semantică video cu latență redusă

Această lucrare se îmbunătățește în plus față de discuțiile de mai sus, selectând în mod adaptiv cadrele pentru a calcula harta de segmentare sau pentru a utiliza rezultatul memorat în cache, în loc să utilizeze un cronometru fix sau un euristic.

Sursă: - https://arxiv.org/abs/1804.00389

Lucrarea propune împărțirea rețelei în 2 părți, caracteristici de nivel scăzut și caracteristici de nivel înalt. Costul calculării caracteristicilor de nivel scăzut într-o rețea este mult mai mic în comparație cu caracteristicile superioare. Cercetarea sugerează utilizarea caracteristicilor rețelei de nivel scăzut ca indicator al schimbării hărții de segmentare. În observațiile lor, au găsit o corelație puternică între schimbarea caracteristicilor de nivel scăzut și schimbarea hărții de segmentare. Deci, pentru a înțelege dacă este necesar să se calculeze dacă este necesar să se calculeze caracteristicile superioare, se găsește diferența mai mică de caracteristici între 2 cadre și se compară dacă depășește un anumit prag. Întregul proces este automatizat de o mică rețea neuronală a cărei sarcină este de a prelua caracteristici mai mici ale a două cadre și de a oferi o predicție dacă caracteristicile superioare ar trebui să fie calculate sau nu. Deoarece decizia rețelei se bazează pe cadrele de intrare, decizia luată este dinamică în comparație cu abordarea de mai sus.

Segmentarea pentru nori de puncte

Datele provenite de la un senzor precum lidar sunt stocate într-un format numit Point Cloud. Norul de puncte nu este altceva decât o colecție de seturi neordonate de puncte de date 3d (sau orice dimensiune). Este o reprezentare rară a scenei în 3d și CNN nu poate fi aplicată direct într-un astfel de caz. De asemenea, orice arhitectură concepută pentru a face față norilor de puncte ar trebui să ia în considerare faptul că este un set neordonat și, prin urmare, poate avea o mulțime de permutări posibile. Deci, rețeaua ar trebui să fie invariantă de permutare. De asemenea, punctele definite în norul de puncte pot fi descrise prin distanța dintre ele. Deci, punctele mai apropiate în general transportă informații utile care sunt utile pentru sarcini de segmentare

PointNet

PointNet este o lucrare importantă în istoria cercetării asupra norilor de puncte, folosind învățarea profundă pentru a rezolva sarcinile de clasificare și segmentare. Să studiem arhitectura Pointnet

Sursă: - https://arxiv.org/abs/1612.00593

Intrarea rețelei pentru n puncte este o matrice nx 3. matricea nx 3 este mapată la nx 64 utilizând un strat partajat multi-perceptron (rețea complet conectată) care este apoi mapat la nx 64 și apoi la nx 128 și nx 1024. Combinarea maximă este aplicată pentru a obține un vector 1024 care este convertit în k ieșiri prin trecerea prin MLP-uri cu dimensiunile 512, 256 și k. În cele din urmă, ieșirile din clasa k sunt produse similar cu orice rețea de clasificare.

Clasificarea se ocupă doar de caracteristicile globale, dar segmentarea are nevoie și de caracteristici locale. Deci, caracteristicile locale din stratul intermediar la nx 64 sunt concatenate cu caracteristici globale pentru a obține matricea anx 1088 care este trimisă prin mlp de 512 și 256 pentru a ajunge la nx 256 și apoi, deși MLP de 128 și m pentru a da m clase de ieșire pentru fiecare punct în norul de puncte.

De asemenea, rețeaua implică o transformare de intrare și o transformare a caracteristicilor ca parte a rețelei a cărei sarcină este să nu schimbe forma de intrare, ci să adauge invarianță transformărilor afine, adică traducerea, rotația etc.

A-CNN

Sursă: - https://arxiv.org/abs/1904.08017

A-CNN propune utilizarea circumvoluțiilor inelare pentru a capta informații spațiale. Știm de la CNN că operațiunile de convoluție captează informațiile locale care sunt esențiale pentru a înțelege imaginea. A-CNN a conceput o nouă convoluție numită convoluție anulară care se aplică punctelor de vecinătate dintr-un nor de puncte.

Arhitectura ia ca intrare nx 3 puncte și găsește normale pentru acestea, care este utilizată pentru ordonarea punctelor. Se ia un subșantion de puncte folosind algoritmul FPS, rezultând ni x 3 puncte. Pe aceste convoluții inelare se aplică pentru a crește la 128 de dimensiuni. Convoluția inelară se realizează pe punctele de vecinătate care sunt determinate folosind un algoritm KNN.

Un alt set de operațiuni de mai sus sunt efectuate pentru a mări dimensiunile la 256. Apoi se aplică un mlp pentru a schimba dimensiunile la 1024 și se aplică punerea în comun pentru a obține un vector global 1024 similar cu norul de puncte. Întreaga parte este considerată codificator. Pentru clasificare, ieșirea globală a codificatorului este trecută prin mlp pentru a obține ieșiri din clasa c. Pentru sarcina de segmentare, atât caracteristicile globale, cât și cele locale sunt considerate similare cu PointCNN și sunt apoi trecute printr-un MLP pentru a obține rezultate de clasă m pentru fiecare punct.

Metrici

Să discutăm valorile care sunt utilizate în general pentru a înțelege și a evalua rezultatele unui model.

Precizia pixelilor

Precizia pixelilor este cea mai simplă valoare care poate fi utilizată pentru validarea rezultatelor. Acuratețea se obține luând raportul dintre pixelii clasificați corect și numărul total de pixeli

Precizie = (TP + TN) / (TP + TN + FP + FN)

Principalul dezavantaj al utilizării unei astfel de tehnici este că rezultatul ar putea arăta bine dacă o clasă îl depășește pe celălalt. Spuneți, de exemplu, că clasa de fundal acoperă 90% din imaginea de intrare, putem obține o precizie de 90% doar clasificând fiecare pixel ca fundal

Intersecția peste Uniune

IOU este definit ca raportul dintre intersecția adevărului la sol și ieșirile de segmentare prezise peste uniunea lor. Dacă calculăm pentru mai multe clase, se calculează IOU pentru fiecare clasă și se ia media lor. Este o valoare mai bună în comparație cu precizia pixelilor, de parcă fiecare pixel este dat ca fundal într-o intrare de 2 clase, valoarea IOU este (90/100 + 0/100) / 2, adică 45% IOU, ceea ce oferă o reprezentare mai bună în comparație cu 90 % precizie.

Sursă: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

IOU ponderat în frecvență

Aceasta este o extensie peste IOU medie pe care am discutat-o ​​și este folosită pentru a combate dezechilibrul de clasă. Dacă o clasă domină cea mai mare parte a imaginilor dintr-un set de date, cum ar fi, de exemplu, fundal, trebuie să fie cântărită în comparație cu alte clase. Astfel, în loc să se ia media tuturor rezultatelor clasei, se ia o medie ponderată pe baza frecvenței regiunii clasei din setul de date.

Scorul F1

Metrica popular utilizată în clasificarea F1 Score poate fi utilizată și pentru sarcina de segmentare pentru a face față dezechilibrului clasei.

Sursă: - https://en.wikipedia.org/wiki/F1_score

Precizie medie

Pentru validarea rezultatelor se folosește zona sub curba Precizie - Reamintire pentru o medie IOU prag ales pe diferite clase.

Funcții de pierdere

Funcția de pierdere este utilizată pentru a ghida rețeaua neuronală spre optimizare. Să discutăm câteva funcții de pierdere populare pentru sarcina de segmentare semantică.

Pierderea Entropiei Cruce

Media simplă a pierderii de clasificare a entropiei încrucișate pentru fiecare pixel din imagine poate fi utilizată ca o funcție generală. Dar acest lucru suferă din nou din cauza dezechilibrului de clasă pe care FCN își propune să îl corecteze folosind greutățile de clasă

UNet încearcă să îmbunătățească acest lucru dând mai multă greutate pixelilor din apropierea frontierei care fac parte din limită în comparație cu pixelii interiori, deoarece acest lucru face ca rețeaua să se concentreze mai mult pe identificarea frontierelor și să nu dea o ieșire grosieră.

Pierderea focală

Pierderea focală a fost concepută pentru a face rețeaua să se concentreze pe exemple dificile, oferind o greutate mai mare și, de asemenea, pentru a face față dezechilibrului extrem de clasă observat în detectoarele de obiecte cu o singură etapă. Același lucru poate fi aplicat și în sarcinile de segmentare semantică

Pierderea zarurilor

Funcția de zaruri nu este altceva decât scor F1. Această funcție de pierdere încearcă în mod direct să optimizeze scorul F1. În mod similar, scorul IOU direct poate fi folosit și pentru a rula optimizarea

Pierderea Tversky

Este o variantă a pierderii zarurilor care oferă o vârstă diferită în greutate FN și FP

Distanța Hausdorff

Este o tehnică utilizată pentru a măsura similitudinea dintre limitele adevărului terestru și cele prezise. Se calculează aflând distanța maximă de la orice punct dintr-o limită la cel mai apropiat punct din cealaltă. Reducerea directă a funcției de pierdere a limitelor este o tendință recentă și s-a demonstrat că oferă rezultate mai bune mai ales în cazuri de utilizare, cum ar fi segmentarea imaginii medicale, unde identificarea limitei exacte joacă un rol cheie.

Avantajul utilizării unei pierderi la graniță în comparație cu o pierdere bazată pe regiune, cum ar fi IOU sau Dice Loss, este că nu este afectat de dezechilibrul clasei, întrucât întreaga regiune nu este luată în considerare pentru optimizare, ci doar granița este luată în considerare.

Sursa https://en.wikipedia.org/wiki/Hausdorff_distance

Cei doi termeni considerați aici sunt pentru două limite, adică adevărul terenului și predicția rezultatului.

LabelMe :-

Instrument de adnotare a imaginii scris în python.
Suportă adnotarea poligonului.
Open Source și gratuit.
Se execută pe Windows, Mac, Ubuntu sau prin Anaconda, Docker
Link: - https://github.com/wkentaro/labelme

Sursă: - https://github.com/wkentaro/labelme

Instrument de adnotare a viziunii computerizate: -

Instrument de adnotare video și imagine dezvoltat de Intel
Gratuit și disponibil online
Se execută pe Windows, Mac și Ubuntu
Link: - https://github.com/opencv/cvat

Adnotator imagine VGG: -

Instrument gratuit de adnotare a imaginilor open source
Pagina HTML simplă <200kb și poate rula offline
Suportă adnotarea poligonului și punctele.
Link: - https://github.com/ox-vgg/via

Sursă: - https://github.com/ox-vgg/via

Rectlabel: -

Instrument de adnotare plătit pentru Mac
Poate folosi modele ML de bază pentru a pre-adnota imaginile
Suportă poligoane, cub-bezier, linii și puncte
Link: - https://github.com/ryouchinsa/Rectlabel-support

Etichetă: -

Instrument de adnotare plătit
Suportă instrumentul stilou pentru adnotări mai rapide și precise
Link: - https://labelbox.com/product/image-segmentation

Datasets

Ca parte a acestei secțiuni, să discutăm diverse seturi de date populare și diverse disponibile în public, pe care le puteți folosi pentru a începe cursurile.

Context Pascal

Acest set de date este o extensie a setului de date Pascal VOC 2010 și depășește setul de date original oferind adnotări pentru întreaga scenă și are peste 400 de clase de date din lumea reală.

Sursă: - https://cs.stanford.edu/~roozbeh/pascal-context/
Sursă: - https://cs.stanford.edu/~roozbeh/pascal-context/

Link: - https://cs.stanford.edu/~roozbeh/pascal-context/

Set de date COCO

Setul de date COCO conține 164k imagini ale setului de date COCO original cu adnotări la nivel de pixeli și este un set de date de referință comun. Acoperă 172 de clase: 80 de clase de lucruri, 91 de clase de lucruri și 1 clasă „fără etichetă”

Sursa: - http://cocodataset.org/#home

Link: - http://cocodataset.org/

Set de date Cityscapes

Acest set de date constă în segmentarea adevărurilor la sol pentru drumuri, benzi, vehicule și obiecte pe drum. Setul de date conține 30 de clase și 50 de orașe colectate în diferite condiții de mediu și meteorologice. Are, de asemenea, un set de date video cu imagini adnotate fin, care poate fi utilizat pentru segmentarea video. KITTI și CamVid sunt tipuri similare de seturi de date care pot fi utilizate pentru instruirea autoturismelor.

Sursă: - https://www.cityscapes-dataset.com/

Link: - https://www.cityscapes-dataset.com/

Set de date Lits

Setul de date a fost creat ca parte a unei provocări pentru identificarea leziunilor tumorale de la scanarea CT hepatică. Setul de date conține 130 de scanări CT de date de antrenament și 70 de scanări CT de date de testare.

Sursă: - https://competitions.codalab.org/competitions/17094

Link: - https://competitions.codalab.org/competitions/17094

Set de date CCP

Cloth Co-Parsing este un set de date care este creat ca parte a lucrării de cercetare Co-Parsing de îmbrăcăminte prin segmentarea și etichetarea comună a imaginilor. Setul de date conține peste 1000 de imagini cu adnotări la nivel de pixel pentru un total de 59 de etichete.

Sursă: - https://github.com/bearpaw/clothing-co-parsing

Sursă :- https://github.com/bearpaw/clothing-co-parsing

Setul de date Pratheepan

Un set de date creat pentru sarcina de segmentare a pielii bazat pe imagini de pe google care conțin 32 de fotografii de față și 46 de fotografii de familie

Sursă: - http://cs-chan.com/downloads_skin_dataset.html

Link: - http://cs-chan.com/downloads_skin_dataset.html

Etichetarea imaginilor aeriene Inria

Un set de date de hărți de segmentare aeriană create din imagini din domeniul public. Are o acoperire de 810 km pătrați și are 2 clase de construcție și non-clădire.

Sursa: - https://project.inria.fr/aerialimagelabeling/
Sursa: - https://project.inria.fr/aerialimagelabeling/

Link: - https://project.inria.fr/aerialimagelabeling/

S3DIS

Acest set de date conține norii punctelor a șase părți interioare la scară largă din 3 clădiri cu peste 70000 de imagini.

Sursă: - http://buildingparser.stanford.edu/dataset.html

Link: - http://buildingparser.stanford.edu/dataset.html

Rezumat

Am discutat o taxonomie a diferiților algoritmi care pot fi utilizați pentru rezolvarea cazului de utilizare a segmentării semantice, fie că este vorba de imagini, videoclipuri sau nori de puncte, precum și contribuțiile și limitările acestora. De asemenea, am analizat modalitățile de evaluare a rezultatelor și seturile de date pentru a începe. Acest lucru ar trebui să ofere o înțelegere cuprinzătoare asupra segmentării semantice ca subiect în general.

Pentru a obține o listă cu mai multe resurse pentru segmentarea semantică, începeți cu https://github.com/mrgloom/awesome-semantic-segmentation.

Lecturi suplimentare


S-ar putea să fiți interesat de ultimele noastre postări pe:

Actualizați:
S-a adăugat material de lectură suplimentar.

Sursă: https://nanonets.com/blog/semantic-image-segmentation-2020/

Timestamp-ul:

Mai mult de la AI și învățarea automată