Cum se configurează smartphone-uri și PC-uri. Portal informativ

Caseta de instrumente pentru procesarea imaginilor. Curs scurt în Teoria procesării imaginilor

Segmentarea imaginii

Segmentarea stabilește subseturi caracteristice de pixeli sau împărțirea unei imagini în regiuni coerente, fiecare dintre acestea fiind într-un anumit sens „omogenă”. Procesele de segmentare și extragerea caracteristicilor pot fi gândite ca atribuirea de etichete pixelilor care determină clasele speciale cărora le aparțin acești pixeli. Astfel, rezultatul procesului de segmentare este o imagine de caracter în care valorile pixelilor sunt etichete, nu niveluri de luminozitate.

Clasificarea modelelor de imagine

Pentru segmentarea imaginilor se folosește unul sau altul model care oferă o descriere mai mult sau mai puțin adecvată a imaginilor reale. Există două clase principale de modele de imagini: statistice și spațiale. Modelele statistice descriu un set de elemente punctuale ale unei imagini sau ale zonei acesteia. Modelele spațiale descriu descompunerea unei imagini în părți componente sau regiuni.

Modelele statistice de ordinul întâi descriu un set de elemente punctuale ale imaginii fără a lua în considerare locația lor în spațiu. Cea mai simplă descriere a acestui tip este densitatea de probabilitate a distribuției valorilor de luminozitate, care este calculată folosind o histogramă a valorilor de luminozitate. Se crede adesea că densitatea de probabilitate a distribuției valorilor reale ale imaginii este aproximată de un anumit standard, de exemplu, o funcție Gaussiană de densitate a probabilității sau un amestec de astfel de funcții.

Modelele de ordinul întâi nu țin cont de faptul că imaginea constă din părți consistente (elemente de textură, obiecte etc.). Dispunerea reciprocă a elementelor în spațiu este luată în considerare de modele de seturi de elemente de imagine punctuală de ordin superior. Un model este matricea de adiacență a luminozității, ale cărei elemente reprezintă frecvențele perechilor de valori de luminozitate la offset-ul selectat. În practică, valoarea deplasării este aleasă să fie destul de mică, deoarece cu o schimbare mare, valorile luminozității devin independente unele de altele.

O altă metodă de descriere a relațiilor spațiale dintre elementele punctuale ale unei imagini este de a lua în considerare distribuția densității de probabilitate a valorilor caracteristicilor locale, care este adesea mai eficientă decât utilizarea distribuției densității de probabilitate a valorilor de luminozitate de ordin superior. La segmentarea unei imagini, caracteristicile locale datorate prezenței marginilor sunt deosebit de utile, de exemplu, valorile diferiților operatori diferențiali pentru măsurarea gradientului de luminozitate.

Modelele de imagini statistice includ, de asemenea, modele aleatoare de câmp și serii de timp, care sunt utilizate în principal în modelarea texturii.

Modelele spațiale descriu o imagine în termeni de zone. O imagine poate fi reprezentată ca o colecție de obiecte pe un fundal, subdivizată în zone într-un mod regulat sau aleatoriu, ca un model al formei zonelor. Modelele spațiale permit, în general, să extragă mai multe informații dintr-o imagine decât modelele de statistici de distribuție a luminozității. Cu toate acestea, până acum sunt folosite doar modele destul de simple, iar aparatul lor matematic necesită o dezvoltare ulterioară.

Segmentarea imaginii prin metode de prag

Thresholdingul este cea mai simplă și cea mai utilizată metodă de segmentare a imaginii. Într-o serie de metode standard de extragere a părților unei imagini prin prag, valorile pragului sunt determinate direct din histogramele imaginii (modelul statistic de ordinul întâi al imaginii). Din punct de vedere istoric, prima metodă a acestui grup de metode este metoda modului. Metoda decurge din presupunerea că imaginea conține un număr cunoscut de clase de puncte care sunt uniforme în luminozitate. În plus, se crede că zonele de delimitare dintre zonele închise ocupă o zonă relativ mică a imaginii. Prin urmare, pe histogramă, acestea ar trebui să corespundă canalelor intermodale, în cadrul cărora sunt stabilite pragurile de segmentare.

Cu toate acestea, imaginile reale nu se potrivesc bine cu ipotezele prezentate. De regulă, granițele dintre regiuni sunt neclare și structura modală a histogramei nu este suficient exprimată. De asemenea, chiar și atunci când histograma are moduri distincte, jgheaburile sale pot fi atât de largi și plate încât este dificil de localizat fundul jgheabului.

Dacă imaginea reală nu satisface condițiile metodei mod, se aplică următoarele patru abordări. În primul rând, îmbunătățirea histogramei, inclusiv, pe baza proprietăților locale ale imaginii folosind informații de gradient, statistici de ordinul doi, analiza curburii funcției de distribuție integrală. În al doilea rând, potrivirea histogramei cu un amestec de distribuții normale și aplicarea metodelor statistice pentru a separa în mod optim acest amestec. Dezavantajul acestei abordări este complexitatea de calcul ridicată, în plus, Gaussoizii adesea aproximează slab modurile reale. În al treilea rând, introducerea unei măsuri empirice a calității unei imagini segmentate și maximizarea funcției de criteriu corespunzătoare - abordarea discriminantă, abordarea entropiei, abordarea momentului etc. În al patrulea rând, trecerea la utilizarea altor statistici pentru alegerea unui prag. , în special, alegerea unui prag direct pe caracteristicile locale. Utilizarea caracteristicilor locale face posibilă segmentarea imaginilor reale complexe cu o calitate mai bună.

Analiza histogramei oferă o calitate satisfăcătoare a segmentării acelor imagini care constau din zone de luminozitate uniformă. Cu toate acestea, atunci când selectați obiecte de dimensiuni mici pe un fundal complex, punctele obiectelor nu prezintă vârfuri vizibile în histograma luminozității. Prin urmare, se utilizează procesarea cu un prag variabil: pentru fragmente mici ale imaginii, se construiesc histograme, care sunt verificate pentru bimodalitate, iar pragurile locale găsite sunt interpolate cu restul imaginii.

O serie de algoritmi bazați pe analiza discriminantă sunt propuși în lucrările lui Ost. Lăsa G={0,1,...,L) - valori posibile ale luminozității imaginii. Pragul separă distribuția valorilor de luminozitate a imaginii în două clase C 0={0,1,...,t) și C 1={t+1,t+2,...,L}, tÎ G. Pragul optim t* definit ca

unde este varianța distribuției valorilor de luminozitate ale imaginii în ansamblu, w0 este probabilitatea ca un punct luat la întâmplare să aparțină fundalului, https://pandia.ru/text/80/299/images /image004_46.gif" width="21" height="24" >- nivelul mediu al luminozității fundalului (clasa C 0).

Dacă zonele obiectului și fundalul diferă puternic una de cealaltă, histograma funcției de criteriu poate fi multimodală. Prin urmare, este necesar să se determine toate vârfurile locale, ceea ce reduce serios competitivitatea metodei.

