Zum Inhalt springen

Analytik mit Ultralytics YOLO11

Einführung

Dieses Handbuch bietet einen umfassenden Überblick über drei grundlegende Arten von Datenvisualisierungen: Liniendiagramme, Balkendiagramme und Kreisdiagramme. Jeder Abschnitt enthält Schritt-für-Schritt-Anleitungen und Codeschnipsel, wie diese Visualisierungen mit Python erstellt werden können.



Beobachten: Erstellen von analytischen Diagrammen mit Ultralytics | Liniendiagramme, Balkendiagramme, Flächen- und Kreisdiagramme

Visuelle Muster

Liniendiagramm Bar Plot Kreisdiagramm
Liniendiagramm Bar Plot Kreisdiagramm

Warum Diagramme wichtig sind

  • Liniendiagramme sind ideal für die Verfolgung von Veränderungen über kurze und lange Zeiträume und für den Vergleich von Veränderungen bei mehreren Gruppen über denselben Zeitraum.
  • Balkendiagramme hingegen eignen sich für den Vergleich von Mengen über verschiedene Kategorien hinweg und zur Darstellung von Beziehungen zwischen einer Kategorie und ihrem numerischen Wert.
  • Schließlich eignen sich Tortendiagramme zur Veranschaulichung von Proportionen zwischen Kategorien und zur Darstellung von Teilen eines Ganzen.

Analytik mit Ultralytics YOLO

yolo solutions analytics show=True

# Pass the source
yolo solutions analytics source="path/to/video.mp4"

# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# Generate the area plots
yolo solutions analytics analytics_type="area" show=True
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 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))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

# Initialize analytics object
analytics = solutions.Analytics(
    show=True,  # display the output
    analytics_type="line",  # pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # path to the YOLO11 model file
    # classes=[0, 2],  # display analytics for specific detection classes
)

# Process video
frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame

        # print(results)  # access the output

        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()  # destroy all opened windows

Analytics Argumente

Hier finden Sie eine Tabelle mit den Argumenten von Analytics:

Argument Typ Standard Beschreibung
model str None Pfad zur Ultralytics YOLO .
analytics_type str line Art des Diagramms, d. h., line, bar, area, oder pie.

Sie können auch verschiedene track Argumente im Analytics Lösung.

Argument Typ Standard Beschreibung
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.
device str None Gibt das Gerät für die Inferenz an (z.B., cpu, cuda:0 oder 0). Ermöglicht dem Benutzer die Auswahl zwischen CPU, einem bestimmten GPU oder anderen Rechengeräten für die Modellausführung.

Zusätzlich werden die folgenden Visualisierungsargumente unterstützt:

Argument Typ Standard Beschreibung
show bool False Wenn Truezeigt die kommentierten Bilder oder Videos in einem Fenster an. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens.
line_width None or int None Gibt die Linienbreite von Begrenzungsrahmen an. Wenn Nonewird die Linienbreite automatisch an die Bildgröße angepasst. Bietet visuelle Anpassung für Klarheit.

Schlussfolgerung

Für eine effektive Datenanalyse ist es wichtig zu wissen, wann und wie man die verschiedenen Arten von Visualisierungen verwendet. Liniendiagramme, Balkendiagramme und Tortendiagramme sind grundlegende Werkzeuge, die Ihnen helfen können, die Geschichte Ihrer Daten klarer und effektiver zu vermitteln. DieYOLO11 von Ultralytics bietet eine optimierte Möglichkeit, diese Visualisierungen aus Ihren Objekterkennungs- und -verfolgungsergebnissen zu generieren, wodurch es einfacher wird, aussagekräftige Erkenntnisse aus Ihren visuellen Daten zu gewinnen.

FAQ

Wie erstelle ich ein Liniendiagramm mit Ultralytics YOLO11 Analytics?

Gehen Sie folgendermaßen vor, um mit Ultralytics YOLO11 Analytics ein Liniendiagramm zu erstellen:

  1. Laden Sie ein YOLO11 Modell und öffnen Sie Ihre Videodatei.
  2. Initialisieren Sie die Analytics Klasse mit dem Typ "Linie".
  3. Iterieren Sie durch die Videobilder und aktualisieren Sie das Liniendiagramm mit relevanten Daten, z. B. der Anzahl der Objekte pro Bild.
  4. Speichern Sie das Ausgabevideo, das das Liniendiagramm anzeigt.

