Ultralytics YOLO27 :

TrackZone avec Ultralytics YOLO26#

Qu’est-ce que TrackZone ?#

Open TrackZone In Colab

TrackZone est spécialisé dans la surveillance des objets au sein de zones désignées d’une image, plutôt que dans l’ensemble de celle-ci. Basé sur Ultralytics YOLO26, il intègre la détection et le suivi des objets spécifiquement dans des zones pour les vidéos et les flux de caméras en direct. Les algorithmes avancés et les technologies d’apprentissage profond de YOLO26 en font un choix idéal pour les cas d’utilisation en temps réel, en offrant un suivi précis et efficace des objets dans des applications telles que la surveillance des foules et la vidéosurveillance.



Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀

Avantages du suivi des objets dans des zones (TrackZone)#

  • Analyse ciblée : Le suivi des objets dans des zones spécifiques permet d’obtenir des informations plus ciblées et d’assurer une surveillance et une analyse précises des zones d’intérêt, telles que les points d’entrée ou les zones réglementées.
  • Réduction de la charge de travail en aval : En ignorant les objets situés à l’extérieur de la zone, TrackZone élimine les détections non pertinentes, ce qui réduit le nombre d’objets à compter, à consigner ou à signaler dans la logique que tu développes par-dessus. La détection s’exécute toujours sur une image masquée en taille réelle plutôt que sur un recadrage serré de la zone : le gain réside donc dans une sortie plus propre et plus ciblée, et non dans une inférence du modèle plus rapide.
  • Sécurité renforcée : Le suivi par zone améliore la surveillance en contrôlant les zones critiques, ce qui contribue à détecter rapidement les activités inhabituelles ou les failles de sécurité.
  • Solutions évolutives : La possibilité de se concentrer sur des zones spécifiques rend TrackZone adaptable à différents scénarios, des espaces de vente aux environnements industriels, tout en garantissant une intégration fluide et une bonne évolutivité.

Applications concrètes#

AgricultureTransport
Suivi des plantes dans un champ avec Ultralytics YOLO26Suivi des véhicules sur une route avec Ultralytics YOLO26
Suivi des plantes dans un champ avec Ultralytics YOLO26Suivi des véhicules sur une route avec Ultralytics YOLO26
TrackZone avec Ultralytics YOLO
# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True

# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"

TrackZone s’appuie sur la liste region pour déterminer quelle partie de l’image surveiller. Définis le polygone afin qu’il corresponde à la zone physique qui t’intéresse (portes, portails, etc.) et laisse show=True activé pendant la configuration afin de vérifier que la superposition s’aligne avec le flux vidéo.

Définir la zone de suivi
  • Chaque entrée de region est une coordonnée de pixel (x, y) dans l’image vidéo. Répertorie les points dans l’ordre dans lequel ils doivent être reliés autour du périmètre de la zone que tu veux surveiller.
  • Les coordonnées sont liées à la résolution de l’image : une région dimensionnée pour un flux 1280×720 ne s’alignera pas sur un flux 640×480. Conserve show=True pendant la configuration afin de confirmer que la superposition correspond à ton flux.
  • TrackZone réduit les points à leur enveloppe convexe, de sorte qu’une forme concave est simplifiée en un polygone convexe minimal contenant tous ses points. Pour les formes non convexes ou plusieurs zones distinctes, utilise plutôt la solution RegionCounter.
  • Si tu omets entièrement region, une zone par défaut de [(75, 75), (565, 75), (565, 285), (75, 285)] est utilisée.

Arguments de TrackZone#

Voici un tableau présentant les arguments de TrackZone :

ArgumentTypeValeur par défautDescription
modelstrNoneChemin vers un fichier de modèle Ultralytics YOLO.
regionlist ou dictNonePoints définissant la région d'intérêt, soit une liste de tuples (x, y), soit un dictionnaire associant les noms des régions à des listes de points pour plusieurs régions (RegionCounter uniquement). Lorsque None, les solutions qui nécessitent une région utilisent une région par défaut prédéfinie.
line_widthint2Épaisseur des lignes des boîtes, des points clés et des comptages dessinés par la solution.
verboseboolTrueActive le journal par image de la solution, qui indique la forme d'entrée, les comptages par classe et la vitesse de traitement. L'appel de suivi lui-même est toujours silencieux.

La solution TrackZone prend en charge les paramètres track :

