Comptage d'objets à l'aide d'Ultralytics YOLO11
Qu'est-ce que le comptage d'objets ?
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 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 :
- Importer les bibliothèques nécessaires (
cv2
,ultralytics
). - Définir la région de comptage (par exemple, un polygone, une ligne, etc.).
- Configurer la capture vidéo et initialiser le compteur d'objets.
- 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 :
- 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.
- 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é.
- 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.
- 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 :
- 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.
- 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.
- 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.
- 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.