Beispiel:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Für weitere Details zur Konfiguration der Analytics Klasse, besuchen Sie die Analytik mit Ultralytics YOLO11 Abschnitt.

Welche Vorteile hat die Verwendung von Ultralytics YOLO11 für die Erstellung von Balkendiagrammen?

Die Verwendung von Ultralytics YOLO11 zur Erstellung von Balkendiagrammen bietet mehrere Vorteile:

  1. Datenvisualisierung in Echtzeit: Nahtlose Integration von Objekterkennungsergebnissen in Balkendiagramme für dynamische Aktualisierungen.
  2. Benutzerfreundlichkeit: Einfache API und Funktionen ermöglichen eine unkomplizierte Implementierung und Visualisierung von Daten.
  3. Individuelle Anpassung: Passen Sie Titel, Etiketten, Farben und vieles mehr an Ihre spezifischen Anforderungen an.
  4. Effizienz: Effiziente Verarbeitung großer Datenmengen und Aktualisierung der Diagramme in Echtzeit während der Videoverarbeitung.

Verwenden Sie das folgende Beispiel, um ein Balkendiagramm zu erstellen:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Weitere Informationen finden Sie im Abschnitt Balkendiagramm im Leitfaden.

Warum sollte ich Ultralytics YOLO11 für die Erstellung von Kreisdiagrammen in meinen Datenvisualisierungsprojekten verwenden?

Ultralytics YOLO11 eignet sich hervorragend für die Erstellung von Kreisdiagrammen, weil:

  1. Integration mit Objekterkennung: Integrieren Sie die Ergebnisse der Objekterkennung direkt in Kreisdiagramme, um sofortige Einblicke zu erhalten.
  2. Benutzerfreundliches API: Einfaches Einrichten und Verwenden mit minimalem Code.
  3. Anpassbar: Verschiedene Anpassungsoptionen für Farben, Etiketten und mehr.
  4. Aktualisierungen in Echtzeit: Verarbeiten und visualisieren Sie Daten in Echtzeit, was ideal für Videoanalyseprojekte ist.

Hier ein kurzes Beispiel:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Weitere Informationen finden Sie im Abschnitt Kreisdiagramm im Leitfaden.

Kann Ultralytics YOLO11 verwendet werden, um Objekte zu verfolgen und Visualisierungen dynamisch zu aktualisieren?

Ja, Ultralytics YOLO11 kann verwendet werden, um Objekte zu verfolgen und Visualisierungen dynamisch zu aktualisieren. Es unterstützt die Verfolgung mehrerer Objekte in Echtzeit und kann verschiedene Visualisierungen wie Liniendiagramme, Balkendiagramme und Tortendiagramme basierend auf den Daten der verfolgten Objekte aktualisieren.

Beispiel für das Verfolgen und Aktualisieren eines Liniendiagramms:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Weitere Informationen über die vollständige Funktionalität finden Sie im Abschnitt Tracking.

Wodurch unterscheidet sich Ultralytics YOLO11 von anderen Objekterkennungslösungen wie OpenCV und TensorFlow?

Ultralytics YOLO11 hebt sich aus mehreren Gründen von anderen Objekterkennungslösungen wie OpenCV und TensorFlow ab:

  1. Modernste Genauigkeit: YOLO11 bietet eine hervorragende Genauigkeit bei der Objekterkennung, Segmentierung und Klassifizierung.
  2. Benutzerfreundlichkeit: Die benutzerfreundliche API ermöglicht eine schnelle Implementierung und Integration ohne umfangreichen Programmieraufwand.
  3. Leistung in Echtzeit: Optimiert für Hochgeschwindigkeitsinferenz, geeignet für Echtzeitanwendungen.
  4. Vielfältige Anwendungen: Unterstützt verschiedene Aufgaben wie die Verfolgung mehrerer Objekte, benutzerdefiniertes Modelltraining und den Export in verschiedene Formate wie ONNX, TensorRT und CoreML.
  5. Umfassende Dokumentation: Umfassende Dokumentation und Blog-Ressourcen führen die Benutzer durch jeden Schritt.

Ausführlichere Vergleiche und Anwendungsfälle finden Sie in unserem Ultralytics Blog.

📅 Erstellt vor 10 Monaten ✏️ Aktualisiert vor 5 Tagen

Kommentare