Criteriul de entropie pentru alegerea pragului optim. Folosind definițiile introduse mai devreme, histograma valorilor de luminozitate poate fi considerată ca L-sursă simbolică de informaţie cu entropie

,

Unde pi este probabilitatea de luminozitate cu valoarea i.

Entropia sursei este suma entropiei obiectului H 0 și entropia de fond H 1, iar pragul optim ar trebui să dea valoarea maximă a acestei sume:

, (2)

în care .

Din moment ce fiecare dintre termeni H 0 și H 1 caracterizează uniformitatea distribuției luminozității în intervalele corespunzătoare și scade brusc când un fragment „străin” al histogramei se încadrează în acest interval, maximul criteriului de entropie va corespunde celei mai bune variante de segmentare. Dezavantajul acestei metode este că funcția de criteriu poate avea mai multe maxime apropiate ca valoare.

Spre deosebire de abordarea discriminantă, metoda de conservare a momentului introduce toate momentele imaginii până la (2 k+1) comanda inclusiv:

.

Se consideră pragul optim pentru a asigura egalitatea momentelor corespunzătoare imaginilor segmentate și originale. Cu toate acestea, dacă k>3, atunci apar dificultăți din cauza lipsei unei soluții analitice a problemei.

Trecerea de la alegerea unui prag bazat pe histograma luminozității la utilizarea altor statistici complică, fără îndoială, algoritmii de segmentare, dar oferă o segmentare mai bună a imaginilor complexe. Pentru a selecta obiecte de dimensiuni mici, pare promițător să alegeți un prag direct pe baza proprietăților locale ale punctelor de imagine.

Metoda contrastului mediu maxim. Metoda se bazează pe o determinare euristică simplă a pragului optim: pragul optim pentru segmentarea imaginii este pragul care evidențiază mai mult contrast ridicat și mai puține diferențe de luminozitate cu contrast scăzut decât orice alt prag. Expresia cantitativă a criteriului este contrastul mediu al tuturor diferențelor de luminozitate identificate de un anumit prag. Pragul corespunzător contrastului mediu maxim este optim. Dacă două puncte adiacente X 1=(X 1,y 1) și X 2=(X 2,y 2) au valori de luminozitate f(X 1) și f(X 2) (fără pierderea generalității f(X 1)£ f(X 2)), apoi numărul de picături identificate de prag t, este egal cu:

Unde

Contrast total prag t, este egal cu:

unde DIV_ADBLOCK169">

. (3)

Pe baza matricelor de adiacență ale valorilor de luminozitate propuse de Haralik, se ia în considerare următoarea metodă de segmentare. Pentru imagine, matricele sunt construite pentru aspectul comun al nivelurilor de luminozitate ale perechilor de puncte adiacente pe orizontală. P 1.0 și vertical P 1,90 direcții, precum și matricea totală de tranziție, dimensiunea ( L+1)'( L+1):

Pvh=P 1,0 +P 1,90.

Prag arbitrar tîmparte punctele de imagine în două clase DIN 0 și DIN 1, iar matricea de tranziție - cu 4 blocuri.

Segmentarea imaginii cu U-Net în practică

Introducere

În această postare pe blog, vom vedea cum funcționează Unet, cum să-l implementăm și ce date sunt necesare pentru a-l antrena. Pentru a face acest lucru, vom lua în considerare:

  1. ca sursă de inspiraţie.
  2. Pytorchca instrument de realizare a ideilor noastre.
  3. Concursuri Kaggle ca un loc unde ne putem testa ipotezele pe date reale.

Nu vom urma articolul 100%, dar vom incerca sa ne dam seama de esenta lui, sa o adaptam nevoilor noastre.

Prezentarea problemei

În această problemă, ni se oferă o imagine a unei mașini și masca sa binară (localizând poziția mașinii în imagine). Dorim să creăm un model care să poată separa imaginea mașinii de fundal cu o precizie pixel cu pixel de peste 99%.

Pentru a înțelege ce vrem, imaginea gif de mai jos:

Imaginea din stânga este imaginea originală, în dreapta este masca care va fi aplicată imaginii. Vom folosi o rețea neuronală Unet care va învăța să creeze automat o mască.

  1. Alimentarea imaginilor mașinilor către rețeaua neuronală.
  2. Folosind o funcție de pierdere, comparând ieșirea rețelei neuronale cu măștile corespunzătoare și returnând o eroare pentru rețea pentru a afla unde este greșită rețeaua.

Structura codului

Codul a fost simplificat pe cât posibil pentru a înțelege cum funcționează. Codul principal se află în acest fișier principal.py , hai să-l analizăm rând cu rând.

Codul

Vom itera prin codul din main.py și prin articol. Nu vă faceți griji cu privire la detaliile ascunse în alte fișiere de proiect: vă vom arăta pe cele de care aveți nevoie, după cum este necesar.

Să începem de la început:

def main(): # Hiperparametri input_img_resize = (572, 572) # Redimensionarea imaginilor de intrare ale rețelei neuronale output_img_resize = (388 , 388 ) # Redimensionarea imaginilor de ieșire ale rețelei neuronale batch_size = 3 epochs = 50 threshold = 0. 5 validation_size = 0. 2 sample_size = None # -- Parametri opționali threads = cpu_count() use_cuda = torch.cuda.is_available() script_dir = os.path.dirname(os.path. abspath(__file__ )) # Training callbacks tb_viz_cb = TensorboardVisualizerCallback(os.path.join(script_dir,"../logs/tb_viz" )) tb_logs_cb = TensorboardLoggerCallback(os.path.join(script_dir,"../logs"/tb )) model_saver_cb = ModelSaverCallback(os.path.join(script_dir,"../output/models/model_" + helpers.get_model_timestamp()), verbose= True )

În prima secțiune, vă definiți hiperparametrii, îi puteți ajusta după cum doriți, de exemplu, în funcție de memoria dvs. GPU. Parametri optimi definiți niște parametri utili și apeluri inverse. TensorboardVisualizerCallback este o clasă în care va stoca predicții tensorboardîn fiecare epocă a procesului de instruire, TensorboardLoggerCallback stocați valorile funcției de pierdere și „precizia” pe pixel în tensorboard. Și, în sfârșit ModelSaverCallback salvați modelul după finalizarea antrenamentului.

# Descărcați seturile de date ds_fetcher = DatasetFetcher() ds_fetcher. download_dataset()

Această secțiune descarcă și preia automat setul de date de la Kaggle. Vă rugăm să rețineți că pentru ca această secțiune de cod să funcționeze cu succes, trebuie să aveți un cont Kaggle cu un nume de utilizator și o parolă, care trebuie plasate în variabilele de mediu KAGGLE_USERși KAGGLE_PASSWDînainte de a rula scriptul. De asemenea, este necesar să acceptați regulile concursului înainte de a încărca datele. Acest lucru se poate face pe filă.descărcarea datelor despre competiție

