23.14. Apprentissage par transfert et mise au point : apprentissage par transfert en vision par ordinateur
L'apprentissage automatique, en particulier l'apprentissage profond, a révolutionné le domaine de la vision par ordinateur, permettant des avancées significatives dans des tâches telles que la reconnaissance d'images, la détection d'objets et la segmentation sémantique. L'une des techniques les plus puissantes à l'origine de ces avancées est l'apprentissage par transfert. Cette technique implique la réutilisation de modèles pré-entraînés sur un grand ensemble de données génériques à appliquer à un domaine spécifique ou à un ensemble de données plus petit. Ceci est particulièrement utile en vision par ordinateur, où la formation de modèles à partir de zéro peut s'avérer extrêmement coûteuse et prendre beaucoup de temps.
L'apprentissage par transfert est une approche pragmatique qui permet aux chercheurs et aux praticiens de tirer parti des connaissances précédemment acquises et de les appliquer à de nouveaux problèmes avec une relative facilité. Cela se fait en prenant un modèle qui a été formé sur un grand ensemble de données, tel qu'ImageNet, qui contient des millions d'images classées dans des milliers de catégories, et en l'ajustant ou en l'adaptant à un nouvel ensemble de données ou à une nouvelle tâche. p>
Comment fonctionne l'apprentissage par transfert ?
En vision par ordinateur, l'apprentissage par transfert implique généralement deux étapes principales : l'extraction de fonctionnalités et le ajustement fin.
- Extraction de fonctionnalités : dans cette phase, un modèle pré-entraîné est utilisé comme extracteur de fonctionnalités. Les couches initiales d'un réseau neuronal convolutif (CNN) sont connues pour capturer des caractéristiques génériques d'image (telles que des bords, des textures et des motifs) applicables à de nombreux problèmes de vision par ordinateur. Par conséquent, ces couches restent intactes et seules les couches supérieures sont modifiées pour s'adapter au nouvel ensemble de données.
- Affinage : après l'extraction des caractéristiques, certaines des couches supérieures du réseau sont « affinées » ou recyclées avec le nouvel ensemble de données. Cela permet au modèle de s’adapter plus finement aux spécificités du nouveau problème. Le réglage fin peut impliquer l'entraînement de toutes les couches du modèle ou seulement de quelques-unes, en fonction de la taille et de la similarité du nouvel ensemble de données avec l'ensemble de données d'origine.
Avantages de l'apprentissage par transfert en vision par ordinateur
L'apprentissage par transfert offre plusieurs avantages pour la vision par ordinateur :
- Réduction des ressources : la formation d'un réseau neuronal convolutif à partir de zéro nécessite une grande quantité de données et une puissance de calcul. L'apprentissage par transfert permet aux chercheurs et aux développeurs d'économiser des ressources en réutilisant des modèles pré-entraînés.
- Performances améliorées : les modèles pré-entraînés sur de grands ensembles de données fonctionnent généralement mieux que ceux formés à partir de zéro sur des ensembles de données plus petits en raison de leur capacité à capturer une grande variété de fonctionnalités.
- Vitesse de développement : grâce à la réutilisation des modèles, il est possible d'accélérer le processus de développement et d'itération, puisque le point de départ est un modèle qui possède déjà une capacité importante de compréhension visuelle. li>
Application de l'apprentissage par transfert et de la mise au point
Pour appliquer l'apprentissage par transfert à la vision par ordinateur avec Python, des bibliothèques telles que TensorFlow et PyTorch proposent une variété de modèles pré-entraînés. Prenons un exemple pratique utilisant la bibliothèque TensorFlow :
importer Tensorflow en tant que TF
à partir de tensorflow.keras.applications importer VGG16
à partir de tensorflow.keras.layers importer Dense, Aplatir
à partir de tensorflow.keras.models, importer le modèle
# Chargez le modèle VGG16 pré-entraîné, en supprimant la couche supérieure
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
# Geler les couches du modèle de base pour éviter qu'elles ne soient mises à jour lors de la première passe de formation
pour la couche dans base_model.layers :
layer.trainable = Faux
# Ajouter de nouvelles couches qui seront entraînées pour le nouvel ensemble de données
x = Aplatir() (base_model.output)
x = Dense(1024, activation='relu')(x)
prédictions = Dense(num_classes, activation='softmax')(x)
# Créer le modèle final
modèle = Modèle (entrées = base_model.input, sorties = prédictions)
# Compiler le modèle
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Entraîner le modèle avec le nouvel ensemble de données
model.fit (new_dataset_images, new_dataset_labels, epochs=5, batch_size=32)
# Après l'extraction des fonctionnalités, sélectionnez les couches pour un réglage fin
pour la couche dans model.layers[:unfreeze_layers] :
layer.trainable = Vrai
# Recompiler le modèle pour affiner
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Affiner le modèle
model.fit (new_dataset_images, new_dataset_labels, époques = 5, chauve-souristaille_ch=32)
Cet exemple illustre le processus d'apprentissage par transfert à l'aide du modèle VGG16. Tout d'abord, le modèle est chargé avec les poids pré-entraînés dans ImageNet et les couches supérieures sont personnalisées pour le nouvel ensemble de données. Après une formation initiale pour l'extraction de caractéristiques, les couches sont dégelées pour le processus de réglage fin, permettant au modèle de s'adapter plus précisément au nouveau problème.
En résumé, l'apprentissage par transfert et la mise au point sont des techniques indispensables dans le domaine de la vision par ordinateur. Ils permettent aux praticiens d’exploiter des modèles puissants et avancés sans avoir besoin de ressources informatiques étendues ni d’ensembles de données à grande échelle. Avec l'aide de bibliothèques comme TensorFlow et PyTorch, Transfer Learning a démocratisé l'accès aux technologies de vision par ordinateur de pointe, les rendant accessibles à un large éventail de développeurs et de chercheurs.