ObjektzÀhlung mit Ultralytics YOLO11
Was ist ObjektzÀhlung?
ObjektzĂ€hlung mit Ultralytics YOLO11 beinhaltet die genaue Identifizierung und ZĂ€hlung spezifischer Objekte in Videos und Kamerastreams. YOLO11 zeichnet sich durch Echtzeitanwendungen aus und bietet dank seiner hochmodernen Algorithmen und Deep-Learning-FĂ€higkeiten eine effiziente und prĂ€zise ObjektzĂ€hlung fĂŒr verschiedene Szenarien wie die Analyse von Menschenmengen und Ăberwachung.
Beobachten: ObjektzÀhlung mit Ultralytics YOLOv8 |
Beobachten: Klassenweise ObjektzÀhlung mit Ultralytics YOLO11 |
Vorteile der ObjektzÀhlung?
- Ressourcen-Optimierung: Das ZÀhlen von Objekten erleichtert eine effiziente Ressourcenverwaltung, indem es genaue ZÀhlungen ermöglicht und die Ressourcenzuweisung in Anwendungen wie der Bestandsverwaltung optimiert.
- Erhöhte Sicherheit: Die ObjektzĂ€hlung verbessert die Sicherheit und Ăberwachung, indem sie Objekte genau verfolgt und zĂ€hlt und so zur proaktiven Erkennung von Bedrohungen beitrĂ€gt.
- Informierte Entscheidungsfindung: Die ObjektzĂ€hlung bietet wertvolle Erkenntnisse fĂŒr die Entscheidungsfindung und die Optimierung von Prozessen im Einzelhandel, im Verkehrsmanagement und in verschiedenen anderen Bereichen.
Anwendungen in der realen Welt
Logistik | Aquakultur |
---|---|
Förderband-PaketzÀhlung mit Ultralytics YOLO11 | FischzÀhlung im Meer mit Ultralytics YOLO11 |
ObjektzÀhlung mit YOLO11 Beispiel
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
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))
# Define region points
# region_points = [(20, 400), (1080, 400)] # For line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # For rectangle region counting
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # For polygon region counting
# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init Object Counter
counter = solutions.ObjectCounter(
show=True, # Display the output
region=region_points, # Pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
# classes=[0, 2], # If you want to count specific classes i.e person and car with COCO pretrained model.
# show_in=True, # Display in counts
# show_out=True, # Display out counts
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = counter.count(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Argument ObjectCounter
Hier ist eine Tabelle mit den ObjectCounter
Argumente:
Name | Typ | Standard | Beschreibung |
---|---|---|---|
model |
str |
None |
Pfad zu Ultralytics YOLO Modelldatei |
region |
list |
[(20, 400), (1260, 400)] |
Liste der Punkte, die den ZĂ€hlbereich definieren. |
line_width |
int |
2 |
LinienstĂ€rke fĂŒr Begrenzungsrahmen. |
show |
bool |
False |
Flagge zur Steuerung, ob der Videostream angezeigt werden soll. |
show_in |
bool |
True |
Kennzeichen, mit dem gesteuert wird, ob die ZĂ€hlungen im Videostrom angezeigt werden sollen. |
show_out |
bool |
True |
Kennzeichen, mit dem gesteuert wird, ob die Anzahl der AusgÀnge im Video-Stream angezeigt werden soll. |
Argumente model.track
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
source |
str |
None |
Gibt das Quellverzeichnis fĂŒr Bilder oder Videos an. UnterstĂŒtzt Dateipfade und URLs. |
persist |
bool |
False |
Ermöglicht die dauerhafte Verfolgung von Objekten zwischen Einzelbildern, wobei IDs ĂŒber Videosequenzen hinweg beibehalten werden. |
tracker |
str |
botsort.yaml |
Gibt den zu verwendenden Verfolgungsalgorithmus an, z. B., bytetrack.yaml oder botsort.yaml . |
conf |
float |
0.3 |
Legt die Konfidenzschwelle fĂŒr Erkennungen fest; niedrigere Werte ermöglichen die Verfolgung von mehr Objekten, können aber auch zu falsch positiven Ergebnissen fĂŒhren. |
iou |
float |
0.5 |
Legt den Schwellenwert fĂŒr die Ăberschneidung ĂŒber die Vereinigung (IoU) zum Filtern von ĂŒberlappenden Erkennungen fest. |
classes |
list |
None |
Filtert die Ergebnisse nach Klassenindex. Zum Beispiel, classes=[0, 2, 3] verfolgt nur die angegebenen Klassen. |
verbose |
bool |
True |
Steuert die Anzeige der Verfolgungsergebnisse und liefert eine visuelle Ausgabe der verfolgten Objekte. |
FAQ
Wie zÀhle ich Objekte in einem Video mit Ultralytics YOLO11 ?
Zum ZĂ€hlen von Objekten in einem Video mit Ultralytics YOLO11 können Sie die folgenden Schritte ausfĂŒhren:
- Importieren Sie die erforderlichen Bibliotheken (
cv2
,ultralytics
). - Definieren Sie den ZĂ€hlbereich (z. B. ein Polygon, eine Linie usw.).
- Richten Sie die Videoaufnahme ein und initialisieren Sie den ObjektzÀhler.
- Verarbeiten Sie jedes Einzelbild, um Objekte zu verfolgen und sie innerhalb des festgelegten Bereichs zu zÀhlen.
Hier ist ein einfaches Beispiel fĂŒr die ZĂ€hlung in einer Region:
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 video processing has been successfully completed.")
break
im0 = counter.count(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")
Weitere Konfigurationen und Optionen finden Sie im Abschnitt ObjektzÀhlung.
Welche Vorteile bietet die Verwendung von Ultralytics YOLO11 fĂŒr die ObjektzĂ€hlung?
Die Verwendung von Ultralytics YOLO11 fĂŒr die ObjektzĂ€hlung bietet mehrere Vorteile:
- Ressourcen-Optimierung: Es erleichtert ein effizientes Ressourcenmanagement, indem es genaue ZĂ€hlungen liefert und so die Ressourcenzuweisung in Branchen wie der Bestandsverwaltung optimiert.
- Erhöhte Sicherheit: Es verbessert die Sicherheit und Ăberwachung durch genaue Verfolgung und ZĂ€hlung von Personen und hilft bei der proaktiven Erkennung von Bedrohungen.
- Informierte Entscheidungsfindung: Sie bietet wertvolle Erkenntnisse fĂŒr die Entscheidungsfindung und optimiert Prozesse in Bereichen wie Einzelhandel, Verkehrsmanagement und mehr.
Praktische Anwendungen und Codebeispiele finden Sie im Abschnitt Vorteile der ObjektzÀhlung.
Wie kann ich mit Ultralytics YOLO11 bestimmte Klassen von Objekten zÀhlen?
Um bestimmte Klassen von Objekten mit Ultralytics YOLO11 zu zĂ€hlen, mĂŒssen Sie die Klassen, an denen Sie interessiert sind, wĂ€hrend der Verfolgungsphase angeben. Nachfolgend finden Sie ein Python Beispiel:
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 video processing has been successfully completed.")
break
im0 = counter.count(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])
In diesem Beispiel, classes_to_count=[0, 2]
d.h. es werden Objekte der Klasse 0
und 2
(z. B. Person und Auto).
Warum sollte ich YOLO11 gegenĂŒber anderen Objekterkennungsmodellen fĂŒr Echtzeitanwendungen verwenden?
Ultralytics YOLO11 bietet mehrere Vorteile gegenĂŒber anderen Objekterkennungsmodellen wie Faster R-CNN, SSD und frĂŒheren Versionen von YOLO :
- Geschwindigkeit und Effizienz: YOLO11 bietet Echtzeitverarbeitungsfunktionen und ist damit ideal fĂŒr Anwendungen, die Hochgeschwindigkeitsinferenzen erfordern, wie z. B. Ăberwachung und autonomes Fahren.
- Genauigkeit: Es bietet modernste Genauigkeit bei der Objekterkennung und -verfolgung, reduziert die Anzahl der Fehlalarme und verbessert die ZuverlÀssigkeit des Systems insgesamt.
- Einfache Integration: YOLO11 bietet eine nahtlose Integration mit verschiedenen Plattformen und GerĂ€ten, einschlieĂlich Mobil- und Edge-GerĂ€ten, was fĂŒr moderne KI-Anwendungen entscheidend ist.
- Flexibel: UnterstĂŒtzt verschiedene Aufgaben wie Objekterkennung, -segmentierung und -verfolgung mit konfigurierbaren Modellen zur ErfĂŒllung spezifischer AnwendungsfĂ€lle.
Unter Ultralytics YOLO11 finden Sie eine ausfĂŒhrlicheDokumentation ĂŒber die Funktionen und Leistungsvergleiche.
Kann ich YOLO11 fĂŒr fortgeschrittene Anwendungen wie Crowd-Analyse und Verkehrsmanagement verwenden?
Ja, Ultralytics YOLO11 eignet sich aufgrund seiner Echtzeit-Erkennungsfunktionen, seiner Skalierbarkeit und seiner IntegrationsflexibilitĂ€t perfekt fĂŒr fortschrittliche Anwendungen wie die Analyse von Menschenmengen und das Verkehrsmanagement. Seine fortschrittlichen Funktionen ermöglichen eine hochprĂ€zise Objektverfolgung, ZĂ€hlung und Klassifizierung in dynamischen Umgebungen. Beispiele fĂŒr AnwendungsfĂ€lle sind:
- Analyse von Menschenansammlungen: Ăberwachen und verwalten Sie groĂe Versammlungen, um die Sicherheit zu gewĂ€hrleisten und den Menschenstrom zu optimieren.
- Verkehrsmanagement: Verfolgen und zÀhlen Sie Fahrzeuge, analysieren Sie Verkehrsmuster und verwalten Sie Staus in Echtzeit.
Weitere Informationen und Details zur Implementierung finden Sie im Leitfaden Real World Applications of object counting with YOLO11.