Cuprins
Lecția 13/Machine learning clasic/~1 săptămână

CV clasic și augmentări

Imaginea ca tensor, filtre scrise de mână, și ce augmentare e validă pentru ce problemă.

Toate lecțiileLecția 13 · CV clasic și augmentări▾

O imagine e doar un tensor de numere. Înainte de rețele, merită să înțelegi ce faci cu ea: cum o reprezinți, ce e un filtru de convoluție, și ce augmentare ajută fără să strice eticheta. Modulul ăsta e puntea spre CNN-uri: dacă înțelegi imaginea ca tensor și convoluția de mână, straturile convoluționale de mai târziu nu mai sunt magie.

01

Imaginea ca tensor

Un tensor e o grilă de numere cu mai multe dimensiuni, generalizarea unei matrice. O imagine alb-negru e o matrice 2D: fiecare număr e intensitatea unui pixel. O imagine color e un tensor 3D: înălțime, lățime și 3 canale (roșu, verde, albastru). Fiecare pixel color e trei numere.

img.shape       # (H, W, 3): înălțime, lățime, 3 canale color
img = img / 255.0   # aduci de la 0..255 la 0..1
02

Convoluția: filtre care se plimbă peste imagine

Un filtru de convoluție e o matrice mică (de exemplu 3x3) pe care o plimbi peste imagine. La fiecare poziție, înmulțești filtrul cu bucata de imagine de sub el și aduni. Rezultatul e o nouă imagine care scoate în evidență un anumit tipar: margini, blur, contrast.

Merită să scrii de mână câteva filtre clasice o dată. Blur mediază vecinii (netezește). Sharpen accentuează diferențele. Sobel detectează margini, unde intensitatea se schimbă brusc. Când le-ai scris o dată, înțelegi exact ce face un strat convoluțional dintr-o rețea: aceeași operație, doar că filtrele sunt învățate, nu scrise de tine.

sobel_x = np.array([[-1, 0, 1],
                    [-2, 0, 2],
                    [-1, 0, 1]])
# plimbi sobel_x peste imagine ca să scoți marginile verticale
03

Augmentarea datelor

Când ai puține imagini, modelul memorează. Augmentarea mărește artificial setul creând variante ale imaginilor: le întorci, le rotești, le decupezi, le schimbi puțin culorile. Modelul vede aceeași etichetă în forme ușor diferite și învață să generalizeze, nu să memoreze.

  • Flip orizontal: oglindește imaginea stânga-dreapta.
  • Rotație și decupare aleatoare: schimbă poziția și cadrul.
  • Color jitter: variază ușor luminozitatea și culoarea.
  • Cutout: acoperă o bucată aleatoare, forțând modelul să nu se bazeze pe un singur detaliu.
Probleme practice
  • Scrie de mână un filtru Sobel și aplică-l pe o imagine ca să-i scoți marginile.
  • Testează dacă un set de augmentări îmbunătățește scorul pe o problemă mică de clasificare.
  • Ia o listă de augmentări și decide pentru fiecare dacă păstrează eticheta pe o problemă cu cifre.
Dacă vrei mai mult