Objektverwischung mit Ultralytics YOLOv8 🚀
Was ist Objektunschärfe?
Objektunschärfe mit Ultralytics YOLOv8 ist die Anwendung eines Unschärfeeffekts auf bestimmte erkannte Objekte in einem Bild oder Video. Dies kann mit Hilfe der YOLOv8 Modellfähigkeiten erreicht werden, um Objekte in einer bestimmten Szene zu identifizieren und zu manipulieren.
Pass auf: Objektverwischung mit Ultralytics YOLOv8
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: YOLOv8 ermöglicht eine selektive Unschärfe, mit der die Nutzer/innen bestimmte Objekte anvisieren können, um ein Gleichgewicht zwischen Privatsphäre und dem Erhalt relevanter visueller Informationen zu gewährleisten.
- Verarbeitung in Echtzeit: YOLOv8 Die Effizienz der Software 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 YOLOv8 Beispiel
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolov8n.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. Das 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 geringeren Konfidenz als dieser Schwelle erkannt werden, werden nicht berücksichtigt. Die Anpassung dieses Wertes kann dazu beitragen, Falschmeldungen 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 Kästchen eliminiert werden, was nützlich ist, um Duplikate zu reduzieren. |
imgsz |
int or tuple |
640 |
Legt die Bildgröße für die Inferenz fest. Kann eine einzelne ganze Zahl sein 640 für quadratische Größenänderungen oder ein (Höhe, Breite) Tupel. Die richtige Größenbestimmung kann die Erkennungsgenauigkeit und die Verarbeitungsgeschwindigkeit verbessern. |
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 die Auswahl zwischen CPU, einem bestimmten GPU oder anderen Rechengeräten für die Modellausführung. |
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 bei der Verarbeitung von Videostreams alle Bilder gepuffert werden sollen (True ), oder ob das Modell den letzten Frame zurückgeben soll (False ). Nützlich für Echtzeitanwendungen. |
visualize |
bool |
False |
Aktiviert die Visualisierung von Modellmerkmalen während der Inferenz und gibt Einblicke in das, was das Modell "sieht". Nützlich für die Fehlersuche und Modellinterpretation. |
augment |
bool |
False |
Ermöglicht die Test-Time-Augmentation (TTA) für Vorhersagen, was die Robustheit der Erkennung auf Kosten der Schlussfolgerungsgeschwindigkeit verbessern 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 mit mehreren Klassen, in denen sich die Klassen häufig überschneiden. |
classes |
list[int] |
None |
Filtert Vorhersagen auf eine Reihe von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich, um sich bei Erkennungsaufgaben mit mehreren Klassen auf relevante Objekte zu konzentrieren. |
retina_masks |
bool |
False |
Verwendet hochauflösende Segmentierungsmasken, falls im Modell vorhanden. Dies kann die Qualität der Masken für Segmentierungsaufgaben verbessern, da sie feinere Details liefern. |
embed |
list[int] |
None |
Legt die Ebenen fest, aus denen Merkmalsvektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
FAQ
Was ist Objektverwischung mit Ultralytics YOLOv8 ?
Objektverwischung mit Ultralytics YOLOv8 Bei dieser Technik werden bestimmte Objekte in Bildern oder Videos automatisch erkannt und mit einem Unschärfeeffekt versehen. Diese Technik verbessert die Privatsphäre, indem sie sensible Informationen verbirgt, während die relevanten visuellen Daten erhalten bleiben. YOLOv8 Die Echtzeitverarbeitungsfähigkeiten von Object Blurring eignen sich für Anwendungen, die einen sofortigen Schutz der Privatsphäre und selektive Fokusanpassungen erfordern.
Wie kann ich Echtzeit-Objektverwischung mit YOLOv8 implementieren?
Um das Weichzeichnen von Objekten in Echtzeit mit YOLOv8 zu implementieren, folge dem Beispiel unter Python . Dabei wird YOLOv8 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("yolov8n.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("YOLOv8 Blurring", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
Was sind die Vorteile der Verwendung von Ultralytics YOLOv8 für die Objektverwischung?
Ultralytics YOLOv8 bietet mehrere Vorteile für die Objektverwischung:
- Schutz der Privatsphäre: Sensible oder identifizierbare Informationen effektiv verschleiern.
- Selektiver Fokus: Wähle bestimmte Objekte aus, um sie unscharf zu machen, wobei der wesentliche visuelle Inhalt erhalten bleibt.
- Verarbeitung in Echtzeit: Führe die Objektverwischung effizient in dynamischen Umgebungen aus, die sich für die sofortige Verbesserung der Privatsphäre eignen.
Detailliertere Anwendungen findest du im Abschnitt über die Vorteile der Objektverwischung.
Kann ich Ultralytics YOLOv8 verwenden, um Gesichter in einem Video aus Gründen der Privatsphäre unkenntlich zu machen?
Ja, Ultralytics YOLOv8 kann so konfiguriert werden, dass Gesichter in Videos erkannt und weichgezeichnet werden, um die Privatsphäre zu schützen. Indem du ein Modell trainierst oder verwendest, das speziell Gesichter erkennt, können die Erkennungsergebnisse mit OpenCV verarbeitet werden, um einen Unschärfeeffekt anzuwenden. Sieh dir unsere Anleitung zur Objekterkennung mit YOLOv8 an und ändere den Code für die Gesichtserkennung.
Wie schneidet YOLOv8 im Vergleich zu anderen Objekterkennungsmodellen wie Faster R-CNN für Objektverwischung ab?
Ultralytics YOLOv8 übertrifft Modelle wie das Faster R-CNN in der Regel in Bezug auf die Geschwindigkeit, was es für Echtzeitanwendungen geeigneter macht. Während beide Modelle eine genaue Erkennung bieten, ist die Architektur von YOLOv8 für eine schnelle Inferenz optimiert, was für Aufgaben wie die Verwischung von Objekten in Echtzeit entscheidend ist. Erfahre mehr über die technischen Unterschiede und Leistungskennzahlen in unserer DokumentationYOLOv8 .