# Obține calea către fișierele pentru rețeaua neuronală X_train, y_train, X_valid, y_valid = ds_fetcher.get_train_files(sample_size= sample_size, validation_size= validation_size) full_x_test = ds_fetcher.get_test_files(sample_size) = Testing callback.Sadicsallvers_cb join(script_dir,"../output/submit.csv.gz" ), origine_img_size, threshold)

Această linie definește sună din nou funcție pentru test (sau predicție). Va salva predicțiile într-un fișier gzip de fiecare dată când se produce un nou lot de predicții. Astfel, predicțiile nu vor fi stocate în memorie, deoarece sunt de dimensiuni foarte mari.

După încheierea procesului de predicție, puteți trimite fișierul primit submit.csv.gz din folderul de ieșire din Kaggle.

# -- Definiți arhitectura noastră rețelei neuronale# Hârtia originală are 1 canal de intrare, în cazul nostru avem 3 (RGB ) net = unet_origin. UNetOriginal ((3 , *img_resize)) clasificator = nn. clasificator. CarvanaClassifier (net, epochs) optimizator = optim. SGD (net. parameters() , lr= 0,01 , momentum= 0,99 ) train_ds = TrainImageDataset (X_train , y_train, input_img_resize, output_img_resize, X_transform = aug. augment_img) train_loader = DataLoader (DataLoader, y_train), sampler_Rand_works, sampler_Train_num = fire de execuție, pin_memory= use_cuda) valid_ds = TrainImageDataset (X_valid , y_valid, input_img_resize, output_img_resize, threshold= threshold) valid_loader = DataLoader (valid_ds, batch_size, sampler= SequentialSampler), = thread_valid_workers = threads

imprimare ( „Instruire pe () mostre și validare pe () mostre”. format(len(train_loader. dataset), len(valid_loader. dataset))) # Antrenează clasificatorul clasificatorului. tren(încărcare_tren, încărcare_valid, epoci, apeluri inverse= )

test_ds = TestImageDataset (full_x_test, img_resize) test_loader = DataLoader (test_ds, batch_size, sampler= SequentialSampler (test_ds), num_workers= threads, pin_memory= use_cuda) # Predicți și salvați clasificatorul. predict(test_loader, callbacks= ) pred_saver_cb. close_saver()

În cele din urmă, facem la fel ca mai sus, dar pentru rularea de predicții. Noi numim nostru pred_saver_cb.close_saver() pentru a șterge și închide fișierul care conține predicțiile.

Implementarea arhitecturii rețelei neuronale

Unet articol prezintă o abordare pentru segmentarea imaginilor medicale. Cu toate acestea, se dovedește că această abordare poate fi folosită și pentru alte sarcini de segmentare. Inclusiv pentru cel la care vom lucra acum.

Înainte de a continua, ar trebui să citiți măcar o dată întregul articol. Nu vă faceți griji dacă nu înțelegeți complet matematica, puteți sări peste această secțiune, precum și capitolul Experimente. Scopul nostru este să obținem imaginea de ansamblu.

Scopul articolului original este diferit de al nostru, va trebui să adaptăm unele piese în funcție de nevoile noastre.

La momentul scrierii lucrării, s-au omis 2 lucruri care acum sunt necesare pentru a accelera convergența rețelei neuronale:

  1. BatchNorm.
  2. GPU-uri puternice.

Primul a fost inventat cu doar 3 luni înainte Unet, și probabil prea devreme pentru autori Unet l-a adăugat la articolul tău.

Până în prezent BatchNorm folosit aproape peste tot. Puteți scăpa de el în cod dacă doriți să evaluați articolul 100%, dar este posibil să nu trăiți pentru a vedea rețeaua convergând.

În ceea ce privește GPU-urile, articolul spune:

Pentru a minimiza supraîncărcarea și pentru a utiliza la maximum memoria GPU, preferăm plăcile mari de intrare față de o dimensiune mare a lotului și, prin urmare, reducem lotul la o singură imagine

Au folosit un GPU cu 6 GB de RAM, dar în prezent GPU-ul are mai multă memorie pentru a încăpea imagini într-un singur lot. Lotul actual de trei funcționează pentru un GPU într-un GPU cu 8 GB de RAM. Dacă nu aveți o astfel de placă video, încercați să reduceți lotul la 2 sau 1.

Cât despre metode măriri (adică distorsiunea imaginii originale în funcție de un model) luate în considerare în articol, vom folosi altele diferite de cele descrise în articol, deoarece imaginile noastre sunt foarte diferite de imaginile biomedicale.

Acum să începem de la început prin proiectarea arhitecturii rețelei neuronale:

Iată cum arată Unet. Puteți găsi o implementare echivalentă Pytorch într-un modul nn.unet_origin.py.

Toate clasele din acest fișier au cel puțin 2 metode:

  • __init__()unde ne vom inițializa straturile rețelei neuronale;
  • redirecţiona()care este metoda numită atunci când rețeaua neuronală primește intrare.

Să ne uităm la detaliile implementării:

  • ConvBnRelu este un bloc care conține operațiunile Conv2D, BatchNorm și Relu. În loc să introducem 3 dintre ele pentru fiecare stivă de codificatori (ops group down) și stive de decoder (ops group up), le grupăm în acest obiect și îl reutilizam după cum este necesar.
  • StackEncoder încapsulează întregul „stiva” de operațiuni în jos, inclusiv operațiuni ConvBnReluși MaxPool ca mai jos:



Urmărim rezultatul ultimei tranzacții ConvBnRelu în x_traceși returnați-l pentru că vom concatena această ieșire cu stive de decodor.

  • decodor stivă este același cu StackEncoder, dar pentru operațiunile de decodare înconjurate în roșu mai jos:



Rețineți că ia în considerare operația de tăiere/concatenare (încercuită în portocaliu) prin trecerea în jos_tensor, care nu este altceva decât tensorul x_trace returnat de StackEncoder .

  • UNetOriginal este locul unde se întâmplă magia. Aceasta este rețeaua noastră neuronală, care va colecta toate cărămizile prezentate mai sus. Metode initși redirecţiona cu adevărat complexe, adaugă o grămadă StackEncoder , partea centrală și la final câteva decodor stivă . Apoi obținem rezultatul decodor stivă , adăugați o convoluție 1x1 conform articolului, dar în loc să definim două filtre ca rezultat, definim doar 1, care va fi de fapt predicția noastră de masca în tonuri de gri. Apoi, ne „reducem” ieșirea pentru a elimina dimensiunea canalului (doar 1, deci nu trebuie să o stocăm).

Dacă doriți să înțelegeți mai multe detalii ale fiecărui bloc, puneți un punct de întrerupere de depanare în metoda înainte a fiecărei clase pentru a vizualiza obiectele în detaliu. De asemenea, puteți imprima forma tensorilor de ieșire între straturi prin imprimare ( x.size() ).

