Le transfer learning est une technique du deep learning qui cherche à réutiliser un réseau de neurones entraîné à une tâche pour une autre.
L’une des applications du transfer learning est le fine tuning, qui consiste à prendre un modèle existant performant sur une tâche générale et l’entraîner sur un nouveau dataset plus spécifique.
L’application la plus évidente est le fine tuning pour la reconnaissance d’objets. À partir d’un modèle capable d’identifier un grand nombre de classes, l’affiner pour qu’il reconnaisse une classe spécifique.
Les avantages du fine tuning
Le modèle d’origine est performant car il a été entraîné :
- Sur un dataset de grande taille
- Avec une grande puissance de calcul
- Pendant longtemps
On économise donc ces trois besoins, et le fine tuning se fera sur un plus petit dataset avec un moins grand besoin de puissance et de temps.
L’espoir est d’obtenir un plus haut taux de précision que le modèle général sur la nouvelle tâche qui est plus spécifique.
Comment ?
Choisir le modèle d’origine
Le modèle général doit être capable de résoudre une tâche similaire à la votre.
Ajuster l’architecture du modèle
Bien souvent, cela consiste à changer la forme de la dernière couche du modèle, pour qu’il ait le bon nombre d’output. Cette couche modifiée est initialisée avec des poids aléatoires. Le reste des couches du réseau sont gelées pour que leurs poids ne soient pas modifiés durant l’entraînement.
Entraînement
Entraîner le modèle sur le dataset spécifique. Souvent avec un petit learning rate, qui offre un apprentissage plus fin que pendant l’entraînement du modèle d’origine.
Exemple d’application
En suivant ce tutoriel de PyTorch, j’ai utilisé le fine tuning pour reconnaître des piétons et des véhicules dans un hangar.
Préparer le dataset
J’ai généré le dataset dans Blender, ce processus est détaillé dans cet article : Dataset synthétique grâce au rendu 3D dans Blender – AI Squad by Reboot Conseil (rebootia.com)
Choisir le modèle d’origine
J’ai choisis le modèle pré entraîné MaskRCNN avec ResNet50 de PyTorch, un modèle à 50 couches performant sur un grand nombre de classes.
Ajuster l’architecture du modèle
Ici, il faut identifier 3 classes : les piétons, les transpalettes et le background. La dernière couche du modèle est donc remplacée par une couche à 3 sorties.
Résultats
L’objectif a été atteint. À partir d’un modèle général, j’ai maintenant un modèle qui répond à mes besoins spécifiques. Le tout avec un faible temps d’entraînement et un petit dataset.