13 mars 2023

Améliorer la détection des lignes des courts de tennis grâce à l'apprentissage automatique

Les contributeurs
Jules Talloen
Ingénieur en machine learning
Aucun élément trouvé.
S'abonner à la newsletter
Partager cet article
Détection des lignes d'un court de tennis

Le tennis est un sport pratiqué dans le monde entier et de nombreux flux vidéo à caméra unique sont disponibles. Tous ces flux contiennent des informations qui pourraient être transformées en statistiques structurées sur les matchs et les joueurs. En regardant un match de tennis, vous pourriez enrichir la vue automatiquement avec le nombre de services au milieu ou dans les coins, la profondeur à laquelle la balle est jouée, les préférences pour la gauche ou la droite, en fonction de l'endroit où le joueur est positionné... La liste des informations que vous pouvez extraire en convertissant ces flux vidéo en données structurées est immense.

Avant d'obtenir des statistiques, l'analyse de ces flux vidéo doit être décomposée en plusieurs tâches :

  • détection du terrain (lignes) et du filet
  • détection des acteurs et de leur position
  • détection et suivi du ballon
  • détection des tirs des joueurs

Cette idée a constitué la base de mon stage chez ML6. Un grand merci à l'équipe pour leur aide et surtout à Jules pour avoir été un mentor formidable. Pour mon stage, nous avons décidé de commencer par la détection des lignes de court.

Tous les amateurs de tennis savent que le système Hawk-Eye est capable de détecter les lignes (et la balle) avec une très grande précision en utilisant au moins six caméras à haute vitesse sous différents angles du court.

Hawk-Eye en action

Nous souhaitons toutefois effectuer cette tâche avec les flux vidéo standard d'une caméra fixe et être en mesure de faire des prédictions quasiment en temps réel.

Travaux connexes et inspiration

Ce n'est pas la première fois que quelqu'un essaie de détecter un terrain de sport. Avant de décider de notre approche, nous avons examiné les travaux connexes suivants.

Auparavant, la tâche était principalement abordée avec une approche d'IA symbolique suivant un modèle similaire pour détecter les limites d'un court de tennis. Dans un premier temps, une technique est utilisée pour extraire les lignes de l'image. Les transformations de lignes de Hough conviennent parfaitement à cet objectif. Une explication détaillée des transformations de Hough et de leur utilisation dans OpenCV est disponible ici. L'étape suivante consiste à déterminer lesquelles de ces lignes sont les lignes de la cour extérieure. En prenant les intersections de 4 des lignes trouvées, vous pouvez déterminer la matrice de transformation (également appelée homographie) qui projette un court de tennis de référence sur les 4 intersections de lignes dans le cadre. À l'aide de cette matrice, vous pouvez projeter le court de référence sur le cadre, puis compter les chevauchements entre les pixels de la ligne dans le cadre et les lignes projetées du court de référence. En répétant ce processus pour toutes les intersections de lignes trouvées, nous pouvons trouver le meilleur chevauchement qui, théoriquement, devrait être les lignes extérieures du court.

Il est également possible de combiner un CNN léger avec une couche de Hough, qui est décrite en détail dans le présent document. Un travail similaire peut être trouvé dans LSDNet où un détecteur de segments de ligne classique est combiné avec un CNN léger.

Dans d'autres sports, les caméras sont souvent mobiles et ne montrent qu'une partie du terrain. La définition d'une grille de points clés sur le terrain a donné de bons résultats pour ce cas d'utilisation particulier. Cet article détaille cette approche.

Voyons tout d'abord dans quelle mesure l'approche symbolique permet d'atteindre les objectifs de détection des lignes en temps quasi réel sur différents terrains. Ensuite, nous examinerons si l'apprentissage par transfert sur un modèle formé pour la classification peut apprendre à prédire les points clés aux intersections des lignes de court. Pour conclure, nous verrons si les performances peuvent être encore améliorées en combinant les deux approches.

Approche symbolique de l'IA (transformée de Hough / Homographie)

Avant de nous plonger dans l'apprentissage par transfert, nous allons voir jusqu'où nous pouvons aller avec une approche symbolique de l'IA.

