TrackZone avec Ultralytics YOLO26#
Qu’est-ce que TrackZone ?#
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#
| 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 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.
- Chaque entrée de
regionest 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=Truependant la configuration afin de confirmer que la superposition correspond à ton flux. TrackZoneré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 :
| 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, 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_width | int | 2 | Épaisseur des lignes des boîtes, des points clés et des comptages dessinés par la solution. |
verbose | bool | True | Active 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 :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
tracker | str | 'botsort.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 union (IoU) pour filtrer les détections qui se chevauchent. |
classes | list | None | Filtre les résultats par 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 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_det | int | 300 | Nombre 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. |
quantize | int or str | None | Pré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 :
| 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 un aperçu du degré de certitude du modèle pour chaque détection. |
show_labels | bool | True | Affiche 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#
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
TrackZoneré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 pour Sortie type TrackZone Suivre les objets et surveiller l’occupation en direct à l’intérieur d’une seule zone convexe Identifiants suivis et total_trackspour la zoneObjectCounter Compter les objets qui franchissent une ligne ou entrent dans une région et en sortent Comptages cumulés des entrées et des sorties RegionCounter Compter les objets à l’intérieur d’une ou plusieurs régions arbitraires, y compris non convexes Comptages 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.


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.