Ultralytics YOLO27:

Objektzählung mit Ultralytics YOLO26#

Was ist Objektzählung?#

Open Object Counting In Colab

Die Objektzählung mit Ultralytics YOLO26 umfasst die präzise Identifizierung und Zählung bestimmter Objekte in Videos und Kamerastreams. YOLO26 eignet sich dank seiner hochmodernen Algorithmen und Deep-Learning-Funktionen hervorragend für Echtzeitanwendungen und ermöglicht eine effiziente und präzise Objektzählung in verschiedenen Szenarien wie der Menschenmengenanalyse und Überwachung.



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

Vorteile der Objektzählung#

  • Ressourcenoptimierung: Die Objektzählung ermöglicht eine effiziente Ressourcenverwaltung, indem sie genaue Zählwerte bereitstellt und die Ressourcenzuweisung in Anwendungen wie der Bestandsverwaltung optimiert.
  • Erhöhte Sicherheit: Die Objektzählung verbessert Sicherheit und Überwachung, indem sie Entitäten präzise verfolgt und zählt und so die proaktive Bedrohungserkennung unterstützt.
  • Fundierte Entscheidungsfindung: Die Objektzählung liefert wertvolle Erkenntnisse für die Entscheidungsfindung und optimiert Prozesse im Einzelhandel, bei der Verkehrssteuerung und in vielen anderen Bereichen.

Anwendungen in der Praxis#

LogistikAquakultur
Pakete auf einem Förderband mit Ultralytics YOLO26 zählenFische im Meer mit Ultralytics YOLO26 zählen
Pakete auf einem Förderband mit Ultralytics YOLO26 zählenFische im Meer mit Ultralytics YOLO26 zählen

Objekte mit YOLO26 zählen#

Definiere einen Zählbereich region – zwei Punkte für eine Linie oder drei bzw. mehr für ein Polygon – und übergib ihn an die Lösung ObjectCounter. Der Zähler verfolgt jedes Objekt über mehrere Einzelbilder hinweg und summiert die IN-/OUT-Zählwerte, wenn verfolgte Objekte die Linie überqueren oder den Bereich passieren. Anschließend gibt er ein annotiertes Einzelbild zurück, das du in ein Ausgabevideo schreiben kannst.

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)]"

Das Argument region akzeptiert entweder zwei Punkte (für eine Linie) oder ein Polygon mit drei oder mehr Punkten. Definiere die Koordinaten in der Reihenfolge, in der sie verbunden werden sollen, damit der Zähler genau weiß, wo Ein- und Ausgänge liegen.

Argumente von ObjectCounter#

Hier ist eine Tabelle mit den Argumenten von ObjectCounter:

ArgumentTypStandardwertBeschreibung
modelstrNonePfad zu einer YOLO-Modell-Datei von Ultralytics.
show_inboolTrueSteuert, ob die Eingangsanzahl im Videostream angezeigt wird.
show_outboolTrueSteuert, ob die Ausgangsanzahl im Videostream angezeigt wird.
regionlist oder dictNonePunkte zur Definition des Interessenbereichs: entweder eine Liste von (x, y)-Tupeln oder ein Wörterbuch, das Bereichsnamen Punktelisten für mehrere Bereiche zuordnet (nur RegionCounter). Wenn None, greifen Lösungen, die einen Bereich benötigen, auf einen vordefinierten Standardwert zurück.
line_widthint2Linienstärke für die von der Lösung gezeichneten Boxen, Keypoints und Zählwerte.
verboseboolTrueAktiviert das Protokoll der Lösung pro Frame mit Eingabeform, Klassenanzahlen und Verarbeitungsgeschwindigkeit. Der Tracking-Aufruf selbst bleibt immer ohne Ausgabe.

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

ArgumentTypStandardwertBeschreibung
trackerstr'botsort.yaml'Gibt den zu verwendenden Tracking-Algorithmus an. Integrierte Optionen: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Legt den Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte ermöglichen das Verfolgen weiterer Objekte, können aber Fehlalarme einschließen.
ioufloat0.7Legt den Schwellenwert für Intersection over Union (IoU) zum Filtern überlappender Erkennungen fest.
classeslistNoneFiltert Ergebnisse nach Klassenindex. Beispielsweise verfolgt classes=[0, 2, 3] nur die angegebenen Klassen.
devicestrNoneGibt das Gerät für die Inferenz an (z. B. cpu, cuda:0 oder 0). Ermöglicht die Auswahl zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten für die Modellausführung.
imgszint or tuple640Ziel-Inferenzbildgröße: eine ganze Zahl für ein quadratisches Bild oder ein (height, width)-Paar. Die Formate werden an die Modellschrittweite angepasst.
max_detint300Maximale Anzahl pro Frame beibehaltener Detektionen vor dem Tracking, wodurch die Objekte begrenzt werden, die eine Solution in dichten Szenen verarbeitet.
quantizeint or strNoneInferenzpräzision: 16 (FP16) oder 32/nicht gesetzt (FP32) für PyTorch- und TorchScript-Modelle; andere Formate berechnen mit der Präzision, die ihr Artefakt und ihre Laufzeit auswählen. Ersetzt das veraltete half-Flag.

Zusätzlich werden die unten aufgeführten Argumente zur Visualisierung unterstützt:

