Cuprins
S17/Sesiunea 17/Machine learning clasic/~1 săptămână

CV clasic și augmentări

La final știi săLucrezi cu imagini ca tensori și aplici augmentări potrivite problemei, fără să strici eticheta.

Toate moduleleS17 · 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.
Reține
  • O imagine e un tensor: 2D alb-negru, 3D color (H, W, canale).
  • Ai grijă la interval: 0..255 întreg sau 0..1 zecimal, nu le amesteca.
  • Convoluția plimbă un filtru mic peste imagine; e exact ce fac straturile CNN, cu filtre învățate.
  • Augmentarea mărește setul și combate overfitting-ul.
  • Augmentarea validă păstrează eticheta; flip pe cifre sau litere o strică.
Index
Imaginea ca tensor: canale, dtype, intervaleRedimensionare, decupare, rotațieFiltre de convoluție scrise de mână: blur, sharpen, SobelHistograme, praguri, morfologieAugmentări: flip, rotație, random crop, color jitter, cutout
Dacă vrei mai mult