Passer au contenu

Comptage d'objets à l'aide d'Ultralytics YOLO11

Qu'est-ce que le comptage d'objets ?

Ouvrir le comptage d'objets dans Colab

Le comptage d'objets avec Ultralytics YOLO11 implique l'identification et le comptage précis d'objets spécifiques dans des vidéos et des flux de caméras. YOLO11 excelle dans les applications en temps réel, fournissant un comptage d'objets efficace et précis pour divers scénarios tels que l'analyse de foule et la surveillance, grâce à ses algorithmes de pointe et à ses capacités de deep learning.



Regarder : Comment effectuer un comptage d'objets en temps réel avec Ultralytics YOLO11 🍏

Avantages du comptage d'objets

  • Optimisation des ressources : Le comptage d’objets facilite la gestion efficace des ressources en fournissant des décomptes précis, ce qui permet d’optimiser l’allocation des ressources dans des applications comme la gestion des stocks.
  • Sécurité renforcée : Le comptage d'objets améliore la sécurité et la surveillance en suivant et en comptant avec précision les entités, ce qui facilite la détection proactive des menaces.
  • Prise de décision éclairée : Le comptage d'objets offre des informations précieuses pour la prise de décision, l'optimisation des processus dans le commerce de détail, la gestion du trafic et divers autres domaines.

Applications concrètes

Logistique Aquaculture
Comptage de paquets sur une bande transporteuse à l'aide d'Ultralytics YOLO11 Comptage de poissons en mer à l'aide d'Ultralytics YOLO11
Comptage de paquets sur une bande transporteuse à l'aide d'Ultralytics YOLO11 Comptage de poissons en mer à l'aide d'Ultralytics YOLO11

Comptage d'objets à l'aide d'Ultralytics YOLO

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video.mp4"

# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# region_points = [(20, 400), (1080, 400)]                                      # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]   # polygon region

# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize object counter object
counter = solutions.ObjectCounter(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes i.e. person and car with COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers i.e "bytetrack.yaml"
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = counter(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

ObjectCounter Arguments

Voici un tableau avec les ObjectCounter arguments :

Argument Type Par défaut Description
model str None Chemin d'accès au fichier de modèle Ultralytics YOLO.
show_in bool True Indicateur pour contrôler l'affichage des comptes entrants sur le flux vidéo.
show_out bool True Indicateur pour contrôler l'affichage des comptes sortants sur le flux vidéo.
region list '[(20, 400), (1260, 400)]' Liste des points définissant la région de comptage.

L'argument ObjectCounter la solution permet l'utilisation de plusieurs track arguments :

Argument Type Par défaut Description
tracker str 'botsort.yaml' Spécifie l'algorithme de suivi à utiliser, par exemple, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Définit le seuil de confiance pour les détections ; des valeurs plus basses permettent de suivre plus d'objets, mais peuvent inclure de faux positifs.
iou float 0.5 Définit le seuil Intersection sur 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] suit uniquement les classes spécifiées.
verbose bool True Contrôle l'affichage des résultats de suivi, fournissant une sortie visuelle des objets suivis.
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 arguments de visualisation énumérés ci-dessous sont pris en charge :

Argument Type Par 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.
line_width None or int None Spécifie la largeur de ligne des boîtes englobantes. Si None, la largeur de ligne est automatiquement ajustée en fonction de la taille de l'image. Fournit une personnalisation visuelle pour plus de clarté.
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. Fournit une compréhension immédiate des objets détectés.

FAQ

Comment compter des objets dans une vidéo à l'aide d'Ultralytics YOLO11 ?

Pour compter les objets dans une vidéo à l'aide d'Ultralytics YOLO11, vous pouvez suivre ces étapes :

  1. Importer les bibliothèques nécessaires (cv2, ultralytics).
  2. Définir la région de comptage (par exemple, un polygone, une ligne, etc.).
  3. Configurer la capture vidéo et initialiser le compteur d'objets.
  4. Traiter chaque image pour suivre les objets et les compter dans la région définie.

Voici un exemple simple pour compter dans une région :

import cv2

from ultralytics import solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    cap = cv2.VideoCapture(video_path)
    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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
    counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

Pour des configurations et des options plus avancées, consultez la solution RegionCounter pour compter les objets dans plusieurs régions simultanément.

Quels sont les avantages de l'utilisation d'Ultralytics YOLO11 pour le comptage d'objets ?

L'utilisation d'Ultralytics YOLO11 pour le comptage d'objets offre plusieurs avantages :

  1. Optimisation des ressources : Elle facilite la gestion efficace des ressources en fournissant des décomptes précis, ce qui permet d’optimiser l’allocation des ressources dans des secteurs comme la gestion des stocks.
  2. Sécurité renforcée : Elle améliore la sécurité et la surveillance en suivant et en comptant avec précision les entités, ce qui facilite la détection proactive des menaces et les systèmes de sécurité.
  3. Prise de décision éclairée : elle offre des informations précieuses pour la prise de décision, optimisant ainsi les processus dans des domaines tels que la vente au détail, la gestion du trafic, etc.
  4. Traitement en temps réel : L'architecture de YOLO11 permet une inférence en temps réel, ce qui le rend approprié pour les flux vidéo en direct et les applications nécessitant une réponse rapide.

Pour des exemples d'implémentation et des applications pratiques, explorez la solution TrackZone pour le suivi d'objets dans des zones spécifiques.

Comment puis-je compter des classes d'objets spécifiques à l'aide d'Ultralytics YOLO11 ?

Pour compter des classes d’objets spécifiques à l’aide d’Ultralytics YOLO11, vous devez spécifier les classes qui vous intéressent pendant la phase de suivi. Vous trouverez ci-dessous un exemple en python :

import cv2

from ultralytics import solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    cap = cv2.VideoCapture(video_path)
    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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    line_points = [(20, 400), (1080, 400)]
    counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

Dans cet exemple, classes_to_count=[0, 2] signifie qu'il compte les objets de la classe 0 et 2 (par exemple, personne et voiture dans l'ensemble de données COCO). Vous pouvez trouver plus d'informations sur les indices de classe dans le Documentation du dataset COCO.

