Zum Inhalt springen

Objektzählung mit Ultralytics YOLO11

Was ist Objekterkennung?

Open Object Counting In Colab

Die Objektzählung mit Ultralytics YOLO11 umfasst die genaue Identifizierung und Zählung bestimmter Objekte in Videos und Kamerastreams. YOLO11 zeichnet sich durch Echtzeitanwendungen aus und bietet eine effiziente und präzise Objektzählung für verschiedene Szenarien wie Crowd-Analyse und Überwachung, dank seiner hochmodernen Algorithmen und Deep-Learning-Funktionen.



Ansehen: Wie man Objekterkennung in Echtzeit mit Ultralytics YOLO11 durchführt 🍏

Vorteile der Objekterkennung

  • Ressourcenoptimierung: Die Objektzählung ermöglicht ein effizientes Ressourcenmanagement durch die Bereitstellung genauer Zählungen und optimiert die Ressourcenzuweisung in Anwendungen wie dem Bestandsmanagement.
  • Erhöhte Sicherheit: Die Objektzählung verbessert die Sicherheit und Überwachung durch die genaue Verfolgung und Zählung von Entitäten und unterstützt so die proaktive Bedrohungserkennung.
  • Fundierte Entscheidungsfindung: Die Objektzählung bietet wertvolle Einblicke für die Entscheidungsfindung und optimiert Prozesse im Einzelhandel, im Verkehrsmanagement und in verschiedenen anderen Bereichen.

Anwendungen in der realen Welt

Logistik Aquakultur
Zählen von Paketen auf einem Förderband mit Ultralytics YOLO11 Fischzählung im Meer mit Ultralytics YOLO11
Zählen von Paketen auf einem Förderband mit Ultralytics YOLO11 Fischzählung im Meer mit Ultralytics YOLO11

Objektzählung mit 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 Argumente

Hier ist eine Tabelle mit den ObjectCounter Argumente:

Argument Typ Standard Beschreibung
model str None Pfad zur Ultralytics YOLO Modelldatei.
show_in bool True Flag zur Steuerung, ob die In-Zählungen im Videostream angezeigt werden sollen.
show_out bool True Flag zur Steuerung, ob die Out-Zählungen im Videostream angezeigt werden sollen.
region list '[(20, 400), (1260, 400)]' Liste der Punkte, die den Zählbereich definieren.

Die ObjectCounter Lösung ermöglicht die Verwendung von mehreren track Argumente:

Argument Typ Standard Beschreibung
tracker str 'botsort.yaml' Gibt den zu verwendenden Tracking-Algorithmus an, z. B. bytetrack.yaml oder botsort.yaml.
conf float 0.3 Legt den Konfidenzschwellenwert für Erkennungen fest; niedrigere Werte ermöglichen die Verfolgung von mehr Objekten, können aber auch falsch positive Ergebnisse liefern.
iou float 0.5 Legt den Intersection over Union (IoU)-Schwellenwert zum Filtern überlappender Erkennungen fest.
classes list None Filtert Ergebnisse nach Klassenindex. Zum Beispiel, classes=[0, 2, 3] verfolgt nur die angegebenen Klassen.
verbose bool True Steuert die Anzeige der Tracking-Ergebnisse und bietet eine visuelle Ausgabe der verfolgten Objekte.
device str None Gibt das Gerät für die Inferenz an (z. B. cpu, cuda:0 oder 0). Ermöglicht es Benutzern, zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten für die Modellausführung zu wählen.

Zusätzlich werden die unten aufgeführten Visualisierungsargumente unterstützt:

Argument Typ Standard Beschreibung
show bool False Wenn Trueaktiviert, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens.
line_width None or int None Gibt die Linienbreite der Begrenzungsrahmen an. Wenn None, wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet eine visuelle Anpassung für mehr Klarheit.
show_conf bool True Zeigt den Konfidenzwert für jede Erkennung zusammen mit der Beschriftung an. Gibt Einblick in die Sicherheit des Modells für jede Erkennung.
show_labels bool True Zeigt Beschriftungen für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte.

FAQ

Wie zähle ich Objekte in einem Video mit Ultralytics YOLO11?

