Esecuzione di predizioni con Ultralytics YOLO
Introduzione
Nel mondo del machine learning e della computer vision, il processo di interpretazione dei dati visivi è spesso chiamato inferenza o predizione. Ultralytics YOLO26 offre una potente funzionalità nota come predict mode, progettata per un'inferenza ad alte prestazioni e in tempo reale su una vasta gamma di origini dati.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Applicazioni nel mondo reale
| Produzione | Sport | Sicurezza |
|---|---|---|
![]() | ![]() | ![]() |
| Rilevamento pezzi di ricambio veicoli | Rilevamento giocatori di calcio | Rilevamento cadute persone |
Perché utilizzare Ultralytics YOLO per l'inferenza?
Ecco perché dovresti considerare la predict mode di YOLO26 per le tue varie esigenze di inferenza:
- Versatilità: In grado di eseguire l'inferenza su immagini, video e persino live stream.
- Prestazioni: Progettato per un'elaborazione ad alta velocità e in tempo reale senza sacrificare l'accuracy.
- Facilità d'uso: Interfacce Python e CLI intuitive per una distribuzione e un test rapidi.
- Altamente personalizzabile: Varie impostazioni e parametri per regolare il comportamento di inferenza del modello in base ai tuoi requisiti specifici.
- Pronto per la produzione: Distribuisci i modelli come endpoint API su Ultralytics Platform con auto-scaling e monitoraggio, oppure esegui l'inferenza localmente.
Caratteristiche principali della predict mode
La predict mode di YOLO26 è progettata per essere robusta e versatile, con le seguenti caratteristiche:
- Compatibilità con molteplici origini dati: Che i tuoi dati siano sotto forma di singole immagini, una raccolta di immagini, file video o streaming video in tempo reale, la predict mode ti copre.
- Modalità streaming: Usa la funzionalità di streaming per generare un generatore di oggetti
Resultsefficiente in termini di memoria. Abilitala impostandostream=Truenel metodo di chiamata del predittore. - Elaborazione batch: Elabora più immagini o fotogrammi video in un unico batch, riducendo ulteriormente il tempo totale di inferenza.
- Facile integrazione: Integrazione semplice con pipeline di dati esistenti e altri componenti software, grazie alla sua API flessibile.
I modelli Ultralytics YOLO restituiscono una lista Python di oggetti Results o un generatore di oggetti Results efficiente in termini di memoria quando stream=True viene passato al modello durante l'inferenza:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to diskOrigini di inferenza
YOLO26 può elaborare diversi tipi di origini di input per l'inferenza, come mostrato nella tabella seguente. Le origini includono immagini statiche, flussi video e vari formati di dati. La tabella indica anche se ogni origine può essere utilizzata in modalità streaming con l'argomento stream=True ✅. La modalità streaming è vantaggiosa per l'elaborazione di video o flussi live poiché crea un generatore di risultati invece di caricare tutti i fotogrammi in memoria.
Usa stream=True per elaborare video lunghi o grandi dataset per gestire in modo efficiente la memoria. Quando stream=False, i risultati per tutti i fotogrammi o i punti dati vengono memorizzati in RAM, il che può accumularsi rapidamente e causare errori di esaurimento della memoria per input di grandi dimensioni. Al contrario, stream=True utilizza un generatore, che mantiene in memoria solo i risultati del fotogramma o del punto dati corrente, riducendo significativamente il consumo di memoria e prevenendo problemi di esaurimento della stessa.
| Origine | Esempio | Tipo | Note |
|---|---|---|---|
| immagine | 'image.jpg' | str o Path | Singolo file immagine. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL verso un'immagine. |
| screenshot | 'screen' | str | Acquisisci uno screenshot. |
| PIL | Image.open('image.jpg') | PIL.Image | Formato HWC con canali RGB. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | Formato HWC con canali BGR uint8 (0-255). |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | Formato HWC con canali BGR uint8 (0-255). |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | Formato BCHW con canali RGB float32 (0.0-1.0). |
| CSV | 'sources.csv' | str o Path | File CSV contenente percorsi verso immagini, video o directory. |
| video ✅ | 'video.mp4' | str o Path | File video in formati come MP4, AVI, ecc. |
| directory ✅ | 'path/' | str o Path | Percorso verso una directory contenente immagini o video. |
| glob ✅ | 'path/*.jpg' | str | Pattern glob per corrispondere a più file. Usa il carattere * come jolly. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL verso un video YouTube. |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | URL per protocolli di streaming come RTSP, RTMP, TCP o un indirizzo IP. |
| multi-stream ✅ | 'list.streams' | str o Path | File di testo *.streams con un URL di streaming per riga; es. 8 stream verranno eseguiti con batch-size 8. |
| webcam ✅ | 0 | int | Indice del dispositivo fotocamera collegato su cui eseguire l'inferenza. |
Di seguito sono riportati esempi di codice per l'utilizzo di ciascun tipo di origine:
Esegui l'inferenza su un file immagine.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objectsArgomenti di inferenza
model.predict() accetta molteplici argomenti che possono essere passati al momento dell'inferenza per sovrascrivere le impostazioni predefinite:
Forma fissa vs rettangolo minimo (rect)
Per impostazione predefinita, predict utilizza rect=True, che abilita il padding a rettangolo minimo quando possibile. L'immagine viene scalata per adattarsi all'interno di imgsz e riempita solo fino al multiplo di stride più vicino, quindi il tensore finale potrebbe essere più piccolo di imgsz. Il padding a rettangolo minimo viene utilizzato solo quando tutte le immagini nel batch hanno la stessa forma e il backend lo supporta (PyTorch .pt, o ONNX dinamico / Triton). Altrimenti, le immagini vengono riempite fino al target completo imgsz.
Usa rect=False per riempire sempre fino al target completo imgsz. Questo è consigliato quando hai bisogno di una dimensione di input fissa per corrispondere ai modelli esportati (ONNX, TensorRT, ecc.).
Intero vs tupla imgsz
- Un
imgsz=640intero diventa un target quadrato(640, 640)dopo l'arrotondamento dello stride. - Una tupla
imgsz=(384, 672)imposta un target rettangolare. Conrect=Trueeauto=True, il tensore effettivo può essere più piccolo di questo target.
Addestramento vs predict/export
Training accepts only a single integer imgsz (a [h, w] list is coerced to the largest value). Predict and export accept either an integer or a (height, width) tuple.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)Argomenti di inferenza:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
source | str o int o None | None | Specifica la sorgente dati per l'inferenza. Può essere un percorso immagine, un file video, una directory, un URL o un ID dispositivo per feed in diretta. Se omesso, viene registrato un avviso e il modello ricorre agli asset demo integrati (ultralytics/assets, o un URL demo per OBB). Supporta un'ampia gamma di formati e sorgenti, consentendo un'applicazione flessibile su diversi tipi di input. |
conf | float | 0.25 | Imposta la soglia di confidenza minima per le rilevazioni. Gli oggetti rilevati con una confidenza inferiore a questa soglia verranno ignorati. Regolare questo valore può aiutare a ridurre i falsi positivi. |
iou | float | 0.7 | Soglia Intersection Over Union (IoU) per la Non-Maximum Suppression (NMS). Valori più bassi portano a meno rilevazioni eliminando i riquadri sovrapposti, utile per ridurre i duplicati. |
imgsz | int o tuple | 640 | Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle. |
rect | bool | True | Se True, usa il padding a rettangolo minimo quando possibile (batch della stessa forma e backend supportato). Se False, riempi sempre fino al imgsz completo. Vedi Forma fissa vs rettangolo minimo. |
half | bool | False | Abilita l'inferenza a mezza precisione (FP16), che può velocizzare l'inferenza del modello su GPU supportate con un impatto minimo sull'accuratezza. |
device | str | None | Specifica il dispositivo per l'inferenza (ad esempio, cpu, cuda:0, 0, npu o npu:0). Consente agli utenti di scegliere tra CPU, una GPU specifica, NPU Huawei Ascend o altri dispositivi di calcolo per l'esecuzione del modello. |
batch | int | 1 | Specifica la batch size per l'inferenza (funziona solo quando la sorgente è una directory, un file video o un file .txt). Una batch size più grande può fornire un throughput maggiore, accorciando il tempo totale richiesto per l'inferenza. |
max_det | int | 300 | Numero massimo di rilevazioni consentite per immagine. Limita il numero totale di oggetti che il modello può rilevare in una singola inferenza, evitando output eccessivi in scene dense. |
vid_stride | int | 1 | Stride dei fotogrammi per input video. Consente di saltare i fotogrammi nei video per velocizzare 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 far posto ai nuovi (ottimizzato per applicazioni in tempo reale). Se True, accoda i nuovi fotogrammi in un buffer, assicurando che nessun fotogramma venga saltato, ma causerà latenza se gli FPS dell'inferenza sono inferiori agli FPS dello stream. |
visualize | bool | False | Attiva la visualizzazione delle caratteristiche del modello durante l'inferenza, fornendo approfondimenti su ciò che il modello "vede". Utile per il debug e l'interpretazione del modello. |
augment | bool | False | Abilita la test-time augmentation (TTA) per le previsioni, migliorando potenzialmente la robustezza della rilevazione a scapito della velocità di inferenza. |
agnostic_nms | bool | False | Abilita la Non-Maximum Suppression (NMS) agnostica rispetto alla classe, che unisce i riquadri sovrapposti di diverse classi. Utile in scenari di rilevazione multi-classe in cui la sovrapposizione delle classi è comune. Per i modelli end-to-end (YOLO26, YOLOv10), questo impedisce solo che la stessa rilevazione appaia con più etichette di classe (duplicati IoU=1.0) e non esegue la soppressione basata sulla soglia IoU tra riquadri distinti. |
classes | list[int] | None | Filtra le previsioni su un insieme di ID di classe. Verranno restituite solo le rilevazioni appartenenti alle classi specificate. Utile per concentrarsi sugli oggetti rilevanti in attività di rilevazione multi-classe. |
retina_masks | bool | False | Restituisce maschere di segmentazione ad alta risoluzione. Le maschere restituite (masks.data) corrisponderanno alla dimensione originale dell'immagine se abilitato. Se disabilitato, hanno la dimensione dell'immagine utilizzata durante l'inferenza. |
embed | list[int] | None | Specifica i layer 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 gli output della previsione se save è abilitato. |
name | str | None | Nome dell'esecuzione della previsione. Utilizzato per creare una sottodirectory all'interno della cartella del progetto, dove vengono memorizzati gli output della previsione se save è abilitato. |
stream | bool | False | Abilita l'elaborazione efficiente in termini di memoria per video lunghi o numerose immagini restituendo un generatore di oggetti Results invece di caricare tutti i fotogrammi in memoria contemporaneamente. |
verbose | bool | True | Controlla se visualizzare log di inferenza dettagliati nel terminale, fornendo un feedback in tempo reale sul processo di previsione. |
compile | bool o str | False | Abilita la compilazione del grafo torch.compile di PyTorch 2.x con backend='inductor'. Accetta True → "default", False → disabilita, o una modalità stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". Torna all'esecuzione eager con un avviso se non supportato. |
end2end | bool | None | Sovrascrive la modalità end-to-end nei modelli YOLO che supportano l'inferenza senza NMS (YOLO26, YOLOv10). Impostandolo su False ti permette di eseguire la previsione utilizzando la pipeline NMS tradizionale, consentendoti inoltre di utilizzare l'argomento iou. Vedi la guida End-to-End Detection per i dettagli. |
Argomenti di visualizzazione:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
show | bool | False | Se True, visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
save | bool | False or True | Abilita il salvataggio delle immagini o dei video annotati su file. Utile per documentazione, analisi successiva o condivisione dei risultati. Predefinito su True quando si usa CLI e False quando usato in Python. |
save_frames | bool | False | Durante l'elaborazione dei video, salva i singoli fotogrammi come immagini. Utile per estrarre fotogrammi specifici o per un'analisi dettagliata fotogramma per fotogramma. |
save_txt | bool | False | Salva i risultati della rilevazione in un file di testo, seguendo il formato [class] [x_center] [y_center] [width] [height] [confidence]. Utile per l'integrazione con altri strumenti di analisi. |
save_conf | bool | False | Include i punteggi di confidenza nei file di testo salvati. Migliora il dettaglio disponibile per la post-elaborazione e l'analisi. |
save_crop | bool | False | Salva le immagini ritagliate delle rilevazioni. Utile per l'aumento dei dati, l'analisi o la creazione di dataset mirati per oggetti specifici. |
show_labels | bool | True | Mostra le etichette per ogni rilevazione nell'output visivo. Fornisce una comprensione immediata degli oggetti rilevati. |
show_conf | bool | True | Mostra il punteggio di confidenza per ogni rilevazione accanto all'etichetta. Offre una panoramica sulla certezza del modello per ogni rilevazione. |
show_boxes | bool | True | Disegna le bounding box attorno agli oggetti rilevati. Essenziale per l'identificazione visiva e la localizzazione degli oggetti nelle immagini o nei frame video. |
line_width | int or None | None | Specifica lo spessore della linea delle bounding box. Se None, lo spessore della linea viene regolato automaticamente in base alla dimensione dell'immagine. Fornisce una personalizzazione visiva per una maggiore chiarezza. |
Formati di Immagini e Video
YOLO26 supporta vari formati di immagini e video, come specificato in ultralytics/data/utils.py. Vedi le tabelle sottostanti per i suffissi validi e gli esempi di comandi di predizione.
Immagini
La tabella seguente contiene i formati di immagine validi per Ultralytics.
I formati HEIC/HEIF richiedono pi-heif, che viene installato automaticamente al primo utilizzo. AVIF è supportato nativamente da Pillow.
| Suffissi Immagine | Esempio di Comando di Predizione | Riferimento |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Image File Format |
.bmp | yolo predict source=image.bmp | Microsoft BMP File Format |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | High Efficiency Image Format |
.heif | yolo predict source=image.heif | High Efficiency Image Format |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Tag Image File Format |
.tiff | yolo predict source=image.tiff | Tag Image File Format |
.webp | yolo predict source=image.webp | WebP |
Video
La tabella seguente contiene i formati video validi per Ultralytics.
| Suffissi Video | Esempio di Comando di Predizione | Riferimento |
|---|---|---|
.asf | yolo predict source=video.asf | Advanced Systems Format |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Graphics Interchange Format |
.m4v | yolo predict source=video.m4v | MPEG-4 Part 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | QuickTime File Format |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Part 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Part 2 |
.ts | yolo predict source=video.ts | MPEG Transport Stream |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebM Project |
Lavorare con i Risultati
Tutte le chiamate predict() di Ultralytics restituiranno un elenco di oggetti Results:
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inferenceGli oggetti Results hanno i seguenti attributi:
| Attributo | Tipo | Descrizione |
|---|---|---|
orig_img | np.ndarray | L'immagine originale come array NumPy. |
orig_shape | tuple | La forma originale dell'immagine nel formato (altezza, larghezza). |
boxes | Boxes, optional | Un oggetto Boxes contenente i bounding box di rilevamento. |
masks | Masks, optional | Un oggetto Masks contenente le maschere di rilevamento. |
probs | Probs, optional | Un oggetto Probs contenente le probabilità di ogni classe per l'attività di classificazione. |
keypoints | Keypoints, optional | Un oggetto Keypoints contenente i punti chiave rilevati per ogni oggetto. |
obb | OBB, optional | Un oggetto OBB contenente i bounding box orientati. |
speed | dict | Un dizionario delle velocità di pre-elaborazione, inferenza e post-elaborazione in millisecondi per immagine. |
names | dict | Un dizionario che mappa gli indici di classe ai nomi delle classi. |
path | str | Il percorso verso il file immagine. |
save_dir | str, optional | Directory in cui salvare i risultati. |
Gli oggetti Results hanno i seguenti metodi:
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
update() | None | Aggiorna l'oggetto Results con nuovi dati di rilevamento (boxes, masks, probs, obb, keypoints). |
cpu() | Results | Restituisce una copia dell'oggetto Results con tutti i tensori spostati nella memoria CPU. |
numpy() | Results | Restituisce una copia dell'oggetto Results con tutti i tensori convertiti in array NumPy. |
cuda() | Results | Restituisce una copia dell'oggetto Results con tutti i tensori spostati nella memoria GPU. |
to() | Results | Restituisce una copia dell'oggetto Results con i tensori spostati nel dispositivo e nel tipo di dati specificati. |
new() | Results | Crea un nuovo oggetto Results con gli stessi attributi di immagine, percorso, nomi e velocità. |
plot() | np.ndarray | Traccia i risultati di rilevamento su un'immagine RGB di input e restituisce l'immagine annotata. |
show() | None | Visualizza l'immagine con i risultati dell'inferenza annotati. |
save() | str | Salva l'immagine con i risultati dell'inferenza annotati su file e restituisce il nome del file. |
verbose() | str | Restituisce una stringa di log per ogni attività, dettagliando i risultati del rilevamento e della classificazione. |
save_txt() | str | Salva i risultati del rilevamento in un file di testo e restituisce il percorso del file salvato. |
save_crop() | None | Salva le immagini di rilevamento ritagliate nella directory specificata. |
summary() | List[Dict[str, Any]] | Converte i risultati dell'inferenza in un dizionario riassuntivo con normalizzazione opzionale. |
to_df() | DataFrame | Converte i risultati del rilevamento in un DataFrame Polars. |
to_csv() | str | Converte i risultati del rilevamento in formato CSV. |
to_json() | str | Converte i risultati del rilevamento in formato JSON. |
For more details see the Results class documentation.
Boxes
L'oggetto Boxes può essere utilizzato per indicizzare, manipolare e convertire i bounding box in diversi formati.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.boxes) # print the Boxes object containing the detection bounding boxesEcco una tabella per i metodi e le proprietà della classe Boxes, inclusi nome, tipo e descrizione:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Sposta l'oggetto nella memoria CPU. |
numpy() | Metodo | Converti l'oggetto in un array NumPy. |
cuda() | Metodo | Sposta l'oggetto nella memoria CUDA. |
to() | Metodo | Sposta l'oggetto nel dispositivo specificato. |
xyxy | Proprietà (torch.Tensor) | Restituisce i box nel formato xyxy. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei box. |
cls | Proprietà (torch.Tensor) | Restituisce i valori di classe dei box. |
id | Proprietà (torch.Tensor) | Restituisce gli ID di tracciamento dei box (se disponibili). |
xywh | Proprietà (torch.Tensor) | Restituisce i box nel formato xywh. |
xyxyn | Proprietà (torch.Tensor) | Restituisce i box nel formato xyxy normalizzato in base alla dimensione dell'immagine originale. |
xywhn | Proprietà (torch.Tensor) | Restituisce i box nel formato xywh normalizzato in base alla dimensione dell'immagine originale. |
For more details see the Boxes class documentation.
Masks
L'oggetto Masks può essere utilizzato per indicizzare, manipolare e convertire le maschere in segmenti.
from ultralytics import YOLO
# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.masks) # print the Masks object containing the detected instance masksEcco una tabella per i metodi e le proprietà della classe Masks, inclusi nome, tipo e descrizione:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce il tensore delle maschere nella memoria CPU. |
numpy() | Metodo | Restituisce il tensore delle maschere come un array NumPy. |
cuda() | Metodo | Restituisce il tensore delle maschere nella memoria GPU. |
to() | Metodo | Restituisce il tensore delle maschere con il dispositivo e il tipo di dati specificati. |
xyn | Proprietà (torch.Tensor) | Un elenco di segmenti normalizzati rappresentati come tensori. |
xy | Proprietà (torch.Tensor) | Un elenco di segmenti in coordinate pixel rappresentati come tensori. |
Per ulteriori dettagli, consulta la documentazione della classe Masks.
Keypoints
L'oggetto Keypoints può essere utilizzato per indicizzare, manipolare e normalizzare le coordinate.
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypointsEcco una tabella dei metodi e delle proprietà della classe Keypoints, inclusi nome, tipo e descrizione:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce il tensore dei keypoints sulla memoria della CPU. |
numpy() | Metodo | Restituisce il tensore dei keypoints come array NumPy. |
cuda() | Metodo | Restituisce il tensore dei keypoints sulla memoria della GPU. |
to() | Metodo | Restituisce il tensore dei keypoints con il dispositivo e il dtype specificati. |
xyn | Proprietà (torch.Tensor) | Una lista di keypoints normalizzati rappresentati come tensori. |
xy | Proprietà (torch.Tensor) | Una lista di keypoints in coordinate pixel rappresentati come tensori. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei keypoints, se disponibili, altrimenti None. |
Per ulteriori dettagli, consulta la documentazione della classe Keypoints.
Probs
L'oggetto Probs può essere utilizzato per indicizzare, ottenere indici top1 e top5 e i punteggi di classificazione.
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.probs) # print the Probs object containing the detected class probabilitiesEcco una tabella che riassume i metodi e le proprietà della classe Probs:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce una copia del tensore probs sulla memoria della CPU. |
numpy() | Metodo | Restituisce una copia del tensore probs come array NumPy. |
cuda() | Metodo | Restituisce una copia del tensore probs sulla memoria della GPU. |
to() | Metodo | Restituisce una copia del tensore probs con il dispositivo e il dtype specificati. |
top1 | Proprietà (int) | Indice della classe top 1. |
top5 | Proprietà (list[int]) | Indici delle classi top 5. |
top1conf | Proprietà (torch.Tensor) | Confidenza della classe top 1. |
top5conf | Proprietà (torch.Tensor) | Confidenze delle classi top 5. |
Per ulteriori dettagli, consulta la documentazione della classe Probs.
OBB
L'oggetto OBB può essere utilizzato per indicizzare, manipolare e convertire i bounding box orientati in diversi formati.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg") # results list
# View results
for r in results:
print(r.obb) # print the OBB object containing the oriented detection bounding boxesEcco una tabella dei metodi e delle proprietà della classe OBB, inclusi nome, tipo e descrizione:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Sposta l'oggetto nella memoria CPU. |
numpy() | Metodo | Converti l'oggetto in un array NumPy. |
cuda() | Metodo | Sposta l'oggetto nella memoria CUDA. |
to() | Metodo | Sposta l'oggetto nel dispositivo specificato. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei box. |
cls | Proprietà (torch.Tensor) | Restituisce i valori di classe dei box. |
id | Proprietà (torch.Tensor) | Restituisce gli ID di tracciamento dei box (se disponibili). |
xyxy | Proprietà (torch.Tensor) | Restituisce i box orizzontali in formato xyxy. |
xywhr | Proprietà (torch.Tensor) | Restituisce i box ruotati in formato xywhr. |
xyxyxyxy | Proprietà (torch.Tensor) | Restituisce i box ruotati in formato xyxyxyxy. |
xyxyxyxyn | Proprietà (torch.Tensor) | Restituisce i box ruotati in formato xyxyxyxy normalizzati in base alle dimensioni dell'immagine. |
Per ulteriori dettagli, consulta la documentazione della classe OBB.
Visualizzazione dei risultati
Il metodo plot() negli oggetti Results facilita la visualizzazione delle predizioni sovrapponendo gli oggetti rilevati (come bounding box, maschere, keypoints e probabilità) sull'immagine originale. Questo metodo restituisce l'immagine annotata come array NumPy, consentendo una facile visualizzazione o salvataggio.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")Parametri del metodo plot()
Il metodo plot() supporta vari argomenti per personalizzare l'output:
| Argomento | Tipo | Descrizione | Predefinito |
|---|---|---|---|
conf | bool | Include i punteggi di confidenza del rilevamento. | True |
line_width | float | Spessore della linea dei bounding box. Si scala in base alle dimensioni dell'immagine se è None. | None |
font_size | float | Dimensione del font del testo. Si scala in base alle dimensioni dell'immagine se è None. | None |
font | str | Nome del font per le annotazioni di testo. | 'Arial.ttf' |
pil | bool | Restituisce l'immagine come oggetto PIL Image. | False |
img | np.ndarray | Immagine alternativa per la visualizzazione. Utilizza l'immagine originale se è None. | None |
im_gpu | torch.Tensor | Immagine accelerata via GPU per una visualizzazione più rapida delle maschere. Forma: (1, 3, 640, 640). | None |
kpt_radius | int | Raggio per i keypoints disegnati. | 5 |
kpt_line | bool | Collega i keypoints con delle linee. | True |
labels | bool | Include le etichette delle classi nelle annotazioni. | True |
boxes | bool | Sovrappone i bounding box sull'immagine. | True |
masks | bool | Sovrappone le maschere sull'immagine. | True |
probs | bool | Include le probabilità di classificazione. | True |
show | bool | Visualizza l'immagine annotata direttamente utilizzando il visualizzatore di immagini predefinito. | False |
save | bool | Salva l'immagine annotata in un file specificato da filename. | False |
filename | str | Percorso e nome del file in cui salvare l'immagine annotata se save è True. | None |
color_mode | str | Specifica la modalità colore, ad esempio 'instance' o 'class'. | 'class' |
txt_color | tuple[int, int, int] | Colore RGB del testo per il bounding box e l'etichetta di classificazione dell'immagine. | (255, 255, 255) |
Inferenza Thread-Safe
Garantire la sicurezza dei thread durante l'inferenza è fondamentale quando si eseguono più modelli YOLO in parallelo su thread diversi. L'inferenza thread-safe garantisce che le predizioni di ciascun thread siano isolate e non interferiscano tra loro, evitando race condition e assicurando output coerenti e affidabili.
Quando utilizzi modelli YOLO in un'applicazione multi-thread, è importante istanziare oggetti modello separati per ogni thread o utilizzare lo storage locale al thread per prevenire conflitti:
Istanzia un singolo modello all'interno di ogni thread per un'inferenza thread-safe:
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()Per uno sguardo approfondito sull'inferenza thread-safe con i modelli YOLO e istruzioni passo-passo, consulta la nostra Guida all'Inferenza Thread-Safe di YOLO. Questa guida ti fornirà tutte le informazioni necessarie per evitare problemi comuni e assicurarti che la tua inferenza multi-thread funzioni correttamente.
Ciclo for per sorgente in streaming
Ecco uno script Python che utilizza OpenCV (cv2) e YOLO per eseguire l'inferenza sui frame video. Questo script presuppone che tu abbia già installato i pacchetti necessari (opencv-python e ultralytics).
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()Questo script eseguirà le predizioni su ogni frame del video, visualizzerà i risultati e li mostrerà in una finestra. Il ciclo può essere interrotto premendo 'q'.
FAQ
Cos'è Ultralytics YOLO e la sua modalità predict per l'inferenza in tempo reale?
Ultralytics YOLO è un modello all'avanguardia per object detection, instance segmentation, semantic segmentation e classification in tempo reale. La sua modalità predict consente agli utenti di eseguire inferenza ad alta velocità su varie sorgenti di dati come immagini, video e stream live. Progettata per prestazioni e versatilità, offre anche modalità di elaborazione batch e in streaming. Per maggiori dettagli sulle sue funzionalità, consulta la modalità predict di Ultralytics YOLO.
Come posso eseguire l'inferenza utilizzando Ultralytics YOLO su diverse sorgenti di dati?
Ultralytics YOLO può elaborare un'ampia gamma di sorgenti di dati, tra cui singole immagini, video, directory, URL e stream. Puoi specificare la sorgente dati nella chiamata model.predict(). Ad esempio, usa 'image.jpg' per un'immagine locale o 'https://ultralytics.com/images/bus.jpg' per un URL. Dai un'occhiata agli esempi dettagliati per varie sorgenti di inferenza nella documentazione.
Come posso ottimizzare la velocità di inferenza e l'utilizzo della memoria di YOLO?
Per ottimizzare la velocità di inferenza e gestire la memoria in modo efficiente, puoi utilizzare la modalità streaming impostando stream=True nel metodo di chiamata del predictor. La modalità streaming genera un generatore di oggetti Results efficiente dal punto di vista della memoria, invece di caricare tutti i frame in memoria. Per l'elaborazione di video lunghi o grandi dataset, la modalità streaming è particolarmente utile. Scopri di più sulla modalità streaming.
Quali argomenti di inferenza supporta Ultralytics YOLO?
Il metodo model.predict() in YOLO supporta vari argomenti come conf, iou, imgsz, device e altri. Questi argomenti ti consentono di personalizzare il processo di inferenza, impostando parametri come soglie di confidenza, dimensioni dell'immagine e il dispositivo utilizzato per il calcolo. Descrizioni dettagliate di questi argomenti si trovano nella sezione argomenti di inferenza.
Come posso visualizzare e salvare i risultati delle predizioni di YOLO?
Dopo aver eseguito l'inferenza con YOLO, gli oggetti Results contengono metodi per visualizzare e salvare le immagini annotate. Puoi utilizzare metodi come result.show() e result.save(filename="result.jpg") per visualizzare e salvare i risultati. Eventuali directory parenti mancanti nel percorso del file vengono create automaticamente (ad esempio, result.save("path/to/result.jpg")). Per un elenco completo di questi metodi, fai riferimento alla sezione lavorare con i risultati.