ArgumentTypStandardwertBeschreibung
showboolFalseWenn True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Dies ist nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens.
show_confboolTrueZeigt neben dem Label den Konfidenzwert für jede Erkennung an. Dadurch erhältst du Einblick in die Sicherheit des Modells bei jeder Erkennung.
show_labelsboolTrueZeigt Labels für jede Erkennung in der visuellen Ausgabe an. Dies ermöglicht ein unmittelbares Verständnis der erkannten Objekte.

FAQ#

  • Um mit Ultralytics YOLO26 Objekte in einem Video zu zählen, kannst du folgende Schritte ausführen:

    1. Importiere die erforderlichen Bibliotheken (cv2, ultralytics).
    2. Definiere den Zählbereich (z. B. ein Polygon, eine Linie usw.).
    3. Richte die Videoaufnahme ein und initialisiere den Objektzähler.
    4. Verarbeite jedes Einzelbild, um Objekte zu verfolgen und innerhalb des definierten Bereichs zu zählen.

    Hier ist ein einfaches Beispiel für das Zählen in einem Bereich:

    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", "yolo26n.pt")

    Weitere Konfigurationen und Optionen findest du in der RegionCounter-Lösung, mit der du Objekte gleichzeitig in mehreren Bereichen zählen kannst.

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

    1. Ressourcenoptimierung: Das System ermöglicht eine effiziente Ressourcenverwaltung, indem es genaue Zählwerte bereitstellt und die Ressourcenzuweisung in Branchen wie der Bestandsverwaltung optimiert.
    2. Erhöhte Sicherheit: Das System verbessert Sicherheit und Überwachung, indem es Entitäten präzise verfolgt und zählt und so die proaktive Bedrohungserkennung und Sicherheitssysteme unterstützt.
    3. Fundierte Entscheidungsfindung: Das System liefert wertvolle Erkenntnisse für die Entscheidungsfindung und optimiert Prozesse in Bereichen wie dem Einzelhandel, der Verkehrssteuerung und vielen weiteren.
    4. Echtzeitverarbeitung: Die Architektur von YOLO26 ermöglicht Echtzeitinferenz und eignet sich dadurch für Live-Videostreams und zeitkritische Anwendungen.

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

  • Um mit Ultralytics YOLO26 bestimmte Objektklassen zu zählen, musst du während der Verfolgungsphase die gewünschten Klassen angeben. Unten findest du 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", "yolo26n.pt", [0, 2])

    In diesem Beispiel bedeutet classes_to_count=[0, 2], dass Objekte der Klassen 0 und 2 gezählt werden (z. B. Personen und Autos im COCO-Datensatz). Weitere Informationen zu Klassenindizes findest du in der Dokumentation zum COCO-Datensatz.

  • Ultralytics YOLO26 bietet gegenüber anderen Objekterkennungsmodellen wie Faster R-CNN, SSD und früheren YOLO-Versionen mehrere Vorteile:

    1. Geschwindigkeit und Effizienz: YOLO26 ermöglicht die Verarbeitung in Echtzeit und eignet sich damit ideal für Anwendungen, die eine schnelle Inferenz erfordern, etwa Überwachung und autonomes Fahren.
    2. Genauigkeit: Das Modell bietet eine hochmoderne Erkennungs- und Verfolgungsgenauigkeit, reduziert falsch-positive Erkennungen und verbessert die Zuverlässigkeit des Gesamtsystems.
    3. Einfache Integration: YOLO26 lässt sich nahtlos in verschiedene Plattformen und Geräte integrieren, darunter mobile Geräte und Edge-Geräte, was für moderne KI-Anwendungen entscheidend ist.
    4. Flexibilität: Unterstützt Erkennungs- und Segmentierungs-Aufgaben mit dem darüberliegenden Track-Modus sowie konfigurierbare Modelle für spezifische Anforderungen von Anwendungsfällen.

    In der YOLO26-Dokumentation von Ultralytics findest du eine ausführliche Übersicht über die Funktionen und Leistungsvergleiche.

  • Ja, Ultralytics YOLO26 eignet sich dank seiner Echtzeiterkennungsfunktionen, Skalierbarkeit und flexiblen Integrationsmöglichkeiten hervorragend für fortgeschrittene Anwendungen wie Menschenmengenanalyse und Verkehrssteuerung. Seine fortschrittlichen Funktionen ermöglichen die hochpräzise Verfolgung, Zählung und Klassifizierung von Objekten in dynamischen Umgebungen. Beispiele für Anwendungsfälle sind:

    • Menschenmengenanalyse: Überwache und verwalte große Menschenansammlungen, gewährleiste die Sicherheit und optimiere den Personenfluss mit bereichsbasierter Zählung.
    • Verkehrssteuerung: Verfolge und zähle Fahrzeuge, analysiere Verkehrsmuster und verwalte Verkehrsstaus in Echtzeit mit Funktionen zur Geschwindigkeitsschätzung.
    • Einzelhandelsanalyse: Analysiere Bewegungsmuster von Kunden und deren Interaktionen mit Produkten, um die Gestaltung von Verkaufsflächen zu optimieren und das Kundenerlebnis zu verbessern.
    • Industrielle Automatisierung: Zähle Produkte auf Förderbändern und überwache Produktionslinien, um die Qualitätskontrolle zu verbessern und die Effizienz zu steigern.

    Für weitere spezialisierte Anwendungen kannst du Ultralytics Solutions erkunden. Sie bieten eine umfassende Sammlung von Werkzeugen für reale Herausforderungen im Bereich Computer Vision.

Kommentare