YOLO Vision 2026 :

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étailRues commerçantes
Ultralytics YOLO counting people inside drawn polygon regions in a retail storeUltralytics YOLO region counts overlaid on a crowded market street
Comptage de personnes par région avec Ultralytics YOLOComptage 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 :

Comptage par zones avec Ultralytics YOLO
# 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 :

ArgumentTypeDéfautDescription
modelstrNoneChemin d'accès vers un fichier de modèle YOLO d'Ultralytics.
regionlist ou dictNonePoints 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_widthint2Épaisseur de ligne pour les boîtes, les points clés et les comptes tracés par la solution.
verboseboolTrueActive 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 :

ArgumentTypeDéfautDescription
trackerstr'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.
conffloat0.25Dé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.
ioufloat0.7Définit le seuil d'Intersection over Union (IoU) pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats par index de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
devicestrNoneSpé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 :

ArgumentTypeDéfautDescription
showboolFalseSi 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_confboolTrueAffiche 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_labelsboolTrueAffiche 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 :

  1. Le suivi YOLO26 détecte et suit chaque objet dans l'image
  2. Pour chaque objet suivi, la solution calcule le centre de la bbox et vérifie quels polygones de région le contiennent
  3. 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#

  • 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.

  • Transmets l'argument region sous 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 dictionnaire region_counts qui associe les noms de régions à leurs décomptes, aux côtés de plot_im (l'image annotée) et total_tracks (le nombre d'objets suivis). Affiche l'objet de résultats pour inspecter tous les champs disponibles.

  • Oui. Transmets l'argument classes avec les indices de classes à conserver, par exemple classes=[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 RegionCounter() Arguments.

  • RegionCounter montre 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. Utilise RegionCounter pour l'occupation en direct d'une ou plusieurs zones et ObjectCounter pour le comptage des entrées et des sorties ; les régions en forme de ligne sont prises en charge uniquement par ObjectCounter.

Commentaires