Comptage d'objets dans des régions avec Ultralytics YOLO26#
La RegionCounter solution dans Ultralytics YOLO26 suit les objets à travers les images vidéo et, à chaque image, compte les objets dont le centre de la boîte englobante tombe à l'intérieur de chaque région que tu définis. Chaque région est tracée sur l'image avec son propre décompte en direct, ce qui te permet de surveiller plusieurs zones, telles que les allées de magasins, les voies de circulation ou les 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 : Passe un dictionnaire de polygones nommés et chaque zone obtient un comptage indépendant tracé sur l'image, de sorte qu'un seul flux vidéo couvre chaque zone qui t'intéresse.
- Suivi intégré : La solution exécute la détection YOLO26 et le suivi d'objets en interne, il n'y a donc pas de pipeline de suivi séparé à configurer.
- Comptages lisibles par programmation : Chaque image traitée renvoie un objet de résultats contenant un dictionnaire des comptages par région, prêt pour des tableaux de bord, des alertes ou de la journalisation.
Applications dans le monde réel#
| Commerce de détail | Rues commerçantes |
|---|---|
![]() | ![]() |
| Comptage de personnes par région avec Ultralytics YOLO | Comptage de foule par région avec Ultralytics YOLO |
Comment compter des 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 qui mappe des noms de zone à 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 avec les arguments de RegionCounter :
| Argument | Type | Défaut | Description |
|---|---|---|---|
model | str | None | Chemin d'accès vers un fichier de modèle YOLO d'Ultralytics. |
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 des noms de région à des listes de points pour plusieurs régions (RegionCounter uniquement). Lorsque réglé sur None, les solutions nécessitant une région se replient sur une valeur par défaut prédéfinie. |
line_width | int | 2 | Épaisseur de ligne pour les boîtes, les points clés et les comptes tracés par la solution. |
verbose | bool | True | Active le journal par trame de la solution concernant la forme d'entrée, les comptes de classes et la vitesse de traitement. L'appel de suivi reste toujours silencieux. |
La solution RegionCounter permet l'utilisation des paramètres de suivi d'objets :
| Argument | Type | Défaut | Description |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Spécifie 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 pour les détections ; des valeurs plus faibles permettent de suivre plus d'objets, mais peuvent inclure des faux positifs. |
iou | float | 0.7 | Définit le seuil d'Intersection over Union (IoU) pour filtrer les détections qui se chevauchent. |
classes | list | None | Filtre les résultats par index de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées. |
device | str | None | Spécifie le périphérique pour l'inférence (par exemple, cpu, cuda:0 ou 0). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle. |
De plus, les paramètres de visualisation suivants sont pris en charge :
| Argument | Type | Défaut | Description |
|---|---|---|---|
show | bool | False | Si True, affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour visuel immédiat pendant le développement ou les tests. |
show_conf | bool | True | Affiche le score de confiance pour chaque détection à côté de l'étiquette. Donne un aperçu de la certitude du modèle pour chaque détection. |
show_labels | bool | True | Affiche les étiquettes pour chaque détection dans la sortie visuelle. Permet une compréhension immédiate des objets détectés. |
Comment fonctionne le comptage par région#
La RegionCounter solution transforme chaque région que tu transmettras en un 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 zone ; chaque zone est tracé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 dans l'image
- Pour chaque objet suivi, la solution calcule le centre de la bbox et vérifie quels polygones de région le contiennent
- Le comptage de chaque région est dessiné à son centre, et les comptages sont réinitialisés avant l'image suivante
Comme les décomptes recommencent à chaque image, le nombre affiché sur une région correspond à son occupation actuelle, c'est-à-dire combien d'objets s'y trouvent en ce moment, et non à un total cumulé. Pour compter cumulativement les objets traversant une limite, utilise plutôt la ObjectCounter solution.
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 décomptes, te permettant ainsi d'injecter ces chiffres dans ta propre logique applicative.
Conclusion#
La solution Ultralytics YOLO26 RegionCounter surveille le décompte d'objets en direct dans autant de zones nommées que tu en as besoin avec quelques lignes de code. Pour aller plus loin, compte les franchissements de limites avec le object counting, suis les objets à l'intérieur d'une seule zone avec TrackZone, ou explore les autres Ultralytics Solutions.
FAQ#
Transmets l'argument
regionsous forme de dictionnaire qui associe les noms de zones à des listes de points, comme dans le main example :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)transporte un dictionnaireregion_countsqui associe les noms de régions à leurs décomptes, aux côtés deplot_im(l'image annotée) ettotal_tracks(le nombre d'objets suivis). Affiche l'objet de résultats pour inspecter tous les champs disponibles.Oui. Transmets l'argument
classesavec les indices de 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 sectionRegionCounter()Arguments.RegionCountermontre combien d'objets se trouvent à l'intérieur de chaque zone polygonale sur l'image actuelle, tandis que ObjectCounter compte les objets de manière cumulative lorsqu'ils franchissent une ligne ou la limite d'une région, en suivant les totaux d'entrées et de sorties. UtiliseRegionCounterpour l'occupation en direct d'une ou plusieurs zones etObjectCounterpour le comptage des entrées et des sorties ; les régions en forme de ligne sont prises en charge uniquement parObjectCounter.


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