🌟 EXPLICATION PROFONDE DE
CHAQUE COUCHE
🔷 1) Conv2d(1 → 25, kernel=3, padding=1)
Ce que ça fait :
· Prend les images grayscale 1 canal (1).
· Applique 25 filtres convolutionnels (25).
· Chaque filtre extrait une caractéristique : contours, textures, motifs simples.
· Kernel 3×3 = filtre petit → extrait des détails fins.
· Padding=1 → conserve la taille de l'image.
Pourquoi ?
C’est la première extraction de caractéristiques.
On apprend à reconnaître des motifs simples des signes ASL.
🔷 2) BatchNorm2d(25)
Ce que ça fait :
· Normalise les activations sur chaque mini-batch.
· Stabilise l'entraînement.
· Évite que les valeurs explosent ou deviennent trop petites.
· Accélère la convergence.
Pourquoi ?
Le modèle apprend plus vite et de manière plus stable.
🔷 3) ReLU()
Ce que ça fait :
· Fonction d’activation : max(0, x).
· Introduit de la non-linéarité.
· Permet au réseau d’apprendre des relations complexes.
Pourquoi ?
Un réseau sans activation serait linéaire et incapable d’apprendre des formes.
🔷 4) Dropout(p=0 ou 0.2)
Ce que ça fait :
· Désactive aléatoirement un pourcentage des neurones pendant l'entraînement.
· Évite le surapprentissage (overfitting).
Pourquoi ?
Empêcher le réseau de “mémoriser” les images du dataset.
🔷 5) MaxPool2d(kernel=2, stride=2)
Ce que ça fait :
· Réduit la taille des images par 2.
· Garde uniquement les valeurs maximales.
· Conserve les informations importantes.
· Réduit les calculs.
Pourquoi ?
Créer une représentation plus compacte → éviter trop de paramètres.
🔷 6) Conv2d(25 → 50)
Deuxième extraction de caractéristiques.
Ce que ça apprend :
· Formes plus complexes : bords composés, courbes, motifs moyens.
· La profondeur augmente : 25 → 50 canaux.
🔷 7) BatchNorm + ReLU + Dropout(0.2) +
MaxPool
Même logique que Bloc 1, mais :
· Les caractéristiques deviennent plus abstraites.
· Dropout 0.2 → on augmente la régularisation.
🔷 8) Conv2d(50 → 75)
Troisième extraction de caractéristiques.
Ce que ça apprend :
· Motifs encore plus complexes :
doigts, articulations, zones de la main → parfait pour ASL.
La profondeur augmente encore : 50 → 75.
🔷 9) BatchNorm + ReLU + Dropout +
MaxPool
Comme les blocs précédents :
· Normalisation → stabilité
· ReLU → non-linéarité
· Pooling → réduction
· Dropout → anti-overfitting
À la fin du 3ᵉ bloc, ton image est très réduite mais très riche en informations.
🔷 10) Flatten()
Ce que ça fait :
· Convertit l’image finale 3D en un vecteur 1D.
· Ici tu obtiens un vecteur de 675 valeurs.
Pourquoi ?
Parce que les couches Linear ne prennent que des vecteurs.
🔷 11) Linear(675 → 512)
Ce que ça fait :
· Couche fully connected.
· Combine toutes les caractéristiques extraites.
· Traduit ça en représentation de haut niveau.
Pourquoi ?
Pour décider quelles caractéristiques sont importantes pour la classification.
🔷 12) Dropout(0.3)
· Désactive aléatoirement 30% des neurones.
· Réduit fortement l’overfitting.
🔷 13) ReLU()
Encore une activation pour plus de non-linéarité.
🔷 14) Linear(512 → 24)
Dernière couche :
· Produit 24 valeurs → une par classe ASL.
· Ces valeurs sont des logits.
· Elles vont dans CrossEntropyLoss.
Pourquoi 24 ?
Parce que ton dataset ASL contient 24 signes (pas J, pas Z : mouvements impossibles en image
statique)