Vai al contenuto

Sfumatura degli oggetti con Ultralytics YOLO11 🚀

Che cos'è la sfocatura degli oggetti?

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



Guarda: Sfocatura degli oggetti con Ultralytics YOLO11

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: YOLO11 consente una sfocatura selettiva, permettendo agli utenti di mirare a oggetti specifici, garantendo un equilibrio tra privacy e conservazione delle informazioni visive rilevanti.
  • Elaborazione in tempo reale: YOLO11 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.

Sfumatura degli oggetti con YOLO11 Esempio

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

Argomenti model.predict

Argomento Tipo Predefinito Descrizione
source str 'ultralytics/assets' Specifica l'origine dei dati per l'inferenza. Può essere un percorso di immagine, un file video, una directory, un URL o un ID dispositivo per i feed live. Supporta un'ampia gamma di formati e fonti, consentendo un'applicazione flessibile a diversi tipi di input.
conf float 0.25 Imposta la soglia minima di confidenza per i rilevamenti. Gli oggetti rilevati con una confidenza inferiore a questa soglia vengono ignorati. La regolazione di questo valore può contribuire a ridurre i falsi positivi.
iou float 0.7 Soglia di Intersection Over Union (IoU) per la soppressione non massima (NMS). Valori più bassi determinano un minor numero di rilevamenti eliminando le caselle sovrapposte, utili per ridurre i duplicati.
imgsz int or tuple 640 Definisce la dimensione dell'immagine per l'inferenza. Può essere un singolo numero intero 640 per il ridimensionamento quadrato o una tupla (altezza, larghezza). Un dimensionamento corretto può migliorare il rilevamento precisione e velocità di elaborazione.
half bool False Abilita l'inferenza a mezza precisione (FP16), che può accelerare l'inferenza del modello sulle GPU supportate con un impatto minimo sulla precisione.
device str None Specifica il dispositivo per l'inferenza (ad es, cpu, cuda:0 o 0). Consente agli utenti di scegliere tra CPU, uno specifico GPU o altri dispositivi di calcolo per l'esecuzione del modello.
batch int 1 Specifica la dimensione del batch per l'inferenza (funziona solo quando la sorgente è una directory, un file video o .txt file). Una dimensione maggiore del batch può garantire una maggiore produttività, riducendo il tempo totale necessario per l'inferenza.
max_det int 300 Numero massimo di rilevamenti consentiti per immagine. Limita il numero totale di oggetti che il modello può rilevare in una singola inferenza, prevenendo un numero eccessivo di risultati in scene dense.
vid_stride int 1 Frame stride per gli ingressi video. Consente di saltare i fotogrammi nei video per accelerare l'elaborazione a scapito della risoluzione temporale. Un valore di 1 elabora ogni fotogramma, valori più alti saltano i fotogrammi.
stream_buffer bool False Determina se mettere in coda i fotogrammi in arrivo per i flussi video. Se Falsei vecchi fotogrammi vengono eliminati per accogliere i nuovi (ottimizzato per le applicazioni in tempo reale). Se `True', accoda i nuovi fotogrammi in un buffer, assicurando che nessun fotogramma venga saltato, ma causerà latenza se l'FPS dell'inferenza è inferiore all'FPS del flusso.
visualize bool False Attiva la visualizzazione delle caratteristiche del modello durante l'inferenza, fornendo informazioni su ciò che il modello "vede". Utile per il debugging e l'interpretazione del modello.
augment bool False Consente l'aumento del tempo di test (TTA) per le previsioni, migliorando potenzialmente la robustezza del rilevamento al costo della velocità di inferenza.
agnostic_nms bool False Abilita la soppressione non massimale (NMS), che unisce le caselle sovrapposte di classi diverse. Utile in scenari di rilevamento multiclasse in cui la sovrapposizione di classi è comune.
classes list[int] None Filtra le previsioni in base a un insieme di ID di classe. Verranno restituiti solo i rilevamenti appartenenti alle classi specificate. Utile per concentrarsi sugli oggetti rilevanti in compiti di rilevamento multiclasse.
retina_masks bool False Restituisce maschere di segmentazione ad alta risoluzione. Le maschere restituite (masks.data) corrisponderanno alle dimensioni dell'immagine originale, se abilitati. Se sono disabilitati, hanno la dimensione dell'immagine usata durante l'inferenza.
embed list[int] None Specifica i livelli da cui estrarre vettori di caratteristiche o embeddings. Utile per attività a valle come il clustering o la ricerca di similarità.
project str None Nome della directory del progetto in cui vengono salvati i risultati della predizione, se save è abilitato.
name str None Nome della corsa di predizione. Utilizzato per creare una sottocartella all'interno della cartella del progetto, dove vengono memorizzati gli output della predizione se save è abilitato.

FAQ

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

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

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

Per implementare la sfocatura degli oggetti in tempo reale con YOLO11, seguire l'esempio fornito con Python . Questo prevede l'uso di YOLO11 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("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()

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

Ultralytics YOLO11 offre diversi vantaggi per la sfocatura degli oggetti:

  • Protezione della privacy: Oscurare efficacemente le informazioni sensibili o identificabili.
  • Messa a fuoco selettiva: Mirate a oggetti specifici da sfocare, mantenendo i contenuti visivi essenziali.
  • Elaborazione in tempo reale: Esecuzione efficiente della sfocatura degli oggetti in ambienti dinamici, adatta per il miglioramento istantaneo della privacy.

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

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

Sì, Ultralytics YOLO11 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. Fare riferimento alla nostra guida sul rilevamento degli oggetti con YOLO11 e modificare il codice per il rilevamento dei volti.

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

Ultralytics YOLO11 supera in genere 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 YOLO11 è ottimizzata per una rapida inferenza, fondamentale per attività come la sfocatura degli oggetti in tempo reale. Per saperne di più sulle differenze tecniche e sulle metriche delle prestazioni, consultate la documentazione di YOLO11 .

📅C reato 11 mesi fa ✏️ Aggiornato 2 mesi fa

Commenti