Antrenamentul rețelei neuronale

  1. Funcția de pierdere

Acum în lumea reală. Conform articolului:

Funcția de energie este calculată printr-un soft-max în funcție de pixeli pe harta caracteristică finală combinată cu funcția de pierdere a entropiei încrucișate.

Ideea este că în cazul nostru dorim să folosim coeficientul de zaruri ca o funcție de pierdere în loc de ceea ce ei numesc o „funcție energetică”, deoarece aceasta este metrica utilizată înConcurență Kaggle , care este definit:

Xeste predicția noastră și Y- masca corect etichetata pe obiectul curent. |X|înseamnă cardinalitatea setului X(numărul de elemente din această mulțime) și ∩ pentru intersecția dintre Xși Y.

Codul pentru coeficientul de zaruri poate fi găsit la nn.pierderi.SoftDiceLoss .

clasa SoftDiceLoss (nn.Module): def __init__(self, weight= None, size_average= True): super (SoftDiceLoss, self).__init__() def forward(self, logits, targets): smooth = 1 num = targets.size (0 ) probs = F.sigmoid(logits) m1 = probs.view(num, - 1 ) m2 = targets.view(num, - 1 ) intersection = (m1 * m2) scor = 2 . * (intersection.sum(1 ) + smooth) / (m1.sum(1 ) + m2.sum(1 ) + smooth) scor = 1 - scor.sum() / num return scor

Motivul pentru care intersecția este implementată ca o înmulțire și cardinalitatea ca sumă() pe axa 1 (suma celor trei canale) este că predicția și ținta sunt one-hot codificat vectori.

De exemplu, să presupunem că predicția la pixelul (0, 0) este 0,567 și ținta este 1, obținem 0,567 * 1 = 0,567. Dacă ținta este 0, obținem 0 la acea poziție a pixelului.

De asemenea, am folosit un factor neted de 1 pentru propagarea inversă. Dacă predicția este un prag dur de 0 și 1, este dificil să se propagă înapoi pierderea zarurilor.

Apoi comparăm pierderea zarurilor cu entropia încrucișată pentru a obține funcția noastră de pierdere totală, pe care o puteți găsi în metodă _criteriu din nn.Classifier.CarvanaClassifier . Potrivit articolului original, ei folosesc, de asemenea, o hartă de greutate în funcția de pierdere a entropiei încrucișate pentru a da mai multă eroare unor pixeli în timpul antrenamentului. În cazul nostru, nu avem nevoie de așa ceva, așa că folosim doar entropia încrucișată fără nicio hartă de greutate.

2. Optimizator

Deoarece nu avem de-a face cu imagini biomedicale, le vom folosi pe ale noastre măriri . Codul poate fi găsit în img.augmentation.augment_img. Acolo efectuăm translație aleatorie, rotație, răsturnare și scalare.

Antrenamentul rețelei neuronale

Acum poți începe să înveți. Pe măsură ce progresați în fiecare epocă, veți putea vizualiza modul în care modelul dumneavoastră prezice setul de validare.

Pentru asta trebuie să alergi tensorboardîn folderul jurnal folosind comanda:

Tensorboard --logdir=./logs

Un exemplu de ceea ce poți vedea în tensorboard după epoca 1:

Segmentarea înseamnă selectarea zonelor care sunt omogene după un anumit criteriu, de exemplu, după luminozitate. Formularea matematică a problemei de segmentare poate fi următoarea.

Fie funcția de luminozitate a imaginii analizate; X este o submulțime finită a planului pe care este definit
;
- compartimentare X pe K subseturi conectate nevide
LP este un predicat definit pe o mulțime Sși luând valori adevărate dacă și numai dacă vreo pereche de puncte din fiecare submulțime satisface criteriul de omogenitate.

Segmentarea imaginii
prin predicat LP se numeste partitionare
, îndeplinind condițiile:

A)
;

b)
;

în)
;

d) zonele adiacente.

Condițiile a) și b) înseamnă că fiecare punct al imaginii trebuie să fie atribuit în mod unic unei anumite zone, c) determină tipul de omogenitate al zonelor obținute și, în final, d) exprimă proprietatea de „maximalitate” a zonelor împărțite. .

Predicat LP se numește predicat de omogenitate și poate fi scris astfel:

(1)

Unde
-relația de echivalență;
- puncte arbitrare din .Astfel, segmentarea poate fi privită ca un operator de forma:

Unde
-functii care determina imaginea originala, respectiv segmentata; -eticheta eu- zona.

Există două abordări generale pentru rezolvarea problemei de segmentare, care se bazează pe concepte metodologice alternative. Prima abordare se bazează pe ideea de „discontinuitate” a proprietăților punctelor de imagine atunci când se deplasează dintr-o zonă în alta. Această abordare reduce problema segmentării la problema identificării limitelor regiunilor. O soluție de succes a acestuia din urmă face posibilă, în general, identificarea atât a regiunilor în sine, cât și a limitelor acestora. A doua abordare implementează dorința de a selecta puncte de imagine care sunt omogene în proprietățile lor locale și de a le combina într-o zonă, căreia îi va primi ulterior un nume sau o etichetă semantică. În literatură, prima abordare se numește segmentare prin evidenţierea limitelor zonelorși al doilea - segmentare prin marcarea punctelor de zonă. Definiția matematică de mai sus a problemei ne permite să caracterizăm aceste abordări în termeni de predicat de omogenitate LP. În primul caz, ca LP trebuie să existe un predicat care ia valori adevărate la punctele de limită ale regiunilor și valori false la punctele interne. Cu toate acestea, se poate observa o limitare semnificativă a acestei abordări, care constă în faptul că partiția este aici un set de două elemente. În termeni practici, aceasta înseamnă că algoritmii de detectare a marginilor nu permit identificarea diferitelor zone prin etichete diferite.

Pentru a doua abordare, predicatul LP poate avea forma definită prin relația (5.1). Abordările de mai sus generează metode și algoritmi specifici pentru rezolvarea problemei de segmentare.

Metoda de segmentare bazată pe prag

Limitarea unei imagini înseamnă transformarea funcției de luminozitate de către un operator al formei

Unde s(x,y)– imagine segmentată; K- numărul de zone de segmentare;
- semne de zone segmentate;
sunt valorile prag ordonate astfel încât
.

Într-un caz anume, când K= 2 pragurile implică utilizarea unui singur prag T. La atribuirea pragurilor, de regulă, se utilizează o histogramă a valorilor funcției de luminozitate a imaginii.

Algoritm de segmentare bazat pe prag în pseudocod

Intrare: mtrIntens este matricea originală a imaginii în tonuri de gri;

l, r – pragurile histogramei

Ieșire: mtrIntensNew - matrice de imagini segmentate

pentru i:=0 la l-1 do

pentru i:=l la r do

pentru i:=r+1 la 255 do

LUT[i]=255;

pentru i:=1 la 100 do

pentru j:=1 la 210 do

