Résumé de section
-
Si les fichiers de résultats de votre modèle sont satisfaisant, vous pourrez ensuite tester votre modèle sur d’autres données, notamment votre dossier “test”.
Mais comment savoir si son modèle est bien ? Ouvrez votre dossier de résultats et repassons sur les points importants à aller vérifier :
- le score mAp50-95 :
- où le trouver : dans le fichier results.csv. Point important : dans ce fichier, le séparateur est une virgule "," alors que si vous utilisez Excel, il s'attend à des point-virgule donc le fichier sera illisible. Pour pallier ce problème, ouvrez d'abord votre fichier dans un éditeur de texte, et rajoutez une première ligne où vous écrirez "sep=," comme dans l'image ci dessous :

-
- enregistrez la modification, fermez le fichier puis vous pouvez l'ouvrir dans Excel.
- chaque ligne correspond à une époque et chaque colonne contient les valeurs des différentes mesures de pertes, de métriques et du taux d'apprentissage pour l'époque donnée. La colonne qui nous intéresse est celle appelée : metrics/mAP50-95(B).
- descendez tout en bas de votre document pour pouvoir avoir la valeur de cette métrique lors de la dernière époque de votre modèle.
- quelle valeur est une bonne valeur :
- inférieur à 0.3 : mauvais
- supérieur à 0.5 : pour des objets complexes : bien
- supérieur à 0.7 : excellent
- les courbes de pertes (loss) :
- où les trouver : dans le fichiers results.png pour pouvoir visualiser directement les courbes pour voir leur tendance.
- ce qu'il faut observer :
- si les deux courbes descendent et se stabilisent, votre modèle est bien
- si les courbes de validation (val) remontent alors que celles de l'entrainement (train) descendent, votre modèle est mauvais (signe de surapprentissage)
- la courbe du score F1 :
- où la trouver : c'est le fichier BoxF1_curve.png
- ce qu'il faut vérifier :
- il faut que le courbe monte haut, le plus proche de 1.0.
- ce qu'il faut récupérer :
- récupérez l'abscisse du maximum car c'est la valeur optimale à donner à votre seuil de confiance. C'est la valeur qui est écrite dans la légende à côté de "all classes". On y lit : "all classes valeur_max at seuil_optimal" donc vous récupérez la deuxième valeur pour la mettre dans la variable "conf" au moment du déploiement de votre modèle.
- les images valbatchXpred.jpg :
- ces images correspondent à la sortie du modèle, donc cela vous permet d'avoir un retour visuel de votre entrainement. Vous pouvez y vérifier que la détection se passe bien, que les boites sont au bon endroit et qu'aucun objet n'est oublié.
Si votre modèle vous semble satisfaisant, vous pouvez donc le tester sur vos données du dossier "test" pour voir comment il se débrouille. Pour cela, vous devez d’abord charger votre modèle tout juste entrainé. Il se trouve dans le dossier runs/detect/trainx/weights normalement et c’est le fichier best.pt :
from ultralytics import YOLOmodel = YOLO(“chemin/vers/votre/fichier/best.pt”)(n’hésitez pas à mettre le chemin absolu sauf si vous êtes sur le cluster)
Puis vous pourrez lancer un processus de validation mais en précisant bien que vous voulez que ce soit les données de test qui soient utilisée. N’oubliez pas d’aller rajouter le chemin test dans votre fichier data.yaml au préalable (il faut que ce soit le même fichier data.yaml que lors de l'entrainement pour que le modèle trouve le chemin, sinon, vous pouvez créer un nouveau fichier en changeant le nom, comme data_test.yaml par exemple, mais dans ce cas là, il faudra le préciser dans la fonction ci-dessous comme un autre paramètre, donc data=data_test.yaml).
metrics = model.val(split=”test”)Vous retrouverez ensuite les résultats dans runs/detect/valx, que vous pourrez analyser comme nous venons de le faire.
Si ces nouveaux résultats vous conviennent aussi, parfait. Sinon, il sera sûrement nécessaire d’entrainer à nouveau votre modèle. Peut être il serait judicieux de changer quelques paramètres d’entrainement, mais rajouter des époques peut suffire.
On va donc partir dans cette direction. Pour reprendre un entraînement afin de le prolonger, commencez par charger les derniers poids et non les meilleurs (très important!) , à savoir last.pt :
from ultralytics import YOLOmodel = YOLO(“chemin/vers/votre/fichier/last.pt”)Lancez ensuite un entraînement comme au début mais avec le paramètre resume=True. Concernant le nombre d’époque, le nombre que vous mettrez là est le nombre total d’époques que le modèle fera, donc si votre last.pt est issu d’un entrainement de 100 époques, la commande ci-dessous permettra d’aller jusqu’à 150, donc d’en rajouter 50 et non d'en rajouter 150.
results = model.train(epochs=150, resume=True)Enfin, si les résultats ne vous conviennent toujours pas, vous pouvez songer à changer quelques paramètres du modèle, donc pour ça nous avons fait une partie dédiée que vous trouverez juste à la suite, dans la prochaine section.
- le score mAp50-95 :