Comme décrit ci-dessus, les étapes de haut niveau sont les suivantes :

  1. Prétraitement de l'image pour la détection des lignes de Hough
  2. Détecter les lignes et les classer en lignes horizontales et verticales
  3. Essayez de trouver les lignes qui correspondent le mieux au court de tennis. Pour ce faire, déterminez dans quelle mesure une projection des lignes d'un court de référence se superpose à une image binaire du cadre (en supposant que les pixels blancs représentent les lignes du court dans l'image binaire). Pour déterminer comment un plan peut être projeté sur un autre plan, vous pouvez calculer la matrice de projection (également appelée matrice d'homographie ) sur la base de 4 points connus du premier plan et de 4 points connus du plan projeté. Ainsi, en prenant les 4 points d'intersection des lignes de la cour de référence et les 4 points d'intersection de 2 lignes horizontales trouvées et de 2 lignes verticales trouvées, on peut déterminer la matrice d'homographie qui projette la cour de référence sur le cadre. L'étape suivante consiste à effectuer la perspective de déformation des lignes du court de référence à l'aide de cette matrice d'homographie et à compter les succès (chevauchements entre un pixel de la ligne du court de référence et un pixel blanc de l'image binaire du cadre) et les échecs par rapport à l'image binaire du cadre. Plus il y a de succès et moins il y a de pertes, plus il y a de chances que les lignes trouvées soient les lignes de court. Cette opération est répétée pour toutes les combinaisons de paires de lignes horizontales et verticales trouvées afin de déterminer les lignes qui correspondent le mieux.

L'étape de prétraitement est très importante car elle détermine la qualité de l'extraction des lignes par la transformation de Hough.

Court de tennis après prétraitement
Court de tennis après prétraitement

À partir d'une bonne image prétraitée, les résultats sont très précis :

Lignes de Hough tracées en vert sur l'image originale
Lignes de Hough (vertes) tracées sur l'image originale

Bien qu'elle donne de bons résultats pour certaines juridictions, il est difficile de généraliser cette approche à tous les types de juridictions. Un autre inconvénient est que le processus itératif de détermination de l'homographie, de création de la perspective de distorsion et de calcul des succès et des échecs est lent et gourmand en ressources.

Détection des lignes d'un court de tennis avec la transformée de Hough (bonne)
Détection des lignes d'un court de tennis avec la transformée de Hough (mauvaise)

Approche AI : Modèle CNN pour la détection des points clés

L'idée de base est de prendre un système de vision par ordinateur relativement simple pour la classification et d'y ajouter une tête personnalisée pour déterminer 16 points clés aux intersections des lignes du court de tennis.

16 points clés d'un court de tennis

Nous commençons avec un backbone ResNet50v2 (application Keras) et expérimentons avec une tête CNN complète et une tête Fully Connected Network. Les paramètres suivants donnent les meilleurs résultats avec un réseau ResNet50v2 :

Résultat avec les meilleurs paramètres pour le backbone ResNet50v2

Les prévisions (points bleus) sont encore assez éloignées, mais nous avons appris que

  • cette approche est plus robuste que l'approche symbolique
  • L'augmentation des données est importante pour rendre le modèle plus robuste
  • Une tête CNN complète donne de meilleurs résultats qu'une tête entièrement connectée.
  • La perte MAE a donné de meilleurs résultats que la perte MSE
  • Notre colonne vertébrale n'est pas assez expressive (même en essayant de la suradapter)
  • Notre ensemble de données doit être plus important et plus diversifié

Pour augmenter notre ensemble de données, nous utilisons l'outil d'annotation OpenCV qui dispose d'une excellente interface pour étiqueter les données et les exporter vers - entre autres - le format de points clés COCO. En prime, il prend également en charge l'interpolation, de sorte que vous n'avez qu'à étiqueter les images clés.

En poursuivant l'apprentissage et le réglage avec différents backends, tout en gardant à l'esprit une vitesse d'inférence proche du temps réel, les résultats se sont considérablement améliorés.

EfficientNetV2Le petit backend est le plus performant
Résultat du backend EfficientNetV2Small (les prédictions sont des points bleus)

Nous constatons toujours que les prédictions (points bleus) sont un peu éloignées de la cible. Afin de rechercher des schémas dans le modèle appris, nous projetons la cour de référence (lignes noires) avec l'homographie des points clés prédits extérieurs.

Cour de référence projetée (lignes noires) exactement sur les points clés prévus (points bleus)

Cela montre que le modèle formé trouve les relations entre les intersections des lignes avec une très grande précision (les points bleus prédits sont exactement sur les intersections des lignes noires). Ne mettons-nous pas trop l'accent sur la relation entre les points dans notre modèle ?

Nous essayons donc de prédire uniquement les 4 points clés extérieurs du terrain. Pour faire court, les modèles formés sur les 4 points clés ont produit des résultats très similaires à ceux des 16 points clés.

Au cours de la formation et des expériences, quelques autres dorsales ont également été essayées et MobileNetv3Small a obtenu de bien meilleurs résultats que les autres dorsales.

Si l'on revient à la sortie des 16 points clés, on peut s'attendre à des améliorations similaires avec la nouvelle épine dorsale, MobileNetv3Small, et l'erreur moyenne de pixel a en effet diminué de plus de 50 % par rapport aux meilleurs résultats obtenus précédemment avec EfficientNetV2Small.

