Zum Inhalt springen

Objektbeschneidung mit Ultralytics YOLO11

Was ist Objektbeschneidung?

Das Ausschneiden von Objekten mit Ultralytics YOLO11 umfasst das Isolieren und Extrahieren bestimmter erkannter Objekte aus einem Bild oder Video. Die Modellfunktionen von YOLO11 werden genutzt, um Objekte genau zu identifizieren und abzugrenzen, was ein präzises Zuschneiden für weitere Analysen oder Bearbeitungen ermöglicht.



Beobachten: Objektbeschneidung mit Ultralytics YOLO

Vorteile von Object Cropping?

  • Fokussierte Analyse: YOLO11 erleichtert das gezielte Ausschneiden von Objekten und ermöglicht so die eingehende Untersuchung oder Bearbeitung einzelner Elemente innerhalb einer Szene.
  • Reduzierte Datenmenge: Indem nur relevante Objekte extrahiert werden, trägt das Zuschneiden von Objekten dazu bei, die Datengröße zu minimieren, was sie für die Speicherung, Übertragung oder nachfolgende Berechnungen effizient macht.
  • Verbesserte Präzision: Die Genauigkeit der Objekterkennung von YOLO11 stellt sicher, dass die ausgeschnittenen Objekte ihre räumlichen Beziehungen beibehalten und die Integrität der visuellen Informationen für eine detaillierte Analyse erhalten bleibt.

Bildmaterial

Flughafen-Gepäck
Förderband auf dem Flughafen Kofferknacken mit Ultralytics YOLO11
Koffer Cropping am Flughafen-Förderband mit Ultralytics YOLO11

Objektbeschneidung mit YOLO11 Beispiel

import os

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
names = model.names

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

crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
    os.mkdir(crop_dir_name)

# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

