Ultralytics YOLO27 :
Get Started

TrackZone avec Ultralytics YOLO26#

Qu’est-ce que TrackZone ?#

Open TrackZone In Colab

TrackZone est spécialisé dans la surveillance des objets à l’intérieur de zones définies dans une image, plutôt que dans l’image entière. Basé sur Ultralytics YOLO26, il intègre la détection et le suivi des objets dans des zones précises, pour les vidéos comme pour les flux de caméra en direct. Les algorithmes avancés et les technologies d’apprentissage profond de YOLO26 en font un excellent choix pour les applications en temps réel, avec un suivi d’objets précis et efficace dans des cas d’usage comme la surveillance des foules et la vidéosurveillance.



Regarder : Comment suivre des objets dans une zone avec Ultralytics YOLO26 | TrackZone 🚀

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

  • Analyse ciblée : Le suivi des objets dans des zones précises permet d’obtenir des informations plus ciblées et de surveiller et d’analyser avec précision les zones d’intérêt, comme les entrées ou les zones réglementées.
  • Réduction de la charge de travail en aval : En ignorant les objets situés hors de la zone, TrackZone élimine les détections non pertinentes. La logique que tu construis par-dessus doit donc compter, enregistrer ou signaler moins d’objets. La détection s’effectue toujours sur une image masquée en pleine résolution, et non sur un recadrage serré de la zone : le résultat est donc plus propre et ciblé, mais l’inférence du modèle n’est pas plus rapide.
  • Sécurité renforcée : Le suivi par zone améliore la vidéosurveillance en surveillant les zones critiques et en facilitant la détection précoce d’activités inhabituelles ou d’intrusions.
  • Solutions évolutives : La possibilité de se concentrer sur des zones précises rend TrackZone adaptable à divers contextes, des espaces commerciaux aux environnements industriels, et permet une intégration fluide ainsi qu’une grande é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 en fonction de 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 correspond bien au flux vidéo.

Définir la zone de suivi
  • Chaque entrée de region correspond à une coordonnée en pixels (x, y) dans l’image vidéo. Énumère les points dans l’ordre où ils doivent être reliés autour du périmètre de la zone à surveiller.
  • Les coordonnées dépendent de la résolution de l’image : une région définie pour un flux de 1280×720 ne sera pas alignée sur un flux de 640×480. Laisse show=True activé pendant la configuration afin de vérifier que la superposition correspond bien à ton flux.
  • TrackZone réduit les points à leur enveloppe convexe : une forme concave est donc simplifiée en le plus petit polygone convexe contenant tous ses points. Pour les formes non convexes ou plusieurs zones distinctes, utilise plutôt la solution RegionCounter.
  • Si tu omets complètement region, une zone par défaut [(75, 75), (565, 75), (565, 285), (75, 285)] est utilisée.

Arguments de TrackZone#

Voici un tableau des 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 : une liste de tuples (x, y) ou un dictionnaire associant des noms de régions à des listes de points pour plusieurs régions (uniquement RegionCounter). Si 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 compteurs dessinés par la solution.
verboseboolTrueActive le journal de la solution pour chaque image, qui indique la forme de l'entrée, le nombre d'éléments par classe et la vitesse de traitement. L'appel de suivi reste toujours silencieux.

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

ArgumentTypeValeur par défautDescription
trackerstr'tracktrack.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 l'union (IoU) utilisé pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats selon l'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 cible de l'image pour l'inférence : un entier pour une image carrée ou une paire (height, width). Les dimensions sont ajustées au stride du modèle.
max_detint300Nombre maximal de détections conservées par image avant le suivi, ce qui limite le nombre d'objets qu'une solution traite dans les scènes denses.
quantizeint or strNonePrécision d’inférence : 16 (FP16) ou 32/unset (FP32) pour les modèles PyTorch et TorchScript hors CPU ; les autres formats utilisent la précision définie par leur artefact et leur environnement d’exécution. Remplace l’argument half obsolète.

De plus, 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 une indication du degré de certitude du modèle pour chaque détection.
show_labelsboolTrueAffiche les étiquettes de chaque détection dans le résultat visuel. Permet d'identifier immédiatement les objets détectés.

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

Chaque appel au système de suivi renvoie un objet SolutionResults dont l’attribut total_tracks contient le nombre d’objets actuellement suivis dans la zone. Lis cet attribut à chaque image pour surveiller l’occupation en temps réel, par exemple pour enregistrer l’affluence à une entrée ou dans 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#

  • Avec Ultralytics YOLO26, suivre des objets dans une zone définie d’une image vidéo est simple. Utilise simplement la commande ci-dessous pour lancer le suivi. Cette méthode garantit une analyse efficace et des résultats précis. Elle est idéale pour des applications comme la vidéosurveillance, la gestion des foules ou tout autre 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 d’objets dans des zones précises 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 de 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, afin de contrôler précisément les zones à surveiller.

    from ultralytics import solutions
    
    # Définir les points de la région
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Initialiser TrackZone
    trackzone = solutions.TrackZone(
        show=True,  # afficher le résultat
        region=region_points,  # transmettre les points de la région
    )

    N’oublie pas que TrackZone réduit les points à leur enveloppe convexe : un contour concave est donc simplifié en le plus petit polygone convexe contenant tous ses points.

  • Ces trois solutions fonctionnent avec des régions, mais répondent à des besoins différents :

    SolutionÀ utiliser pourRésultat type
    TrackZoneSuivre les objets et surveiller l’occupation en temps réel dans une seule zone convexeIdentifiants des objets suivis et total_tracks pour la zone
    ObjectCounterCompter les objets qui franchissent une ligne ou entrent dans une région et en sortentTotaux cumulés des entrées et des sorties
    RegionCounterCompter les objets dans une ou plusieurs régions de forme quelconque, y compris non convexesNombre d’objets par région

    Choisis TrackZone pour suivre en continu les objets dans une seule zone, et RegionCounter si tu as besoin de plusieurs zones ou d’une forme non convexe.

Commentaires