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.
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..1Convoluț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 verticaleAugmentarea 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.
- 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ă.