Comptage d’objets dans des régions avec Ultralytics YOLO26#
La solution RegionCounter d’Ultralytics YOLO26 suit les objets d’une image à l’autre dans une vidéo et, à chaque image, compte les objets dont le centre de la boîte englobante se trouve dans chacune des régions que tu définis. Chaque région est dessinée sur l’image avec son propre compteur en temps réel, ce qui te permet de surveiller plusieurs zones, comme des allées de magasin, des voies de circulation ou des zones de production, avec un seul appel Python ou une seule commande CLI.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
Pourquoi utiliser le comptage par région ?#
- Plusieurs zones en un seul passage : Transmets un dictionnaire de polygones nommés et chaque zone reçoit un comptage indépendant dessiné sur l’image, afin qu’un seul flux vidéo couvre toutes les zones qui t’intéressent.
- Suivi intégré : La solution exécute en interne la détection YOLO26 et le suivi des objets, sans nécessiter de pipeline de suivi distinct à mettre en place.
- Comptages lisibles par programmation : Chaque image traitée renvoie un objet de résultats contenant un dictionnaire des comptages par région, prêt à être utilisé pour des tableaux de bord, des alertes ou la journalisation.
Applications concrètes#
| Commerce de détail | Rues commerçantes |
|---|---|
![]() | ![]() |
| Comptage des personnes par région avec Ultralytics YOLO | Comptage de la foule par région avec Ultralytics YOLO |
Comment compter les objets dans des régions avec Ultralytics YOLO#
Exécute la solution RegionCounter sur une source vidéo depuis la CLI ou Python. Une région peut être une liste de points (une seule zone) ou un dictionnaire associant des noms de zones à des listes de points. L’exemple Python ci-dessous compte les objets dans deux régions nommées et écrit les images traitées dans un fichier vidéo de sortie :
# Run a region counting example
yolo solutions region show=True
# Pass a source video
yolo solutions region source="path/to/video.mp4"
# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Arguments de RegionCounter()#
Voici un tableau présentant les arguments de RegionCounter :
| 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 RegionCounter permet d’utiliser les paramètres de suivi des objets :
| 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. |
Les paramètres de visualisation suivants sont également pris en charge :
| 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. |
Fonctionnement du comptage par région#
La solution RegionCounter transforme chaque région transmise en polygone, avec au moins trois points par région. Une simple liste de points devient une zone unique nommée Region#01, tandis qu’un dictionnaire conserve tes propres noms de zones ; chaque zone est dessinée dans sa propre couleur de la palette Ultralytics. Chaque image est ensuite traitée en trois étapes :
- Le suivi YOLO26 détecte et suit chaque objet présent dans l'image
- Pour chaque objet suivi, la solution calcule le centre de la boîte englobante et vérifie dans quels polygones de région il se trouve
- Le comptage de chaque région est dessiné en son centre, puis les comptages sont réinitialisés avant l’image suivante
Comme les comptages redémarrent à chaque image, le nombre affiché pour une région correspond à son occupation actuelle, c’est-à-dire au nombre d’objets qui s’y trouvent à cet instant, et non à un total cumulé. Pour compter cumulativement les objets qui franchissent une limite, utilise plutôt la solution ObjectCounter.
Chaque appel renvoie également un objet de résultats dont l’attribut plot_im contient l’image annotée et dont le dictionnaire region_counts associe les noms de régions à leurs comptages, afin que tu puisses intégrer ces nombres à la logique de ta propre application.
Conclusion#
La solution RegionCounter d’Ultralytics YOLO26 surveille les comptages d’objets en temps réel dans autant de zones nommées que nécessaire, avec quelques lignes de code. Pour aller plus loin, compte les franchissements de limites avec le comptage d’objets, suis les objets dans une seule zone avec TrackZone ou explore les autres solutions Ultralytics.
FAQ#
Transmets l’argument
regionsous la forme d’un dictionnaire associant les noms de zones à des listes de points, comme dans l’exemple principal :from ultralytics import solutions region_points = { "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)], "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)], } regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)Chaque zone nommée est dessinée dans sa propre couleur avec un comptage indépendant.
L’objet renvoyé par chaque appel
regioncounter(im0)contient un dictionnaireregion_countsqui associe les noms de régions à leurs comptages, ainsi queplot_im(l’image annotée) ettotal_tracks(le nombre d’objets suivis). Affiche l’objet de résultats pour examiner tous les champs disponibles.Oui. Transmets l’argument
classesavec les indices des classes à conserver, par exempleclasses=[0]pour compter uniquement les personnes avec un modèle pré-entraîné sur COCO. La liste complète des arguments liés au suivi se trouve dans la section Arguments deRegionCounter().RegionCounterindique combien d’objets se trouvent dans chaque zone polygonale sur l’image actuelle, tandis qu’ObjectCounter compte cumulativement les objets lorsqu’ils franchissent une ligne ou la limite d’une région, en suivant les totaux des entrées et des sorties. UtiliseRegionCounterpour connaître l’occupation en temps réel d’une ou plusieurs zones etObjectCounterpour compter les entrées et les sorties ; les régions en forme de ligne sont prises en charge uniquement parObjectCounter.


Ultralytics YOLO26 compte les objets dans des régions en suivant chaque objet de l’image et en vérifiant si le centre de sa boîte englobante se trouve à l’intérieur de chaque polygone défini par l’utilisateur. Le comptage affiché pour une région correspond à son occupation actuelle sur cette image, et non à un total cumulé. Les options de configuration sont répertoriées dans la section Arguments de
RegionCounter().