ArgumentTypeValeur par défautDescription
trackerstr'botsort.yaml'Indique l'algorithme de suivi à utiliser. Options intégrées : botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Définit le seuil de confiance des détections ; des valeurs plus faibles permettent de suivre davantage d'objets, mais peuvent inclure des faux positifs.
ioufloat0.7Définit le seuil d'intersection sur union (IoU) pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
devicestrNoneIndique le périphérique utilisé pour l'inférence (par exemple, cpu, cuda:0 ou 0). Permet de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle.
imgszint or tuple640Taille de l'image d'inférence cible : un entier pour un carré ou une paire (height, width). Les formes sont ajustées au pas du modèle.
max_detint300Nombre maximal de détections conservées par image avant le suivi, ce qui limite les objets traités par une solution dans les scènes denses.
quantizeint or strNonePrécision de l'inférence : 16 (FP16) ou 32/non définie (FP32) pour les modèles PyTorch et TorchScript ; les autres formats s'exécutent à la précision sélectionnée par leur artefact et leur environnement d'exécution. Remplace l'indicateur déprécié half.

En outre, les options de visualisation suivantes sont disponibles :

ArgumentTypeValeur par défautDescription
showboolFalseSi True, affiche les images ou vidéos annotées dans une fenêtre. Utile pour obtenir un retour visuel immédiat pendant le développement ou les tests.
show_confboolTrueAffiche le score de confiance de chaque détection à côté de son étiquette. Donne un aperçu du degré de certitude du modèle pour chaque détection.
show_labelsboolTrueAffiche les étiquettes de chaque détection dans la sortie visuelle. Permet d’identifier immédiatement les objets détectés.

Compter les objets à l’intérieur de la zone#

Chaque appel au suiveur renvoie un objet SolutionResults dont l’attribut total_tracks contient le nombre d’objets actuellement suivis à l’intérieur de la zone. Lis cette valeur à chaque image pour surveiller l’occupation en direct, par exemple afin de consigner le niveau d’affluence d’un point d’entrée ou d’une zone réglementée :

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = trackzone(im0)
    print(f"Objects currently in zone: {results.total_tracks}")  # live zone occupancy

cap.release()

FAQ#

  • Le suivi des objets dans une zone ou un secteur défini d’une image vidéo est simple avec Ultralytics YOLO26. Utilise simplement la commande ci-dessous pour lancer le suivi. Cette approche garantit une analyse efficace et des résultats précis, ce qui la rend idéale pour des applications telles que la vidéosurveillance, la gestion des foules ou tout scénario nécessitant un suivi par zone.

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • Avec seulement quelques lignes de code, tu peux configurer le suivi des objets dans des zones spécifiques et l’intégrer facilement à tes projets.

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    assert cap.isOpened(), "Error reading video file"
    w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
    video_writer = cv2.VideoWriter("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
    trackzone = solutions.TrackZone(
        show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt"
    )
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = trackzone(im0)
        video_writer.write(results.plot_im)
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()
  • La configuration des points d’une zone pour le traitement vidéo avec Ultralytics TrackZone est simple et personnalisable. Tu peux définir et ajuster directement les zones dans un script Python, ce qui te permet de contrôler précisément les secteurs que tu veux surveiller.

    # Define region points
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Initialize trackzone
    trackzone = solutions.TrackZone(
        show=True,  # display the output
        region=region_points,  # pass region points
    )

    N’oublie pas que TrackZone réduit les points à leur enveloppe convexe : répertorie-les donc dans l’ordre autour du périmètre de la zone que tu veux surveiller.

  • Les trois solutions fonctionnent avec des régions, mais elles répondent à des questions différentes :

    SolutionÀ utiliser pourSortie type
    TrackZoneSuivre les objets et surveiller l’occupation en direct à l’intérieur d’une seule zone convexeIdentifiants suivis et total_tracks pour la zone
    ObjectCounterCompter les objets qui franchissent une ligne ou entrent dans une région et en sortentComptages cumulés des entrées et des sorties
    RegionCounterCompter les objets à l’intérieur d’une ou plusieurs régions arbitraires, y compris non convexesComptages d’objets par région

    Choisis TrackZone lorsque tu veux assurer un suivi continu dans une seule zone, et RegionCounter lorsque tu as besoin de plusieurs zones ou d’une forme non convexe.

Commentaires