dnum-mi / basegun-ml

All code related to machine learning for Basegun project
https://pypi.org/project/basegun-ml/
GNU Affero General Public License v3.0
2 stars 0 forks source link

Implémentation du modèle de détection de carte en YOLO V8 #13

Open ClemGerard opened 5 months ago

ClemGerard commented 5 months ago

Changement du modèle de détection des cartes, passage de YOLO V5 à YOLO V8

Tasks

AurelienmartW commented 5 months ago

Sur le réentrainement du modèle, Les résultats sont correct, la detection des cartes se fait bien. Le temps d'inférence est court ~0.2s contre 1s sur YOLOV5 (à confirmer) Entrainements réalisés:

Pas de différence majeure sur les performances du modèle ce qui parait etonnant

Après exploration en profondeur : Les métriques de validation sont moins bonnes que prévue et les bounding box de val sont décalés dans les labels.

Cela semble venir d'un problème concernant la validation du modèle -> donc pas d'impact sur l'entrainement https://github.com/ultralytics/ultralytics/pull/9899 L'issue a été remontée sur le repo ultralytics, la nouvelle version devra normalement resoudre ce soucis

AurelienmartW commented 5 months ago

Update: YOLOV8.1.46 semble bien avoir réglé le problème de validation, la MAP50-95 est bien plus en accord avec les résultats visuels. En attente de la fin du training pour valider la résolution

AurelienmartW commented 5 months ago

Evaluation du modèle, Le modèle semble avoir overfitté sur les images de carte artificielle et a du mal a generaliser sur les cartes réelles du dataset d'evaluation Essai en cours de reduire les epochs pour limiter l'overfiiting

AurelienmartW commented 5 months ago

La reduction d'epochs n'améliore pas la prediction du modèle en conditions réelles, Autre piste: ajout d'images "background" qui semblent avoir été effacées lors de la conversion de dataset vers YOLOV8.

AurelienmartW commented 5 months ago

Augmenter la durée des entrainements (nombre d'epoch) améliore sensiblement les résultats. Des difficulutés subsistent sur la detection de cartes foncées. Cela pourrait venir d'une sous representation dans le dataset. Une experimentation est en cours avec un entrainement poussé à 500 epochs avec une taille de batch de 16 et AdamW en optimizer

AurelienmartW commented 4 months ago

Labelisation des images de l'IRCGN et ajout du dataset de val pour suivre la performance avec des valeurs quantitatives

ClemGerard commented 4 months ago

Écarts entre les résultats de validation et d'inférence : étude des processus de préprocessing dans le code de YOLO et des fonctions associées.

ClemGerard commented 3 months ago

Intégrer le module à la chaîne globale de mesure de longueurs d'arme. Puis test post intégration pour valider les performances (temps d'inférence + précision)

ClemGerard commented 3 months ago

Gain de 0,2 secondes (20%) Perte de 15-18% de précisions

Nouveaux entrainements à venir pour gagner en précision.

Tests de montée de charge en YOLO V5 : OK (déploiement) / KO (tests avec YOLO V8) Si tests avec YOLO V8 OK => entrainement pour améliorer la précision Si tests avec YOLO V8 KO => Autres

ClemGerard commented 3 months ago

Nouvelle combinaisons de paramètres : modèle à priori prometteur et toujours aussi rapide. Résultats à venir ce jour

Update results: Après réentrainement du modèle avec un IOU threshold plus restrictif 0.7 ->0.9 les résultats ne sont pas meilleurs en terme de précision (>5.5cm). On conserve cependant la vitesse d'inférence.

Prochaine piste, augmenter la résolution des images en entrée

Avec une taille image entrée 640px ->960 On passe à 5cm de précision, cela reste au dessus de la performance de YOLOV5 ~4cm De plus le temps d'inférence passe autour d'1s de traitement.

A l'heure actuelle YOLOV8 semble moins performant que YOLOV5 avec le même dataset d'entrainement sur de l'OBB.

Si l'on souhaite passer à YOLOV8 il faudra repenser le dataset, en attendant si il n'ya pas de problème de charge on peut rester sur la V5