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 |
---|
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 False Wenn `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.