mtrIntensNew:=LUT]

1

Sunt luate în considerare metodele matematice de segmentare a imaginii conform standardului Dicom. Pentru sarcinile de recunoaștere a imaginilor medicale sunt dezvoltate metode matematice de segmentare a imaginilor din standardul Dicom. Diagnosticul bolilor depinde de calificările cercetătorului și îi cere să efectueze vizual segmentarea, iar metodele matematice de procesare a imaginilor raster sunt un instrument pentru acest diagnostic. Prelucrarea imaginilor medicale achiziționate de hardware fără preprocesarea datelor de imagine dă în majoritatea cazurilor rezultate incorecte. Au fost efectuate procedurile de selectare a contururilor obiectelor folosind metoda Canny și algoritmi suplimentari de procesare a imaginilor raster. Rezultatele cercetării ne permit să calculăm proprietățile morfometrice, geometrice și de histogramă ale formațiunilor din corpul uman necesare pentru tratarea ulterioară a pacientului și să oferim un tratament medical eficient. Principiile dezvoltate ale analizei automate computerizate a imaginilor medicale sunt utilizate în mod eficient pentru sarcinile operaționale de diagnosticare medicală a unei instituții oncologice specializate și în scopuri educaționale.

recunoasterea formelor

segmentarea obiectelor de interes

imagini medicale

1. Vlasov A.V., Tsapko I.V. Modificarea algoritmului Canny în raport cu prelucrarea imaginilor radiografice.Vestnik nauki Sibiri. - 2013. - Nr. 4 (10). - S. 120-127.

2. Gonzales R., Woods R. Procesarea digitală a imaginilor. - M.: Technosfera, 2006. - S. 1072.

3. Kulyanichev Yu.P., Pivtoratskaya S.V. Abordare structurală a selecției caracteristicilor în sistemele de recunoaștere a modelelor // Științe naturale și tehnice. - 2011. - Nr. 4. - P. 420-423.

4. Nikitin O.R., Pasechnik A.S. Conturarea și segmentarea în sarcini de diagnosticare automată a patologiilor // Metode și dispozitive de transmitere și prelucrare a informațiilor. - 2009. - Nr. 11. - P. 300-309.

5. Canny J. O abordare computațională a detectării marginilor // IEEE Transactions on pattern analysis and machine intelligence. - 1986. - Nr. 6. - P.679–698.

6. DICOM – Mod de acces: http://iachel.ru/zob23tai-staihroe/ DICOM

7. Doronicheva A.V., Sokolov A.A., Savin S.Z. Utilizarea operatorului Sobel pentru detectarea automată a marginilor în imagini medicale // Journal of Mathematics and System Science. - 2014. - Vol. 4, nr. 4 - p. 257-260.

8. Jähne B., Scharr H., Körkel S. Principles of filter design // Handbook of Computer Vision and Applications. Presa Academică. - 1999. - 584 p.

Una dintre domeniile prioritare pentru dezvoltarea medicinei în Rusia este trecerea la propriile noastre tehnologii inovatoare pentru înregistrarea electronică, stocarea, procesarea și analiza imaginilor medicale ale organelor și țesuturilor pacienților. Acest lucru se datorează creșterii cantității de informații prezentate sub formă de imagini în diagnosticul bolilor semnificative din punct de vedere social, în primul rând cancerul, al cărui tratament în majoritatea cazurilor are un rezultat doar în stadiile incipiente.

La diagnosticarea imaginilor standardului DICOM se determină o zonă patologică, iar când se confirmă natura patologică a acesteia, se rezolvă problema clasificării: atribuirea acesteia la oricare dintre speciile cunoscute sau identificarea unei noi clase. O dificultate evidentă o reprezintă defectele din imaginea rezultată, datorită atât limitărilor fizice ale echipamentului, cât și limitelor admisibile ale sarcinii asupra corpului uman. Prin urmare, software-ul este responsabil pentru prelucrarea suplimentară a imaginilor pentru a crește valoarea lor diagnostică pentru medic, a le prezenta într-o formă mai convenabilă și a evidenția principalul lucru din volumele mari de date primite.

Scopul studiului. Pentru sarcinile de recunoaștere a imaginilor medicale sunt dezvoltate metode matematice de segmentare a imaginilor din standardul Dicom. Diagnosticul bolilor depinde de calificările cercetătorului și îi cere să efectueze vizual segmentarea, iar metodele matematice de procesare a imaginilor raster sunt un instrument pentru acest diagnostic. Prelucrarea imaginilor medicale achiziționate de hardware fără preprocesarea datelor de imagine dă în majoritatea cazurilor rezultate incorecte. Acest lucru se datorează faptului că inițial imaginile obținute sunt de o calitate nesatisfăcătoare.

Material și metode de cercetare

Ca material de cercetare sunt utilizate tomogramele computerizate ale pacienților unei instituții clinice specializate. Înainte de a analiza datele grafice reale, este necesar să pregătiți o imagine sau să o preprocesați. Această etapă rezolvă problema îmbunătățirii calității vizuale a imaginilor medicale. Este util să împărțim întregul proces de procesare a imaginii în două mari categorii: metode în care imaginile sunt atât de intrare cât și de ieșire; metode, în care datele de intrare sunt imagini și, ca rezultat al muncii, datele de ieșire sunt caracteristicile și atributele identificate pe baza datelor de intrare. Acest algoritm nu presupune că fiecare dintre procesele de mai sus este aplicat imaginii. Înregistrarea datelor este primul dintre procesele prezentate în Fig. unu.

Orez. 1. Principalele etape ale prelucrării digitale a datelor grafice

