Segmentarea regiunilor de interes din imagini de retină, folosind rețele neuronale convoluționale Coordonator Absolvent Prof. Dr. Ing. Dan Popescu… [620862]
Universitatea POLITEHNICA Bucure ști
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială
LUCRARE DE DISERTAȚIE
Segmentarea regiunilor de interes din imagini de
retină, folosind rețele neuronale convoluționale
Coordonator Absolvent: [anonimizat]. Dan Popescu Mădălina -Elena Savu
2017
2 Cuprins
1. Introducere ………………………….. ………………………….. ………………………….. ……………………. 3
2. Stadiul actual al realizărilor din domeniu ………………………….. ………………………….. ………. 6
3. Rețele neuronale convoluționale ………………………….. ………………………….. ………………….. 9
3.1 Preprocesarea datelor ………………………….. ………………………….. ………………………….. . 10
3.2 Divizarea datelor în seturi specifice ………………………….. ………………………….. ………. 11
3.3 Ope rații de bază în CNN ………………………….. ………………………….. ……………………… 11
3.4 Implementare CNN în MatConvNet ………………………….. ………………………….. ………. 15
4. Abordarea propusă ………………………….. ………………………….. ………………………….. ……….. 16
4.1 Preprocesarea datelor de antrenare ………………………….. ………………………….. ………… 16
4.2 Selectarea datelor de antrenare ………………………….. ………………………….. ……………… 19
4.3 Descrierea arhitecturii pr opuse și a implementării ………………………….. ……………….. 24
4.3.1 Descrierea structurii ………………………….. ………………………….. ………………………. 24
4.3.2 Selectarea parametrilor de antrenare ………………………….. ………………………….. .. 28
5. Rezultate obținute și discuții ………………………….. ………………………….. ………………………. 30
6. Concluzii și dezvoltări ulterioare ………………………….. ………………………….. ………………… 41
7. Bibliografi e ………………………….. ………………………….. ………………………….. …………………. 43
3 1. Introducere
Procesarea complexă a imaginilor are un impact foarte mare asupra majorității
inovațiilor de la momentul actual. Fie că discutăm despre aplicații din zona telefoanelor
mobile, zonă puternic d ezvoltată dacă analizăm capacitățile ultimelor telefoane inteligente
apărute pe piață, fie că discutăm despre zona de automobile inteligente sau despre sisteme
de monitorizare a șoferului, procesarea de imagini stă la baza acestora. Nici domeniul
medical n u reprezintă o excepție deoarece, alături de sistemele performante dezvoltate de
ingineri, procesarea de imagini poate reprezenta un suport important în diagno sticarea mai
multor afecțiuni. Datorită acestor sisteme performante, pot fi detectate, non -invazi v, mai
multe afecțiuni din stadii incipiente, reducând astfel impactul asupra organismului uman.
În domeniul medical, în particular în oftalmologie, imagini ale retinei sunt preluate cu
sisteme speciale și sunt analizate pentru a evalua starea pacientului . Există foarte multe
clinici care utilizează astfel de echipamente, chiar și în România, într -un mod total non –
invaziv. De exemplu, clinica oftalmologică Novaoptic [1], folosește un sistem de achiziție
numit ” Retinal camera” ce le permite cadrelor medical e să fotografieze retina rapid și fără
dilatarea pupilei. Sistemul este cunoscut pe scară largă pentru achiziția imaginilor ce
surprind un fund de ochi, în vederea observării afecțiunilor re tiniene, evoluția acestora în
timp și efi cacitatea tratamentului aplicat . De asemenea, și pacienții pot înțelege mai ușor
simptomele pe care le au.
La baza acestei lucrări stau imaginile ce surprind retina. Scopul lucrării este realizarea
unei metode de segmentare automată a vaselor de sânge ce sunt prezente în imagi nile cu
fund de ochi. Analiza acestor vase de sânge, a structurii lor și a structurii retinei, pot furniza
informații foarte importante ajutând la diagnosticarea unor afecțiuni grave ce pot afecta
iremediabil vederea.
Partea posterioară a interiorul ochi ului, formată din papila optică, retină și vasele de
sânge specifice retinei, ce poate fi observată cu ajutorul unui sistem special, prin cornee și
cristalin, definește imaginea unui fund de ochi. Aceste imagini mai sunt de denumite și
imagini de retină, î n literatura engleză fiind cunoscute sub denumirea de eye fundus sau
retinal images . Unul dintre sistemele folosite în România pentru achiziția de imagini cu
retină , în cadr ul clinicii Novaoptic, conține un sistem Canon CR -DGI ce le permite cadrelor
medica le să acceseze imediat imaginile pentru analiză directă, pentru analiză utilizând
telemedicina sau chiar și pentru conferințe video medicale. Acest sistem are un câmp vizual
de 45 de grade, iar calitatea imaginilor depinde de rezoluția camerei care este at așată
sistemului (de exemplu, Canon EOS 30 D, are o rezoluție de 8.3 mega pixeli). Figura 1
prezintă un sistem de achiziție Canon CR -DGI și un exemplu de imagine ce surprinde un
fund de ochi , imaginile fiind preluate de pe pagina de prezentare a clinicii N ovaoptic .
4
1Figura 1 . Sistemul de achiziție Retinal Camera Canon CR -DGI folosit de clinica Novaoptic (stânga); Fund
de ochi sănătos din punct de vedere clinic (dreapta).
Printre cele mai importante afecțiuni ce pot fi diagnosticate prin intermediul im aginilor
de retină se află degenerescența maculară, edemul papilar, retinopatia diabetică, miopia
forte, toxoplasmoza oculară congenitală și glaucomul. Prima dintre aceste afecțiuni constă
în deteriorarea maculei (zona centrală a retinei) și are ca efect scădere a acuității vizuale,
aceasta afectând în special persoanele în vârstă. În cazul glaucomului, pierderea vederii este
cauzată de degradarea nervului optic, neavând întotdeauna simptome specifice. Retinopatia
diabetică reprezintă o complicație frecvent ă cauzată de diabet. Aceasta este ”principala
cauză de orbire în cazul adulților cu vârste cuprinse între 20 și 6 5 de ani ”, potrivit clinicii
Novaoptic , și afectează structura vaselor de sânge provocând hemoragii retiniene, ex sudate
și o lipsă de substa nțe nutritive și oxigen . Netratată, această afecțiune produce în timp,
inevitabil, orbirea. Potrivit clinicii Novaoptic, imagini le din figura 2 reprezintă cele mai
grave afecțiuni ce pot fi observate prin int ermediul imaginilor de retină .
Figura 2 . Afecțiuni ale retinei: 2.1 degenerescența m aculară specifică vârstei; 2.2 degenerescența maculară;
2.3 edem papilar; 2.4 retinopatie diabetică neproliferativă; 2.5 retinopatie diabetică după tratamentul cu laser;
2.6 miopie forte; 2.7 toxoplasmoză oculară congenitală specifică vârstei; 2.8 aspectu l discului optic în glaucom.
Problema procesării imaginilor cu retină, în vederea diagnosticării anumitor afecțiuni,
este o problemă ce a fost abordată de mai mulți cercetători, independent, sau în cadrul unor
grupuri organizate. BIOMISA, BIOmedical Image and Signal Analysis Research Group [2],
este unul din grupurile care efectuează foarte multe studii în acest domeniu. Membrii acestui
grup au realizat o platformă online de unde pot fi accesate majoritatea bazelor de date ce
conțin imagi ni de retină. În ciuda faptului că seturile de date sunt destul de mici, majoritatea
cuprind aproximativ 100 de imagini ale retinei, au fost abordate teme variate de cercetare ce
sunt bazate pe analiza acestor imagini .
1 Imaginile din figurile 1 și 2 au fost preluate de pe site -ul http://www.novaoptic.ro/ .
5
De exemplu, ” Retinal Identification Database” – RIDB , este un set de date format din
100 de imagini dedica te studiilor de recunoaștere de retină pentru sistemele de autentific are
automată (conține numai imagini de retină ce su rprind ochi sănătoși , ce au o rezoluție foarte
bună – 1504 x 1000 pixeli ). Pentru a ajuta diagnosticarea glaucomului sau retinopatiei
diabetice , pot fi accesate bazele de date GlaucomaDB, DIARETDB, MESSIDOR sau HRF,
acestea punând la dispoziție destule de multe imagini ce au fost adnotate, în prealabil, de
către medici specialiști conform diagnosticului specific. Diag nosticarea acestor boli se
realizează analizând structura vaselor de sânge prezente în imagini, analizând discul optic și
exsuda tele prezente în imaginea cu retină.
Datorită faptului că segmentarea manuală a vaselor de sânge este un proces foarte lent
și nec esită foarte multă răbdare și atenție din partea cadrelor medicale, numai două baze de
date au fost realizate în a cest scop, acestea conținând un număr relativ redus de imagini . Atât
baza de date DRIVE , cea folosită și în această lucrare, cât și baza de date ST ARE, conține
40 de astfel de imagini, împreună cu segmentarea manu ală realizată de către specialiști . Se
observă astfel necesitatea algoritmilor de segmentare automată a vaselor de sânge , acesta
fiind și motivația acestei lucrări. În ceea ce privește glauc omul, setul de date oferit de
DRIONS, poate fi un suport foarte bun pentru segmentarea discului optic deoarece, acesta
oferă un set de 110 imagini în care este localizat discul optic de către doi specialiști .
Pentru a putea realiza o segmentare cât mai bu nă, cu o acuratețe ce nu este puternic
influențată de rezoluția imaginii și de calitatea detaliilor, algoritmul ales trebuie să fie capabil
să generalizeze foarte bine. Astfel a fost aleasă o metodă de învățare automată supervizată ,
bazată pe o rețea neura lă convoluțională . La prima vedere, soluția aleasă pare să nu fie
potrivită deoarece, antrenarea unei rețele neurale convoluționale necesită un volum foarte
mare de date, iar setul de date ce poate fi folosit este de numai 20 de imagini. Totuși,
antrenare a unei astfel de rețele poate fi realizată prin utilizarea de sub -imagini, așa cum o să
fie detaliat în capitolele ce urmează.
În capitolul doi va fi realizată o prezentare succintă a mai multor articole ce au vizat
rezolvarea problemei formulate, acest ea fiind urmate în capitolul trei de mai multe noțiuni
teoretice referitoare la modul în care funcționează rețele neuronale convoluționale și ce
componente au în structura lor. Sunt prezentate metode des utilizate de prep rocesare a
datelor , modul de st ructurare al acestora și operații de bază ce au loc în rețelele neuronale
convoluționale. Capitolul patru conține detalii despre abordarea propusă, modul în care am
selectat și am preprocesat datele de antrenare, precum și descrierea arhitecturii și a
implementării propriu -zise, împreună cu toate observațiile făcute. Capitolul cinci prezintă
evaluarea comparativă a rezultatelor, precum și interpretarea lor, urmate în capitolul șase de
concluziile rezultate și de planuri de dezvoltare ulterioară ce au reieși t în urma analizării
rezultatelor obținute.
6 2. Stadiul actual al realizărilor din domeniu
Segmentarea vaselor de sânge este o problemă foarte solicitantă. Deși au fost dezvoltați
algoritmi în această direcție, nu există încă o metodă despre care să putem afirma că
realizează segmentarea tuturor vaselor de sânge , deoarece aprecierea acurateței metodei este
subiectivă. Există articole, în literatura de specialitate, care propun soluții bazate pe utilizarea
mai multor filtre, adaptive sau nu, soluții bazate pe învățarea automată supervi zată sau pe
învăț area nesupervizată și de asemenea diferite metode de apreciere a acurateței de
segmentare. În cazul metodelor de învățare automată, abordarea supervizată presupune
utilizarea unor informa ții ajutătoare (de exemplu, informația că un pixel aparține sau nu unui
vas de sânge este o informație aju tătoare) , spre deosebire de abordarea nesupervizată care
nu are ne voie de informații auxiliare .
Trei membri ai Institutului de Imagistică din Aachen – ”Institute of Imaging &
Computer Vision” [3], Germania, au propus o metodă de se gmentare a vaselor de sânge
aflate în imaginile de retină. Aceștia realizează segmentarea folosind analiza simetriei de
fază prin intermediul filtrelor Gabor logaritmice complexe . Nu sunt folosite imaginile RGB
original e deoarece acestea nu oferă un nivel de contrast foarte bun. Cel de -al doilea canal de
culoare , este procesat utilizând transformarea top-hat pentru a elimina variațiile din fundal
și pentru a îmbunătăți contrastul vaselor de sânge. În urma aplicării acestor procesări, este
necesară ș i o etapă de eliminare a zgomotului folosind filtru l median de dimensiune 3×3. În
urma analizei simetriei de fază și după aplicarea mai multor praguri, rezultă o clasificare
binară a fiecărui pixel și în acest fel și harta vaselor de sânge prezente în im agine. Aprecierea
rezultatelor a fost făcută pe cele două baze de date publice, DRIVE și STARE, metoda având
o acuratețe medie maximă de 95.65% cu diferite praguri selectate (T1 = 0.18, T2 = 0.62) .
Aceste două niveluri de prag au fost determinate pe baza celor 20 de poze de antrenare din
baza de date DRIVE, lucru care nu garantează aceeași performanță și pe alte date
asemănătoare.
În vederea segmentării ex sudatelor, alte regiuni de interes din imaginile cu retină, și a
vaselor de sânge, Luis David Lara -Rodriguez Elizabeth Lopez -Melendez și Gonzalo Urcid ,
[4] au propus la congresul World Congress on Engineering and Computer Science, 2015,
din San Francisco, o metodă ce are la bază transformata Fourier. Aceștia au folosit imaginile
în spațiul RGB, și s -au bazat pe corectarea iluminării neun iforme în domeniul frecvenței,
evidențiind prin intermediul filtrelor Butterworth și DoG ( Difference of Gaussians ), vasele
de sânge față de fundal. În urma acestor prelucrări, aplicate n umai pe cel de -al doilea canal
de culoare (verde), imaginea rezultată este binarizată folosind metoda Otsu, iar segmentarea
este realizată prin aplicarea de operații morfolo gice (închiderea morfologică) și prin praguri
diferite . În cazul ex sudatelor, acestea sunt localizate tot pe imaginea rezultată în urma
aplicării transformatei Fourier, iar segmentarea se realizează tot prin intermediul metodei
Otsu. Nu există aprecieri ale acurateței de segmentare (baza de date folosită nu dispune de
segmentări manuale realizate de specialiști, DIARETDB1) ci numai cât eva rezultate vizuale
7 în care pot fi observate segmentări ale celor mai importante vase de sânge din imaginea de
retină.
Michael J. Cree, membru senior al IEEE, împreună cu alți patru colegi ai săi, au propus
o metodă de segmentare a vas elor de sânge ba zată pe transformata Morlet 2 -D [5] și pe
învățare supervizată. Abordarea acestora pleacă de la premisa că un pixel din imagine poate
fi un pixel dintr -un vas de sânge sau nu, în funcție de vectorul de trăsături determinate pentru
acesta. A ceste trăsături sunt reprezentate de intensitatea pixelului și de răspunsul
transformatei Morlet la diferite scale. Principalele avantaje ale acestei transformări sunt date
de capacitatea ei de a filtra zgomotul și de a evidenția vasele de sânge în acelaș i timp. Metoda
de clasificare pentru cele două categorii , vas și non -vas, este bazată pe un clasificator
Bayesian, și obține o acuratețe medie de 94 % pe bazele de date DRIVE și STARE.
O altă abordare prin care a fost realizată segmentarea vaselor de sânge e ste abordarea ce
folosește descriptori locali [6]. Algoritmul propus în acest articol folosește informația din
cel de -al doilea canal de culoare , pentru fiecare pixel fiind extras un vector de trăsături care
este folosit ulterior pentru a clasifica fiecare pixel cu ajutorul unui SVM( Support Vector
Machine). După clasificare, rezultat ul mai este supus unor post -procesări (filtrări cu anumite
praguri) pentru a ajunge la segmentarea finală. Există patru categorii de clase care sunt
definite în vederea c lasificării pixelilor: pixel de pe marginea vasului de sânge, pixel din
vasul de sânge, pixel aflat în apropierea vasului de sânge și pixel depărtat de vasul de sânge.
Etichetarea acestora este realizată prin parcurgerea unei zone delimitate (un dreptunghi ce
încadrează un vas de sânge) din pix el în pixel și aprecierea intensității pixelului în cauză.
Procesările ulterioare realizate pe rezultatul oferit de SVM au ca scop reducerea
discontinuităților ce pot apărea în cazul vaselor de sânge mici, acestea fii nd bazate pe
reconstrucții morfologice. Acuratețea rețelei este evaluată prin raportarea sumei pixelilor
clasificați corect și a celor clasificați incorect la numărul total de pixeli care sunt cuprinși în
câmpul vizual al camerei . Un singur rezultat este p rezentat în cadrul articolului, cei care l –
au redactat susținând o acuratețe a segmentării finale de 96.90%.
Pe lângă toate aceste metode care presupun utilizarea diferitelor fi ltre sau a unor
descriptori locali, au apărut și metode iterative ca soluție î n problema segmentării vaselor de
sânge. Una dintre aceste metode a fost dezvoltată de trei membrii IEEE [7], Sohini
Roychowdhury, Dara D. Koozekanani și iKeshab K. Parhi prezintă o metodă ce folo sește
pragur i adaptive pentru a îmbunătăți iterativ o pri mă segmentare realizată cu ajutorul
transformatei top -hat (transformată aplicată tot pe canalul de verde). Datorită iterațiilor
multiple, la un moment dat, unii pixeli ajung să fie clasificați greșit (fals pozitiv). Soluția
acestei probleme este prezentată în articolul celor trei membrii IEEE, sub forma unui criteriu
de oprire a procesului iterativ, în acest mod ajungându -se la o acuratețe medie apropiată de
95%, pe bazele de date DRIVE și STARE.
Nici rețelele neuronale nu au fost neglijate în rezolvarea p roblemei de segmentare a
vaselor de sânge. Pawel Liskowski și Krzysztof Krawiec [8] au propus o metodă de
segmentare ce utilizează învățarea supervizată. Aceștia au dezvoltat o arhitectură de rețea
8 neuronală convoluțională, rețea antrenată pe un set de dat e suficie nt de mare (400 000 de
imagini), pre procesat (normalizare de contrast, ZCA Whitening ) și variat (diferite
augmentări ale datelor au fost aplicate: rotiri, scalări , oglindiri , chiar și corecții gama).
Rezultatele prezentate de către cei doi membr ii IEEE reprezintă o comparație între
segmentările obținute prin intermediul mai multor variații ale aceleași structuri de bază a
rețelei, dar și a datelor folosite pentru antrenare: arhitecturi ce conțin și straturi de reducere
a dimensiunii spațiale ( pooling layer) , arhitecturi ce nu conțin astfel de straturi și arhitecturi
ce au ca intrare date care au fost preprocesate și/sau augmentate . Toate aceste v ariante de
rețele sunt dense, având la nivelul ultimului strat convoluțional 512 harți de trăsături.
Performanțele obținute, în ceea ce privește acuratețea de segmentare, se ridică în jur ul valori
de 94% (evaluare fiind făcută față de marcajele manuale) pe baza de date DRIVE și în jurul
valori de 96% pe baza de date STARE (calitatea pozelor din această bază de date este mult
superioară celor din baza de date DRIVE, fapt pentru care și rata de detecție este mai mare).
De asemenea, ce i doi cercetători au subliniat , pe lângă importanța rețelelor neuronale în
procesarea imaginilor medicale , și faptul că acurateț ea de segmentare este mai mare în cazul
ochilor ce nu prezintă leziuni (mici hemoragii, ex sudate) și mai mică în cazul ochilor afectați
de anumite boli.
Importanța rețelelor convoluționale adânci în domeniul procesării imaginilor medicale
a fost subliniată și de către trei cercetători din Croația [9]. Și aceșt ia folosesc o rețea
neuronală convoluțională compusă numai din straturi de convoluție, straturi de reducere a
dimensiunii harților de trăsături (bazate pe selecția maximului ), și straturi complet conectat e.
Segmentarea este realizată tot prin clasificare, fiecare pixel central unei sub -imagini de
65×65 de pixeli fiind etichetat ca pixel din vasu l de sânge sau pixel din fundal, pe baza
marcajului manual. Autorii articolului nu oferă detalii legate de număru l de iterații, de
numărul de imagini folosite pentru antrenare sau de parametrii rețelei (rată de învățare), dar
susțin că acuratețea de segmentare se ridică chiar și până în jurul valorii de 98% (pentru
imaginile cu retină ce nu surprind afecțiuni ce atac ă rețeau a de vase de sânge) deși în
imaginile din articol se poate observa un nivel de zgomot destul de ridicat în fundalul vaselor
de sânge.
Mai departe de segmentarea vaselor de sânge au mers niște cercetători din Germania
care au încercat clasificarea vaselor de sânge în artere și vene pe baza mai multor trăsături
distinctive între acestea. Claudia K ondermann, Daniel Kondermann și Michelle Yan [10]
susțin că venele pot fi diferenția te de a rtere prin următoarele trăsături : arterele sunt mai
deschise la cu loare ca venele, arterele sunt mai subțiri decât venele înconjurătoare și reflexia
centrală apărută pe vas ele de sânge, apare pe o suprafață mai întinsă în artere și este mai
restrânsă pe vene. Principala problemă care apare în cazul acestei clasificări es te reprezentată
de calitatea imaginii deoarece, în cazul imaginilor de o calitate slabă (așa cum este și cazul
bazei de date DRIVE), reflexia pe baza căreia se poate face diferențierea între cele două
categorii, dispare deseori. În cadrul etapei de preproc esare, ne lipsită de altfel, se realizează
îmbunătățirea imaginii, extragerea scheletului vaselor de sânge, ide ntificarea ramificațiilor
vaselor și a suprapunerii acestora . În ceea ce privește procesarea, două abordări sunt
prezentate. Prima dintre ace stea presupune analiza profilului vasului de sânge, iar cea de -a
9 doua presupune analiza unei regiuni de intere s centrate într -un vas de sânge, ambel e fiind
urmate de o grupare a datelor extrase în mai multe clase folosind o metodă statistică ce
analizează componentele principale (PCA – Principal Component Analysis) . În urma
vectorizării datelor rezultate, acestea sunt clasificate fie prin intermediul unui SVM, fie prin
intermediul unui MLP. Un punct important în procesarea prezentată îl constituie secționar ea
vaselor de sânge în fun cție de ramificații, acest lucru fiind folosit pentru a îmb unătăți
rezultatul, corectarea pixelilor clasificați greșit fiind făcută pe baza premisei că între două
ramificații pixelii aparțin aceleași clase (arteră/venă). Rezultat ele ajung în acest fel în jurul
valorii de 93%. Principalul dezavantaj al metodei este reprezentat de necesitatea segmentăr ii
anterioare a vaselor de sânge (pentru a realiza corectarea ulterioară a pixelilor).
Majoritatea lucrăril or descrise mai sus abor dează în general antrenarea unei rețele
neuronale adânci, de mari dimensiuni și de asemenea, foarte costisitoare din punct de vedere
al resurselor necesare (necesită procesoare grafice foarte puternice pentru etapa de
antrenare ).
Această lucrare își propu ne să analizeze performanța unei rețele neuronale
convoluționale (CNN) de mici dimensiuni , rețea antrenată pe seturi de date extrase din
imaginile cu retină, preprocesate prin intermediul mai multor metode. În capitolul următor
vor fi prezentate câteva con cepte generale specifice rețelelor neuronale convoluționale.
3. Rețele neuronale convoluționale
Această secțiune își propune să prezinte mai multe noțiuni teoretice referitoare la rețelele
neuronale convoluționale și modul în care acestea realizează clas ificarea sau segmentarea
datelor.
O rețea neuronală convoluțională (CNN) este un instrument folosit pentru a procesa
volume mari de date, fiind utilizate foarte des în procesarea de imagini , în sarcini ce presupun
de la clasificare și detecție de obiecte până la probleme de recunoaștere de față sau
segmentare semantică. În cazul segmentărilor de obiecte, abordările existente până acum se
realizează fie p rin clasificarea fiecărui pixel/ obiect, fie prin intermediul segmentării
semanti ce. În ambele cazuri, este vorba despre învățare supervizată întrucât și clasificarea
de pixeli și segmentarea semantică necesită date de antrenare etichetate corespunzător clasei
din care fac parte. Din punct de vedere matematic, o rețea neuronală convolu țională po ate fi
descrisă utilizând formula 1 [11]:
𝑓(𝑥)=𝑓𝑁(𝑓𝑁−1(𝑓𝑁−2(…𝑓2(𝑓1(𝑥,𝑤1); 𝑤2)…; 𝑤𝑁−2); 𝑤𝑁−1); 𝑤𝑁). (1)
Funcțiile 𝑓𝑖,𝑖=1,…,𝑁 reprezintă blocuri de calcul cunoscu te sub denumirea de straturi sau
de layer , în literatura engleză. O funcție de tipul f primește la intrare date de tipul 𝑋𝑖 (acestea
pot reprezenta valorile pixelilor dintr -o anumită imagine vectorizate, sau anumite trăsături
extrase din imagini) , specifice problemei de clasificare sau segmentare, și în funcție de tipul
10 stratului , aplică diverse transformări rezultând astfel intrarea următorului strat, 𝑥𝑖+1. Fiecare
tip de strat ce poate fi folosit în interiorul unei rețele convoluționale are și u n set de parametrii
specifici, pentru unele straturi putând fi setate ponderi ce se ajustează odată cu iterațiile din
timpul procesului de antrenare (learnable weights). Pe lângă parametrii specifici fiecăru i
strat, pentru o rețea neuronală convoluțională mai pot fi setate rate de învățare pentru fiecare
etapă ( epoch) , dimensiunea setului de date per iterație și dimensiunea imaginii de intrare.
Deși nu există o rețetă pentru felul în care se succed straturile între ele sau pentru cum se
setează parametrii s pecifici fiecărui strat și, respectiv, parametrii rețelei, toate acestea
afectează în m od direct performanțele rețelei .
Aplicabilitatea CNN -urilor este foarte vastă , dar acestea sunt utilizate, în majoritatea
timpului, în contexte ce presupun proce sarea d e imagini, analiza informației vizuale. În cazul
segmentării, există două abordări ce sunt utilizate: segmentarea prin intermediul clasificării
de pixeli și segmentarea semantică. În cazul primei abordări, de obicei este clasificat pixelul
central al unei sub-imagini, eticheta sub -imaginii fiind asociată pe baza unui marcaj manual
(metodă de învățare supervizată) . În cel de -al doilea caz, problema este mult mai complexă
deoarece fiecare obiect ce se dorește a fi segmentat trebuie etichetat corespunzător, și mai
mult, pixelii obiectului sunt și aceștia etichetați în funcție de clasă ( de exemplu, pixelii unui
avion vor avea toți valoarea clasei avion ).
Din punct de vederea al implementării, o rețea neuronală ce realizează segmentarea
semantică poate fi priv ită ca o rețea neuronală de clasificare modificată, care nu oferă la
ieșire scoruri pentru fiecare clasă, ci realizează o operație de deconvoluție, oferind astfel la
ieșire o imagine de aceeași d imensiune ca cea de intrare ce conține segmentarea obiectelor .
Cel mai bun exemplu în cazul acestui tip de segmentare în constituie rețelele neuronale
complet conectate ( FCN – Fully Connected Neural Networks [12]).
3.1 Preprocesarea datelor
În cazul CNN este foarte importantă etapa de preprocesare a datelor. Înaint e de
procesarea propriu -zisă a datelor în antrenare, acestea necesită, de obicei, aplicarea unor
preprocesări cu scopul de a evidenția cât mai bine obiectul de interes pentru segmentare.
Lipsa acestei evidențieri poate afecta negativ performanța rețelei.
Așa cum o să puteți observa în secțiunea de rezultate, prelucrările imaginilor de
antrenare, indiferent de natura acestora , afectează performanța rețelei. Două preprocesări
sunt, de obicei, aplicate datelor de intrare: scăderea mediei calculate pe întreg ul set de date
și normalizarea globală de contrast. Scăderea mediei calculate pe întregul set de date ( mean
substraction) este o tehnică de preprocesare des utilizată în contextul rețelelor neuronale.
Aceasta realizează centrarea în zero a datelor. În ceea ce privește normalizarea, scopul este
de a reprezenta datele în același interval de valori, între același minim și maxim. Imaginile
care sunt reprezentate în [0, 255] nu necesită acest tip de procesare, dar în general,
performanța poate fi îmbunătățită pr in împărțirea la deviația standard sau prin scalarea
valorilor în intervalul [ -1,1].
11 3.2 Divizarea datelor în seturi specifice
Ulterior preprocesărilor făcute, datele trebuie împărțite în trei seturi: un set pentru
antrenare , un set pentru validare și un s et pentru testare . Ultimele două trebuie să conțină
date diferite față de setul de antrenare și diferite între ele. De obicei, din setul de date
proporțiile pentru cele trei seturi sunt de 60%, 20% și 20% din totalul de imagini [13]. În
timpul antrenării, pe setul de date pentru validare va fi evaluată rețeaua pe ntru a vedea cât
de bine învață aceasta. La finalul tuturor iterațiilor, după finalizarea procesului de antrenare,
se poate folosi setul de date de testare pentru a vedea performanța rețelei pe date
necunoscute.
Pentru ca rețeaua neuronală să poată generaliza cât mai bine (să funcționeze și pe
imagini noi), setul de antrenare trebuie să fie destul de mare, ca volum, și destul de variat
din punct ul de vedere a l informațiilor (din această variație a dat elor, rețeaua poate deveni
invaria ntă la iluminare, la rotații și de asemenea la scală). Important pentru capacitatea de
generalizare a rețelei, este și setul de validare . Imaginile conținute de acesta vor putea să
furnizeze un feedback despre cât de bi ne învață r ețeaua pe parcursul iterațiilor din timpul
procesului de antrenare, asigurând în acest fel calitatea datelor ajunse în etapa finală a rețelei.
Lipsa de diversitate din setul de date va avea ca efect învățarea unor trăsături specifice
setului d e antrenare, conducând la procesul de supra -antrenare ( overfitting). În acest caz,
rețeaua va reuși să aibă o performanță foarte bună dacă este testată pe o imagine din setul de
antrenare, lucru care nu este recomandat, dar nu va avea performanțe similare și pe imaginile
din setul de testare. Același fenomen, poate să apară și în cazul în care datele, ce sunt
prelucrate la fiecare iterație, nu sunt selectate aleator ( randomize data ) sau nu sunt
amestecate ( shuffle data) .
3.3 Operații de bază în CNN
O reț ea neuronală convoluțională utilizează în procesul de antrenare, atât propagarea
înainte cât și propagarea înapoi, cunoscute în literatura engleză sub denumirea de forward
propagation și backward propagation.
Propagarea înainte [14] definește întreg ul parcurs al unei imagini , de exemplu, de la
primul strat al rețelei până la ultimul strat al acesteia, unde îi este asociat câte un scor pentru
fiecare clasă vizată de rețea. Pe parcursul trecerii prin rețea ponderile , din cadrul fiecărui
neuron de pe fiecare stra t, sunt actualizate pe baza evaluării funcției sigmoid , în general .
Pentru cazul simplist prezentat în figura 3 putem considera următoarele operații ce se
realizează în cadrul propagării înainte :
• Putem nota intrările din stratul S1 cu 𝑎(1) pentru cele trei intrări: 𝑎1(1),𝑎2(1),𝑎3(1).
• În stratul S2 se evaluează funcția sigmoid (formula 2) pentru produsul activărilor
din stratul S1 cu ponderile acestuia și se obțin astfel activările pentru stratul S2
cărora li se adaugă și un bias, de obicei eg al cu 1 (𝑎0(2)):
𝑎(2)=𝑔(𝑎(1)Ө(1)), unde 𝑔(𝑥)= 1
1+𝑒−𝑥 (2)
12 • Similar se procedează și pentru stratul S3: 𝑎(3)=𝑔(𝑎(2)Ө(2)).
• Ieșirea din stratul S4 este calculată în mod identic pe baza informațiilor din stratul
S3: 𝑎(4)=𝑔(𝑎(3)Ө(3)).
2Figura 3 . Propagarea înainte ( forward propagation) printr -o rețea ce conține un strat de intrare (S1),
două straturi ascunse (S2, S3) și stratul de ieșire (S4) .
În cazul propagării înapoi (figura 4 ) [14], după determinarea activărilor pe toate cele
patru straturi (în exemplul de mai sus), se evaluează eroarea clasificării la nivelul ultimului
strat ca fiind diferența dintre rezultatul obținut ( 𝑎(4)) de fiecare neuron și adevărata valoare
marcată pentru intrarea avută ( 𝑦): δ(4)= 𝑎(4)−𝑦. Deoarece se numește propagare înapoi,
similar propagării înainte, în straturile anterioare S3, S2, va fi evaluată eroarea
corespunzătoare folosind ponderile fiecărui strat și derivata funcției sigmoid (excepție face
stratul S1, stratul de i ntrare pentru care nu există erori). Formulele 3 și 4 prezintă modul de
calcul pentru straturile S2 și S3:
δ(3)= Ө(3)δ(4).∗𝑔′(𝑎(3)Ө(3)) (3)
δ(2)= Ө(2)δ(3).∗𝑔′(𝑎(2)Ө(2)). (4)
3Figura 4. Propagarea înapoi (backward propagation).
Scorul obținut în stratul de ieșire, este folosit pentru a ev alua cât de bine clasifică
rețeaua pe baza etichetelor oferite datelor înainte de antrenare. Corelația dintre scorul obținut
și etichetarea manuală se realizează prin evaluarea unei funcții de cost, cunoscută și sub
denumirea de loss function. Funcția de c ost realizează o cuantizare cantitativă a diferenței
2 Forward propagation – Machine Learning, Coursera, Andrew Ng.
3 Backward propagation – Machine Learning, Coursera, Andrew Ng.
S1
S2
S3
S4
𝑎(1)
𝑎(2)
𝑎(3)
𝑎(4)
S1
S2
S3
S4
𝛿(2)
𝛿(3)
𝛿(4)
13 dintre predicția rețelei și adevărata clasă a datelor ( ground truth ). Evaluarea acestei funcții
de cost este realizată în ultimul strat al rețelei, și face parte numai din procesul de antrenare
al aceste ia, nu și din procesul de testare. O valoare mare în cazul acesta este interpretată ca
o predicție proastă dată de rețea, iar o valoare mai mică sugerează faptul că predicția rețelei
este foarte apropiată de adnotarea manuală. Totodată, valoarea acestei fu ncții de cost este
folosită și în procesul de actualizare a ponderilor trăsăturilor în interiorul rețelei, prin
procesul de propagare înapoi.
În funcție de aplicabilitate, structura unei rețele neuronale convoluționale poate fi
destul de complexă. În pri ncipal există mai multe tipuri de straturi definite, ce pot fi utilizate
în arhitectura unei astfel de rețele: staturi convoluționale ( convolutional layers) , straturi de
reducere a dimensiunii spațiale ( pooling layers) , straturi de activare ( rectified line ar unit)
straturi complet conectate ( fully connected layers) și straturi ce implementează funcția de
cost ( Softmax loss) .
Principalul strat ce nu poate lipsi din componența unei rețele neuronale
convoluționale este stratul de convoluție . Acesta efectue ază operația clasică de convoluție
asupra datelor de intrare folosind un kernel cu dimensiuni prestabilite. Kernelul acționează
ca o fereastră glisantă calculând produsul punct la punct între elementele sale și elementele
cuprinse din datele de intrare. Pas ul de avansare al kernelului prin matricea de intrare este
cunoscut sub numele de stride și este furnizat ca parametru al stratului de convoluție. În
cazul în care se dorește și normalizarea, rezultatul convoluției este divizat cu suma
elementelor din kern elul folosit. Pe lângă stride, pentru a controla dimensiunea spațială a
ieșirii, parametrul padding poate fi folosit. Acesta realizează o bordare a intrării cu zerouri.
În figura 5 se poate observa cum se realizează convoluția și ce reprezintă bordarea i maginii .
Figura 5. Exemplu de convoluție cu un kernel de 3×3 (suma pixelilor este 2) pe o sub -imagine de 6×6 pixeli.
Kernelul se deplasează din pixel în pixel ( stride = 1) , rezultatul convoluției având o dimensiune spațială de
4×4 pixeli. În partea dreaptă este reprezentată intrarea cu padding = 1 , după convoluție, dimensiunea spațială
a rezultatului ajungând la 6×6 pixeli.
Stratul de activare este de asemenea un strat important. ReLU , Rectified Linear
Unit, este cea mai folosită funcție de activare. Din punct de vedere matematic, aceasta aplică
o funcție de maxim între valorile avute în neuron, pe fiecare strat și 0. Datorită faptului că
nu este diferențiabilă în 0, propagarea înapoi nu funcționează așa cum ar trebui. O altă
variantă este funcț ia SoftPlus ( 𝑓(𝑥)=ln (1+e𝑥)). Derivata acesteia este funcția sigmoid.
14 De asemenea, datorită funcției pe care o aplică, acesta nu activează decât o parte din neuronii
din rețea, ajungând astfel să scadă durata de antre nare fără să scadă și performanț a rețelei .
Reducerea hărților de trăsături (rezultatul convoluțiilor) poate fi realizată prin
intermediul straturilor de reducere a dimensiunii spațiale . Aceste straturi reduc
dimensiunea spațială pentru următoarele straturi convoluționale. Principiul de funcționare
este asemănător cu cel al convoluției, o fereastră glisantă de o anumită dimensiune parcurge
datele și extrage maximum sau media valorilor cuprinse. Figura 6 , exemplifică reducerea
dimensiunii spațiale cu o fereastră glisantă de 3×3 cu pas de 1, prin selectarea valorii
maxime. Două mari beneficii sunt aduse de către acest strat: contribuie la evitarea
fenomenului de supra -învățare ( overfitting ) și de asemenea, scade efortul computațional .
Figura 6 . Stratul de reducere a dimensiunii spațiale.
Straturile complet conectate , au același principiu ca și cele convol uționale
reprezentând, în fond straturi convoluționale ce au conexiuni cu toate ieșirile stratului
anterior. De obicei acestea sunt folosite la finalul struct urii rețelei, întrucât ac estea reușesc
să furnizeze la ieșire exact numărul de clase dorit, folosind toate informațiile anterioare.
Succesor al straturilor complet conectate este stratul ce implementează funcția de
cost, cunoscută sub numele de Softmax . Acest strat este utilizat de rețeaua neuronală numai
în procesul de antrenare, furnizând un feedback referitor la cât de bine reușește rețeaua să
clasifice datele de intrare. Prin intermediul acestui strat, ponderile asociate fiecărui strat din
structura rețelei vor fi actualizate corespunzător prin fenomenul de propagare înapoi, pe baza
derivatei funcției de cost. La fiecare iterație, rețeau a va mai face un pas către minimiza rea
funcției de cost.
Pe lângă toate aceste straturi nelipsite dintr -o structură de rețea neuronală
convo luțională, mai există un tip de strat cunoscut sub numele de dropout. Acest strat
contribuie la evitarea fenomenului de supra -învățare, fenomen foarte des întâlnit în cazul
rețelelor antrenate pe seturi mici de date. Scopul acestui strat este de a întrerup e legăturile
cu anumiți neuroni, setând activările acestora pe 0 în etapa de antrenare (este folosit exclusiv
în etapa de antrenare).
15 3.4 Implementare CNN în MatConvNet
MatConvNet4 [15] este un instrument pus la dispoziție de Matlab, un instrument cu
ajuto rul căruia se pot rula rețele deja antrenate sau se pot crea rețele cu structuri noi și se pot
antrena pe diferite seturi de date. Acesta conține implementări de rețele neurale pre -antrenate
cu ajutorul cărora se poate realiza clasificare de imagini, segme ntare, recunoaștere facială
sau detecție de text.
MatConvNet este liber de licență putând fi descărcat și instalat de oricine deține o
licență de Matlab. Este întreținut continuu de comunitatea care îl dezvoltă și i se aduc
îmbunătățiri de la o versiune l a alta. Versiunea curentă, folosită, este versiunea 1.0 -beta235,
versiune care suportă rularea pe CPU sau pe GPU. Pentru instalare este nevoie numai de
descărcarea de pe pagina oficială și de rularea unei funcții numite vl_setupnn. Dacă s -a
realizat cu suc ces instalarea , se poate compila specificând dacă se dorește utilizarea GPU în
antrenare (dacă există).
Evitând implementarea unor proceduri foarte complexe necesare creării unei astfel
de rețele, MatConvNet [16] expune funcții simple, tratate ca niște blocuri, cu ajutorul cărora
se poate realiza arhitectura unei rețele neurale convoluționale (CNN). Aceste blocuri sunt
reprezentate de straturile detaliate mai sus, straturi care pot fi create foarte ușor utilizând
acest instrument prin completarea unei structuri , dar care presupun cunoștințe destul de
avansate din acest domeniu. De exemplu, pentru realizarea unui strat ( layer ) de convoluție
trebuie știut tipul de date de intrare (RGB, Grayscale), dimensiune filtrului folosit, numărul
de filtre, pasul cu care aces ta este aplicat pe imagine (este cunoscut sub numele de stride ) și
valoarea de padding (lucru necesar pentru a conserva dimensiunea imagini de intrare și
pentru a aplica filtrul peste toți pixelii din imagine). Se mai poate specifica și rata de învățare
pe fiecare strat de convoluție, dar trebuie selectată cu grijă pentru a evita cazurile de supra
antrenare ( overfitting ). Similar se pot crea și straturile de subsampling, adaptându -se corect
dimensiunea rezultată după aplicarea acestuia.
În urma creării arh itecturii dorite, se poate utiliza cnn_train pentru a pune în aplicare
această arhitectură și pentru a scoate rezultatele. Se vor rula toate straturile create, în ordinea
în care acestea au fost descrise , în funcție de proprietățile fiecărui stat, de -a lung ul mai multor
etape . Metoda folo sită pentru antrenare este cea de SGD – Stohastic Gradient Descen t.
16 4. Abordarea propusă
În vederea segmentării vaselor de sânge din imaginile cu retină, abordarea folosită
realizează segmentarea prin clasificarea fiecăr ui pixel în două clase posibile: vas / non –
vas. Implementarea structurii, cât și procesele antrenare, testare și pre -procesare și post –
procesare au fost realizate în Matlab , folosind librăria MatConvNet. Datele de antrenare și
testare au fost generate folo sind baza de date DRIVE [17].
Există mai multe etape importante care au contr ibuit la obținerea rezultatelor și care
vor fi descrise în subcapitolele următoare :
• Preprocesarea datelor de antrenare: sunt expuse doua variante de procesări folosite
pentru a putea evalua comparativ rezultatele segmentării.
• Extragerea datelor de antrenare și formarea fișierelor corespunzătoare.
• Stabilirea structurii r ețelei neuronale convoluționale.
• Stabilirea parametrilor specifici pentru antrenarea rețelei.
• Extragerea rez ultatelor, post procesarea lor și evaluare acestora utilizând metrici
cunoscute.
4.1 Preprocesarea datelor de antrenare
Există două baze de date ce conțin imagini cu fund de ochi foarte cunoscute: STARE
și DRIVE. Pentru a realiza antrenarea și testarea r ețelei convoluționale neurale propuse au
fost folosite imagini din baza de date DRIVE[ 18]. Există în această bază de date 20 de
imagini pentru antrenare, imagini pentru care sunt furnizate masca și marcajul manual, și de
asemenea și 20 de imagini de test.
Fiind una dintre primele baze de date cu acest tip de imagini, rezoluția imaginilor
este destul de mică, 565×584 pixeli, iar nivelul de detalii este de asemenea destul de scăzut
(calitate foarte slabă a imaginilor RGB) , remarcându -se chiar și probleme de iluminare
neuniformă . Ca o consecință a acestui fapt, în vederea obținerii unei performa nțe ridicate de
segmentare, imaginile inițiale necesită preprocesare pentru a putea evidenția cât mai bine
vasele de sânge față de fundalul imaginii.
Figura 7 prezint ă o imagine RGB, selectată din baza de date avută, împreună cu toate
cele trei canale de culoare ale acesteia. Așa cum poate fi observat foarte ușor în cele trei
imagini, nivelul de contrast al vaselor de sânge este foarte sc ăzut atât în imaginea RGB cât
și în planurile de culoare ale acesteia. Se poate observa o iluminare neuniformă a acestei
imagini pe marginile cercului ce o încadrează, în această zonă vasele de sânge fiind foarte
slab evidențiate. De asemenea, canalele de culoare R și B sunt foarte slab e din punct de
vedere al contrastului, singurul care are un nivel de contrast mai ridicat, și în care sunt
prezente mai multe detalii, fiind canalul G. Acesta a fost selectat pentru a fi preprocesat mai
departe în vederea evidențierii cât mai bine a vaselo r de sânge prezente. Totuși pentru a putea
evalua comparativ performanța rețelei pe seturi de date procesate diferit, am realizat și o
17 antrenare a rețelei cu reprezentarea originală a canalului G, fără alte preprocesări aplicate
acesteia.
Figura 7 .Exemplu de imagine cu retină din baza de date DRIVE, setul de antrenare (ultima imagine din set).
De la stânga la dreapta: reprezentarea RGB, canalul R, canalul G și canalul B.
Două preprocesări au fost aplicate pentru a realiza evidențierea vaselor de sâng e.
Modalitatea de aplicare, considerente teoretice și rezultatele obținute vor fi prezentate în
ceea ce urmează.
1) Histogramă adaptivă cu limitarea nivelului de contrast.
Calculul histogramei adaptive, algoritm cunoscut în literatura engleză sub denumirea
de AHE , reprezintă o tehnică foarte des utilizată de îmbunătățire a contrastului în prelucrarea
de imagini. Față de algoritmul clasic de egalizare de histogramă, algoritmul adaptiv
calculează mai multe histograme în puncte diferite ale imaginii și apoi le folosește pentru a
corecta nivelul de iluminare din imagine. Așadar, datorită modului adaptiv, metoda este
recomandată pentru îmbunătățirea contrastului la nivel local și la nivelul muchiilor din
imagine. Totuși, există și un dezavantaj adus de amplificare a excesivă a zgomotului în zone
relativ omogene ale imaginii. Limitarea contrastului poate reduce această amplificare a
zgomotului, fiind dezvoltată o a doua variantă a AHE, cunoscută sub denumirea de CLAHE
(Contrast Limited Adaptive Histogram Equalization )[19] [20].
Limitarea amplificării excesive a zgomotului se re alizează prin aplicarea
algorit mului de contrast adaptiv în jurul vecinătății unui anumit pixel și prin tăierea
histogramei la o anumită valoare. Pixelii care sunt eliminați din cauza acestei l imitări a
histogramei clasice nu sunt pierduți, fiind redistribuiți uniform în noua histogramă rezultată.
Am folosit implementarea din Matlab a acestui algoritm, nivelul la care se limitează
histograma fiind specificat prin parametru clip-limit, iar redistribuția pixelilor care urmau să
fie eliminați fiind specificată prin intermediul parametrului Distribution .
În cazul imaginilor cu retină există o parte centrală (numită fovea centrală) mai
întunecată decât restul imaginii. Aplicarea histogramei adaptive cu limitare de contrast pe
întreaga imagine distruge această zonă eliminând detalii ale v aselor de sânge . Așadar am
luat decizia de a împărți imaginea în nouă blocuri, aplicând pe fiecare bloc în parte CLAHE.
Astfel zona centrală nu a mai fost atât de afectată de această preprocesare , dar zgomotul a
fost amplificat mai mult . Aceste detalii pot fi vizualizate în figura 8 .
Canalul R
Canalul G
Canalul B
18
Figura 8. Rezultate ale aplicării CLAHE. Primele două imagini, din partea stângă conțin rezultatul aplicări i pe
întreaga imagine, cea de -a doua imagine reprezentând zona centrală mărită, iar ultimele două imagini conțin
rezultatul procesării pe blocuri.
2) Aplicarea de filtre Laplaciene piramidale locale.
Tehnica de procesare a imaginilor folosind piramide laplacie ne este destul de
cunoscută și de folosită pentru analiza imaginilor la scale diferite . Datorită construcției cu
kerneluri Gaussiene invariante spațial, se credea că această tehnică nu dă rezultate bune în
ceea ce privește conservarea muchiilor, a conturu rilor din imagini. Trei ingineri, Sylvain
Paris, Samuel W Hasinoff și Jan Kautz, au demonstrat contrariul, redactând un articol ce
prezintă procesări de imagini realizate cu aceste piramide laplaciene [21], procesări conservă
muchiile prezente în imagini. Aceștia susțin că muchiile pot fi diferențiate la scale foarte
mici prin aplicarea unui prag (threshold) bazat pe diferențele de culoare . Metoda acestora
realizează astfel procesări de înaltă calitate fără a degrada muchiile din imagini și fără a
introduce artefacte în imagine, ne fiind necesare procesări anterioare ale imaginilor și nici
optimizări specifice. Pentru a demonstra ipoteza formulată, în articol sunt prezentate mai
multe prelucrări ce conservă muchiile din imagini: îmbunătățirea detaliilor, net ezirea
imaginilor sau tone mapping .
Întreaga procesare presupune modificarea unui semnal de intrare astfel încât
discontinuitățile muchiilor să nu fie afectate, să rămână plasate la fel, cu același profil, formă,
intensitatea pixelilor ce o compun putând fi alterată (crescută sau modificată) fără a netezi
tranzițiile. O implementare a acestor filtre poate fi aplicată în Matlab utilizând locallapfilt
[22]. Aceasta poate fi utilizată atât pentru imagini grayscale, cât și pentru imagini RGB,
parametrii necesa ri fiind reprezentați de un coeficient de amplitudine a muchiilor, un
coeficient de netezire (când acesta este mai mare ca 1, se realizează netezirea imaginii ținând
cont de muchii) și un număr de niveluri de intensitate folosite.
Am aplicat această prepr ocesare pe imaginea reprezentată cu nivele de gri. Am
determinat experimental valoarea pentru coeficientul de amplificare a muchiilor și de
asemenea și cea pentru coeficientul de netezire (deoarece urmăream reducerea zgomotului).
Cele două valori selectate au fost de 0.15 pentru amplificarea muchiilor, pentru a realiza în
acest fel și îmbunătățirea contrastului, respectiv de 5 pentru netezirea imaginii (reducerea
zgomotului). Ulterior am readus imaginea în intervalul [0,255] prin scăderea minimului,
împărți rea cu valoarea maximă (aduce valorile în intervalul [0,1]) și înmulțirea cu 255.
Figura 9 prezintă rezultatele acestei preprocesări.
19
Figura 9 . Rezultat al aplicării filtrelor laplaciene piramidale. În prima imagine este redată imaginea originală
reprezentată grayscale fiind urmată cu o secțiune mărită din aceasta ce su rprinde vase de sânge foarte fine. În
cea de -a treia imagine este redat rezultatul preprocesării, ultima imagine reprezentând aceeași zonă cu vase de
sânge foarte subțiri din imaginea p reprocesată .
Există diferențe destul de mari între rezultatul preprocesării utilizând CLAHE și
obținut prin filtrele Laplaciene piramidale. Se observă în cea de -a doua procesare un nivel
mult mai scăzut de zgomot , evidențierea vaselor de sânge fiind reali zată fără a afecta
muchiile vaselor de sânge foarte subțiri, dar nu cu aceeași intensitate.
Aceeași structură de rețea neuronală convoluțională a fost antrenată pe cele două
seturi de date diferit preprocesate și pe setul neprocesat . Totuși, datorită modului de selecție
aleatorie a dat elor, deși seturile inițiale au fost identice, datele ajunse în rețea pentru procesul
de antrenare nu sunt identice.
4.2 Selectarea datelor de antrenare
În abordarea de segmentare propusă se folosește învățarea supervizată. Acest lucru
presupune existența unor etichete asociate datelor de antrenare. Așa cum am specificat
anterior, segmentarea realizată presupune clasificarea fiecărui pixel. Există două clase
posibile pentru fiecare pixel al imaginii: vas și non-vas, clase pe care le -am asociat pe baza
marc ajului manual.
Prima problemă care se ridică atunci când este vorba de antrenarea unei rețele
neuronale convoluționale, și în general în cazul oricărei rețele, este dată de diversitatea
setului de date și de asemenea și de varietatea acestuia. În funcție de aceste două aspecte,
rețeau a ajunge să aibă performanțe ridicate sau scăzute. În cazul imaginilor cu retină
problema setului de date există . În cazul imaginilor cu retină, niciunul din cele două aspecte
nu este favorizat. Setul de antrenare este foarte mic, insuficient pentru folosirea într -o rețea
neuronală, iar diversitatea datelor nu este foarte ridicată.
Soluția în acest caz o reprezintă crearea unui set artificial de date. Acest procedeu
presupune extragerea de informații din imaginile originale , sub formă de sub -imagini ce vor
forma setul de antrenare mult îmbunătățit din punct de vedere al volumului și al varietății
datelor. Pentru a realiza acest set, am parcurs mai multe etape:
• Selectarea dimensiunii ferestrei glisante de selecție a sub -imagi nilor.
• Realizarea de augmentări pentru mărirea variației imaginilor.
• Stabilirea pragurilor de selecție a sub -imaginilor.
20 • Formatarea datelor pentru a putea fi folosite în MatConvNet.
Pentru realizarea segmentării prin clasificare am considerat o fereastră glisantă cu
dimensiunea de 33×33 pixeli , dimensiune impară pentru a putea clasifica pixelul central .
Înainte de a începe s elecția m -am asigurat că parcu rg întreaga imagine și am adăugat zerouri
astfel încât, atât lățimea cât și înălțimea acesteia să fie multiplu de 33 (am procedat similar
și pentru mască și pentru marcajul manual) . Cu ajutorul acestei ferestre glisante parcurg
imaginea preprocesată din pixel în pixel pentru a selecta date ce urmează a fi etichetate.
Am folosit pentru a eticheta aceste s ub-imagini varianta scheletizată a marcajului
manual, deoarece în cazul în care aș fi folosit varianta originală aș fi obținut foarte multe
imagini cu un grad r idicat de similitudine dată de grosimea vaselor de sânge. Așadar, am
considerat ca imagine pozit ivă, și am etichetat -o ca fiind vas de sânge , sub -imaginea al
cărui pixel central este marcat ca vas de sânge, în scheletizarea marcajului manual. La polul
opus, am considerat ca imagine negativă și am etichetat -o ca fiind non-vas, sub -imaginea
ce nu conține în pixelul central un marcaj manual, nu conține nici în vecinătatea acestuia
marcaje ale vaselor de sânge și conțin mai puțin de 80 de pixeli de vas de sânge. Acest prag
l-am ales tot experimental, deoarece , am vrut să etichete z în mod negativ și sub-imagini care
prind în colțuri părți din vase de sânge. De asemenea, pentru ca rețeaua să poată diferenția
și trecerea de la fundalul negru la retină, diferențiind astfel marginea ochiului față de vase
de sânge, am stabilit ca imagi nile să conțină cel mult 650 de pixeli de negru din afara măștii .
Din punct de vedere al variației setului de date, am realizat acest lucru prin utilizarea
de augmentări . Am folosit ca augmentări ale datelor rotiri cu 90, 180 și 270 de grade ale
datelor de intrare pozitive deoarece numărul acestor este mult mai redus în comparație cu al
datelor negative, pentru cele din urmă aplicând numai una din rotiri, de 180 de grade.
Un pseudocod al celor descrise mai sus este prezentat în cele ce urmează, alături de
o reprezentare grafică.
Pentru fiecare imagine RGB din setul de intrare :
| Bordare_imagine() %realizează bordarea cu 0 (multiplu de 33)
| Preprocesare() %aplică una din preprocesările descrise
| Scheletizează_marcaj_manual()
|
| Pentru i = 1:1:nr_coloane
| Pentru j = 1: 1:nr_linii
| Selectează_subimagine()
| Calculează_sumă_pixeli_vas()
| Calculează_sumă_pixeli_in_afara_măștii()
|
| Dacă (sumă_pixeli_in_afara_măștii < 650):
|
| Dacă (pixel_central = vas ):
| Etichetează_vas()
| Realizează_augmentări() %rotatii 90, 180, 270
| Atlfel daca (pixel_central = non -vas și
21 | vecinatate = non -vas și
| sumă_pixeli_vas < 80):
|
| Etichetează_non_vas()
|___________ ______Realizează _augmentări() %rotatii 180
Figura 10 . Reprezentarea grafică a succesiunii etapelor din etichetarea sub -imaginilor.
Formatul de date specific MatConvNet este reprezentat de un fișier (sau de fișiere)
ce conțin e salvată în interior o structură cu două c âmpuri: un câmp ce conține o matrice cu
imaginile, unde pe fiecare linie este reprezentată o sub -imagine vectorizată și, un vector ce
conține etichetele asociate (indexul fiecărei linii din matrice este corelat cu eticheta de pe
indexul corespunzător din v ector).
În urma etichetării prezentate mai sus, fiecare imagine a fost vectorizată și adăugată
într-o matrice, iar etichetele acestora au fost salvate pe pozițiile corespunzătoare într -un
vector. Dintre acestea am selectat aleator, un număr aproximativ d e 10.000 de imagini cu
eticheta VAS și aproximativ 10 .000 cu eticheta NON -VAS și le-am salvat în câte un fișier
specific fiecărei imagini . Numărul de pozitive/negative poate varia în cazul în care în
întreaga imagine nu au fost găsite cel puțin 10 .000 de sub -imagini cu eticheta VAS, caz în
care am selectat numărul maxim de astfel de imagini, iar pentru cele cu eticheta NON -VAS
am selectat diferența dintre 20.000 și numărul maxim de imagini pozitive (20.000 este
numărul maxim de sub -imagini pe care l -am considerat din fi ecare imagine preprocesată,
alese aleator) . În total am select 400.000 de sub -imagini.
Figura 11 prezint ă exemple de antrenare selectate pentru cele trei antrenări realizate:
sub-imagini preluate din planul de culoare G fără preprocesări și sub -imagini pr eluate din
rezultatul celor două preprocesări realizate.
22
Figura 11 . Exemple de sub -imagini folosite în antrenare. În partea stângă sunt reprezentate imagini de antrenare
pozitive împreună cu rotirile aplicate (90,180,270) și cu marcajul manual și cel scheletizat. În partea dreaptă
sunt reprezentate imagini de antrenare negative împreună cu rotirea la 180 de grade, marcajul manual și cel
scheletizat.
Se poate observa cu ușurință în figura 11 , în imaginile etichetate NON -VAS că
acestea conțin părți din vasele de sânge. Am permis acest lucru tocmai pentru a lăsa rețeaua
să învețe să diferențieze și pixelii ce sunt situați în apropierea vaselor de sânge sau între vase
de sânge. Așa cum am specificat anterior, am limitat existența pi xelilor ce conțin vase de
sânge în vecinătatea pixelului central la 6 pixeli (3 în stânga pixelului central, 3 în dreapta
pixelului central) și de asemenea, am limitat și numărul de pixeli de vas de sânge ce pot fi
conținuți de o astfel de sub -imagine la 8 0.
Aplicând pașii descriși anterior, dintr -o singură i magine se pot extrage între 100.000
și 150.000 de sub -imagini, numărul acestora variind în funcție de imagine, în funcție de
densitatea vaselor de sânge. De exemplu, pentru prima imagine din baza de date
(”21_training.tif”), am extras în total 123.960 sub -imagini, din care 31.516 au fost marcate
cu eticheta VAS și 92.444 cu eticheta NON -VAS. Dintre acestea am ales aleator un număr
de 10.000 de imagini din prima clasă și 10.000 de imagini din cea de -a doua clasă, numărul
total al datelor extrase pentru antrenare fiind de 380.000.
Pentru a putea folosi aceste date în antrenarea rețelei, le-am împărțit în trei seturi , atât
pentru imaginile neprocesate cât și pentru cele două preprocesări realizate :
• Setul de antrenare : conține datele selectate din primele 17 imagini din baza de date
(340.000) de imagini.
• Setul de validare : conține datele din următoarele două imagini (40.000). Acestea ar
trebui să fie diferite față de setul de antrenare, dar nu pot garant a acest lucru deoarece
imaginile sunt relativ similare. Am restrâns totuși selecția acestora numai la cele două
23 imagini din care nu am mai extras alte date pentru setul de an trenare sau pentru cel
de testare .
• Setul de testare : conține datele din ultima ima gine (imaginea numărul 20 din baza
de date drive). Deși am creat acest set, inițial nu l-am folosit pentru testare, ci am
preferat să evaluez performanța rulând pe întreaga imagine nu numai pe niște date
selectate aleator.
Am observat pe parcursul evoluției rețel ei că abordarea formulată mai sus nu
favorizează o performanță foarte ridicată, tocmai din cauza pragurilor stabilite. Pragul
stabilit pentru sub -imaginile etichetate NON -VAS nu era corect deoarece, prin intermediul
lui datele de antrenare erau restricțion ate, iar rețeaua nu putea să diferenți eze pixelii aflați
între vase de sânge apropiate din cauza lipsei datelor de acest tip. De aceea am corectat
această abordare eliminând pragul și reducând zona de vecinătate la ±2 pixeli. De asemenea,
nu am mai menținu t augmentarea și pentru datele negative, pentru că setul de date era
suficient de mare ca volum și ca variație. Volumul de date generat în acest fel a fost mult
mai mare, pentru fiecare imagine am generat aproximativ 200.000 de sub -imagini din care
am sele ctat aleator același număr de 20.000 de imagini (din considerente de resurse limitate
de antrenare). Astfel, întregul proces de selectare de date poate fi descris de următorul
pseudocod:
Pentru fiecare imagine RGB din setul de intrare:
| Bordare_imagine () %realizează bordarea cu 0 (multiplu de 33)
| Preprocesare() %aplică una din preprocesările descrise
| Scheletizează_marcaj_manual()
|
| Pentru i = 1:1:nr_coloane
| Pentru j = 1:1:nr_linii
| Selectează_subimagine()
| Calculează_sumă_pix eli_vas()
| Calculează_sumă_pixeli_in_afara_măștii()
|
| Dacă (sumă_pixeli_in_afara_măștii < 650):
|
| Dacă (pixel_central = vas):
| Etichetează_vas()
| Realizează_augmentări() %rotatii 90, 180, 270
| Atlfel daca (pixel_centr al = non -vas și
| vecinatate = non -vas și
| sumă_pixeli_vas < 80 ):
|
| Etichetează_non_vas()
|_________________ Realizează_augmentări() %rotatii 180
În figura 12 pot fi observate comparativ două rezultate din etape intermediare ale
antrenării ce evidențiază limitarea introdusă de alegerea proastă a datelor versus alegerea
corectă a datelor.
24
Figura 12 . În partea stângă au fost folosite date de antrenare selectate fără praguri (rezultat din etapa
37), iar în parte a dreaptă cu praguri (rezultat din etapa 36). În cazul celor din partea dreaptă, nu am avut exemple
pentru pixelii situați între vasele de sânge, spre deosebire de partea dreaptă, caz în care rețeaua a putut face
corect diferența între clase.
4.3 Descrierea arhit ecturii propuse și a implementării
În ceea ce privește crearea unei arhitecturi de rețea neuronală convoluțională, nu
există niște pași bine definiți, nu există o ”rețetă” în acest sens care să gar anteze obținerea
de rezultate. Nu există, de asemenea, o ”rețetă” a modului în care se succed straturile (numai
niște observații ale celor care au încercat diferite arhitecturi), sau a modului în care sunt aleși
parametrii corespunzători rețelei: dimensiune filtre, padding, stride, rată de învățare,
numărul de i magini considerate per iterație etc. Pentru a găsi parametrii optimi pentru setul
de date avut, sunt necesare mai multe antrenări din care se pot trage concluzii referitoare la
parametrii aleși în funcție de cât de mult minimizează funcția de cost și impli cit eroarea,
urmând ulterior ca aceștia să fie ajustați corespunzător.
4.3.1 Descrierea structurii
Structura unei rețele neuronale convoluționale poate fi descrisă ca o succesiune de
astfel de straturi. În MatConvNet, fiecare strat este definit de o st ructură. Pentru acesta
trebuie specificați toți parametrii necesari tipului de strat creat.
De regulă, pentru un strat de tip convoluțional se specifică în structură tipul ‘conv’,
urmat de inițializarea ponderilor random (‘weights’) , de inițializarea bia s-urilor , sub
forma unei distribuții Gaussiene, de o anumită dimensiune, rata de învățare a acestuia
(‘learningRate’) , pasul de parcurgere a datelor de intrare (‘stride’) de către kernelul
de convoluție și modul de bordare a datelor de intrare ( ‘pad’).
În cazul straturilor ce realizează reducerea dimensiunii spațiale trebuie specificat la
fel tipul stratului, ‘pool’ , metoda prin care se realizează reducerea dimensiunii ( ‘avg’,
‘max’), dimensiunea ferestrei de reducere ( ‘pool,[3 3]’ ), pasul de parcurgere
(‘stride’) și din nou bordarea imaginii ( ‘pad’).
25 Pentru combaterea fenomenului de supra -învățare, stratului specific i se furnizează o
rată de reducere a legăturilor din rețea. Acesta va ignora un procent din legăturile din rețea
pentru a combate fenomenul de overfitting. Similar, în cazul stratului de activare, acesta nu
necesită parametrii speciali, ci numai specificarea funcției folosite (‘relu’).
Stratul conectat complet este tratat ca un strat convoluțional singura diferență fiind
reprezentată de faptul că acesta are conexiuni cu toate activările din stratul precedent față de
un strat convoluțional clasic care este conectat numai local. Pentru a putea crea un astfel de
strat, complet co nectat, este necesară cunoașterea dimensiunii harților de trăsături di n stratul
precedent, precum și al numărului de neuroni existenți. Astfel în operația de convoluție
specifică vor intra toate activările stratului precedent. Din punct de ved ere funcțional, rolul
acestora este același.
În cazul stratului ultim al oricărei rețele de clasificare, cel care aplică funcția de cost,
nu există niciun parametru necesar de specificat, ci numai tipul funcției folosite
(‘softmaxloss’ , de exemplu ).
Datorită faptului că nu exista o rețetă a modului de construcție a unei rețele, cei car e
le-au folosit au făcut câteva observații pe care le -am folosit și eu în alcătuirea rețelei mele.
De regulă, un strat convoluțional este urmat de către un strat de activare, iar dimensiunea
kernelului de convoluție cel mai des utilizată este de 3×3, cu bo rdare de 1, deoarece aceasta
nu alterează dimensiunea datelor. În ceea ce privește straturile de reducere a dimensiunii
spațiale, acestea se folosesc de obicei cu o fereastră glisantă de 2×2, cu pas de 2 și fără
bordare, evitând astfel suprapunerile și red ucând dimensiunea la jumătate.
Având în vedere aceste observații am creat o rețea neuronală convoluțională adâncă
ce conține:
• trei straturi convoluționale urmate de trei straturi de reducere a dimensiunii spațiale ;
• un strat de activare ReLu;
• un strat com plet conectat ;
• un strat ce aplică funcția Softmax .
Structura fiecărui strat va fi descrisă în cele ce urmează, reprezentarea grafică regăsindu –
se în figura 13 .
Figura 1 3. Structura rețelei n euronale convoluționale.
26
Deoarece efortul computațional, pr ecum și necesarul de resurse ar fi fost foarte mare
în cazul în care la intrarea aș fi folosit sub -imagini RGB, am ales să lucrez cu imagini
reprezentate pe un singur plan de culoare. Așadar, așa cum am specificat și în secțiunea
dedicată selecției de date , am ales planul de culoare G. Dimensiunea sub -imaginilor am ales –
o impară pentru a putea face referire la pixel ul central al sub -imaginii. De obicei, cele mai
multe rețele neuronale care folosesc imagini sau sub -imagini cu dimensiuni mici, aleg o
dimensiu ne pară de 32 sau 28 de pixeli datorită straturilor de reducere a dimensi unii spațiale
considerate (2×2 -> reducere la jumătate). Ca o consecință a acestui fapt, în cazul în care se
dorește utilizarea unei rețele pre -antrenate este necesară adaptarea datel or la formatul
considerat de rețeaua respectivă.
Datele de intrare pentru rețeau a neuronală propusă ( primul pătrat gri din figura 1 3 nu
este considerat un strat din structura rețelei), sunt reprezentare de imagini grayscale de
dimensiune 33×33 de pixeli. Acestea sunt trecute prin întreaga rețea pentru a obține
clasificarea lor în două clase: VAS și NON -VAS. Rezultatul unei operații specifice CNN
(convoluție sau reducere a dimensiunii spațiale) est e definit ca hartă de trăsături. Fiecare
dintre rezultatele obținute va avea și o a treia dimensiune, o adâncime ( depth) dată de
numărul de neuroni al fiecărui strat.
Primul strat folosit în rețeaua din figura 1 3 este un strat convoluțional ce are
dimensiunea kernelului de 3×3, pasul de parcurgere al datelor de 1 (stride -S), și o bordare
inegală de 1 pixel. În general, în cazul în care se realizează o bordare cu un pixel, operația
de convoluție nu modifică dimensiunea, rezultând hărți de trăsături egale ca dimensiune cu
datele de intrare sau cu datele avute din stratul precedent. Deși aș fi putut să consider
bordarea cu 1 pixel, am ales să bordez inegal imaginea pentru a scădea dimensiunea acestei
cu 1 pixel, ajungând în acest fel la hărți de trăsătur i cu dimensiune pară de 32×32 . Am ales
să fac acest lucru pentr u a putea aplica operații de pooling fără pierderi (în cazul acestora nu
este recomandată utilizarea de padding , mai ales în cazul celor care folosesc ca mod de
extracție media pixelilor ). Am considerat un număr de 20 de neuroni pentru acest prim strat.
Operația de bordare inegală versus cea de bordare clasică poate fi observată în figura 1 4.
Figura 14 . Bordarea inegală vs. Bordarea clasică. În partea stângă este reprezentată bordarea inegală, aceasta
crescând dimensiunea de la 33×33 pixeli la 34×34 pixeli (prin completarea cu zerouri) , față de 35×35 pixeli în
cazul bordării clasice reprezentate în partea dreaptă. În urma convoluției cu un kernel de 3×3, rezultatul în cazul
bordării din stânga va avea dimensiunea de 32×32 pixeli, iar în cazul bordării din stânga va rămâne
neschimbată, 33×33 pixeli.
Pentru implementarea folosită, trebuie inițializată structura specifică stratului
convoluțional cu parametrii descriși mai sus . Inițializarea kernelului este generată aleator
33×33
33×33
27 sub forma unei d istribuții Gaussiene . În cazul primului strat, dar și în cazul celorlalte straturi
de tip convoluțional, structura inițializată are forma următoare:
net.layers{end+1} = struct( 'type', 'conv', …
'weights' , {{0.01*randn(3,3,1,20, 'single' ),
zeros(1, 20, 'single')}}, …
'learningRate' , lr, …
'stride' , 1, …
'pad', [1 0 1 0]) ;
Cel de -al doilea strat aflat în structură este un strat de pooling. Acesta realizează
reducerea dimensiunii spațiale la jumătate cu ajutorul unei ferestre glisante de 2×2 pixeli.
Pasul acesteia este tot de 2 pixeli deoarece nu se dorește suprapunerea a două blocuri. Am
folosit straturi de pooling care reduc dimensiunea prin păstrarea mediei pixelilor cuprinși de
fereastra glisantă. În cazul acestui strat nu se mărește, de obicei, numărul de neuroni, așadar
l-am păstrat la valoarea de 20, reducând dimensiunea hărților de trăsături la 16×16. Pentru
fișierul de inițializare a rețelei neuronale în MatConv Net, acest strat poate fi descris cu
următoarea structură:
net.layers{end+1} = struct( 'type', 'pool', …
'method' , 'avg', …
'pool', [2 2], …
'stride' , 2, …
'pad', 0) ;
În continuare, am considerat tot un strat de convoluție, ce nu schimbă dimensiunea
hărților de trăsături, dar, prin intermediul lui, am ales să măresc numărul de neuroni la 50.
Parametrii acestuia sunt similari cu cei ai pri mului strat de convoluție, cu deosebirea că în
acest caz se realizează bordarea clasică ( padding, P = 1 ) pentru a conserva dimensiunea.
Straturile de pooling folosite sunt identice, reduc dimensiunea hărților de trăsături
din straturile anterioare la jum ătate, inițializarea din Matlab fiind aceeași.
Privită în ansamblu, întreaga structură a rețelei conține patru blocuri ce includ
operația de convoluție urmată de cea de pooling. Parametrii acestora sunt asemănători,
hărțile de trăsături rezultate în urm a acestor patru blocuri având dimensiunea de 1×1, iar
adâncimea de 100 de neuroni.
În interiorul ultimului bloc ce conține convoluție și pooling este intercalat și un strat
de activare de tip ReLu. Acesta nu afectează dimensiunea hărților de trăsături. De asemenea,
după cele patru blocuri am folosit și un strat convoluțional complet conectat și un strat
softmax. Stratul complet conectat are rolul de a prelua toate activările din stratul anterior (în
cazul meu 1×1) și rest rânge adâncimea de 100 la 2, număr ul de clase definite de mine.
Evaluarea funcției softmax din final, o să ofere un scor pentru apartenența la fiecare clasă.
28 Întreg procesul de creare a unei arhitecturi de rețea neuronală convoluțională
presupune o atenție deosebită la dimensiunea hărț ilor de trăsături, deoarece, filtrele de
convoluție sau ferestrele de pooling trebuie să se potrivească dimensiunii astfel încât acestea
să parcurgă întreaga hartă de trăsături, având cât mai puține pierderi. Se pot folosi și ferestre
de pooling de dimensiun i impare, cu stride impar pe hărți de dimensiune pară, dar va trebui
ca acestea să fie suprapuse sau, în caz contrar, vor rămâne date neacoperite.
4.3.2 Selectarea parametrilor de antrenare
Există mai mulți parametrii ce trebuie setați înainte de antre narea setului de date.
Aceștia sunt:
• dimensiunea datelor de intrare (lă țime – w, înălțime – h, planuri –RGB, Grayscale );
• rata de învățare per iterație (epocă) – reprezintă pasul de descreștere pentru SGD;
• numărul de imagini ce va fi considerat în cad rul unei iterații – numărul de imagini ce
vor fi procesate per iterație, imagini selectate random din setul de antrenare total;
• numărul total de iterații – durata procesului de antrenare;
Toate acestea, mai puț in dimensiunea setului de antenare, trebuie set ate astfel încât,
funcția de cost să fie minimizată pe parcursul antrenării, și, implicit, și eroarea de clasificare.
Alegerea acestora se face în funcție de evoluția antrenării. În cazul în care funcția de cost
este minimizată corespunzător, valoarea aces teia scăzând la fiecare etapă, valoarea setată
pentru rata de învățare este corect aleasă , în caz contrar, se va observa o creștere a valorii
funcției de cost și implicit și a erorii . În cazul în care valorile stagnează, se poate modifica
această rată de î nvățare reducând valoarea ei. Antrenarea poate fi reluată de la o anumită
iterație cu noua v aloare setată, deoarece, MatConvNet permite salvarea datelor la fiecare
iterație tocmai în acest scop.
Dimensiunea setului de antrenare am stabilit -o atunci când am creat structura rețelei,
aceasta fiind de 33×33 pixeli cu reprezentare pe un singur plan de culoare.
Pentru setul de date avut, fiecare iterație din cele 100, va procesa 6800 de imagini
alese aleator. În procesul de antrenare toate datele sunt concat enate într -o structură similară
cu cea folosită pentru salvarea datelor (structură cu imagini și etichete asociate), pentru
fiecare fișier fiind asociat un număr ce reprezintă setul din care fac parte datele: antrenare
(1), validare(2) și testare(3). Înain te de antrenare, datele sunt readuse la dimensiunea de
33×33 de pixeli din forma vectorizată. În acest fel, structura de date va avea dimensiunea de
33x33x1x număr total de imagini.
Inițial am generat valorile pentru rata de învățare automat, generând 1 00 de valori ce
descresc sub formă logaritmică între 0.001 și 0.00 001 (figura 15 ). Am generat 100 de valori
deoarece intenționam să rulez antrenarea timp de 100 de iterații. În timpul antrenării am
observat că, dat orită formei logaritmice, valoarea pentru rata de învățare scade foarte repede,
în jurul valori de 0.00 03 în iterația 25. O consecință a acestui fapt a fost descreșterea lentă
29 pe care o înregistrau atât valorile funcției de cost cât și eroarea , fiind posibilă blocarea într –
un minim local . Pentru u rmătoarele 10 etape am mărit și am ț inut constantă valoarea ratei de
învățare la 0.005, fapt ce a susținut minimizarea funcției de cost pentru cele 10 etape. Apoi
am redus valoare la 0.0005 pentru următoarele 65 de etape de antrenare.
Figura 1 5. Distribu ția valorilor generate automat pentru rata de învățare pentru 100 de iterații. Ulterior acesta
au fost ajustate pentru a susține minimizarea funcției de cost.
Modificările asupra ratei de învățare pot fi identificate foarte ușor în graficul erorilor
și al funcției de cost deoarece reprezintă o creștere urmată de o scădere semnificativă.
MatConvNet reprezintă valorile pentru funcția de cost, cunoscută și sub numele de funcție
obiectiv, sau objective în literatura engleză, cât și pentru eroare la fiecare ite rație parcursă.
Cele două corecții ale ratei de învățare pot fi observate în figura 16 .
Figura 1 6. Reprezentarea grafică a funcției de cost (funcția obiectiv) și a erorii pentru seturile de antrenare și
de validare. Se pot observa cele două intervenții a supra ratei de învățare și modificările aduse.
Am creat trei antrenări , fiecare având ca intrare unul din cele trei seturi de date
create: fără preprocesări, cu pre proce sări de tipul CLAHE, sau cu pre procesări utilizând
filtrele laplaciene locale pira midale. Pentru toate cele trei am menținut aceleași valori ale
parametrilor determinate, singura schimbare fiind dată de setul de date. Rezultatele obținute
vor fi detaliate în capitolul următor alături de calculul metricilor de performanță.
0 10 20 30 40 50 60 70 80 90 10000.20.40.60.81x 10-3
30 5. Rezultate obținute și discuții
Toate pre procesările, antrenările, testările , dar și evaluarea performanțelor au fost
realizate pe CPU -ul unui calculator ce are următoarele specificații: Intel(R) Core (TM) i7-4790
CPU @ 4.00 GHz, 16.0 GB RAM, Windows 8.1, x64. Implementa rea a fost realizată
folosind Matlab și MatConvNet. În medie, timpul de antrenare pentru o rețea este de 12 ore
pentru 100 de iterații, la volumul considerat de date (crește odată cu volumul de date) . Pentru
a ajunge la rezultatele prezentate mai jos, mai multe iterații au fost necesare pentru a putea
seta corespunzător atât structura rețelei cât și parametrii specifici. De asemenea, așa cum
am specificat anterior, mai multe seturi de date au fost create până la alegerea celor care
furnizează rezultatele prezentate mai jos.
Evaluarea rezultatelor a fost făcută pe setul de testare din baza de date DRIVE (20
de imagini) pentru care am calculat diferite metrici, dar am extras și un re zultat vizual pe o
imagine din baza de date STARE .
Pentru fiecare di n cele trei variante de antrenări am obținut trei grafice în care se
poate observa modul în care s -a realizat minimizarea funcției de cost odată cu trecerea
etapelor și, de asemenea, și evoluția erorii pe parcursul întregii antrenări. În mod normal,
atât e roarea cât și funcția obiectiv trebuie să descrească monoton, orice creștere a acestora
semnalizând existența unor parametrii incorect setați (de obicei, rata de învățare este mult
prea mare). De asemenea, deoarece vorbim de existența a două clase, este de așteptat ca
eroarea să pornească de la valoarea 0.5. În figura 17 poate fi observată descreșterea funcției
obiectiv și a erorii pe parcursul a celor 100 de iterații , comparativ pentru cele trei procese de
antrenare .
Figura 17 . Descreșterea funcț iei obiectiv în cazul celor trei antrenări realizare (de la stânga la dreapta): rețeaua
fără preprocesări, rețeaua cu preprocesări CLAHE și cea cu filtre Laplaciene.
În cazul iterației 25, acolo unde se observă o încetinire a procesului de minimizare
este posibil ca rețeaua să fi ajuns într -un punct de minim local din care să nu poată ieși din
cauza ratei de învățare. Modificarea acestui parametru are ca efect depășirea acestui punct.
Punctul în care converge funcția obiectiv, punctul în care aceasta ati nge minimul global este
situat după iterația 100, între iterațiile 50 -100, descreșterea funcției de cost fiind foarte mică
31 de la o etapă la alta sau chiar stagnând (0.001 scădere). Ultima din cele trei rețele am
antrenat -o până în etapa 200 pentru că am î ncercat, prin micșorarea ratei de învățare, să
minimizez cât mai mult eroarea.
Comportamentul rețelei în cazul folosiri i datelor de intrare ne prelucrate este similar
cu cel al rețelei ce folosește date pre -procesate cu CLAHE. La început descreșterea este mică
apoi există o descreștere semnificativă în intervalul de iterații 10 -25, urmată de o descreștere
similară între 25 -50 și de o descreștere foarte puțin semnificativă în cazul ultimelor iterații.
Având în vedere cele două grafice, ne putem aștepta ca ce a de-a doua rețea să aibă rezultate
mai bune de clasificare datorită valorii minime atinse (aproximativ 0.275). Evoluția erorilor
reprezentată în figura 18 susține această afirmație.
Figura 18. Descreșterea erorii în cazul celor trei antrenări rea lizare (de la stânga la dreapta): rețeaua fără
preprocesări, rețeaua cu preprocesări CLAHE și cea cu filtre Laplaciene.
Pe parcursul antrenării, rezultatul este rafinat de la o iterație la alta, așa cum scade și
eroarea . Figura 19 prezintă rezultatul obț inut în câteva iterații cheie în care eroarea a scăzut
semnificativ, pentru a putea avea o intuiție despre evoluția de -a lungul etapelor.
Figura 19. Evoluția clasificării pe parcursul celor 100 de etape. Se observă apariția și rafinarea detaliilor.
32
Pentru a putea avea rezultate concludente, orice preprocesare făcută pentru selecția
datelor de antrenare trebuie realizată și în cazul testării rețelei. Principiul de testare este
asemănător cu cel de antrenare. Cu ajutorul unei ferestre glisante de dimensi une 33×33
pixeli, este parcursă imaginea rezultată în urma preprocesării. Pentru fiecare sub -imagine
cuprinsă de fereastra glisantă este rulată rețeaua antrenată anterior. Rezultatul rulării acestei
este reprezentat de un vector de scoruri pentru fiecare c lasă definită în procesul de antrenare.
Se realizează în acest fel clasificarea fiecărui pixel al imaginii. Pentru rezultat, am completat
într-o mască a imaginii inițiale, pentru fiecare pixel din clasa VAS, scorul de clasificare avut.
În acest fel am real izat segmentarea prin clasificare. O reprezentare grafică poate fi regăsită
și în figura 20 .
Figura 20 . Pașii realizați pentru realizarea segmentării vaselor de sânge cu ajutorul rețelei neuronale
convoluționale.
Tabelul următor cuprinde rezultatele s egmentării pe baza de date DRIVE. Prima
coloană conține imaginile originale, a doua, a treia și a patra coloană conțin rezultatul celor
trei rețele antrenate (fără procesări -1, cu CLAHE -2, cu Laplace -3), iar a cincea coloană este
segmentarea manuală reali zată de specialiști din domeniu.
Imagine originală Rezultat
segmentare 1 Rezultat
segmentare 2 Rezultat
segmentare 3 Segmentare
manuală
1
2
33 3
4
5
6
7
8
9
34 10
11
12
13
14
15
16
35 17
18
19
20
Tabelul 1. Rezultatele obținute cu ajutorul celor trei variante de antrenări. *1 – fără preprocesări, **2 – CLAHE,
***3 – cu filtre Laplaciene locale.
Rezultatele prezentate în tabelul de mai sus nu au fost alterate în niciun fel după
rularea celor trei rețele, dar așa cum am specificat mai sus, pentru fiecare pixel este returnată
o confidență pentru ambele clase. Se poate însă aplica un prag pentru confidența clasei VAS
pentru a putea elimina din micile zone de zgomot prezente în imaginile rezultate, efectuând
astfel o postprocesare a rezultatului. Scorul considerat pentru clasa VAS este cuprins între
0.5 și 1, vasele de sânge mari, cele evidențiate puternic cu alb având confidența foarte
apropiată de 1, iar toate discontinuitățile prezente în imagini au scor mai mic, 0.5 -0.7.
Figura 21 . Post procesarea segmentării obținute cu ajutorul rețelei antrenate c u date fără preprocesări. În prima
poză este reprezentat rezultatul rețelei, în cea de -a doua sunt evidențiate trei intervale de scoruri, iar în cea de –
a treia imagine a fost selectat numai intervalul 0.75 -1. Imaginea 19 din setul de test.
36
În vederea eva luării performanței de segmentare, am realizat acest lucru prin
comparația cu marcajele manuale realizate de către cadre medicale specializate. Comparația
se realizează pixel la pixel. Deoarece întreaga problemă poate fi rezumată la o clasificare
binară, a m folosit metrici ce utilize ază noțiunile de true positive (TP), true negative (TN),
false positive (FP), și false negative (FN). Acestea au următoarele interpretări:
• TP = pixeli ce au fost marcați manual ca vas de sânge și pe care i -am clasificat corect
prin intermediul rețelei ca VAS.
• TN = pixeli ce nu au fost marcați manual ca vas de sânge și pe care i -am clasificat
corect prin intermediul rețelei ca NON -VAS.
• FP = pixeli ce nu au fost marcați manual ca vas și pe care i -am clasificat greșit ca
VAS.
• FN = pixeli ce au fost marcați manual ca vas și pe care i -am clasificat greșit ca NON –
VAS.
Folosind noțiunile definite mai sus, se pot determina o serie de metrici pentru a
caracteriza clasificarea făcută. De exemplu, pentru domeniul medical, cele mai important e
sunt specificitate și sensibilitatea clasificatorului, pe când, în inginerie cele mai des utilizate
sunt precizia și sensibilitatea. Metoda de calcul, precum și o interpretare a fiecărei metrici
vor fi detaliate în ceea ce urmează [23].
1) Sensibilitatea, cunosc ută și sub denumirea de True positive rate, Recall (detecție
corectă), reprezintă mulțimea de pixeli ce au fost clasificați corect ca VAS, din
toată mulțimea de pixeli din clasa VAS existenți în imagine. Aceasta poate fi
calculată utilizând formula 5:
𝑻𝑷𝑹 = 𝑇𝑃
𝑇𝑃+𝐹𝑁 (5)
2) Specificitatea , sau True negative rate , reprezintă raportul dintre mulțimea de
pixeli ce au fost clasificați corect ca NON -VAS și mulțimea totală de pixeli ce
formează clasa NON -VAS. Formula de calcul este următoarea:
𝑺𝑷𝑪= 𝑇𝑁
𝐹𝑃+𝑇𝑁 (6)
3) Rata de detecții pozitive , sau Positive predictive value, Precision , este o metrică
ce evidențiază cât de bine sunt clasificate cazurile pozitive, pixelii ce fac parte
din vase de sânge raportat la toate cazurile pozitive (inclusiv caz urile pozitive
pentru pixelii din fundal) . Această rată poate fi calculată cu formula 7:
𝑷𝑷𝑽 = 𝑇𝑃
𝐹𝑃+𝑇𝑃 (7)
4) Rata de detecții negative , sau Negative predictive value , redă în mod similar cu
rata de detecții pozitive, cât de multe ca zuri negative, pixeli din afara vasului de
sânge, au fost cla sificați corect ca fundal raportat la toate cazurile negative
clasificate corect :
𝑵𝑷𝑽 = 𝑇𝑁
𝐹𝑁+𝑇𝑁 (8)
5) Acuratețea , sau Accuracy , reprezintă raportarea tuturor clasificărilor corecte
(TP, TN) la totalitatea clasificărilor (corecte sau incorecte). Formula de calcul
este următoarea:
37 𝑨𝑪𝑪 = 𝑇𝑃+𝑇𝑁
𝐹𝑁+𝑇𝑃+𝐹𝑃+𝑇𝑁 (9)
6) Pe lângă acestea mai pot fi calculate rata de detecție pentru pixelii negativi ( False
Discovery Rate – 𝑭𝑫𝑹 =1−𝑃𝑃𝑉) și rata de detecție pentru pixelii pozitivi ( False
Positive rate – 𝑭𝑷𝑹 = 𝐹𝑃
𝐹𝑃+𝑇𝑁) .
Am calculat sensibilitatea, specificitatea, rata de detecții pozitive, rata de detecții
negative și acuratețea pentru rezulta tele fiecărei rețele antrenate, rapo rtându -mă la numărul
total de pixeli conținuți de mască. În cazul în care au rezultat pixeli clasificați ca vas de sânge
în afara măștii, i -am luat și pe aceștia în considerare, crescând astfel numărul de pixeli fals
pozitivi. O imagine din baza de date DR IVE conține un număr aproximativ de 227000 pixeli
situați în interiorul măștii (acest număr diferă în funcție de imagine), din acest total fiind
segmentați manual aproximativ 33000 de pixeli ca vas de sânge (din nou, numărul variază
în funcție de imagine).
Evaluarea performanței a fost realizată ținând cont de confidența clasificării. Astfel
am realizat evaluarea ratelor prezentate mai sus și a acurateței pe segmentările complete (fără
limitări puse pe confidență), pe segmentările ce conțin numai pixelii cu o confidență mai
mare de 0.75, și pe segmentările ce conțin numai pixelii cu o confidență mai mare de 0.85.
În figura 22 se pot observa cele trei segmentări și pixelii clasificați FP, FN, TP și TN.
Figura 22. Pe primul rând sunt prezentate segmentăr ile cu și fără prag (1 -fără prag, 2 – prag = 0.75, 3 – prag
=0.85). Pe al doilea rând sunt prezentate imagini ce conțin pixelii FN (galben), FP (violet), TN (albastru),TP
(verde).
Următoarele tabele conțin metricile de performanță evaluate pe rezultatul ce conține
numai pixelii segmentați cu o confidență mai mare de 0.85 (confidența maximă este 1) ,
acuratețea pentru pragul de 0.75 și pentru rezultatul nealterat .
38 Imagine de
test TPR [%] SPC [%] PPV [%] NPV [%] ACC [%] ACC *
[%] ACC**
[%]
01_test.tif 78.44 94.96 70.12 96.69 92.80 91.74 87.15
02_test.tif 80.13 95.34 75.18 96.46 93.06 91.85 86.84
03_test.tif 65.85 97.07 79.33 94.34 92.53 91.78 85.19
04_test.tif 76.13 95.86 73.90 96.31 93.23 92.21 87.29
05_test.tif 68.07 97.80 82.94 95.12 93.77 93.27 88.38
06_test.tif 64.78 97.89 83.48 94.42 93.22 92.83 89.72
07_test.tif 72.91 95.47 71.07 95.85 92.49 90.96 84.06
08_test.tif 63.63 96.97 75.12 94.88 92.78 91.93 86.76
09_test.tif 66.02 97.82 80.12 95.58 94.09 93.61 90.03
010_test.tif 70.51 96.96 75.88 96.04 93.80 92.99 87.90
011_test.tif 72.76 94.41 65.95 95.88 91.60 90.03 84.13
012_test.tif 71.52 96.59 75.01 95.95 93.46 92.56 87.32
013_test.tif 70.35 96.87 78.79 95.19 93.11 92.45 88.85
014_test.tif 78.21 95.17 68.37 97.03 93.17 91.43 84.87
015_test.t if 78.73 93.45 58.22 97.43 91.93 89.26 78.72
016_test.tif 73.50 96.24 74.62 96.02 93.27 92.38 88.15
017_test.tif 68.83 96.81 75.18 95.67 93.36 92.59 88.61
018_test.tif 76.63 95.49 68.77 96.92 93.32 92.22 87.43
019_test.tif 80.42 95.85 72.60 97.28 93.99 92.64 87.31
020_test.tif 73.80 96.54 71.82 96.86 94.12 93.27 89.11
Medie 72.56 96.18 73.82 96.00 93.15 92.10 86.89
Tabelul 2 . Evaluarea performanței folosind rezultatele rețelei antrenate cu imagini ne preprocesate.
ACC* – acuratețea pentru pragul de confidență de 0.75, ACC** – acuratețea pentru rezultatul
nealterat.
Imagine de
test TPR [%] SPC [%] PPV [%] NPV [%] ACC [%] ACC *
[%] ACC**
[%]
01_test.tif 78.63 94.31 67.56 96.69 92.25 90.79 85.18
02_test.tif 78.10 94.88 72.88 96.09 92.36 90.99 85.50
03_test.tif 67.71 95.91 73.83 94.57 91.80 90.83 85.21
04_test.tif 74.35 95.80 73.15 96.04 92.94 91.84 87.09
05_test.tif 69.51 97.07 78.84 95.30 93.33 92.58 87.94
06_test.tif 66.48 97.13 79.17 94.63 92.80 92.23 88.38
07_test.tif 73.78 94.88 68.72 95.95 92.08 90.40 83.79
08_test.tif 67.02 96.71 74.56 95.33 92.98 92.14 87.38
09_test.tif 70.21 96.95 75.40 96.07 93.81 92.99 88.59
010_test.tif 74.37 95.91 71.14 96.50 93.33 92.23 86.92
011_test.tif 71.29 93.84 63.27 95.64 90.91 89.16 82.63
012_test.tif 73.80 95.43 69.79 96.22 92.72 91.51 85.79
013_test.tif 74.54 95.51 73.28 95.78 92.54 91.51 87.14
39 014_test.tif 77.77 93.71 62.30 96.93 91.83 89.95 83.42
015_test.tif 79.60 91.62 52.40 97.49 90.37 87.81 79.62
016_test.tif 76.95 95.45 71.78 96.49 93.03 91.82 86.85
017_test.tif 71.63 96.14 72.32 96.02 93.12 92.11 87.18
018_test.tif 77.51 94.83 66.05 97.01 92.84 91.55 86.18
019_test.tif 82.67 94.91 68.95 97.56 93.43 92.03 86.77
020_test.tif 77.74 95.78 68.75 97.30 93.86 92.80 88.10
Medie 74.18 95.34 70.21 96.18 92.62 91.36 85.98
Tabelul 3. Evaluarea performanței folosind rezultatele rețelei antrenate cu imagini preprocesate cu CLAHE.
ACC* – acuratețea pentru pragul de confidență de 0.75, ACC** – acuratețea pentru rezultatul nealterat.
Imagine de test TPR [%] SPC [%] PPV [%] NPV [%] ACC [%] ACC *
[%] ACC**
[%]
01_test.tif 80.19 94.47 68.62 96.93 92.60 91.26 85.40
02_test.tif 80.39 95.62 76.38 96.51 93.34 92.21 86.99
03_test.tif 73.53 95.37 73.02 95.48 92.19 90.87 84.21
04_test.tif 75.00 96.39 76.16 96.16 93.54 92.54 87.33
05_test.tif 72.34 96.86 78.34 95.71 93.53 92.68 87.25
06_test.tif 65.35 97.78 82.89 94.50 93.21 92.84 89.00
07_test.tif 72.85 96.00 73.56 95.86 92.94 91.78 85.79
08_test.tif 68.31 96.41 73.21 95.49 92.88 91.80 86.16
09_test.tif 69.45 97.08 75.97 95.98 93.83 92.94 87.00
010_test.tif 71.08 97.01 76.35 96.11 93.92 93.12 88.37
011_test.tif 74.95 94.94 68.80 96.22 92.35 90.91 84.49
012_test.tif 68.70 97.04 76.85 95.59 93.49 92.74 87.19
013_test.tif 72.60 96.50 77.42 95.52 93.11 92.24 87.63
014_test.tif 78.88 95.01 67.90 97.11 93.11 91.38 84.31
015_test.tif 80.94 94.16 61.64 97.71 92.79 90.77 82.71
016_test.tif 72.70 96.33 74.91 95.91 93.24 92.53 88.04
017_test.tif 69.62 96.48 73.55 95.76 93.17 92.09 86.19
018_test.tif 77.41 95.16 67.47 97.01 93.12 91.86 85.73
019_test.tif 80.97 95.94 73.20 97.36 94.14 92.92 87.78
020_test.tif 74.26 96.57 72.10 96.92 94.19 93.36 88.85
Medie 73.98 96.06 73.42 96.19 93.23 92.14 86.52
Tabelul 4. Evaluarea performanței folosind rezultatele rețel ei antrenate cu imagini preprocesate cu filtre
Laplaciene locale. ACC* – acuratețea pentru pragul de confidență de 0.75, ACC** – acuratețea pentru rezultatul
nealterat.
Acuratețea medie obținută în cazul celor trei rețele nu diferă foarte mult, fiind sit uată
în jurul valorii de 93% (86 % fără post -procesări) . În figura 23 pot fi observate comparativ
cele trei rețele. Se poate observa că există imagini ce au rezultate mai proaste (imaginile 11,
15) indiferent de rețea , acest lucru fiind datorat fundalului a cărui structură este foarte
40 asemănătoare cu o ramificație de vase de sânge datorită prezenței unor hemoragii. În afara
celor două cazuri, nu există variații majore ale metricilor de la o poză la alta. Rata de detecții
pozitive (PPV) este destul de mică d atorită numărului relativ mare de pixeli clasificați ca fals
pozitiv dat de grosimea incorectă a vaselor de sânge sau pixelii din zona discului optic.
Figura 23. Variația ratei de acuratețe pe cele 20 de imagini, pentru cele trei rețele antrenate. R1 = rețea fără
preprocesări, R2 – preprocesări cu CLAHE, R3 – preprocesări cu Laplace.
Rata de acuratețe înregistrată pe rezultatul neprocesat al celor trei rețele este mai
mică decât în cazul în care se ia în considerare confidența pixelilor , datorită ratei crescute de
clasificări fals pozitive . Pixelii ce apar ca zgomot în imagini pot fi într -adevăr pixeli de
fundal ce au fost clasificați incorect , însă, o parte dintre aceștia pot reprezenta fragmente din
vase de sânge foarte mici, fragmente ai căror pixeli fost clasificați corect ca VAS . Setarea
oricărui prag pe confidența pixelilor, poate aduce îmbunătățiri în ceea ce privește rata de
clasificării fals pozitive, dar poate scădea rata de clasificări corecte tocmai prin eliminarea
acestor fragmentelor de vas e de sânge.
Am evaluat prima din cele trei rețele și pe o imagine din baza de date STARE. Aceste
imagini sunt puțin mai mar i ca rezoluție față de cele din baza de date DRIVE, dar sunt
comparative din punct de vedere al calității. În figura 24 este prezen tată o imagine din baza
de date STARE, urmată de rezultatul rețelei fără preprocesări, rezultatul obținut de cei care
au dezvoltat această bază și de marcajul manual realizat de către un medic expert.
Figura 24. Rezultat obținut în urma testării r ețelei pe o imagine din baza de date STARE.
În ceea ce privește timpii de antrenare, așa cum am specificat la început, pe
calculatorul folosit, antrenarea unei rețelele timp de 100 de iterații durează în jur de 12 ore .
Pentru rețeaua rulată timp de 2 00 de iterații, timpul s -a dublat. Testarea realizată pe același 8889909192939495
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Varia ția ACC
R1
R2
R3
41 calculator, pe CPU, durează aproximativ 5 minute pe o poză fără niciun fel de optimizări de
calcul.
6. Concluzii și dezvoltări ulterioare
Segmentarea automată a vaselor de sânge poate fi de mare ajutor în analiza structurii
acestora, în imaginile cu retină, oferind suport cadrelor medicale pentru diagnosticarea mai
multor boli ce afectează vederea. Mai mult, tehnica de analiză a acestor vase de sânge ce
folosește procesarea de imagini est e ne invazivă , producând pacientului disconfort minim.
Abordările variate existente în literatură pentru această problemă, susțin importanța
ei. Nevoia principală este de a găsi o metodă ce poate realiza segmentarea vaselor de sânge
fără să fie nevoie d e ajustarea acesteia conform setului de date, sau de ajustarea anumitor
parametrii (praguri folosite), o metodă capabilă de a furniza rezultate bune pe o gamă foarte
variată de poze. În acest sens, metodele clasice, ce folosesc anumite pragu ri determinate
(neadaptive), nu sunt capabile de a oferi același nivel de performanță pe o variație mare de
imagini.
Rețelele neuronale convoluționale par să ofere o soluție pentru problema introdusă
de variația mare de date (rezoluții diferite, camere diferite ce prei au pozele, iluminare
diferită), soluție susținută de capacitatea mare de generalizare a acestora. Antrenate pe un
set de date suficient de mare și de variat , cu structura potrivită , CNN -urile pot oferi
performanțe foarte ridicate de segmentare a vaselor de sânge. La polul opus, nevoia de
resurse și timpul necesar pentru antrenare pot reprezenta un dezavantaj.
Există mai multe elemente importante ce trebuie avute în vedere la crearea unei astfel
de rețele neuronale convoluționale: setul de date, arhitectur a rețelei și parametrii de antrenare
folosiți.
Din punct de vedere al setului de date, în cazul segmentării realizate prin clasificarea
fiecărui pixel este important ca acesta să fie foarte mare ca volum, și de asemenea foarte
variat ca informații. În ca zul vaselor de sânge, setul de date creat prin extragerea de sub –
imagini și prin augme ntarea acestora constituie un suport bun pentru antrenarea unei rețele
neuronale convoluționale. Totuși, din cauza limitărilor impuse de resursele avut e, nu am
putut să c onsider un număr foarte mare de imagini , limitându -mă la un număr de 400.000.
De asemenea, pe partea de augmentări setul ar putea să mai conțină, pe lângă rotațiile create,
și variații de iluminare, sau aplicări de zoom in / zoom out pe sub -imaginile ce co nțin vase de
sânge foarte subțiri. Etichetarea sub -imaginilor conform claselor avute trebuie să fie făcută
corect. Limitarea impusă inițial (pragul impus la selecție) asupra sub -imaginilor ce nu conțin
vase de sânge, a avut un efect negativ asupra perform anței rețelei, aceasta neputând să
clasifice corect pixeli pentru care nu a avut date de intrare etichetate corespunzător. De
asemenea, și limitarea impusă pe vecinătatea pixelului central a avut efect asupra grosimi
42 vaselor de sânge rezultate după segment are, lipsa de date cauzând o grosime mai mare decât
în segmentarea manuală. Din punct de vedere al dimensiunii spațiale a sub -imaginilor
considerate, și acesta ar putea fi micșorată la 27 x27 pixeli sau chiar mai puțin, crescând
setul de date în acest fel, dar și timpul de antrenare.
Arhitectura folosită es te și aceasta foarte importantă, modul în care se succed
straturile folosite, tipul de straturi și parametrii acestora, au un impact direct asupra
performanței rețelei. Unul dintre cei mai importanți para metrii în setarea straturilor folosite
este dimensiune kernelului (în cazul convoluției) sau a blocului de pooling (pentru straturile
de reducere a dimensiunii spațiale). Aceste dimensiuni trebuie să fie în concordanță cu
dimensiunea hărților de trăsături ale stratului anterior deoarece, în caz contrar, pot rămâne
pixeli ce s e pierd de la un strat la altul, eliminându -se astfel informații utile.
Parametrii rețelei (rata de învățare, numărul de iterații) au efect atât asupra timpului
de antrenare cât și asu pra acurateței de segmentare . Setarea greșită a ratei de învățare nu va
conduce la minimizare a funcției de cost și nici descreșterea monotonă a erorii. Pentru a evita
blocarea în minime locale și pentru a se ajunge la convergență, rata de învățare poate fi
modificată ( de obicei este scăzută) în timpul procesului de antrenare, fără a pierde progresul
făcut.
Cele trei variante de antrenări ale rețelei neuronale convoluționale propuse au
rezultate uniforme , pe baza de date DRIVE, din punct de vedere al metri cilor evaluate.
Sensibilitatea medie a rețelei (TPR) este situată în jurul valorii de 73%, lucru datorat
numărului relativ mare de pixeli clasificați incorect de -a lungul vaselor de sânge (grosime
incorectă rezultată ca o consecință a limitelor impuse pe v ecinătatea pixelului central). Din
punct de vedere al specificității medii (SPC), valoarea acesteia este mare, de aproximativ
95%, deoarece numărul de pixeli etichetați ca NON -VAS clasificați corect este destul de
mare raportat la numărul de pixeli clasifi cați fals pozitiv. Acuratețea medie înregistrată pe
cele trei variante de antrenări crește de la 85.98% (fără prag de confidență), până la un maxim
de 93.23% (prag de confidență de 0.85).
Principalele probleme care pot fi observate în rezultatele obținut e sunt legate de
segmentarea relativ slabă a vaselor de sânge subțiri (sau a terminațiilor unor vase de sânge),
și de asemenea, și de grosimea vaselor segmentate. Localizarea acestora este corectă, dar
nivelul de detalii nu este îndeajuns de rafinat, vasel e de sânge fiind mai groase decât cele
segmentate manual .
În vederea îmbunătățirii rezultatelor prezentate în această lucrare, se poate reantrena
această rețea pe un set de date mai mare, selectat pe baza marcajului manual scheletizat, fără
a impune alte limitări auxiliare. Prin observarea procesului de antrenare, rata de învățare
poate fi scăzută corespunzător pentru a reduce eroarea sub 0,1. De asemenea, poate fi scăzut
timpul de antrenare și de testare prin rularea pe GPU.
O altă abordare a problem ei de segmentare poate fi reprezentată de folosirea unei
rețele complexe, pre -antrenată pe un set de date foarte mare (ImageNet, CIFAR, VGG) . În
43 acest fel, ponderile avute în cazul fiecărui strat vor fi numai ajustate la noul set de date,
valoare acestora fiind destul de rafinată în urma procesului de antrenare anterior. Trebuie
avut în vedere în acest caz și adaptarea corect ă a dimensiunii setului de date pentru noua
arhitectură folosită.
7. Bibliografie
[1].Clinica Oftalmologică NOVAOPTIC ; Site: http://www.no vaoptic.ro/; Accesat 2017.
[2]. BIOMISA, BIOmedical Image and Signal Analysis Research Group; Site:
http://biomisa.org/; Accesat 2017.
[3]. Sebastian Gross, Monika Klein, Dorian Schneider, Segmentation of blood vessel
structures in retinal fundus images with Logar ithmic Gabor filters, Institute of
Imaging & Computer Vision, RWTH Aachen University, 52056 Aachen, Germania.
[4]. Luis David Lara -Rodriguez, Elizabeth L´opez -Mel´endez, și Gonzalo Urcid, Blood
Vessels and Exudates Segmentation in Eye Fundus Images based on F ourier
Filtering, WCECS 2015, Octombrie 21 -23, 2015, San Francisco, USA.
[5]. Jo˜ao V. B. Soares, Jorge J. G. Leandro, Roberto M. Cesar -Jr., Herbert F. Jelinek, și
Michael J. Cree, Retinal Vessel Segmentation Using the 2 -D Morlet Wavelet and
Supervised Classif ication , 2006.
[6]. Meng Li, ZhenshenMa, Chao Liu, Guang Zhang, and Zhe Han, Robust Retinal Blood
Vessel Segmentation Based on Reinforcement Local Descriptions, Hindawi BioMed
Research International, Volume 2017.
[7]. Sohini Roychowdhury, Dara D. Koozekanani și iK eshab K. Parhi, Iterative Vessel
Segmentation of Fundus Images, IEEE TRANSACTIONS ON BIOMEDICAL
ENGINEERING, VOL. 62, NO. 7, JULY 2015.
[8]. Pawel Liskowski și Krzysztof Krawiec, Segmenting Retinal Blood Vessels with Deep
Neural Networks, IEEE TRANSACTIONS ON MEDICAL IMAGING.
[9]. Martina Melinscak, Pavle Prentasic si Sven Loncaric, Retinal Vessel Segmentation
Using Deep Neural Networks, The University of Zagreb, Unska 3, 10000 Zagreb,
Croatia.
[10]. Claudia Kondermann, Daniel Kondermann și Michelle Yan, Blood Vessel
Classification into Arteries and Veins in Retinal Images, University of Heidelberg ,
Im Neuenheimer Feld 368, 69120 Heidelberg, Germany.
[11]. Adam Liberda, Adam Lilja, Bjorn Langborn, Jakob Lindstrom, Image
Segmentation and convolutional neural networks as tools for indoor scene
understanding, Mai 2016.
[12]. Jonathan Long, Evan Shelhamer, Trevor Darrell, Fully Convolutional Networks for
Semantic Segmentation, 2016.
[13]. James Hays, Introduction to Computer Vision, Deep Learning; Site: Fully
Convolutional Networks for Se mantic Segmentation; Accesat 2017.
[14]. Andrew Ng., Machine Learning, Stanford University; Site:
https://www.coursera.org/ learn/machine -learning/home/welcome; Accesat 2017.
[15]. MatConvNet, CNNs for MatLab: Site: http://www.vlfeat.org/matconvnet/. Accesat
2017.
44 [16]. Andreea Vedaldi, Karel Lenc, Ankush Gupta, MatConvNet – Convolutional Neural
Networks for MatLab : Site: http://www.vlfeat.org/matconvnet/matconvnet –
manual.pdf, Accesat 2017.
[17]. Image Sciences Institute, Digital Retinal Images for Vessel Extraction; Site:
http://www.isi.uu.nl/Research/Databases/DRIVE/; Accesat 2017.
[18]. J.J. Staal, M.D. Abramoff, M. Niemeijer, M.A. Viergever, B. van Ginneken , "Ridge
based vessel segmentation in color images of the retina" , IEEE Transactions on
Medical Imaging, 2004, vol. 23, pp. 501-509.
[19]. K. Zuiderveld: Contrast Limited Adaptive Histogram Equalization. In: P. Heckbert:
Graphics Gems IV, Academic Press 1994, ISBN 0 -12-336155 -9.
[20]. CLAHE, Contrast Limited Adaptive Histogram Equalization; Site: https://www.
mathworks.com/help/images/re f/adapthisteq.html; Accesat 2017.
[21]. Paris, Sylvain, Samuel W. Hasinoff, and Jan Kautz, Local Laplacian filters: Edge –
aware image processing with a Laplacian pyramid, ACM Trans. Graph. 30.4 (2011):
68.
[22]. Aubry, Mathieu, et al. Fast local laplacian filters: Th eory and applications . ACM
Transactions on Graphics (TOG) 33.5 (2014): 167.
[23]. David M.W., Evaluation: From precision, recall, and F -Measure to ROC,
Informedness, Markedness & Correlation , Journal of Machine Learnin g
Technologies ISSN: 2229 -3981 & ISSN: 2229 -399X, Volume 2, Issue 1, 2011, pp –
37-63
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Segmentarea regiunilor de interes din imagini de retină, folosind rețele neuronale convoluționale Coordonator Absolvent Prof. Dr. Ing. Dan Popescu… [620862] (ID: 620862)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