idx = 0
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0, show=False)
    boxes = results[0].boxes.xyxy.cpu().tolist()
    clss = results[0].boxes.cls.cpu().tolist()
    annotator = Annotator(im0, line_width=2, example=names)

    if boxes is not None:
        for box, cls in zip(boxes, clss):
            idx += 1
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]

            cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)

    cv2.imshow("ultralytics", im0)
    video_writer.write(im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Argumente model.predict

Argument Typ Standard Beschreibung
source str 'ultralytics/assets' Gibt die Datenquelle für die Inferenz an. Dies kann ein Bildpfad, eine Videodatei, ein Verzeichnis, eine URL oder eine Geräte-ID für Live-Feeds sein. Unterstützt eine breite Palette von Formaten und Quellen und ermöglicht so eine flexible Anwendung für verschiedene Arten von Eingaben.
conf float 0.25 Legt die minimale Vertrauensschwelle für Erkennungen fest. Objekte, die mit einer Konfidenzschwelle unterhalb dieser Schwelle erkannt werden, werden nicht berücksichtigt. Die Anpassung dieses Wertes kann dazu beitragen, Fehlalarme zu reduzieren.
iou float 0.7 Intersection Over Union (IoU)-Schwellenwert für Non-Maximum Suppression (NMS). Niedrigere Werte führen zu weniger Erkennungen, da überlappende Boxen eliminiert werden, was zur Reduzierung von Duplikaten nützlich ist.
imgsz int or tuple 640 Bestimmt die Bildgröße für die Inferenz. Kann eine einzelne ganze Zahl sein 640 für quadratische Größenänderungen oder ein Tupel (Höhe, Breite). Eine korrekte Größenanpassung kann die Erkennung verbessern Genauigkeit und Verarbeitungsgeschwindigkeit.
half bool False Ermöglicht die Inferenz mit halber Genauigkeit (FP16), was die Modellinferenz auf unterstützten GPUs mit minimalen Auswirkungen auf die Genauigkeit beschleunigen kann.
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.
batch int 1 Gibt die Losgröße für die Inferenz an (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder .txt Datei). Eine größere Batchgröße kann einen höheren Durchsatz ermöglichen und die für die Inferenz benötigte Gesamtzeit verkürzen.
max_det int 300 Maximal zulässige Anzahl von Erkennungen pro Bild. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzigen Schlussfolgerung erkennen kann, um übermäßige Ausgaben in dichten Szenen zu verhindern.
vid_stride int 1 Frame Stride für Videoeingänge. Ermöglicht das Überspringen von Bildern in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Bei einem Wert von 1 wird jedes Bild verarbeitet, bei höheren Werten werden Bilder übersprungen.
stream_buffer bool False Legt fest, ob eingehende Bilder für Videostreams in eine Warteschlange gestellt werden sollen. Wenn FalseWenn `True', werden alte Frames übersprungen, um neue Frames unterzubringen (optimiert für Echtzeitanwendungen). Bei "True" werden neue Frames in einem Puffer in eine Warteschlange gestellt, wodurch sichergestellt wird, dass keine Frames übersprungen werden, was jedoch zu Latenzzeiten führt, wenn die FPS der Inferenz niedriger sind als die FPS des Streams.
visualize bool False Aktiviert die Visualisierung von Modellmerkmalen während der Inferenz und bietet Einblicke in das, was das Modell "sieht". Nützlich für die Fehlersuche und Modellinterpretation.
augment bool False Ermöglicht die Testzeit-Erweiterung (TTA) für Vorhersagen, wodurch die Robustheit der Erkennung auf Kosten der Schlussfolgerungsgeschwindigkeit verbessert werden kann.
agnostic_nms bool False Ermöglicht die klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich in Szenarien der Mehrklassenerkennung, in denen es häufig zu Klassenüberschneidungen kommt.
classes list[int] None Filtert Vorhersagen auf einen Satz von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich für die Konzentration auf relevante Objekte bei Erkennungsaufgaben mit mehreren Klassen.
retina_masks bool False Gibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data) stimmen mit der ursprünglichen Bildgröße überein, wenn sie aktiviert sind. Wenn sie deaktiviert sind, haben sie die bei der Inferenz verwendete Bildgröße.
embed list[int] None Gibt die Ebenen an, aus denen Merkmalsvektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche.
project str None Name des Projektverzeichnisses, in dem die Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist.
name str None Name des Vorhersagelaufs. Wird zur Erstellung eines Unterverzeichnisses im Projektordner verwendet, in dem die Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist.

FAQ

Was ist der Objektausschnitt in Ultralytics YOLO11 und wie funktioniert er?

Das Zuschneiden von Objekten mit Ultralytics YOLO11 umfasst das Isolieren und Extrahieren bestimmter Objekte aus einem Bild oder Video auf der Grundlage der Erkennungsfunktionen von YOLO11. Dieser Prozess ermöglicht eine fokussierte Analyse, eine Verringerung des Datenvolumens und eine verbesserte Präzision, indem YOLO11 die Objekte mit hoher Genauigkeit identifiziert und sie entsprechend ausschneidet. Eine ausführliche Anleitung finden Sie im Beispiel zum Zuschneiden von Objekten.

Warum sollte ich Ultralytics YOLO11 für das Zuschneiden von Objekten verwenden und nicht andere Lösungen?

Ultralytics YOLO11 zeichnet sich durch seine Präzision, Geschwindigkeit und Benutzerfreundlichkeit aus. Sie ermöglicht eine detaillierte und genaue Objekterkennung und -beschneidung, was für gezielte Analysen und Anwendungen, die eine hohe Datenintegrität erfordern, unerlässlich ist. Darüber hinaus lässt sich YOLO11 nahtlos mit Tools wie OpenVINO und TensorRT integrieren, wenn Echtzeitfunktionen und Optimierung auf unterschiedlicher Hardware erforderlich sind. Erfahren Sie mehr über die Vorteile im Leitfaden zum Modellexport.

Wie kann ich das Datenvolumen meines Datensatzes mit Hilfe von Objektbeschneidung reduzieren?

Wenn Sie Ultralytics YOLO11 verwenden, um nur relevante Objekte aus Ihren Bildern oder Videos auszuschneiden, können Sie die Datengröße erheblich reduzieren, so dass sie effizienter gespeichert und verarbeitet werden können. Bei diesem Verfahren wird das Modell darauf trainiert, bestimmte Objekte zu erkennen, und die Ergebnisse werden dann verwendet, um nur diese Teile auszuschneiden und zu speichern. Weitere Informationen zur Nutzung der Funktionen von Ultralytics YOLO11 finden Sie in unserer Schnellstartanleitung.

Kann ich Ultralytics YOLO11 für die Echtzeit-Videoanalyse und das Zuschneiden von Objekten verwenden?

Ja, Ultralytics YOLO11 kann Echtzeit-Videomaterial verarbeiten, um Objekte dynamisch zu erkennen und zuzuschneiden. Die Hochgeschwindigkeits-Inferenzfunktionen des Modells machen es ideal für Echtzeitanwendungen wie Überwachung, Sportanalyse und automatische Inspektionssysteme. Sehen Sie sich die Verfolgungs- und Vorhersagemodi an, um zu verstehen, wie die Echtzeitverarbeitung implementiert werden kann.

Welche Hardware-Anforderungen sind für die effiziente Ausführung von YOLO11 für das Zuschneiden von Objekten erforderlich?

Ultralytics YOLO11 ist sowohl für CPU - als auch für GPU -Umgebungen optimiert. Um jedoch eine optimale Leistung zu erzielen, insbesondere für Echtzeit- oder Masseninferenzen, wird ein spezielles GPU (z. B. NVIDIA Tesla, RTX-Serie) empfohlen. Für den Einsatz auf leichtgewichtigen Geräten sollten Sie CoreML für iOS oder TFLite für Android verwenden. Weitere Einzelheiten zu den unterstützten Geräten und Formaten finden Sie in unseren Optionen für die Modellbereitstellung.

📅 Erstellt vor 11 Monaten ✏️ Aktualisiert vor 2 Monaten

Kommentare