Ultralytics YOLO27 :

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étailRues commerçantes
Ultralytics YOLO comptant les personnes à l’intérieur de régions polygonales dessinées dans un magasinComptages par région d’Ultralytics YOLO superposés à une rue commerçante très fréquentée
Comptage des personnes par région avec Ultralytics YOLOComptage 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 :

Comptage par région 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 présentant les arguments de RegionCounter :

ArgumentTypeValeur par défautDescription
modelstrNoneChemin vers un fichier de modèle Ultralytics YOLO.
regionlist ou dictNonePoints 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_widthint2Épaisseur des lignes des boîtes, des points clés et des comptages dessinés par la solution.
verboseboolTrueActive 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 :

ArgumentTypeValeur par défautDescription
trackerstr'botsort.yaml'Indique 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 des détections ; des valeurs plus faibles permettent de suivre davantage d'objets, mais peuvent inclure des faux positifs.
ioufloat0.7Définit le seuil d'intersection sur union (IoU) pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
devicestrNoneIndique 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.
imgszint or tuple640Taille 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_detint300Nombre 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.
quantizeint or strNonePré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 :

ArgumentTypeValeur par défautDescription
showboolFalseSi 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_confboolTrueAffiche 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_labelsboolTrueAffiche 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 :

  1. Le suivi YOLO26 détecte et suit chaque objet présent dans l'image
  2. 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
  3. 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#

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

  • Transmets l’argument region sous 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 dictionnaire region_counts qui associe les noms de régions à leurs comptages, ainsi que plot_im (l’image annotée) et total_tracks (le nombre d’objets suivis). Affiche l’objet de résultats pour examiner tous les champs disponibles.

  • Oui. Transmets l’argument classes avec les indices des 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 Arguments de RegionCounter().

  • RegionCounter indique 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. Utilise RegionCounter pour connaître l’occupation en temps réel d’une ou plusieurs zones et ObjectCounter pour compter les entrées et les sorties ; les régions en forme de ligne sont prises en charge uniquement par ObjectCounter.

Commentaires