Vai al contenuto

Sfocatura degli oggetti con Ultralytics YOLOv8 🚀

Che cos'è la sfocatura degli oggetti?

Sfocatura degli oggetti con Ultralytics YOLOv8 consiste nell'applicare un effetto di sfocatura a specifici oggetti rilevati in un'immagine o in un video. Questo può essere ottenuto utilizzando le funzionalità del modello YOLOv8 per identificare e manipolare gli oggetti all'interno di una determinata scena.



Guarda: Sfocatura degli oggetti con Ultralytics YOLOv8

Vantaggi della sfocatura degli oggetti?

  • Protezione della privacy: La sfocatura degli oggetti è uno strumento efficace per salvaguardare la privacy nascondendo informazioni sensibili o di identificazione personale nelle immagini o nei video.
  • Messa a fuoco selettiva: YOLOv8 permette di sfocare in modo selettivo, consentendo agli utenti di mirare a oggetti specifici, garantendo un equilibrio tra privacy e conservazione delle informazioni visive rilevanti.
  • Elaborazione in tempo reale: YOLOv8 L'efficienza del sistema consente di sfocare gli oggetti in tempo reale, rendendolo adatto alle applicazioni che richiedono miglioramenti della privacy al volo in ambienti dinamici.

Esempio di sfocatura degli oggetti con YOLOv8

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

Argomenti model.predict

Nome Tipo Predefinito Descrizione
source str 'ultralytics/assets' directory di origine per le immagini o i video
conf float 0.25 soglia di fiducia dell'oggetto per il rilevamento
iou float 0.7 soglia di intersezione su unione (IoU) per gli NMS
imgsz int or tuple 640 dimensione dell'immagine come scalare o come elenco (h, w), ad esempio (640, 480)
half bool False usa la mezza precisione (FP16)
device None or str None Il dispositivo su cui eseguire l'operazione, ad esempio cuda device=0/1/2/3 o device=cpu
max_det int 300 numero massimo di rilevamenti per immagine
vid_stride bool False passo della frequenza dei fotogrammi video
stream_buffer bool False bufferizza tutti i fotogrammi dello streaming (True) o restituisce il fotogramma più recente (False)
visualize bool False visualizzare le caratteristiche del modello
augment bool False applicare l'aumento dell'immagine alle fonti di predizione
agnostic_nms bool False NMS con compatibilità di classe
classes list[int] None filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3].
retina_masks bool False utilizzare maschere di segmentazione ad alta risoluzione
embed list[int] None restituisce vettori di caratteristiche/embeddings da determinati livelli

DOMANDE FREQUENTI

Che cos'è la sfocatura degli oggetti con Ultralytics YOLOv8 ?

La sfocatura degli oggetti con Ultralytics YOLOv8 consiste nel rilevare e applicare automaticamente un effetto di sfocatura a determinati oggetti nelle immagini o nei video. Questa tecnica migliora la privacy nascondendo le informazioni sensibili e conservando i dati visivi rilevanti. YOLOv8 Le sue capacità di elaborazione in tempo reale lo rendono adatto alle applicazioni che richiedono una protezione immediata della privacy e una regolazione selettiva della messa a fuoco.

Come posso implementare la sfocatura degli oggetti in tempo reale utilizzando YOLOv8?

Per implementare la sfocatura degli oggetti in tempo reale con YOLOv8, segui l'esempio di Python . Questo prevede l'utilizzo di YOLOv8 per il rilevamento degli oggetti e di OpenCV per l'applicazione dell'effetto di sfocatura. Ecco una versione semplificata:

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

Quali sono i vantaggi dell'utilizzo di Ultralytics YOLOv8 per la sfocatura degli oggetti?

Ultralytics YOLOv8 offre diversi vantaggi per la sfocatura degli oggetti:

  • Protezione della privacy: Oscura efficacemente le informazioni sensibili o identificabili.
  • Messa a fuoco selettiva: Seleziona oggetti specifici da sfocare, mantenendo i contenuti visivi essenziali.
  • Elaborazione in tempo reale: Esegui in modo efficiente la sfocatura degli oggetti in ambienti dinamici, adatti a migliorare istantaneamente la privacy.

Per applicazioni più dettagliate, consulta la sezione Vantaggi della sfocatura degli oggetti.

Posso utilizzare Ultralytics YOLOv8 per sfocare i volti in un video per motivi di privacy?

Sì, Ultralytics YOLOv8 può essere configurato per rilevare e sfocare i volti nei video per proteggere la privacy. Addestrando o utilizzando un modello pre-addestrato per riconoscere specificamente i volti, i risultati del rilevamento possono essere elaborati con OpenCV per applicare un effetto di sfocatura. Fai riferimento alla nostra guida sul rilevamento degli oggetti con YOLOv8 e modifica il codice per il rilevamento dei volti.

Come si colloca YOLOv8 rispetto ad altri modelli di rilevamento degli oggetti come Faster R-CNN per la sfocatura degli oggetti?

Ultralytics YOLOv8 in genere supera modelli come Faster R-CNN in termini di velocità, rendendolo più adatto alle applicazioni in tempo reale. Sebbene entrambi i modelli offrano un rilevamento accurato, l'architettura di YOLOv8 è ottimizzata per un'inferenza rapida, fondamentale per attività come la sfocatura degli oggetti in tempo reale. Per saperne di più sulle differenze tecniche e sulle metriche delle prestazioni, consulta la documentazione di YOLOv8 .



Creato 2024-01-09, Aggiornato 2024-07-05
Autori: glenn-jocher (6), RizwanMunawar (1), IvorZhu331 (1), AyushExel (1)

Commenti