Înregistrarea poate fi destul de simplă, ca în exemplul în care imaginea originală este digitală. De obicei, etapa de înregistrare a imaginii implică preprocesarea datelor, cum ar fi mărirea imaginii. Îmbunătățirea imaginii este una dintre cele mai simple și mai impresionante domenii de preprocesare. De regulă, în spatele metodelor de îmbunătățire a conținutului informațional al imaginilor, este definită sarcina de a găsi pixeli slab distinși sau de a crește contrastul în imaginea originală. Una dintre metodele utilizate în mod obișnuit pentru îmbunătățirea conținutului informațional al imaginilor este îmbunătățirea contrastului imaginii, deoarece limitele obiectului de interes sunt îmbunătățite. Trebuie luat în considerare faptul că îmbunătățirea calității imaginii este o sarcină oarecum subiectivă în procesarea imaginii. Restaurarea imaginilor este o sarcină legată și de îmbunătățirea calității vizuale a datelor. Metodele de restaurare a imaginilor se bazează pe modele matematice și probabilistice de deformare a datelor grafice. Procesarea imaginii ca etapă ar trebui separată de conceptul de procesare a imaginii ca întreg proces de modificare a imaginii și de obținere a unor date. Segmentarea, sau procesul de extragere a obiectelor de interes, împarte o imagine în obiecte sau părți constitutive. Selecția automată a obiectelor de interes este, într-o oarecare măsură, o sarcină complexă de procesare digitală a imaginilor. Segmentarea prea detaliată îngreunează procesarea imaginii dacă este necesară evidențierea obiectelor de interes. Dar segmentarea incorectă sau insuficient de detaliată în majoritatea sarcinilor duce la erori în etapa finală a procesării imaginii. Prezentarea și descrierea datelor grafice, de regulă, urmează etapa de selecție a obiectelor de interes din imagine, a căror ieșire are în majoritatea cazurilor pixeli bruti care formează limitele regiunii sau formează toți pixelii regiunilor. Cu astfel de opțiuni, este necesară convertirea datelor într-un formular accesibil pentru analiza computerizată. Recunoașterea modelului este un proces care atribuie un identificator unui obiect (de exemplu, „raza”) pe baza descrierilor acestuia. Să definim relația dintre baza de cunoștințe și modulele de procesare a imaginii. Baza de cunoștințe (adică informații despre zona cu probleme) este cumva criptată în cadrul sistemului de procesare a imaginilor însuși. Această cunoaștere poate fi destul de simplă, cum ar fi specificarea în detaliu a obiectelor imagine unde ar trebui să fie zona de interes. Astfel de cunoștințe fac posibilă limitarea sferei căutării. Baza de cunoștințe gestionează funcționarea fiecărui modul de procesare și interacțiunea acestora, care este prezentată în Fig. 1 săgeți care indică în două direcții între module și baza de cunoștințe. Salvarea și imprimarea rezultatelor necesită adesea și utilizarea unor tehnici speciale de procesare a imaginii. Un dezavantaj al acestor etape de procesare a imaginii într-un sistem de imagistică medicală este că erorile create în primele etape de procesare, de exemplu la introducerea sau evidențierea obiectelor de interes într-o imagine, pot duce la incapacitatea de a clasifica corect. Prelucrarea datelor se realizează strict secvenţial, iar în majoritatea cazurilor nu există posibilitatea de a reveni la etapele anterioare de prelucrare, chiar dacă anterior s-au obţinut rezultate incorecte. Metodele din etapa de preprocesare sunt destul de diverse - selectarea obiectelor de interes, scalarea acestora, corectarea culorilor, reglarea rezoluției spațiale, modificarea contrastului etc. Una dintre acțiunile prioritare în etapa de preprocesare a imaginii este reglarea contrastului și a luminozității. Folosind măști adecvate, este posibilă combinarea celor doi pași (filtrare și preprocesare) pentru a crește viteza de analiză a datelor. Rezultatul final al analizei imaginii în majoritatea cazurilor este determinat de nivelul de calitate a segmentării, iar gradul de detaliu al obiectelor de interes depinde de sarcina specifică. Din acest motiv, nu a fost dezvoltată o metodă sau un algoritm separat care să fie adecvat pentru rezolvarea tuturor problemelor de selectare a obiectelor de interes. Conturarea zonei este concepută pentru a evidenția obiecte cu proprietăți specificate pe imagini. Aceste obiecte, de regulă, corespund unor obiecte sau părți ale acestora, care sunt marcate de diagnosticieni. Rezultatul conturării este o imagine binară sau ierarhică (cu mai multe faze), în care fiecare nivel al imaginii corespunde unei anumite clase de obiecte selectate. Segmentarea este o etapă complexă în prelucrarea și analiza datelor medicale ale țesuturilor biologice, deoarece este necesară delimitarea zonelor care corespund diferitelor obiecte sau structuri la nivel histologic: celule, organoizi, artefacte etc. Acest lucru se datorează variabilității mari a parametrilor lor, nivelului scăzut de contrast al imaginilor analizate și relației geometrice complexe a obiectelor. În majoritatea cazurilor, pentru a obține cel mai eficient rezultat, este necesar să folosiți în mod constant diferite metode de segmentare a obiectelor de interes din imagine. De exemplu, pentru a determina limitele unui obiect de interes, se folosește metoda gradientului morfologic, după care se realizează segmentarea pragului pentru zonele care sunt potrivite pentru diferențe minore ale caracteristicilor de luminozitate. Pentru procesarea imaginilor, în care zonele omogene neînrudite sunt diferite ca luminozitate medie, a fost aleasă metoda de segmentare Canny, studiile fiind efectuate pe un exemplu clinic. La recunoașterea imaginilor clinice reale, modelarea este slab aplicabilă. Experiența practică și opiniile experților despre rezultatul analizei imaginii sunt de mare importanță. Pentru imaginea de testare, a fost selectată o imagine de tomografie computerizată, unde obiectul de interes prezentat în Fig. 1 este prezent în mod clar. 2.

Orez. 2. Imagine tomografie computerizată cu un obiect de interes

Pentru a implementa segmentarea, folosim metoda Canny. Această abordare este tolerantă la zgomot și are performanțe mai bune decât alte metode în majoritatea cazurilor. Metoda Canny include patru pași:

1) preprocesare - estomparea imaginii (reducem dispersia zgomotului aditiv);

2) diferențierea imaginii neclare și apoi calcularea valorilor gradientului de-a lungul direcțiilor x și y;

3) implementarea suprimării non-maximum asupra imaginii;

4) procesarea imaginii de prag.

În prima etapă a algoritmului Canny, imaginea este netezită folosind o mască cu filtru gaussian. Ecuația distribuției gaussiene în N dimensiuni are forma

sau în cazul particular pentru două dimensiuni

(2)

unde r este raza de estompare, r 2 = u 2 + v 2 ; σ este abaterea standard a distribuției gaussiene.

Dacă folosim 2 dimensiuni, atunci această formulă definește suprafața cercurilor concentrice având o distribuție gaussiană din punctul central. Pixelii cu o distribuție diferită de zero sunt utilizați pentru a specifica matricea de convoluție aplicată imaginii originale. Valoarea fiecărui pixel devine o medie ponderată pentru vecinătate. Valoarea inițială a unui pixel capătă greutatea maximă (are valoarea maximă Gaussiană), iar pixelii vecini preiau greutăți minime, în funcție de distanța lor. Teoretic, distribuția în fiecare punct din imagine ar trebui să fie diferită de zero, ceea ce urmează calculul coeficienților de greutate pentru fiecare pixel al imaginii. Dar, în practică, atunci când se calculează aproximarea discretă a funcției Gauss, pixelii de la o distanță > 3σ nu sunt luați în considerare, deoarece este destul de mic. Astfel, programul de procesare a imaginii trebuie să calculeze matricea x pentru a se asigura că aproximarea distribuției gaussiene este suficient de precisă.

Rezultatele cercetării și discuții

Rezultatul operației filtrului Gaussian cu date egale cu 5 pentru dimensiunea măștii Gauss și 1,9 pentru valoarea parametrului σ - abaterea standard a distribuției Gauss, este prezentat în fig. 3. Următorul pas este găsirea gradientului regiunii de interes prin convoluția imaginii netezite cu derivata funcției Gauss în direcțiile verticală și orizontală ale vectorului.

