Utiliser VGG16 et ResNet50 comme modèles de base
keras.applications.VGG16(weights='imagenet', include_top=False), ajout d’une tête personnalisée.
Utiliser VGG16 et ResNet50 comme modèles de base est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Module des applications Keras
tf.keras.applications fournit des dizaines d’architectures préentraînées que vous pouvez télécharger en une seule ligne. Deux modèles classiques sont VGG16 (une pile simple et profonde de convolutions 3x3) et ResNet50 (des connexions résiduelles, un modèle plus profond et plus précis).
Charger VGG16 comme base
Chargez VGG16 avec les poids ImageNet, mais sans sa tête de classification, afin de pouvoir lui ajouter la vôtre.
from tensorflow.keras.applications import VGG16
base = VGG16(
weights="imagenet", # download pretrained weights
include_top=False, # drop the 1000-class classifier
input_shape=(224, 224, 3) # standard ImageNet input size
)Comprendre les arguments
weights="imagenet": charge les poids préentraînés plutôt que des poids aléatoires.include_top=False: supprime le classificateur dense d’origine afin que vous puissiez ajouter le vôtre.input_shape=(224,224,3): hauteur, largeur et 3 canaux RGB.
La définition de include_top=False permet de réutiliser le modèle pour une nouvelle tâche.
Geler la base
Définissez base.trainable = False afin que les poids convolutionnels préentraînés restent fixes durant la première phase d’entraînement. Seule votre nouvelle tête apprendra.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
La base produit une carte de caractéristiques en 3D telle que (7, 7, 512). GlobalAveragePooling2D calcule la moyenne de chaque canal sur sa grille spatiale et la réduit à un seul vecteur par canal, ici de longueur 512.
Cette opération remplace un ensemble volumineux Flatten + Dense, ce qui réduit considérablement le nombre de paramètres et le surapprentissage.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Ajouter la tête de sortie Dense
Ajoutez une couche Dense dont la taille correspond à votre nombre de classes. Utilisez softmax pour une classification multiclasse ou sigmoid pour une classification binaire.
from tensorflow.keras import layers, Model
x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(10, activation="softmax")(x)
model = Model(inputs=base.input, outputs=outputs)Passer à ResNet50
ResNet50 utilise la même interface. Ses connexions résiduelles (ou connexions de saut) lui permettent d’être entraîné beaucoup plus en profondeur sans gradients qui s’évanouissent, ce qui lui confère généralement une meilleure précision sur ImageNet que VGG16 à une vitesse comparable.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16 ou ResNet50
- VGG16 : environ 138 millions de paramètres, pile uniforme et simple de convolutions 3x3, forte consommation de mémoire, facile à comprendre.
- ResNet50 : environ 25 millions de paramètres, blocs résiduels, plus profond, généralement plus précis et moins lourd.
Pour la plupart des tâches modernes d’apprentissage par transfert, ResNet50 constitue le meilleur choix par défaut.
Adapter le prétraitement
Chaque famille possède son propre preprocess_input. VGG16 soustrait les valeurs moyennes RGB, tandis que ResNet50 utilise une mise à l’échelle similaire au style Caffe. Importez toujours celui qui correspond à votre base.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct resultsCompiler le modèle
Avec la base gelée, compilez et entraînez la tête avec un optimiseur normal.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)Examiner l’architecture
Appelez model.summary() pour vérifier que la base est gelée (le nombre de paramètres non entraînables est élevé) et que seule la tête est entraînable. Cette vérification de cohérence permet de détecter rapidement les erreurs de configuration.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"Vérification rapide
Vérifiez votre compréhension de la construction d’un modèle d’apprentissage par transfert dans Keras.
Récapitulatif
Vous avez chargé VGG16 et ResNet50 avec weights="imagenet", include_top=False et input_shape=(224,224,3), gelé la base avec base.trainable=False, regroupé les caractéristiques avec GlobalAveragePooling2D et ajouté une tête de sortie Dense.
ResNet50 constitue le meilleur choix par défaut. Ensuite : déverrouiller des couches pour effectuer un ajustement fin.
Questions Fréquemment Posées
La leçon « Utiliser VGG16 et ResNet50 comme modèles de base » est-elle gratuite ?
Oui — le texte complet de « Utiliser VGG16 et ResNet50 comme modèles de base » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Utiliser VGG16 et ResNet50 comme modèles de base » ?
keras.applications.VGG16(weights='imagenet', include_top=False), ajout d’une tête personnalisée. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Utiliser VGG16 et ResNet50 comme modèles de base » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Concepts et stratégies de l’apprentissage par transfert
- Utiliser VGG16 et ResNet50 comme modèles de base
- Ajustement fin : dégel et réentraînement
- MobileNet et EfficientNet pour le déploiement en périphérie