Acest proiect reprezintă o analiză aprofundată a performanței algoritmilor de Deep Learning, punând în contrast două paradigme arhitecturale fundamentale: Rețelele Convoluționale (CNN) și Perceptronul Multistrat (MLP). Studiul explorează modul în care fiecare arhitectură procesează imaginile, reacționează la augmentări de date și beneficiază de tehnici precum Transfer Learning.
Proiectul este modular, fiind conceput pentru a rula experimente complet reproductibile printr-un simplu fișier de configurare.
-
config.toml: Este "centrul de comandă" al proiectului. Aici se definesc toți parametrii experimentului: setul de date (ex.imagebits), tipul modelului (CNNsauMLP), hiperparametrii de antrenare (epoci, learning rate, dropout) și augmentările dorite. -
main.py: Este scriptul principal de execuție. Acesta citește configurația, inițializează seturile de date și modelul ales, aplică logica de Transfer Learning (dacă este furnizată o cale către ponderi pre-antrenate) și declanșează procesele de antrenare și evaluare. -
data_loader.py: Gestionează încărcarea și preprocesarea datelor. Folosește bibliotecaalbumentationspentru a aplica transformări avansate (ex. rotații, zgomot, decupări). De asemenea, include clasaTransformWrappercare garantează că redimensionarea imaginilor (la dimensiunea standard de 64x64) este aplicată corect înainte de orice altă procesare. -
models.py: Conține arhitecturile rețelelor și motorul de antrenare. -
Defineste
SimpleCNN(bazat pe 3 blocuri de convoluție și pooling) șiSimpleMLP(o arhitectură densă, piramidală, cu straturi de 2048, 1024 și 512 neuroni, stabilizată prin Batch Normalization). -
Funcția
train_enginegestionează bucla de antrenare, incluzând funcționalități de Early Stopping și ajustare dinamică a ratei de învățare (Scheduler) pentru a preveni supra-antrenarea. -
visualization.py: Este responsabil pentru analiza exploratorie a datelor (EDA) și raportare. Poate genera vizualizări utile precum "fantomele" (imaginea medie) per clasă, distribuțiile RGB și, la finalul evaluării, curbele de performanță (Loss/Accuracy) și matricea de confuzie.
Experimentele au fost rulate pe două seturi de date distincte: ImageBits (forme geometrice și obiecte) și Land Patches (texturi satelitare). Rezultatele subliniază diferențe arhitecturale majore:
Superioritatea clară a CNN-urilor: Pe setul ImageBits, cel mai bun model CNN a obținut o acuratețe pe setul de test de 70.48% , în timp ce cel mai bun model MLP a atins doar 51.94%. Această diferență majoră persistă deși MLP-ul folosește aproximativ 25 de milioane de parametri, comparativ cu doar ~590.000 de parametri folosiți de CNN.
"Catastrofa" Rotațiilor pentru MLP: Experimentele au demonstrat că augmentările geometrice afectează grav rețelele MLP. O simplă rotație de 10 grade permută masiv pixelii în vectorul aplatizat de intrare, făcând optimizarea și convergența practic imposibile pentru un MLP (acuratețea scăzând sub 48%). CNN-urile, în schimb, gestionează natural aceste transformări datorită invarianței la translație.
Transfer Learning funcționează diferit: Pe imaginile din Land Patches, transferul de ponderi (Transfer Learning) a propulsat CNN-ul la o acuratețe excelentă de 90.60% (o creștere de 3.5% față de antrenarea de la zero). Pentru MLP, transferul a adus o îmbunătățire neglijabilă de doar 0.7%, deoarece neuronii acestuia învață corelații specifice poziției pixelilor, care nu sunt transferabile între tipuri diferite de imagini.
Comportamentul pe Texturi vs. Forme: Deși MLP-ul este slab la identificarea formelor geometrice, a performat surprinzător de bine pe texturi omogene (precum păduri sau zone industriale din Land Patches), unde distribuția globală a culorilor compensează parțial lipsa detectării formelor locale.