Aplicam operatorul Sobel pentru a rezolva aceasta problema. Procesul se bazează pe simpla mutare a măștii de filtru de la pixel la pixel din imagine. La fiecare pixel (x, y), răspunsul filtrului este calculat din conexiuni predefinite. Ca urmare, are loc selecția inițială a marginilor. Următorul pas este să comparați fiecare pixel cu vecinii săi de-a lungul direcției gradientului și să calculați maximul local. Informațiile despre direcția gradientului sunt necesare pentru a elimina pixelii din apropierea graniței fără a rupe granița în sine în apropierea maximelor locale ale gradientului, ceea ce înseamnă că pixelii de margine determină punctele în care este atins maximul local al gradientului în direcția vectorului gradient. Această abordare permite reducerea semnificativă a detectării marginilor false și oferă grosimea marginii obiectului de un pixel, ceea ce este confirmat empiric de implementarea software a algoritmului de segmentare a feliei abdominale în imaginea CT prezentată în Fig. patru.

Următorul pas este să folosiți un prag pentru a determina dacă marginea se află la fiecare pixel dat din imagine. Cu cât pragul este mai mic, cu atât mai multe margini vor fi în obiectul de interes, dar cu atât rezultatul va fi mai susceptibil la zgomot și conturarea excesului de date de imagine. Un prag ridicat poate ignora marginile slabe ale unei zone sau poate obține o margine de mai multe zone. Conturarea frontierei aplică două praguri de filtrare: dacă valoarea pixelului este peste limita superioară, ia valoarea maximă (limita este considerată de încredere), dacă este mai mică, pixelul este suprimat, punctele cu o valoare care se încadrează între praguri iau o valoare medie fixă. Un pixel se alătură unui grup dacă îl atinge în una dintre cele opt direcții. Printre avantajele metodei Canny, putem considera că în timpul procesării imaginii se realizează adaptarea la caracteristicile de segmentare. Acest lucru se realizează prin introducerea unui prag de tăiere redundant al datelor pe două niveluri. Sunt definite două niveluri de prag, cel superior este p ridicat și cel inferior este p scăzut, unde p ridicat > p scăzut. Valorile pixelilor de deasupra valorii p ridicate sunt desemnate ca fiind corespunzătoare marginii (Fig. 5).

Orez. 3. Aplicarea unui filtru gaussian pe o scanare CT cu un obiect de interes

Orez. 4. Suprimarea non-maximelor pe o imagine segmentată

Orez. 5. Aplicarea algoritmului de segmentare Canny cu diferite niveluri de prag

Practica arată că există un anumit interval pe scara nivelurilor de prag de sensibilitate, la care valoarea zonei obiectului de interes este practic neschimbată, dar există un anumit nivel de prag, după care există un „eșec” a metodei de conturare iar rezultatul selectării zonelor de interes devine incert. Acesta este un dezavantaj al algoritmului, care poate fi compensat prin combinarea algoritmului Canny cu transformarea Hough pentru a găsi cercuri. Combinația de algoritmi vă permite să evidențiați cel mai clar obiectele de studiu, precum și să eliminați golurile din contururi.

concluzii

Astfel, a fost rezolvată problema formulării caracteristicilor tipice ale obiectelor patologice pe imagini medicale, ceea ce va face posibilă efectuarea în continuare a unei analize operaționale a datelor privind patologiile specifice. Parametrii importanți pentru determinarea evaluării calității segmentării sunt alarma falsă și probabilitățile de eșec. Acești parametri determină dacă se aplică automatizarea metodei de analiză. Segmentarea în rezolvarea problemei clasificării și recunoașterii obiectelor în imagini este una dintre cele primare. Metodele de conturare bazate pe segmentarea limitelor regiunilor sunt bine cercetate și aplicate - Sobel, Canny, Prewit, Laplassian. Această abordare este determinată de faptul că concentrarea atenției umane în analiza imaginilor este adesea concentrată pe granițele dintre zonele mai mult sau mai puțin uniforme din punct de vedere al luminozității. Pe baza acestui fapt, contururile îndeplinesc adesea sarcina de a defini diferite caracteristici pentru interpretarea imaginilor și obiectelor de pe ele. Sarcina principală a algoritmilor pentru segmentarea zonelor de interes este construirea unei imagini binare care conține zone de date structurale închise în imagine. În ceea ce privește imaginile medicale, aceste zone sunt limitele organelor, venelor, MCC și tumorilor. Principiile dezvoltate ale analizei automate computerizate a imaginilor medicale sunt utilizate în mod eficient atât pentru sarcinile operaționale de diagnosticare medicală a unei instituții oncologice specializate, cât și în scopuri educaționale.

Investigat cu sprijinul programului Orientul Îndepărtat, grant nr. 15-I-4-014o.

Recenzători:

Kosykh N.E., doctor în științe medicale, profesor, cercetător șef, Centrul de calcul, Filiala Orientului Îndepărtat a Academiei de Științe din Rusia, Khabarovsk;

Levkova E.A., doctor în științe medicale, profesor, Universitatea de Comunicații de Stat din Orientul Îndepărtat, Khabarovsk.

Link bibliografic

Doronicheva A.V., Savin S.Z. METODA DE SEGMENTARE A IMAGINILOR MEDICALE // Cercetare fundamentală. - 2015. - Nr. 5-2. – P. 294-298;
URL: http://fundamental-research.ru/ru/article/view?id=38210 (data accesului: 04/06/2019). Vă aducem la cunoștință jurnale publicate de editura „Academia de Istorie Naturală”

Editarea imaginilor și crearea de colaje ar fi un proces destul de interesant dacă nu ar fi trebuit să-ți petreci cea mai mare parte a timpului marcând cu minuțiozitate obiectele. Sarcina devine și mai dificilă atunci când granițele obiectelor sunt neclare sau există transparență. Instrumentele Photoshop, cum ar fi lassoul magnetic și bagheta magică, nu sunt foarte inteligente, deoarece privesc doar caracteristicile de nivel scăzut dintr-o imagine. Ele returnează chenarele dure (dure), care apoi trebuie corectate manual. Abordarea Semantic Soft Segmentation de la cercetătorii Adobe ajută la rezolvarea acestei sarcini descurajante prin separarea imaginii în straturi corespunzătoare zonelor semnificative din punct de vedere semantic și adăugând tranziții netede la margini.

Segmentare „soft”.

Un grup de cercetători de la laboratorul CSAIL de la MIT și de la universitatea elvețiană ETH Zürich, care lucrează sub conducerea lui Yagiz Aksoy, și-au propus să abordeze această problemă pe baza segmentării spectrale, adăugându-i progrese moderne în învățarea profundă. Cu ajutorul informațiilor privind textura și culoarea, precum și caracteristicile semantice de nivel înalt extrase, din imagine este construit un grafic de tip special. Apoi matricea Kirchhoff (matricea Laplaciană) este construită pe acest grafic. Folosind descompunerea spectrală a acestei matrice, algoritmul generează contururi moi ale obiectelor. Împărțirea imaginii în straturi obținute folosind vectori proprii poate fi apoi utilizată pentru editare.