Pourquoi devrais-je utiliser YOLO11 plutôt que d’autres modèles de détection d’objets pour les applications en temps réel ?

Ultralytics YOLO11 offre plusieurs avantages par rapport aux autres modèles de détection d'objets tels que Faster R-CNN, SSD et les versions précédentes de YOLO :

  1. Vitesse et efficacité : YOLO11 offre des capacités de traitement en temps réel, ce qui le rend idéal pour les applications nécessitant une inférence à haute vitesse, telles que la surveillance et la conduite autonome.
  2. Précision : il offre une précision de pointe pour les tâches de détection et de suivi d’objets, réduisant ainsi le nombre de faux positifs et améliorant la fiabilité globale du système.
  3. Facilité d'intégration : YOLO11 offre une intégration transparente avec diverses plateformes et appareils, y compris les appareils mobiles et de périphérie, ce qui est essentiel pour les applications d'IA modernes.
  4. Flexibilité : Prend en charge diverses tâches telles que la détection d’objets, la segmentation et le suivi avec des modèles configurables pour répondre aux exigences spécifiques des cas d’utilisation.

Consultez la documentation YOLO11 d’Ultralytics pour un examen plus approfondi de ses fonctionnalités et des comparaisons de performances.

Puis-je utiliser YOLO11 pour des applications avancées telles que l'analyse de foule et la gestion du trafic ?

Oui, Ultralytics YOLO11 est parfaitement adapté aux applications avancées telles que l’analyse de la foule et la gestion du trafic en raison de ses capacités de détection en temps réel, de son évolutivité et de sa flexibilité d’intégration. Ses fonctionnalités avancées permettent un suivi, un comptage et une classification d’objets de haute précision dans des environnements dynamiques. Voici des exemples de cas d’utilisation :

  • Analyse de foule : Surveillez et gérez les grands rassemblements, en assurant la sécurité et en optimisant la circulation des foules grâce au comptage basé sur les régions.
  • Gestion du trafic : Suivez et comptez les véhicules, analysez les modèles de trafic et gérez la congestion en temps réel grâce aux capacités d’estimation de la vitesse.
  • Analyse de vente au détail : Analysez les schémas de déplacement des clients et les interactions avec les produits afin d’optimiser la disposition des magasins et d’améliorer l’expérience client.
  • Automatisation industrielle : Compter les produits sur les bandes transporteuses et surveiller les lignes de production pour le contrôle qualité et l'amélioration de l'efficacité.

Pour des applications plus spécialisées, explorez les Solutions Ultralytics pour un ensemble complet d'outils conçus pour les défis de vision par ordinateur du monde réel.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 4 mois

Commentaires