Zum Inhalt springen

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
Förderband-PaketzÀhlung mit Ultralytics YOLO11 FischzÀhlung im Meer mit Ultralytics YOLO11

ObjektzÀhlung mit YOLO11 Beispiel

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video/file.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/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:

  1. Importieren Sie die erforderlichen Bibliotheken (cv2, ultralytics).
  2. Definieren Sie den ZĂ€hlbereich (z. B. ein Polygon, eine Linie usw.).
  3. Richten Sie die Videoaufnahme ein und initialisieren Sie den ObjektzÀhler.
  4. 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:

  1. Ressourcen-Optimierung: Es erleichtert ein effizientes Ressourcenmanagement, indem es genaue ZĂ€hlungen liefert und so die Ressourcenzuweisung in Branchen wie der Bestandsverwaltung optimiert.
  2. 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.
  3. 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 :

  1. Geschwindigkeit und Effizienz: YOLO11 bietet Echtzeitverarbeitungsfunktionen und ist damit ideal fĂŒr Anwendungen, die Hochgeschwindigkeitsinferenzen erfordern, wie z. B. Überwachung und autonomes Fahren.
  2. Genauigkeit: Es bietet modernste Genauigkeit bei der Objekterkennung und -verfolgung, reduziert die Anzahl der Fehlalarme und verbessert die ZuverlÀssigkeit des Systems insgesamt.
  3. 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.
  4. 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.

📅 Erstellt vor 1 Jahr ✏ Aktualisiert vor 16 Tagen

Kommentare