C'est un assez bon résultat, mais nous voulons l'améliorer et nous avons décidé de post-traiter le modèle en utilisant une variante de l'approche symbolique de la section précédente.

Post-traitement

L'idée est de prendre une zone rectangulaire autour de chaque point clé prédit de l'image originale et de déterminer dans chaque rectangle les lignes et leur point d'intersection.

Petite zone autour des points clés prévus

Si nous recadrons une zone standard autour des points clés prédits (croix rouges), le point de départ zoomé pour le post-traitement ressemble à ceci :

Petite zone autour des points clés prévus (croix rouge)

Vous pouvez voir que la détermination de l'intersection des lignes peut être plus compliquée à travers les joueurs (15), les lignes peu claires (5). Il sera également difficile de travailler avec les points clés du filet (8, 9).

L'algorithme de détection des intersections de lignes est décrit dans la section sur l'IA symbolique :

  • Préparer l'image pour la transformation de Hough
    - Réduire le nombre de couleurs et supprimer les couleurs les plus dominantes
    - Epaissir les lignes des images éloignées de la caméra (1, 2, 3, 4)
    - Epaissir les lignes avec l'algorithme de Zhang Suen
Prétraitement de l'image
  • Effectuer la transformation de Hough, sélectionner les lignes les plus pertinentes et déterminer leur intersection
Intersection de lignes après transformation de Hough et sélection de lignes

Il en résulte les améliorations suivantes :

Nette amélioration des principaux points de référence

Ou dans l'image complète :

MobileNetV3Small avec post-traitement

Si l'on examine l'image avant et après le post-traitement, la performance est nettement meilleure. Cependant, le post-traitement peut parfois s'avérer insuffisant, car les lignes ne sont pas extraites avec précision. La comparaison de l'erreur absolue moyenne montre maintenant des résultats très similaires avec ou sans post-traitement. Ce résultat peut probablement être amélioré par une étape de vérification supplémentaire qui ne prend en compte le post-traitement que lorsque l'intersection calculée par post-traitement se trouve sur un pixel blanc ou correspond à un petit filtre spécifique pour le point clé (par exemple un filtre en forme de L pour la ligne de base inférieure gauche). Cette dernière étape de vérification n'a pas encore été testée.

Les performances sont bonnes, mais qu'en est-il de la vitesse d'inférence ?

Sur un processeur Intel i9 à 8 cœurs et 2,3 GHz avec un GPU NVIDIA T2000 de 4 Go, le modèle d'IA a prédit environ 100 images/seconde. En incluant le post-traitement, la vitesse d'inférence est tombée à 50 images/seconde. Ces chiffres sont donnés à titre indicatif, sans aucun effort d'optimisation de la vitesse.

Conclusion

Ces résultats sont prometteurs en termes de performances et de vitesse d'inférence.

Nous pouvons conclure que notre modèle ML est plus robuste et plus rapide que notre modèle symbolique.

Pour le modèle ML, il est vital de trouver un backbone avec un bon équilibre entre performance et vitesse d'inférence, dans notre cas MobileNetv3Small. Pour toutes les épines dorsales testées, les variantes CNN complètes étaient les meilleures en tant que tête et MAE en tant que fonction de perte produisant de meilleures performances. L'augmentation des données a été cruciale, mais il faut s'assurer que la majorité des transformations ont encore un sens pour un court de tennis. Le post-traitement peut encore augmenter les performances, comme on l'a vu dans certains échantillons, mais il faut s'assurer qu'il se généralise bien.

Avec un peu plus d'investissement dans le post-traitement, en ajoutant un lissage temporel (il n'y aura que de légers changements dans le mouvement de la caméra entre les images) et en donnant un peu d'amour à l'optimisation de la vitesse d'inférence, cette approche est un bon candidat pour faire de la détection de ligne de court presque en temps réel... Une première étape dans l'automatisation des statistiques d'un match de tennis.


Cet article a été écrit par Bart Timmermans dans le cadre de son stage chez ML6 et supervisé par Jules Talloen.
>> Lire l'article de blog sur la plateforme Medium .

Postes connexes

Voir tout le contenu
Aucun résultat n'a été trouvé.
Il n'y a pas de résultats correspondant à ces critères. Essayez de modifier votre recherche.
Grand modèle linguistique
Modèles de fondation
Entreprise
Personnes
Données Structurées
Chat GPT
Durabilité
Voix et son
Développement frontal
Protection des données et sécurité
IA responsable/éthique
Infrastructure
Hardware et capteurs
MLOps
IA générative
Natural Language Processing
Vision par ordinateur