Predizione del modello 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 un'ampia gamma di fonti 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][car spare parts] | ![Rilevamento giocatori di calcio][football player detect] | ![Rilevamento cadute persone][human fall detect] |
| Rilevamento pezzi di ricambio veicoli | Rilevamento giocatori di calcio | Rilevamento cadute persone |
Perché usare Ultralytics YOLO per l'inferenza?
Ecco perché dovresti considerare la predict mode di YOLO26 per le tue diverse esigenze di inferenza:
- Versatilità: Capace di eseguire l'inferenza su immagini, video e persino live stream.
- Prestazioni: Progettato per un'elaborazione in tempo reale ad alta velocità senza sacrificare la precisione.
- Facilità d'uso: Interfacce intuitive Python e CLI per una distribuzione e un test rapidi.
- Altamente personalizzabile: Varie impostazioni e parametri per regolare il comportamento di inferenza del modello in base alle tue specifiche esigenze.
- Pronto per la produzione: Distribuisci i modelli come endpoint API su Ultralytics Platform con auto-scaling e monitoraggio, oppure esegui l'inferenza localmente.
Funzionalità chiave della Predict Mode
La predict mode di YOLO26 è progettata per essere robusta e versatile, caratterizzata da:
- Compatibilità con molteplici fonti dati: Che i tuoi dati siano sotto forma di singole immagini, una raccolta di immagini, file video o flussi video in tempo reale, la predict mode ti copre.
- Streaming Mode: Usa la funzionalità di streaming per generare un generatore efficiente in termini di memoria di oggetti
Results. Abilitalo impostandostream=Truenel metodo di chiamata del predittore. - Elaborazione in batch: Elabora più immagini o fotogrammi video in un unico batch, riducendo ulteriormente il tempo totale di inferenza.
- Facilità di integrazione: Integra facilmente 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 efficiente in termini di memoria di oggetti Results 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 diskFonti di inferenza
YOLO26 può elaborare diversi tipi di fonti di input per l'inferenza, come mostrato nella tabella seguente. Le fonti includono immagini statiche, flussi video e vari formati di dati. La tabella indica anche se ogni fonte può essere utilizzata in streaming mode con l'argomento stream=True ✅. La streaming mode è utile per l'elaborazione di video o flussi in tempo reale poiché crea un generatore di risultati invece di caricare tutti i fotogrammi in memoria.
Usa stream=True per elaborare video lunghi o dataset di grandi dimensioni per gestire in modo efficiente la memoria. Quando stream=False, i risultati per tutti i fotogrammi o punti dati vengono memorizzati nella RAM, il che può accumularsi rapidamente e causare errori di memoria insufficiente 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 memoria insufficiente.
| Fonte | Esempio | Tipo | Note |
|---|---|---|---|
| immagine | 'image.jpg' | str o Path | File immagine singolo. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL verso un'immagine. |
| screenshot | 'screen' | str | Cattura 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 trovare 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 | *.streams file di testo con un URL di streaming per riga, es. 8 stream verranno eseguiti a 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 fonte:
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)
Di default, predict usa rect=True, che abilita minimum-rectangle padding quando possibile. L'immagine viene scalata per adattarsi all'interno di imgsz e riempita solo fino al multiplo dello stride più vicino, quindi il tensore finale potrebbe essere più piccolo di imgsz. Il padding del rettangolo minimo viene usato solo quando tutte le immagini nel batch hanno la stessa forma e il backend lo supporta (PyTorch .pt, o ONNX / Triton dinamico). Altrimenti, le immagini vengono riempite fino al pieno imgsz target.
Usa rect=False per riempire sempre fino al target imgsz pieno. Questo è raccomandato quando hai bisogno di una dimensione di input fissa per corrispondere ai modelli esportati (ONNX, TensorRT, ecc.).
Intero vs tupla imgsz
- Un intero
imgsz=640diventa un target quadrato(640, 640)dopo l'arrotondamento dello stride. - Una tupla
imgsz=(384, 672)imposta un target rettangolare. Conrect=Truee dellaauto=True, il tensore effettivo può essere più piccolo di questo target.
Addestramento vs predict/export
L'addestramento accetta solo un singolo intero imgsz (una [h, w] lista viene forzata al valore più grande). Predict ed export accettano sia un intero che una (height, width) tupla.
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 ricade sugli asset demo integrati (ultralytics/assets, o un URL demo per OBB). Supporta una vasta gamma di formati e sorgenti, consentendo un'applicazione flessibile attraverso 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 | Intersection Over Union (IoU) soglia per la Non-Maximum Suppression (NMS). Valori più bassi risultano in meno rilevazioni eliminando i box sovrapposti, utile per ridurre i duplicati. |
imgsz | int o tuple | 640 | Target del letterbox. Un intero fornisce un quadrato N×N; una tupla fornisce (height, width). Con rect=True, il tensore effettivo può essere più piccolo di questo target a causa del padding del rettangolo minimo. Usa rect=False per una dimensione fissa. Vedi Forma fissa vs rettangolo minimo. |
rect | bool | True | Se True, usa il padding del rettangolo minimo quando possibile (batch con la stessa forma e backend supportato). Se False, riempi sempre fino al target imgsz. Vedi Forma fissa vs rettangolo minimo. |
half | bool | False | Abilita l'inferenza in precisione dimezzata (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 (es. cpu, cuda:0, 0, npu o npu:0). Consente agli utenti di scegliere tra CPU, una specifica GPU, Huawei Ascend NPU 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 un .txt file). Una dimensione del batch maggiore può fornire una produttività più elevata, riducendo 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, prevenendo output eccessivi in scene dense. |
vid_stride | int | 1 | Stride dei frame per input video. Consente di saltare i frame nei video per velocizzare l'elaborazione a costo della risoluzione temporale. Un valore di 1 elabora ogni frame, valori più alti saltano i frame. |
stream_buffer | bool | False | Determina se mettere in coda i frame in arrivo per gli stream video. Se False, i vecchi frame vengono scartati per accogliere i nuovi (ottimizzato per applicazioni in tempo reale). Se True, mette in coda i nuovi frame in un buffer, assicurando che nessun frame venga saltato, ma causerà latenza se l'FPS dell'inferenza è inferiore all'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 del rilevamento a costo della velocità di inferenza. |
agnostic_nms | bool | False | Abilita la Non-Maximum Suppression (NMS) classe-agnostica, che unisce i box sovrapposti di classi diverse. Utile in scenari di rilevamento multi-classe dove la sovrapposizione di classe è 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 box distinti. |
classes | list[int] | None | Filtra le previsioni su un set di ID di classe. Verranno restituite solo le rilevazioni appartenenti alle classi specificate. Utile per concentrarsi su oggetti rilevanti in attività di rilevamento 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 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 gli output di predizione se save è abilitato. |
name | str | None | Nome dell'esecuzione di predizione. Utilizzato per creare una sottocartella all'interno della cartella del progetto, dove vengono memorizzati gli output di predizione se save è abilitato. |
stream | bool | False | Abilita l'elaborazione efficiente della memoria per video lunghi o numerose immagini restituendo un generatore di oggetti Results invece di caricare tutti i frame in memoria contemporaneamente. |
verbose | bool | True | Controlla se visualizzare i log di inferenza dettagliati nel terminale, fornendo un feedback in tempo reale sul processo di predizione. |
compile | bool o str | False | Abilita la compilazione del grafo PyTorch 2.x torch.compile con backend='inductor'. Accetta True → "default", False → disabilita, oppure una modalità stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". Se non supportato, ritorna alla modalità eager con un avviso. |
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 predizione utilizzando la tradizionale pipeline NMS, consentendoti inoltre di sfruttare l'argomento iou. Consulta la guida End-to-End Detection guide 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 la documentazione, ulteriori analisi o la condivisione dei risultati. L'impostazione predefinita è True quando si usa CLI e False quando si usa in Python. |
save_frames | bool | False | Durante l'elaborazione dei video, salva i singoli frame come immagini. Utile per estrarre frame specifici o per un'analisi dettagliata frame per frame. |
save_txt | bool | False | Salva i risultati del rilevamento 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 dei rilevamenti. Utile per l'aumento del dataset, l'analisi o la creazione di dataset focalizzati su oggetti specifici. |
show_labels | bool | True | Visualizza le etichette per ogni rilevamento nell'output visivo. Fornisce una comprensione immediata degli oggetti rilevati. |
show_conf | bool | True | Visualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Fornisce informazioni sulla certezza del modello per ogni rilevamento. |
show_boxes | bool | True | Disegna riquadri di delimitazione (bounding boxes) attorno agli oggetti rilevati. Essenziale per l'identificazione visiva e la localizzazione degli oggetti nelle immagini o nei fotogrammi video. |
line_width | int or None | None | Specifica lo spessore della linea dei riquadri di delimitazione. Se None, lo spessore della linea viene regolato automaticamente in base alla dimensione dell'immagine. Fornisce personalizzazione visiva per una maggiore chiarezza. |
Formati di Immagine e Video
YOLO26 supporta vari formati di immagine e video, come specificato in ultralytics/data/utils.py. Consulta le tabelle seguenti per i suffissi validi e i comandi di predizione di esempio.
Immagini
La tabella sottostante contiene i formati immagine validi di Ultralytics.
I formati HEIC/HEIF richiedono pi-heif, che viene installato automaticamente al primo utilizzo. AVIF è supportato nativamente da Pillow.
| Suffissi Immagine | Comando Predict di Esempio | Riferimento |
|---|---|---|
.avif | yolo predict source=image.avif | Formato File Immagine AV1 |
.bmp | yolo predict source=image.bmp | Formato File Microsoft BMP |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | Formato Immagine ad Alta Efficienza |
.heif | yolo predict source=image.heif | Formato Immagine ad Alta Efficienza |
.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 | Oggetto Multi Immagine |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Formato File Immagine Tag |
.tiff | yolo predict source=image.tiff | Formato File Immagine Tag |
.webp | yolo predict source=image.webp | WebP |
Video
La tabella sottostante contiene i formati video validi di Ultralytics.
| Suffissi Video | Comando Predict di Esempio | Riferimento |
|---|---|---|
.asf | yolo predict source=video.asf | Formato Advanced Systems |
.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 Parte 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | Formato File QuickTime |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Parte 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Parte 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Parte 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 | Progetto WebM |
Lavorare con i Risultati
Tutte le chiamate Ultralytics predict() restituiranno una lista 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 inferenceResults gli oggetti hanno i seguenti attributi:
| Attributo | Tipo | Descrizione |
|---|---|---|
orig_img | np.ndarray | L'immagine originale come numpy array. |
orig_shape | tuple | La forma dell'immagine originale in formato (altezza, larghezza). |
boxes | Boxes, optional | Un oggetto Boxes contenente i riquadri di delimitazione del 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 riquadri di delimitazione 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 per salvare i risultati. |
Results gli oggetti 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 numpy array. |
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 sul dispositivo e tipo di dato specificati. |
new() | Results | Crea un nuovo oggetto Results con gli stessi attributi di immagine, percorso, nomi e velocità. |
plot() | np.ndarray | Traccia i risultati del 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 dei risultati dell'inferenza annotata 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 Polars DataFrame. |
to_csv() | str | Converte i risultati del rilevamento in formato CSV. |
to_json() | str | Converte i risultati della rilevazione in formato JSON. |
Per maggiori dettagli consulta la Results documentazione della classe.
Boxes
Boxes L'oggetto può essere utilizzato per indicizzare, manipolare e convertire i BBox in formati diversi.
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 la Boxes metodi e proprietà della classe, 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 sul dispositivo specificato. |
xyxy | Proprietà (torch.Tensor) | Restituisce i BBox in formato xyxy. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei BBox. |
cls | Proprietà (torch.Tensor) | Restituisce i valori di classe dei BBox. |
id | Proprietà (torch.Tensor) | Restituisce gli ID di tracciamento dei BBox (se disponibili). |
xywh | Proprietà (torch.Tensor) | Restituisce i BBox in formato xywh. |
xyxyn | Proprietà (torch.Tensor) | Restituisce i BBox in formato xyxy normalizzato in base alle dimensioni dell'immagine originale. |
xywhn | Proprietà (torch.Tensor) | Restituisce i BBox in formato xywh normalizzato in base alle dimensioni dell'immagine originale. |
Per maggiori dettagli consulta la Boxes documentazione della classe.
Masks
Masks L'oggetto 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 la Masks metodi e proprietà della classe, 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 array numpy. |
cuda() | Metodo | Restituisce il tensore delle maschere nella memoria GPU. |
to() | Metodo | Restituisce il tensore delle maschere con il dispositivo e il dtype 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 maggiori dettagli consulta la Masks documentazione della classe.
Keypoints
Keypoints L'oggetto 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 per la Keypoints metodi e proprietà della classe, inclusi nome, tipo e descrizione:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce il tensore dei keypoints nella memoria CPU. |
numpy() | Metodo | Restituisce il tensore dei keypoints come array numpy. |
cuda() | Metodo | Restituisce il tensore dei keypoints nella memoria GPU. |
to() | Metodo | Restituisce il tensore dei keypoints con il dispositivo e il dtype specificati. |
xyn | Proprietà (torch.Tensor) | Un elenco di keypoints normalizzati rappresentati come tensori. |
xy | Proprietà (torch.Tensor) | Un elenco di keypoints in coordinate pixel rappresentati come tensori. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei keypoints se disponibili, altrimenti None. |
Per maggiori dettagli consulta la Keypoints documentazione della classe.
Probs
Probs L'oggetto può essere utilizzato per indicizzare, ottenere top1 e della top5 indici e punteggi della 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à per la Probs classe:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce una copia del tensore probs nella memoria CPU. |
numpy() | Metodo | Restituisce una copia del tensore probs come array numpy. |
cuda() | Metodo | Restituisce una copia del tensore probs nella memoria GPU. |
to() | Metodo | Restituisce una copia del tensore probs con il dispositivo e il dtype specificati. |
top1 | Proprietà (int) | Indice della prima classe (top 1). |
top5 | Proprietà (list[int]) | Indici delle prime 5 classi (top 5). |
top1conf | Proprietà (torch.Tensor) | Confidenza della prima classe (top 1). |
top5conf | Proprietà (torch.Tensor) | Confidenze delle prime 5 classi (top 5). |
Per maggiori dettagli consulta la Probs documentazione della classe.
OBB
OBB L'oggetto può essere utilizzato per indicizzare, manipolare e convertire i BBox orientati in formati diversi.
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 per la OBB metodi e proprietà della classe, 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 sul dispositivo specificato. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei BBox. |
cls | Proprietà (torch.Tensor) | Restituisce i valori di classe dei BBox. |
id | Proprietà (torch.Tensor) | Restituisce gli ID di tracciamento dei BBox (se disponibili). |
xyxy | Proprietà (torch.Tensor) | Restituisce i BBox orizzontali in formato xyxy. |
xywhr | Proprietà (torch.Tensor) | Restituisce i BBox ruotati in formato xywhr. |
xyxyxyxy | Proprietà (torch.Tensor) | Restituisce i BBox ruotati in formato xyxyxyxy. |
xyxyxyxyn | Proprietà (torch.Tensor) | Restituisce i BBox ruotati in formato xyxyxyxy normalizzato per dimensioni immagine. |
Per maggiori dettagli consulta la OBB documentazione della classe.
Visualizzazione dei risultati
Il plot() metodo negli Results oggetti facilita la visualizzazione delle predizioni sovrapponendo gli oggetti rilevati (come BBox, 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")plot() Parametri del metodo
Il plot() Il metodo supporta vari argomenti per personalizzare l'output:
| Argomento | Tipo | Descrizione | Predefinito |
|---|---|---|---|
conf | bool | Includi i punteggi di confidenza della rilevazione. | True |
line_width | float | Spessore della linea dei BBox. Si adatta alle dimensioni dell'immagine se None. | None |
font_size | float | Dimensione del font del testo. Si adatta alle dimensioni dell'immagine se None. | None |
font | str | Nome del font per le annotazioni di testo. | 'Arial.ttf' |
pil | bool | Restituisci 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 delle maschere più rapida. Forma: (1, 3, 640, 640). | None |
kpt_radius | int | Raggio per i keypoints disegnati. | 5 |
kpt_line | bool | Collega i keypoints con linee. | True |
labels | bool | Includi le etichette di classe nelle annotazioni. | True |
boxes | bool | Sovrapponi i BBox sull'immagine. | True |
masks | bool | Sovrapponi le maschere sull'immagine. | True |
probs | bool | Includi le probabilità di classificazione. | True |
show | bool | Visualizza direttamente l'immagine annotata 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 del testo RGB per il BBox e l'etichetta di classificazione dell'immagine. | (255, 255, 255) |
Inferenza Thread-Safe
Garantire la thread safety durante l'inferenza è cruciale quando esegui più modelli YOLO in parallelo su thread diversi. L'inferenza thread-safe garantisce che le predizioni di ogni 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 impiegare lo storage locale del 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 all'inferenza thread-safe con i modelli YOLO e istruzioni dettagliate, ti preghiamo di consultare la nostra Guida all'inferenza YOLO Thread-Safe. Questa guida ti fornirà tutte le informazioni necessarie per evitare le insidie comuni e assicurare che la tua inferenza multi-thread funzioni senza problemi.
Ciclo sorgente in streaming for-loop
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 della 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 l'inferenza in tempo reale object detection, segmentazione e classificazione. La sua predict mode consente agli utenti di eseguire inferenza ad alta velocità su varie fonti di dati come immagini, video e streaming live. Progettato per prestazioni e versatilità, offre anche modalità di elaborazione batch e streaming. Per maggiori dettagli sulle sue funzionalità, dai un'occhiata alla modalità Ultralytics YOLO predict.
Come posso eseguire l'inferenza usando Ultralytics YOLO su diverse origini dati?
Ultralytics YOLO può elaborare un'ampia gamma di origini dati, inclusi singole immagini, video, directory, URL e stream. Puoi specificare l'origine dati nella chiamata model.predict() chiamata. 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 origini 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 usare la modalità streaming impostando stream=True nel metodo di chiamata del predictor. La modalità streaming genera un generatore efficiente dal punto di vista della memoria di Results oggetti invece di caricare tutti i fotogrammi in memoria. Per l'elaborazione di video lunghi o dataset di grandi dimensioni, la modalità streaming è particolarmente utile. Scopri di più sulla modalità streaming.
Quali argomenti di inferenza supporta Ultralytics YOLO?
Il model.predict() metodo in YOLO supporta vari argomenti come conf, iou, imgsz, device, e altro ancora. 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 possono essere trovate nella sezione argomenti di inferenza.
Come posso visualizzare e salvare i risultati delle previsioni YOLO?
Dopo aver eseguito l'inferenza con YOLO, gli Results oggetti contengono metodi per visualizzare e salvare le immagini annotate. Puoi usare metodi come result.show() e della result.save(filename="result.jpg") per visualizzare e salvare i risultati. Qualsiasi directory genitore mancante nel percorso del nome file viene creata automaticamente (ad es., result.save("path/to/result.jpg")). Per un elenco completo di questi metodi, consulta lavorare con i risultati.