Vai al contenuto

Ritaglio di oggetti con Ultralytics YOLO11

Che cos'è il ritaglio di oggetti?

Il ritaglio degli oggetti con Ultralytics YOLO11 prevede l'isolamento e l'estrazione di oggetti specifici rilevati da un'immagine o da un video. Le funzionalità del modello YOLO11 vengono utilizzate per identificare e delineare con precisione gli oggetti, consentendo un ritaglio preciso per ulteriori analisi o manipolazioni.



Guarda: Ritaglio di oggetti con Ultralytics YOLO

Vantaggi del ritaglio degli oggetti?

  • Analisi mirata: YOLO11 facilita il ritaglio mirato degli oggetti, consentendo l'esame o l'elaborazione approfondita di singoli elementi all'interno di una scena.
  • Riduzione del volume dei dati: Estraendo solo gli oggetti rilevanti, il ritaglio degli oggetti aiuta a ridurre al minimo le dimensioni dei dati, rendendoli efficienti per l'archiviazione, la trasmissione o le successive attività di calcolo.
  • Maggiore precisione: l'accuratezza del rilevamento degli oggetti di YOLO11 garantisce che gli oggetti ritagliati mantengano le loro relazioni spaziali, preservando l'integrità delle informazioni visive per un'analisi dettagliata.

Immagini

Bagagli per l'aeroporto
Nastro trasportatore in aeroporto Ritaglio di valigie con uso di Ultralytics YOLO11
Ritaglio di valigie al nastro trasportatore dell'aeroporto con l'uso di Ultralytics YOLO11

Ritaglio di oggetti con YOLO11 Esempio

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

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

Cos'è il ritaglio degli oggetti in Ultralytics YOLO11 e come funziona?

Il ritaglio di oggetti utilizzando Ultralytics YOLO11 consiste nell'isolare ed estrarre oggetti specifici da un'immagine o da un video in base alle capacità di rilevamento di YOLO11. Questo processo consente un'analisi mirata, una riduzione del volume di dati e una maggiore precisione, sfruttando YOLO11 per identificare gli oggetti con elevata precisione e ritagliarli di conseguenza. Per un'esercitazione approfondita, consultare l'esempio di ritaglio degli oggetti.

Perché utilizzare Ultralytics YOLO11 per il ritaglio degli oggetti rispetto ad altre soluzioni?

Ultralytics YOLO11 si distingue per precisione, velocità e facilità d'uso. Consente il rilevamento e il ritaglio dettagliato e accurato degli oggetti, essenziale per analisi mirate e applicazioni che richiedono un'elevata integrità dei dati. Inoltre, YOLO11 si integra perfettamente con strumenti come OpenVINO e TensorRT per le implementazioni che richiedono funzionalità in tempo reale e ottimizzazione su hardware diversi. Esplorate i vantaggi nella guida sull'esportazione dei modelli.

Come posso ridurre il volume dei dati del mio set di dati utilizzando il ritaglio degli oggetti?

Utilizzando Ultralytics YOLO11 per ritagliare solo gli oggetti rilevanti dalle immagini o dai video, è possibile ridurre significativamente le dimensioni dei dati, rendendoli più efficienti per l'archiviazione e l'elaborazione. Questo processo prevede l'addestramento del modello per rilevare oggetti specifici e quindi l'utilizzo dei risultati per ritagliare e salvare solo queste porzioni. Per ulteriori informazioni su come sfruttare le capacità di Ultralytics YOLO11 , visitate la nostra guida rapida.

È possibile utilizzare Ultralytics YOLO11 per l'analisi video in tempo reale e il ritaglio di oggetti?

Sì, Ultralytics YOLO11 è in grado di elaborare feed video in tempo reale per rilevare e ritagliare oggetti in modo dinamico. Le capacità di inferenza ad alta velocità del modello lo rendono ideale per applicazioni in tempo reale come la sorveglianza, l'analisi sportiva e i sistemi di ispezione automatizzati. Per capire come implementare l'elaborazione in tempo reale, è possibile consultare le modalità di tracciamento e di previsione.

Quali sono i requisiti hardware per eseguire in modo efficiente YOLO11 per il ritaglio degli oggetti?

Ultralytics YOLO11 è ottimizzato per entrambi gli ambienti CPU e GPU , ma per ottenere prestazioni ottimali, soprattutto per l'inferenza in tempo reale o per volumi elevati, si consiglia di utilizzare un GPU dedicato (ad esempio, NVIDIA Tesla, serie RTX). Per la distribuzione su dispositivi leggeri, si consiglia di utilizzare CoreML per iOS o TFLite per Android. Maggiori dettagli sui dispositivi e sui formati supportati sono disponibili nelle opzioni di distribuzione dei modelli.

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

Commenti