TrackZone avec Ultralytics YOLO26#
Qu’est-ce que TrackZone ?#
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#
| Agriculture | Transport |
|---|---|
![]() | ![]() |
| Suivi des plantes dans un champ avec Ultralytics YOLO26 | Suivi des véhicules sur une route avec Ultralytics YOLO26 |
# 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.
- Chaque entrée de
regioncorrespond à 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=Trueactivé pendant la configuration afin de vérifier que la superposition correspond bien à ton flux. TrackZoneré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 :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
model | str | None | Chemin vers un fichier de modèle Ultralytics YOLO. |
region | list ou dict | None | Points 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_width | int | 2 | Épaisseur des lignes des boîtes, des points clés et des compteurs dessinés par la solution. |
verbose | bool | True | Active 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 :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Indique l'algorithme de suivi à utiliser. Options intégrées : botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Définit le seuil de confiance des détections ; des valeurs plus faibles permettent de suivre davantage d'objets, mais peuvent inclure des faux positifs. |
iou | float | 0.7 | Définit le seuil d'intersection sur l'union (IoU) utilisé pour filtrer les détections qui se chevauchent. |
classes | list | None | Filtre les résultats selon l'indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées. |
device | str | None | Indique 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. |
imgsz | int or tuple | 640 | Taille 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_det | int | 300 | Nombre 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. |
quantize | int or str | None | Pré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 :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
show | bool | False | Si 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_conf | bool | True | Affiche 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_labels | bool | True | Affiche 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=TrueAvec 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
TrackZoneré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 pour Résultat type TrackZone Suivre les objets et surveiller l’occupation en temps réel dans une seule zone convexe Identifiants des objets suivis et total_trackspour la zoneObjectCounter Compter les objets qui franchissent une ligne ou entrent dans une région et en sortent Totaux cumulés des entrées et des sorties RegionCounter Compter les objets dans une ou plusieurs régions de forme quelconque, y compris non convexes Nombre 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.

