magia operatorului Sobel

inferență Bayesiană nesupravegheată (dimensiuni de reducere și caracteristici de dezgropare)

detectarea caracteristicilor de nivel scăzut folosind margini

image by Julius Drost on Unsplash

în cele din urmă, în momentul în care toate au fost de așteptare pentru, următorul în seria de inferențe Bayesiene nesupravegheate: scufundarea noastră (nu atât de adâncă) în operatorul Sobel.

un algoritm de detectare a marginilor cu adevărat magic, permite extragerea caracteristicilor de nivel scăzut și reducerea dimensionalității, reducând în esență zgomotul din imagine. A fost deosebit de util în aplicațiile de recunoaștere facială.1968 copilul dragoste de Irwin Sobel și Gary Feldman (Stanford Artificial Intelligence Laboratory), acest algoritm a fost sursa de inspiratie a multor tehnici moderne de detectare margine. Prin convolvarea a două nuclee sau măști opuse peste o anumită imagine (de ex. vezi mai jos-stânga) (fiecare capabil să detecteze muchii orizontale sau verticale), putem crea o reprezentare mai puțin zgomotoasă, netezită (vezi mai jos-dreapta).

Image by Author, generated using Scikit-Image
Sobel Operator implementation example by SciKit-Image altered by Author

Presented as a discrete differential operator technique for gradient approximation computation of the image intensity function, in plain English, the algorithm detects changes in pixel channel valori (de obicei luminanță) prin diferențierea diferenței dintre fiecare pixel (pixelul ancoră) și pixelii din jur (aproximând în esență derivata unei imagini).

Acest lucru duce la netezirea imaginii originale și la producerea unei ieșiri de dimensiuni mai mici, unde caracteristicile geometrice de nivel scăzut pot fi văzute mai clar. Aceste ieșiri pot fi apoi utilizate ca intrări în algoritmi de clasificare mai complexi sau ca exemple utilizate pentru clustering probabilistic nesupravegheat prin divergența Kullback-LEIBLER (KLD) (așa cum se vede în blogul meu recent pe LBP).

generarea de ieșire a dimensiunii noastre inferioare ne cere să luăm derivata imaginii. În primul rând, calculăm derivatul atât în direcțiile x, cât și în Y. Creăm două nuclee 3×3( vezi matrici), cu zerouri de-a lungul centrului axei corespunzătoare, două în pătratele centrale perpendiculare pe zero central și cele din fiecare dintre colțuri. Fiecare dintre valorile non-zero ar trebui să fie pozitivă în partea de sus/în dreapta zerourilor (în funcție de axă) și negativă pe partea corespunzătoare. Aceste nuclee sunt numite Gx și Gy.

acestea apar în format:

cod de autor

aceste nuclee vor convolva apoi peste imaginea noastră, plasând pixelul central al fiecărui nucleu peste fiecare pixel din imagine. Folosim multiplicarea matricei pentru a calcula valoarea intensității unui nou pixel corespunzător într-o imagine de ieșire, pentru fiecare nucleu. Prin urmare, ajungem la două imagini de ieșire (una pentru fiecare direcție carteziană).

scopul este de a găsi diferența / schimbarea dintre pixelul din imagine și toți pixelii din matricea de gradient (kernel) (Gx și Gy). Mai matematic, acest lucru poate fi exprimat ca.

notă laterală:

Din punct de vedere tehnic nu complicăm nimic. Deși ne place să ne referim la convoluții în cercurile AI și machine learning, o convoluție ar implica răsturnarea imaginii originale. Matematic vorbind, când ne referim la convoluții, calculăm într-adevăr corelația încrucișată între fiecare zonă 3×3 a intrării și masca pentru fiecare pixel. Imaginea de ieșire este covarianța generală dintre mască și intrare. Acesta este modul în care sunt detectate marginile.

înapoi la explicația noastră Sobel…

Valorile calculate pentru fiecare multiplicare matrice între masca și secțiunea 3×3 de intrare sunt însumate pentru a produce valoarea finală pentru pixel în imaginea de ieșire. Aceasta generează o nouă imagine care conține informații despre prezența marginilor verticale și orizontale prezente în imaginea originală. Aceasta este o reprezentare caracteristică geometrică a imaginii originale. Mai mult, deoarece acest operator este garantat să producă aceeași ieșire de fiecare dată, această tehnică permite detectarea stabilă a marginilor pentru sarcinile de segmentare a imaginilor.

Din aceste ieșiri, putem calcula atât magnitudinea gradientului,cât și direcția gradientului (folosind operatorul arctangent) la orice pixel dat (x, y):

cod de autor

Din acest lucru putem constata că acei pixeli cu magnitudini mari sunt mai susceptibili de a fi o margine în imagine, în timp ce direcția ne informează despre orientarea marginii (deși direcția nu este necesară pentru generarea ieșirii noastre).

o implementare simplă:

aici este o implementare simplă a operatorului Sobel în python (folosind NumPy) pentru a vă oferi o simt pentru procesul (pentru voi toți devenire codere acolo).

cod de autor

această implementare este o variantă python a exemplului pseudocod Wikipedia, cu scopul de a arăta cum s-ar putea implementa acest algoritm, în timp ce demonstrează, de asemenea, diferitele etape ale procesului.

De ce ne pasă?

deși aproximarea gradientului produsă de acest operator este relativ brută, oferă o metodă extrem de eficientă din punct de vedere al calculului marginilor, colțurilor și altor caracteristici geometrice ale imaginilor. La rândul său, a deschis calea pentru o serie de tehnici de reducere a dimensionalității și de extragere a caracteristicilor, cum ar fi modelele binare locale (consultați celălalt blog pentru mai multe detalii despre această tehnică).

bazându-ne pe caracteristici exclusiv geometrice riscă să pierdem informații importante în timpul codificării datelor noastre, cu toate acestea, compromisul este ceea ce permite preprocesarea rapidă a datelor și, la rândul său, instruirea rapidă. Prin urmare, această tehnică este utilă în special în scenarii în care textura și caracteristicile geometrice pot fi considerate extrem de importante în definirea intrării. Acesta este motivul pentru care recunoașterea feței poate fi completată cu un grad relativ ridicat de precizie folosind operatorul Sobel. Cu toate acestea, această tehnică poate să nu fie cea mai bună alegere dacă încercați să clasificați sau să grupați intrările care utilizează culoarea ca factor principal de diferențiere.

această metodă este încă extrem de eficientă pentru obținerea unei reprezentări cu dimensiuni reduse a trăsăturilor geometrice și un excelent punct de plecare pentru dimensionalitate și reducerea zgomotului, înainte de utilizarea altor clasificatori sau pentru utilizarea în metodologiile de inferență Bayesiană.

Lasă un răspuns

Adresa ta de email nu va fi publicată.