Prezentare generală a abordării propuse

Descrierea modelului

Luați în considerare metoda de a crea straturi semnificative din punct de vedere semantic pas cu pas:

1. Mască spectrală. Abordarea propusă continuă munca lui Levin și a colegilor săi, care au folosit pentru prima dată matricea Kirchhoff în problema construcției automate a măștilor. Ei au construit o matrice L, care specifică asemănarea pe perechi între pixeli dintr-o zonă locală. Folosind această matrice, ei minimizează funcționalitatea pătratică αᵀLα cu constrângeri specificate de utilizator, unde α specifică un vector de valori de transparență pentru toți pixelii din stratul dat. Fiecare contur moale este o combinație liniară de K vectori proprii corespunzători celor mai mici L valori proprii, ceea ce maximizează așa-numita rară de măști.

2. apropierea culorii. Pentru a calcula caracteristicile de proximitate a culorilor non-locale, cercetătorii generează 2500 de superpixeli și evaluează proximitatea dintre fiecare superpixel și toți superpixelii într-o rază de 20% în apropierea dimensiunii imaginii. Utilizarea proximității non-locale asigură că zonele cu culori foarte asemănătoare rămân conectate în scene complexe precum cea de mai jos.

Afinitate de culoare non-locală

3. apropiere semantică. Această etapă vă permite să selectați zone conectate semantic ale imaginii. Proximitatea semantică încurajează combinarea pixelilor care aparțin aceluiași obiect de scenă și penalizează combinarea pixelilor de la diferite obiecte. Aici, cercetătorii folosesc progresele anterioare în recunoașterea modelelor și calculează, pentru fiecare pixel, un vector caracteristic care se corelează cu obiectul căruia îi aparține pixelul. Vectorii caracteristici sunt calculați folosind o rețea neuronală, despre care vom discuta mai detaliat mai jos. Proximitatea semantică, ca și proximitatea culorii, este determinată pe superpixeli. Cu toate acestea, spre deosebire de afinitatea de culoare, afinitatea semantică leagă doar superpixelii din apropiere, încurajând crearea de obiecte conectate. Combinația dintre proximitatea non-locală a culorii și proximitatea semantică locală vă permite să creați straturi care acoperă imagini deconectate de spațiu ale unui fragment dintr-un singur obiect înrudit semantic (de exemplu, vegetație, cer, alte tipuri de fundal).

Proximitatea semantică

4. Crearea de straturi. La acest pas, matricea L este construită folosind proximitatea calculată mai devreme. Din această matrice se extrag vectorii proprii corespunzători celor mai mici 100 de valori proprii, apoi se aplică algoritmul rar, care extrage 40 de vectori din ei, din care se construiesc straturi. Numărul de straturi este apoi redus din nou folosind algoritmul de grupare k-means la k = 5. Acest lucru funcționează mai bine decât simpla subțiere a celor 100 de vectori proprii la cinci, deoarece o reducere atât de mare a dimensiunii face ca problema să fie supradeterminată. Cercetătorii au ales un total de 5 contururi și susțin că acesta este un număr rezonabil pentru majoritatea imaginilor. Cu toate acestea, acest număr poate fi modificat manual în funcție de imaginea procesată.


Contururi moi înainte și după grupare

5. Vectori de caracteristici semantice. Pentru a calcula proximitatea semantică, am folosit vectori caracteristici calculați folosind o rețea neuronală. Baza rețelei neuronale a fost DeepLab-ResNet-101, antrenat cu sarcina de a prezice metrica. În timpul antrenamentului, a fost încurajată maximizarea distanței L2 dintre caracteristicile diferitelor obiecte. Astfel, rețeaua neuronală minimizează distanța dintre caracteristicile corespunzătoare unei clase și maximizează distanța în alt caz.

Comparație calitativă cu metode similare

Imaginile de mai jos arată rezultatele abordării propuse (etichetate „Rezultatul nostru”) în comparație cu rezultatele celei mai apropiate abordări de segmentare soft - tehnica de mascare spectrală -  și două metode de segmentare semantică de ultimă generație: procesarea scenei PSPNet metoda și metoda de segmentare a obiectelor Mask R-CNN.


Comparații calitative ale segmentării semantice soft cu alte abordări

Poate fi înlocuit că PSPNet și Mask R-CNN tind să facă greșeli la granițele obiectelor, iar contururile moi construite prin metoda spectrală depășesc adesea granițele obiectelor. În același timp, metoda descrisă acoperă complet obiectul fără a-l îmbina cu altele și obține o precizie ridicată la margini, adăugând tranziții moi acolo unde este necesar. Cu toate acestea, este de remarcat faptul că caracteristicile semantice utilizate în această metodă nu fac distincție între două obiecte diferite aparținând aceleiași clase. Drept urmare, pe același strat sunt prezentate mai multe obiecte, așa cum se poate observa în imaginile cu girafe și vaci.

Editare de imagini cu contururi semantice moi

Mai jos sunt câteva exemple despre cum pot fi aplicate contururile moi la editarea imaginilor și crearea colajelor. Contururile moi pot fi folosite pentru a aplica modificări specifice diferitelor straturi: adăugarea unei neclare reprezentând mișcarea unui tren (2), corecție separată de culoare pentru oameni și pentru fundal (5, 6), stil separat pentru balon, cer, peisaj și persoană (8) . Desigur, același lucru se poate face cu măștile realizate manual sau cu algoritmii clasici de selecție a contururilor, dar cu selecția automată a obiectelor semnificative din punct de vedere semantic, o astfel de editare devine mult mai ușoară.

Utilizarea segmentării semantice soft pentru editarea imaginilor

Concluzie

Această metodă creează automat contururi moi care corespund zonelor semnificative din punct de vedere semantic ale unei imagini folosind un amestec de informații de nivel înalt dintr-o rețea neuronală și caracteristici de nivel scăzut. Cu toate acestea, această metodă are mai multe limitări. În primul rând, este relativ lent: timpul de procesare pentru o imagine cu dimensiunile de 640 x 480 este de 3-4 minute. În al doilea rând, această metodă nu creează straturi separate pentru diferite obiecte din aceeași clasă. Și în al treilea rând, așa cum se arată mai jos, această metodă poate eșua la începutul procesării atunci când culorile obiectelor sunt foarte asemănătoare (exemplu de sus) sau când îmbină marginile moi în apropierea zonelor mari de tranziție (exemplul de jos).

Cazuri de eroare de algoritm

Cu toate acestea, contururile moi create folosind această metodă oferă o reprezentare intermediară convenabilă a imaginii, permițându-vă să petreceți mai puțin timp și efort atunci când editați imagini.

Top articole similare