Point Tracking
Le suivi de points suit les points choisis dans une vidéo et indique où se trouve chacun d’eux dans chaque image, ainsi que s’il est visible. Découvre les méthodes, les modèles et les usages.
Le suivi de points est une tâche de vision par ordinateur qui consiste à suivre des points individuels dans une vidéo : à partir d’un point de requête dans une image, par exemple une tache sur une manche ou le coin d’une fenêtre, un outil de suivi estime où apparaît ce même point physique dans chaque autre image et s’il est visible. Les recherches récentes parlent de suivi de n’importe quel point (TAP), car le point de requête peut être n’importe quel pixel plutôt qu’un point clé prédéfini. Le suivi de points suit un ensemble clairsemé de points dans de nombreuses images, y compris lorsqu’ils sont occultés ; il se distingue ainsi du suivi d’objets, qui suit des objets entiers sous forme de boîtes englobantes avec des identifiants, et du flux optique, qui estime le mouvement de chaque pixel entre deux images consécutives.
Fonctionnement du suivi de points#
Le suivi classique Kanade-Lucas-Tomasi (KLT) sélectionne des coins présentant une texture marquée dans deux directions — les « bonnes caractéristiques à suivre » de Shi-Tomasi — puis retrouve chacun d’eux dans l’image suivante en calculant le petit décalage qui aligne le mieux le patch qui l’entoure, à l’aide d’une pyramide d’images pour gérer les mouvements plus importants. OpenCV implémente les deux étapes :
import cv2
import numpy as np
# Read an overhead clip of people walking and pick 300 corners in its first frame
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4")
prev = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
points = cv2.goodFeaturesToTrack(prev, maxCorners=300, qualityLevel=0.01, minDistance=5)
start = points.copy()
# Follow every point frame to frame with pyramidal Lucas-Kanade optical flow
while (frame := cap.read()[1]) is not None:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
points, status, _ = cv2.calcOpticalFlowPyrLK(prev, gray, points, None)
found = status.ravel() == 1 # keep only the points found again
points, start, prev = points[found], start[found], gray
distance = np.linalg.norm(points - start, axis=-1)
print(f"{len(points)} of 300 points tracked to the last frame, median shift {np.median(distance):.1f} px")Il affiche 292 of 300 points tracked to the last frame, median shift 28.7 px : sur les 62 images de la séquence, le suivi perd 8 points et les autres terminent à une distance médiane de 28,7 pixels de leur position initiale. KLT ne compare que des images consécutives, si bien que les petites erreurs s’accumulent, et il ne tient pas compte des occultations : un point au sol masqué par un passant peut glisser sur celui-ci et continuer à être signalé.
Outils de suivi de points appris#
Les outils de suivi par apprentissage profond analysent plusieurs images à la fois et prédisent une position et un indicateur de visibilité pour chacune. Le benchmark TAP-Vid a défini la tâche en 2022 à l’aide de vidéos réelles dont les trajectoires de points ont été annotées manuellement. PIPs (2022) affine la trajectoire d’un point sur des fenêtres d’images pour franchir de brèves occultations, tandis que TAPIR (2023) commence par comparer les caractéristiques du point de requête à chaque image, puis affine le suivi à l’aide du contexte temporel. Le CoTracker de Meta suit conjointement de nombreux points avec un transformeur, de sorte que les points d’un même objet s’entraident lorsque l’un d’eux est masqué. Les trajectoires annotées dans des vidéos réelles sont rares ; CoTracker3 (2024) s’entraîne donc sur des vidéos synthétiques, puis sur des vidéos réelles étiquetées par pseudo-annotation par d’autres outils de suivi, et obtient de meilleurs résultats que les outils précédents entraînés sur 1 000 fois plus de données.
Applications concrètes#
Le mode suivi d’Ultralytics utilise le suivi de points pour annuler les mouvements de caméra dans le suivi multi-objets : son outil de suivi par défaut TrackTrack et BoT-SORT détectent jusqu’à 400 coins par image, les suivent avec le flux de Lucas-Kanade pyramidal et ajustent une rotation, une échelle et une translation avec RANSAC (gmc_method: sparseOptFlow), puis décalent la boîte prédite de chaque trajectoire avant de l’associer aux nouvelles détections YOLO26.
- Effets visuels : Le suivi de points pour la mise en correspondance de mouvements suit des points dans une scène afin que les éléments graphiques ajoutés restent ancrés aux surfaces ; la stabilisation annule les mouvements de caméra révélés par les points suivis.
- Reconstruction 3D : La structure à partir du mouvement et la localisation et cartographie simultanées visuelles (SLAM) triangulent les points suivis d’une image à l’autre pour retrouver les poses de caméra et la géométrie de la scène.
- Apprentissage robotique : La modélisation de trajectoires à partir de points quelconques prédit le déplacement des points de la scène pendant une tâche et convertit ces trajectoires en actions robotiques ; elle dépasse d’environ 80 % en moyenne les modèles de référence préentraînés sur vidéo sur plus de 130 tâches.