Um Objekte in einem Video mit Ultralytics YOLO11 zu zählen, können Sie folgende Schritte ausführen:

  1. Importieren Sie die notwendigen Bibliotheken (cv2, ultralytics), oder Auto-Modus mit angegebener Auslastungsfraktion (
  2. Definieren Sie den Zählbereich (z. B. ein Polygon, eine Linie usw.).
  3. Richten Sie die Videoerfassung ein und initialisieren Sie den Objektzähler.
  4. Verarbeiten Sie jeden Frame, um Objekte zu verfolgen und sie innerhalb der definierten Region zu zählen.

Hier ist ein einfaches Beispiel zum Zählen 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 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")

Für erweiterte Konfigurationen und Optionen sehen Sie sich die RegionCounter-Lösung an, um Objekte in mehreren Regionen gleichzeitig zu zählen.

Welche Vorteile bietet die Verwendung von Ultralytics YOLO11 für die Objektzählung?

Die Verwendung von Ultralytics YOLO11 zur Objektzählung bietet mehrere Vorteile:

  1. Ressourcenoptimierung: Sie ermöglicht ein effizientes Ressourcenmanagement durch die Bereitstellung genauer Zählungen und hilft so, die Ressourcenzuweisung in Branchen wie dem Bestandsmanagement zu optimieren.
  2. Erhöhte Sicherheit: Sie verbessert die Sicherheit und Überwachung durch die genaue Verfolgung und Zählung von Entitäten und unterstützt so die proaktive Erkennung von Bedrohungen und Sicherheitssysteme.
  3. Fundierte Entscheidungsfindung: Es bietet wertvolle Einblicke für die Entscheidungsfindung und optimiert Prozesse in Bereichen wie Einzelhandel, Verkehrsmanagement und mehr.
  4. Echtzeitverarbeitung: Die Architektur von YOLO11 ermöglicht Echtzeit-Inferenz und eignet sich daher für Live-Videostreams und zeitkritische Anwendungen.

Für Implementierungsbeispiele und praktische Anwendungen erkunden Sie die TrackZone-Lösung zur Verfolgung von Objekten in bestimmten Zonen.

Wie kann ich bestimmte Objektklassen mit Ultralytics YOLO11 zählen?

Um bestimmte Objektklassen mit Ultralytics YOLO11 zu zählen, müssen Sie die Klassen, an denen Sie interessiert sind, während der Tracking-Phase 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 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])

In diesem Beispiel classes_to_count=[0, 2] bedeutet, dass es Objekte der Klasse zählt 0 und 2 (z. B. Person und Auto im COCO-Datensatz). Weitere Informationen zu Klassenindizes finden Sie im COCO-Datensatzdokumentation.

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 YOLO-Versionen:

  1. Geschwindigkeit und Effizienz: YOLO11 bietet Echtzeit-Verarbeitungsfunktionen und ist somit ideal für Anwendungen, die eine Hochgeschwindigkeitsinferenz erfordern, wie z. B. Überwachung und autonomes Fahren.
  2. Genauigkeit: Es bietet modernste Genauigkeit für Objekterkennungs- und Tracking-Aufgaben, wodurch die Anzahl falscher Positiver reduziert und die Gesamtzuverlässigkeit des Systems verbessert wird.
  3. Einfache Integration: YOLO11 bietet eine nahtlose Integration mit verschiedenen Plattformen und Geräten, einschließlich mobiler Geräte und Edge-Geräte, was für moderne KI-Anwendungen entscheidend ist.
  4. Flexibilität: Unterstützt verschiedene Aufgaben wie Objekterkennung, Segmentierung und Tracking mit konfigurierbaren Modellen, um spezifische Anwendungsfallanforderungen zu erfüllen.

Weitere Informationen zu den Funktionen und Leistungsvergleichen finden Sie in der Ultralytics YOLO11-Dokumentation.

Kann ich YOLO11 für fortgeschrittene Anwendungen wie Crowd-Analyse und Verkehrsmanagement verwenden?

Ja, Ultralytics YOLO11 eignet sich aufgrund seiner Echtzeit-Erkennungsfähigkeiten, Skalierbarkeit und Integrationsflexibilität hervorragend für fortgeschrittene Anwendungen wie Crowd-Analyse und Verkehrsmanagement. Seine fortschrittlichen Funktionen ermöglichen eine hochgenaue Objektverfolgung, -zählung und -klassifizierung in dynamischen Umgebungen. Anwendungsbeispiele sind:

  • Crowd-Analyse: Überwachen und verwalten Sie große Versammlungen, um die Sicherheit zu gewährleisten und den Crowd-Flow mit regionsbasierter Zählung zu optimieren.
  • Verkehrsmanagement: Verfolgen und Zählen von Fahrzeugen, Analysieren von Verkehrsmustern und Verwalten von Staus in Echtzeit mit Geschwindigkeitserkennung.
  • Einzelhandelsanalytik: Analysieren Sie die Bewegungsmuster der Kunden und die Produktinteraktionen, um die Ladengestaltung zu optimieren und das Kundenerlebnis zu verbessern.
  • Industrielle Automatisierung: Produkte auf Förderbändern zählen und Produktionslinien auf Qualitätskontrolle und Effizienzverbesserungen überwachen.

Für speziellere Anwendungen erkunden Sie die Ultralytics Lösungen, eine umfassende Sammlung von Tools, die für reale Computer-Vision-Herausforderungen entwickelt wurden.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 4 Monaten

Kommentare