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 |
---|
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. |
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 False i 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.