Document Details

Uploaded by Deleted User

Tags

convolutional neural networks deep learning image processing computer vision

Summary

This document provides an overview of convolutional neural networks(CNNs) and their applications in image processing and computer vision, with a focus on concepts such as convolution, padding, stride, and Max pooling. It's a presentation or lecture-style material, going through how these aspects are applied in practice within CNN models.

Full Transcript

4: Réseaux Convolutifs (Convolutional Neural Networks - CNN) 1 Le Deep Learning Révolutionne la Vision par Ordinateu Le Deep Learning a profondément modifié notre façon de traiter et d'interpréter les images. Progrès dans le matériel (GPU), l'optimisation des algorithmes (CNN) e...

4: Réseaux Convolutifs (Convolutional Neural Networks - CNN) 1 Le Deep Learning Révolutionne la Vision par Ordinateu Le Deep Learning a profondément modifié notre façon de traiter et d'interpréter les images. Progrès dans le matériel (GPU), l'optimisation des algorithmes (CNN) et la disponibilité de grandes bases de données. Exemples de taches: Classification assigner une étiquette (classe) à une image à partir d’un ensemble de classes pré-définies. Détection d’objets / de visages Identifier et localiser plusieurs objets dans une image en dessinant des boîtes englobantes autour de chaque objet détecté. l'identification des visages humains dans les images Segmentation sémantique diviser une image en régions homogènes, où chaque pixel est assigné à une classe spécifique (ex: ciel, route, personne). 2 Le Deep Learning Révolutionne la Vision par Ordinateu Exemples de taches: Segmentation d’instance va au-delà de la segmentation sémantique en identifiant chaque instance unique d’un objet dans une image. Par exemple, au lieu de segmenter simplement des "voitures," elle identifie chaque voiture individuellement. Transfert de style appliquer le style artistique d'une image (comme une peinture) sur une autre image, tout en conservant le contenu de cette dernière. Coloration d’images transformer des images en noir et blanc ou en niveaux de gris en images colorées en ajoutant des informations de couleur aux pixels. 3 Le Deep Learning Révolutionne la Vision par Ordinateu Domaines d’application Voitures Autonomes Sécurité/surveillance Contrôle qualité Diagnostic santé Réalité augmentée 4 Les Défis des Problèmes de Vision par Ordinateur 3m 1000 5 Convolution et Réseaux Convolutifs Pour résoudre ce problème, les réseaux de neurones convolutifs (CNN) utilisent des filtres qui réduisent les dimensions de manière efficace, en capturant les motifs locaux sans devoir relier chaque pixel à chaque neurone. Ainsi, nous pouvons traiter des images en haute résolution avec un nombre de paramètres bien plus faible et éviter le surapprentissage.« Solution : L’Opération de Convolution Les réseaux convolutifs offrent une solution aux défis des grandes images et permettent des performances avancées. La convolution permet de réduire le nombre de paramètres tout en conservant les informations visuelles importantes. Concept Clé : La convolution aide à capturer les caractéristiques locales de l'image, comme les contours. Dans la suite, nous explorerons comment implémenter la convolution pour des tâches comme la détection des bords. 6 Pourquoi la Détection de Bords ? Les couches initiales des réseaux détectent des motifs simples comme les bords. Les couches plus avancées détectent des formes et, enfin, des objets entiers. Supposons que nous ayons une image d’une scène urbaine avec des bâtiments et des piétons. Pour qu’un ordinateur puisse reconnaître les objets présents dans cette image, la première étape pourrait être de détecter les contours verticaux. comment détecte-t-on ces contours dans une image ? 7 Détection des bords verticaux n*n n-f+1 * n-f+1 6*6 4*4 1 01 -1 01 -1 01 -1 0 -1 Convolution f*f -5 -4 0 8 1 01 -1 01 -1 01 -1 0 -1 3*3 1 01 01 -1 -1 01 -1 0 -1 1 0 -1 -10 -2 2 3 ∗ 1 0 -1 = 1 0 -1 1 0 -1 1 0 -1 0 -2 -4 -7 1 0 -1 Filter ou -3 -2 -3 -16 1 0 -1 noyaux - 3*1+0*0+1*-1+1*1+0*5+8*-1+2*1+7*0+2*-1=-5 - 0*1+1*0+2*-1+5*1+0*8+9*-1+7*1+2*0+5*-1=-4 8 Détection des bords verticaux 6*6 4*4 -5 -4 0 8 3*3 -10 -2 2 3 1 0 -1 0 -2 -4 -7 ∗ 1 0 -1 = -3 -2 -3 -16 1 0 -1 ∗ = La matrice 6x6 à gauche représente une image simplifiée avec des valeurs de pixels. Les valeurs "10" à gauche représentent une zone plus claire, tandis que les "0" à droite représentent une zone plus sombre. Cela crée une séparation verticale dans l'image. 9 Détection de Bords: exemples 10 Détection de Bords: exemples verticale horizontale 11 Détection de Bords: Convolution 1 0 -1 1 0 -1 1 0 -1 1 0 -1 2 0 -2 10 0 -10 1 0 -1 1 0 -1 1 0 -1 Filter de sobel Filter de sharr ∗ = 45° 70° 73° 12 Padding Pourquoi le Padding ?Dans les opérations de convolution, la taille de la sortie diminue à chaque couche. Par exemple, une image 6×6 convoluée avec un filtre 3×3 donne une sortie 4×4. Problème : Sans padding, les convolutions répétées réduisent la taille de l'image, ce qui limite la profondeur du réseau et élimine des informations importantes sur les bords. Solution : Ajouter du padding autour des bords de l'image d'entrée pour conserver sa taille. Le padding permet de retenir davantage d'informations d'origine, en particulier celles 0 situées 0 0sur les 0 bords 0 de0 l'image. 0 0 Exemple: P=1 0 3 0 1 2 7 4 0 3*3 0 1 5 8 9 3 1 0 0 2 7 2 5 1 3 0 0 0 1 3 1 7 8 0 ∗ = 0 4 2 1 6 2 8 0 0 2 4 5 2 3 9 0 0 0 0 0 0 0 0 0 6*6 13 8*8 Types de Padding - Convolutions "Valid" et "Same" Convolution "Valid"(Sans Padding) : Définition : Une convolution "Valid" signifie qu'aucun padding (remplissage) n'est ajouté à l'entrée. Le filtre glisse sur l'image d'entrée sans dépasser ses limites. Aucun padding n'est ajouté, donc la taille de la sortie est réduite. Formule de la Taille de Sortie : Si l'image d'entrée est de taille n×n et le filtre de taille f×f, alors la taille de sortie est calculée comme : (n−f+1)×(n−f+1) Exemple : Pour une image 6×6 convoluée avec un filtre 3×3, la taille de sortie sera de 4×4, car le filtre réduit les dimensions de 2 dans chaque direction. Convolution "Same" (Padding Ajouté) : Définition : Une convolution "Same" signifie qu'on ajoute du padding à l'entrée pour que la taille de la sortie soit la même que celle de l'entrée. Formule : p=(f−1)/2, où p est la taille du padding. Exemple : Pour un filtre 3×3, p=1, ce qui assure que les dimensions de sortie correspondent aux dimensions d'entrée. Convention : Les filtres ont généralement une taille impaire (ex. : 3×3, 5×5) pour éviter un padding asymétrique et pour avoir un pixel central. 14 Convolution avec Stride Définition : Une convolution avec stride est une opération de convolution où le filtre se déplace de plus d'un pixel à chaque étape, défini par le paramètre stride s. 7*7 3 1 00 1 -11 2 0 7 -11 40 0-1 3* 3 f*f 1 1 50 8 -11 9 0 3 -11 10 5-1 3*3 -5 ? ? 2 1 70 2 -11 5 0 1 -1 3 2 1 0 -1 1 0 -11 0 -1 1 0 -1 ? ? ? 0 1 10 3 -11 1 0 7 -1 8 4 ∗ 1 0 -1 = 4 1 20 1 -11 6 0 2 -1 8 7 1 0 -1 ? ? ? 2 4 5 2 3 9 1 1 5 2 3 4 7 8 Exemple :L'exemple montre une matrice d'entrée de taille 7×7 convoluée avec un filtre 3×3. Stride : Le stride est fixé à s=2, ce qui signifie que le filtre se déplace de 2 pixels à chaque étape. Cela aboutit à une réduction de la taille de la sortie car moins de positions sont couvertes avec un stride plus grand. 15 Calcul des Dimensions de Sortie avec Stride Calcul des Dimensions de Sortie avec Stride Les dimensions de sortie pour une convolution avec stride sont données par : ⌊(n+2*p−f)/s⌋+1 × ⌊(n+2*p−f)/s⌋+1 où : n est la taille de l'entrée, p est le padding, f est la taille du filtre, s est le stride. les symboles ⌊ ⌋ représentent la fonction "partie entière inférieure" ou fonction "plancher" (floor en anglais) Exemple : Avec n=7, f=3, p=0, s=2, la taille de sortie est : ⌊(7+0−3)/2⌋+1=3. Cela donne une sortie de 3×3. 16 Convolutions sur les Images RGB Une image RGB est représentée par trois canaux : Rouge (R), Vert (G) et Bleu (B). Dimensions d'une image RGB : Hauteur × Largeur × Nombre de Canaux. Exemple : * = 3*3 4*4 6*6 Résultat :Après la convolution, la sortie est une matrice de 4×4, car l'opération de convolution réduit la taille en fonction des dimensions du filtre. 17 l'Opération de Convolution sur les Canaux RGB Structure du Filtre : Le filtre 3D 3×3 contient 27 valeurs (une matrice 3x3 pour chaque canal). Chaque canal (R, G, B) de l’image est convolué avec le filtre correspondant, puis les résultats sont additionnés. Étapes de Calcul : Pour chaque position, on effectue un produit élément par élément sur chaque canal (R, G, B) entre l'image et le filtre. Les résultats sont ensuite additionnés pour donner une seule valeur dans la matrice de sortie. Exemple de Résultat : La sortie finale est de taille 4×4, représentant les caractéristiques détectées après l’application du filtre. Pourquoi un Filtre 3D ? : Dans une image RGB, chaque canal transporte des informations spécifiques. Un filtre 3D permet de capter des caractéristiques communes aux trois canaux. Résultat Final : La convolution 3D conserve les relations entre les canaux et produit une sortie compacte qui intègre les informations de couleur et de texture. 18 Convolutions sur les Images RGB 19 Utilisation de Filtres Différents pour la Détection de Caractéristiques Objectif des Filtres : Chaque filtre peut être conçu pour détecter des caractéristiques spécifiques dans une image (par exemple, des contours verticaux, horizontaux, textures, etc.). Un filtre appliqué à un canal spécifique permet d'extraire des informations propres à ce canal. Exemple : Premier Filtre : Détecte les contours verticaux uniquement sur le canal rouge (R) de l'image RGB. Deuxième Filtre : Détecte les contours verticaux sur tous les canaux (R, G, B). 20 Fonctionnement des Filtres pour les Canaux Spécifiques et Tous les Canaux Filtre pour un Canal Spécifique : En appliquant un filtre uniquement sur le canal rouge, le réseau extrait des caractéristiques de contours basées sur les variations d'intensité dans ce canal, ce qui peut mettre en évidence des objets ou des zones spécifiques. Ce type de filtrage est utile pour capter des informations de couleur ou des contrastes propres au canal rouge. Filtre pour Tous les Canaux : En appliquant le filtre sur les trois canaux (R, G, B), le réseau capture des contours verticaux en prenant en compte les informations de couleur combinées. Cela permet de produire une carte de caractéristiques plus globale, intégrant les variations de tous les canaux pour une compréhension plus complète de l'image. Impact de l'Application de Filtres Multiples : Filtre 1 : Produit une carte de caractéristiques spécifique au canal rouge, mettant en évidence les contours verticaux dans les variations de rouge. Filtre 2 : Produit une carte de caractéristiques plus générale, intégrant les contours verticaux visibles dans l'ensemble des canaux RGB. Application : En utilisant différents types de filtres, un réseau de neurones peut extraire des détails variés d'une image et construire une représentation riche et multi-couches. 21 Fonctionnement des Filtres pour les Canaux Spécifiques et Tous les Canaux Dans une couche de réseau de neurones convolutif, il peut y avoir plusieurs filtres, chacun conçu pour extraire différents types de caractéristiques de l'image. Par exemple, un filtre peut être configuré pour détecter les contours verticaux sur le canal rouge uniquement, tandis qu'un autre peut détecter les contours verticaux sur tous les canaux (R, G, B). En appliquant divers filtres, le réseau peut capturer différentes caractéristiques de l'image d'entrée, comme les bords, les textures, ou d'autres motifs visuels. Pour une image d'entrée de taille n * n * c, si nous appliquons nf filtres de taille f * f * c, la taille de sortie est : (n−f+1)×(n−f+1) ×nf. 22 Structure Complète d'une Couche Convolutive dans un Réseau de Neurones 23 Couche Convolutive en keras Paramètres Importants : filters : Nombre de filtres (ou noyaux) à appliquer dans la couche. kernel_size : Taille de chaque filtre (ex : (3, 3) pour un filtre 3×3). strides : Nombre de pixels de décalage en horizontal et en vertical du filtre (ex : (1, 1) pour un stride de 1). padding : Peut être same (ajoute du padding pour conserver la taille) ou valid (sans padding). activation : Fonction d'activation appliquée après la convolution (ex : relu). 24 Simple convolution neural net Première Couche Convolutive : Paramètres : 10 filtres de taille 3×3×3 stride de 1, sans padding. Formule de Sortie : ⌊(n+2p−f)⌋ /s +1 Taille de sortie : 37×37×10. Deuxième Couche Convolutive : Paramètres : 20 filtres de taille 5×5×10, stride de 2, sans padding. Taille de sortie : 17×17×20. Troisième Couche Convolutive : Paramètres : 40 filtres de taille 5×5×20, stride de 2, padding de 1. Taille de sortie : 8×8×40. Couche de Flatten et Softmax : La sortie de la troisième couche convolutive est aplatie en un vecteur 1D de taille 8×8×40=2560. La couche finale applique une activation softmax pour la classification. 25 Max Pooling dans les Réseaux de Neurones Convolutifs Objectif : Le Max Pooling est une opération utilisée pour réduire la taille des cartes de caractéristiques tout en conservant les informations les plus importantes. Avantages : Pas de paramètres d'apprentissage : Contrairement aux couches convolutives, le Max Pooling n'a pas de paramètres à apprendre. Réduction des Coûts de Calcul : Diminue le nombre de paramètres, ce qui réduit le coût computationnel global du réseau. Hyperparamètres du Max Pooling Taille du filtre f : Détermine la taille de la région à partir de laquelle on prend le maximum. Stride s : Contrôle le nombre de pixels que le filtre "saute" pour passer à la région suivante. Padding : En général, on utilise pas de padding dans les couches de pooling, donc p=0. 26 Max Pooling dans les Réseaux de Neurones Convolutifs Example 1 (f=2,s=2): Formule pour la Taille de Sortie Pour une entrée de taille nH × nW × nc, la taille de sortie de la couche de pooling est : ⌊ (nH − f ) / s + 1 ⌋ × ⌊ (nW − f) / s + 1 ⌋× nc nH et nW : Hauteur et largeur de l'entrée. nc : Nombre de canaux (inchangé après le pooling). 27 Max Pooling dans les Réseaux de Neurones Convolutifs Example 2 (f=3,s=1): 28 Max Pooling en Keras Explication des Paramètres pool_size : Taille du filtre de pooling (en général, une petite matrice comme 2×2ou 3×3. Exemple : pool_size=(2, 2) appliquera un max pooling sur chaque bloc de 2×2. strides : Nombre de pixels que le filtre se déplace après chaque opération de pooling. Par défaut, il est égal à pool_size. Exemple : strides=(2, 2) signifie que le filtre se déplace de 2 pixels en hauteur et en largeur après chaque opération de pooling. padding : Définit s'il y a un remplissage autour de l'image d'entrée. padding='valid' (par défaut) signifie qu'il n'y a pas de padding. padding='same' ajoute du padding pour conserver la même taille de sortie que l'entrée (utilisé moins fréquemment en pooling). 29 Simple convolution neural net FC3 FC4 Conv Pool Conv F=5 1 F= F=5 Pool 2 S=1 1 S=1 2 F=2 2 S=2 S= #F= 2 #F= Soft = 6 16 32*32 28*28 14*14 10*20* =10 5*5*1 *3 *6 Couche*6 16 Couche 6 400 1 1 120 84 Entrée : L'image d'entrée est de taille 32×32×3 CONV1 : Filtre (f=5), avec un stride (s=1), ce qui donne une taille de sortie de 28×28×6. L'image subit une convolution qui produit 6 cartes de caractéristiques (feature maps). POOL1 : Max pooling de taille 2×2 avec un stride de s=2. La sortie est réduite à 14×14×6. CONV2 : Filtre (f=5) et stride (s=1), ce qui donne une taille de sortie de 10×10×16. Il y a 16 cartes de caractéristiques en sortie. POOL2 : Max pooling de taille 2×2 avec un stride de s=2. La sortie est de taille 5×5×16. Couches entièrement connectées (FC) : La sortie du dernier pooling est aplatie (flattened) en un vecteur de 400 éléments. Ce vecteur est ensuite passé dans une couche entièrement connectée FC3 de 120 neurones, puis FC4 de 84 neurones. Enfin, la dernière couche applique une fonction softmax pour produire les 10 classes de sortie 30(correspondant aux chiffres de 0 à 9). Bibliographie Cours Deep Learning Specialization–Andrew NG Livres deep learning with python - françois chollet Autres https://guandi1995.github.io/ https://towardsdatascience.com/ 31 32

Use Quizgecko on...
Browser
Browser