VGG (Visual Geometry Group)
Fonctions :
-
VGG16()
VGG16 est un modèle de réseau de neurones convolutionnel pré-entraîné sur ImageNet. Il est largement utilisé pour des tâches de classification, d’extraction de caractéristiques et de transfert learning. Le modèle comporte 16 couches avec poids (13 convolutions + 3 fully connected).
Importation :
from tensorflow.keras.applications import VGG16
Attributs :
Paramètre
Description
include_top
Booléen. Si True
, inclut les 3 couches fully-connected en haut du réseau. Sinon, ne conserve que les convolutions.weights
Poids du modèle. Utiliser 'imagenet'
pour charger les poids pré-entraînés. Peut aussi êtreNone
.input_tensor
Tensor à utiliser comme entrée du modèle (optionnel). input_shape
Tuple de la forme (hauteur, largeur, canaux)
. Requis siinclude_top=False
.pooling
Optionnel. 'avg'
ou'max'
: ajoute un global average ou max pooling en sortie du modèle siinclude_top=False
.classes
Nombre de classes à prédire si include_top=True
etweights=None
.Exemple de code :
from tensorflow.keras.applications import VGG16 from tensorflow.keras.models import Model from tensorflow.keras.layers import Dense, GlobalAveragePooling2D from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.vgg16 import preprocess_input import numpy as np # Charger le modèle VGG16 sans les couches fully connected (include_top=False) base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) # Ajouter une couche de pooling global et une couche de sortie x = base_model.output x = GlobalAveragePooling2D()(x) x = Dense(1024, activation='relu')(x) predictions = Dense(10, activation='softmax')(x) # Créer le modèle final model = Model(inputs=base_model.input, outputs=predictions) # Geler les couches convolutives for layer in base_model.layers: layer.trainable = False # Compiler le modèle model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Afficher le résumé du modèle model.summary()
Explication du code :
1. Importation des bibliothèques nécessaires
- Chargement du modèle pré-entraîné VGG16 et des outils Keras pour construire et manipuler le modèle. - Modules pour le traitement des images et la prétraitement selon VGG16. - `numpy` pour la gestion des tableaux.2. Chargement du modèle VGG16 pré-entraîné
- Modèle VGG16 avec poids pré-entraînés sur ImageNet (`weights='imagenet'`). - `include_top=False` : on retire les couches fully connected en haut pour personnaliser la sortie. - Dimension d’entrée fixée à `(224, 224, 3)` (taille standard ImageNet).3. Ajout de nouvelles couches personnalisées
- **GlobalAveragePooling2D** : réduit la sortie convolutionnelle en un vecteur de caractéristiques global. - Couche dense (fully connected) de 1024 neurones avec activation ReLU pour apprendre des représentations complexes. - Couche de sortie dense avec 10 neurones et activation softmax, adaptée à une classification à 10 classes.4. Création du modèle final
- Le modèle final prend en entrée les images du VGG16 initial. - La sortie est celle des nouvelles couches ajoutées, adaptées à la nouvelle tâche de classification.5. Gel des couches convolutives pré-entraînées
- Toutes les couches du VGG16 original sont rendues non entraînables (`trainable = False`). - Cela permet de conserver les caractéristiques déjà apprises, évitant de les modifier lors de l’entraînement.6. Compilation du modèle
- Optimiseur Adam pour la mise à jour des poids. - Fonction de perte `categorical_crossentropy` adaptée à la classification multi-classes avec labels one-hot. - Métrique utilisée : précision (`accuracy`).7. Affichage du résumé du modèle
- Visualisation de la structure du modèle avec le détail des couches, formes des tenseurs et nombre de paramètres. -
VGG19()
VGG19 est une architecture de CNN profonde avec 19 couches pondérées (16 convolutions + 3 fully connected). Elle est largement utilisée pour la classification d’image et le transfert learning, avec des poids pré-entraînés sur ImageNet.
Importation :
from tensorflow.keras.applications import VGG19
Attributs :
Paramètre
Description
include_top
Booléen. Si True
, inclut les 3 couches fully connected en haut du réseau.weights
Poids du modèle. Mettre 'imagenet'
pour charger les poids pré-entraînés. OuNone
.input_tensor
Tensor optionnel à utiliser comme entrée du modèle. input_shape
Tuple du type (hauteur, largeur, canaux)
, requis siinclude_top=False
.pooling
'avg'
ou'max'
. Applique un global pooling après les convolutions siinclude_top=False
.classes
Nombre de classes à prédire si include_top=True
etweights=None
.Exemple de code :
from tensorflow.keras.applications import VGG19 from tensorflow.keras.models import Model from tensorflow.keras.layers import Dense, GlobalAveragePooling2D # Charger VGG19 sans les couches fully-connected base_model = VGG19(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) # Ajouter nos propres couches personnalisées x = base_model.output x = GlobalAveragePooling2D()(x) x = Dense(512, activation='relu')(x) predictions = Dense(5, activation='softmax')(x) # Créer le modèle complet model = Model(inputs=base_model.input, outputs=predictions) # Geler les couches du modèle VGG19 pour ne pas les entraîner for layer in base_model.layers: layer.trainable = False # Compiler model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Afficher le résumé model.summary()
Explication du code :
1. Importation des bibliothèques nécessaires
- Import du modèle pré-entraîné VGG19 et des outils Keras pour construire et manipuler le modèle. - Import des couches denses et de pooling global pour personnaliser la tête du modèle.2. Chargement du modèle VGG19 pré-entraîné
- Chargement de VGG19 avec poids ImageNet (`weights='imagenet'`). - `include_top=False` : suppression des couches fully connected originales. - Dimension d’entrée fixée à `(224, 224, 3)` pour correspondre aux images RGB.3. Ajout de nouvelles couches personnalisées
- Couche GlobalAveragePooling2D pour condenser les cartes de caractéristiques en un vecteur. - Couche dense de 512 neurones avec activation ReLU pour apprendre des caractéristiques spécifiques. - Couche de sortie dense à 5 neurones avec activation softmax, adaptée à une classification en 5 classes.4. Création du modèle final
- Le modèle prend en entrée les images du VGG19 original. - La sortie correspond aux nouvelles couches ajoutées pour la tâche spécifique.5. Gel des couches convolutives pré-entraînées
- Toutes les couches de VGG19 sont rendues non entraînables (`trainable = False`) pour conserver les caractéristiques apprises et éviter leur modification lors de l’entraînement.6. Compilation du modèle
- Optimiseur Adam pour la mise à jour des poids des nouvelles couches. - Perte `categorical_crossentropy` adaptée à la classification multi-classes avec labels one-hot. - Évaluation avec la métrique précision (`accuracy`).7. Affichage du résumé du modèle
- Affichage détaillé de la structure du modèle, incluant couches, formes des tenseurs, et nombre de paramètres entraînables ou non.