Objektverwischung mit Ultralytics YOLO11 🚀
Was ist Objektunschärfe?
Objektunschärfe mit Ultralytics YOLO11 beinhaltet die Anwendung eines Unschärfeeffekts auf bestimmte erkannte Objekte in einem Bild oder Video. Dies kann mithilfe der Modellfunktionen von YOLO11 erreicht werden, um Objekte in einer bestimmten Szene zu identifizieren und zu manipulieren.
Beobachten: Objektverwischung mit Ultralytics YOLO11
Vorteile der Objektverwischung?
- Schutz der Privatsphäre: Die Unschärfe von Objekten ist ein wirksames Mittel zum Schutz der Privatsphäre, indem sensible oder persönlich identifizierbare Informationen in Bildern oder Videos verborgen werden.
- Selektive Fokussierung: YOLO11 ermöglicht eine selektive Unschärfe, die es dem Nutzer ermöglicht, bestimmte Objekte anzuvisieren und so ein Gleichgewicht zwischen Privatsphäre und der Beibehaltung relevanter visueller Informationen zu gewährleisten.
- Verarbeitung in Echtzeit: YOLO11 Die Effizienz des Systems ermöglicht die Verwischung von Objekten in Echtzeit und eignet sich daher für Anwendungen, die eine sofortige Verbesserung der Privatsphäre in dynamischen Umgebungen erfordern.
Objektverwischung mit YOLO11 Beispiel
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))
# Blur ratio
blur_ratio = 50
# Video writer
video_writer = cv2.VideoWriter("object_blurring_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
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):
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
blur_obj = cv2.blur(obj, (blur_ratio, blur_ratio))
im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = blur_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 Objektunschärfe mit Ultralytics YOLO11 ?
Objektverwischung mit Ultralytics YOLO11 beinhaltet die automatische Erkennung und Anwendung eines Unschärfeeffekts auf bestimmte Objekte in Bildern oder Videos. Diese Technik verbessert die Privatsphäre, indem sie sensible Informationen verbirgt und gleichzeitig relevante visuelle Daten beibehält. YOLO11 Die Echtzeitverarbeitungsfunktionen der Software eignen sich für Anwendungen, die einen sofortigen Schutz der Privatsphäre und selektive Fokusanpassungen erfordern.
Wie kann ich Echtzeit-Objektverwischung mit YOLO11 implementieren?
Um die Echtzeit-Objektunschärfe mit YOLO11 zu implementieren, folgen Sie dem mitgelieferten Beispiel Python . Dabei wird YOLO11 für die Objekterkennung und OpenCV für die Anwendung des Weichzeichnereffekts verwendet. Hier ist eine vereinfachte Version:
import cv2
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = model.predict(im0, show=False)
for box in results[0].boxes.xyxy.cpu().tolist():
obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = cv2.blur(obj, (50, 50))
cv2.imshow("YOLO11 Blurring", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
Was sind die Vorteile der Verwendung von Ultralytics YOLO11 für die Objektverwischung?
Ultralytics YOLO11 bietet mehrere Vorteile für die Objektverwischung:
- Schutz der Privatsphäre: Effektive Verschleierung sensibler oder identifizierbarer Informationen.
- Selektiver Fokus: Gezielte Unschärfe auf bestimmte Objekte, wobei der wesentliche visuelle Inhalt erhalten bleibt.
- Verarbeitung in Echtzeit: Effizientes Verwischen von Objekten in dynamischen Umgebungen, geeignet für die sofortige Verbesserung der Privatsphäre.
Ausführlichere Informationen zu den Anwendungen finden Sie im Abschnitt Vorteile der Objektverwischung.
Kann ich Ultralytics YOLO11 verwenden, um Gesichter in einem Video aus Gründen der Privatsphäre unkenntlich zu machen?
Ja, Ultralytics YOLO11 kann so konfiguriert werden, dass Gesichter in Videos erkannt und weichgezeichnet werden, um die Privatsphäre zu schützen. Durch das Trainieren oder die Verwendung eines vortrainierten Modells zur spezifischen Erkennung von Gesichtern können die Erkennungsergebnisse mit OpenCV verarbeitet werden, um einen Unschärfeeffekt anzuwenden. Lesen Sie unsere Anleitung zur Objekterkennung mit YOLO11 und ändern Sie den Code für die Gesichtserkennung.
Wie schneidet YOLO11 im Vergleich zu anderen Objekterkennungsmodellen wie Faster R-CNN für Objektunschärfe ab?
Ultralytics YOLO11 übertrifft in der Regel Modelle wie Faster R-CNN in Bezug auf die Geschwindigkeit, wodurch es sich besser für Echtzeitanwendungen eignet. Während beide Modelle eine genaue Erkennung bieten, ist die Architektur von YOLO11 für eine schnelle Inferenz optimiert, was für Aufgaben wie die Verwischung von Objekten in Echtzeit entscheidend ist. Erfahren Sie mehr über die technischen Unterschiede und Leistungskennzahlen in unserer DokumentationYOLO11 .