Previsione del modello con Ultralytics YOLO#
Introduzione#
Nel mondo del machine learning e della computer vision, il processo di interpretazione dei dati visivi viene spesso chiamato inferenza o predizione. Ultralytics YOLO26 offre una potente funzionalità nota come predict mode, progettata per un'inferenza in tempo reale ad alte prestazioni su un'ampia gamma di fonti di dati.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Applicazioni nel mondo reale#
| Manifattura | Sport | Sicurezza |
|---|---|---|
![]() | ![]() | ![]() |
| Rilevamento di ricambi per veicoli | Rilevamento di giocatori di calcio | Rilevamento di cadute di persone |
Perché usare Ultralytics YOLO per l'inferenza?#
Ecco perché dovresti prendere in considerazione 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.
- Performance: Progettato per un'elaborazione ad alta velocità in tempo reale senza sacrificare l'accuracy.
- Facilità d'uso: Interfacce intuitive in Python e CLI per una distribuzione e un test rapidi.
- Altamente personalizzabile: Varie impostazioni e parametri per ottimizzare il comportamento di inferenza del modello in base ai tuoi requisiti specifici.
- Pronto per la produzione: Distribuisci i modelli come Ultralytics Platform inference endpoints con scalabilità automatica e monitoraggio, oppure esegui l'inferenza localmente.
Caratteristiche principali della predict mode#
La predict mode di YOLO26 è progettata per essere robusta e versatile, e offre:
- Compatibilità con molteplici fonti 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 è adatta a te.
- Modalità streaming: Usa la funzionalità di streaming per generare un generatore efficiente in termini di memoria di oggetti
Results. Abilitala impostandostream=Truenel metodo di chiamata del predittore. A differenza del comportamento predefinito (stream=False), che restituisce un elenco contenente tutti i risultati,stream=Truerestituisce i risultati uno alla volta, risultando particolarmente utile per video lunghi e streaming live. - Elaborazione in batch: Elabora più immagini o fotogrammi video in un unico batch, riducendo ulteriormente il tempo totale di inferenza.
- Facile da integrare: Si integra facilmente con pipeline di dati esistenti e altri componenti software, grazie alla sua API flessibile.
I modelli Ultralytics YOLO restituiscono un elenco Python di oggetti Results o un generatore efficiente in termini di memoria di oggetti Results quando viene passato stream=True 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 ciascuna fonte può essere utilizzata in modalità streaming con l'argomento stream=True ✅. La modalità streaming è vantaggiosa per l'elaborazione di video o streaming live poiché crea un generatore di risultati anziché 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 memoria, 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 memoria.
| Sorgente | 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 | 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 i 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 carattere 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, ovvero 8 flussi 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 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 rispetto al rettangolo minimo (rect)#
Per impostazione predefinita, predict utilizza rect=True, che abilita il padding a rettangolo minimo quando possibile. L'immagine viene ridimensionata per rientrare in imgsz e imbottita solo fino al multiplo dello 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 imbottite fino al target completo imgsz.
Usa rect=False per applicare sempre il padding al target completo imgsz. Questo è consigliato quando hai bisogno di una dimensione di input fissa per corrispondere ai modelli esportati (ONNX, TensorRT, ecc.).
Intero rispetto a 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=Trueeauto=True, il tensore effettivo può essere più piccolo di questo target.
Addestramento vs predict/export
Il training accetta solo un singolo intero imgsz (un elenco [h, w] viene convertito nel valore più grande). Predict ed export accettano un intero o una tupla (height, width).
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 fonte dei dati per l'inferenza. Può essere un percorso di un'immagine, un file video, una directory, un URL o l'ID di un dispositivo per i flussi in tempo reale. Se omesso, viene registrato un avviso e il modello torna agli asset demo integrati (ultralytics/assets, o un URL demo per OBB). Supporta un'ampia gamma di formati e origini, 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. La regolazione di questo valore può aiutare a ridurre i falsi positivi. |
iou | float | 0.7 | Soglia di Intersection Over Union (IoU) per il Non-Maximum Suppression (NMS). Valori inferiori comportano un minor numero di rilevamenti eliminando i box sovrapposti, utile per ridurre i duplicati. |
imgsz | int o tuple | 640 | Target letterbox. Un numero intero fornisce un quadrato N×N; una tupla fornisce (height, width). Con rect=True, il tensore effettivo potrebbe essere più piccolo di questo target a causa del padding a rettangolo minimo. Utilizza rect=False per una dimensione fissa. Vedi Forma fissa vs rettangolo minimo. |
rect | bool | True | Se True, utilizza il padding a rettangolo minimo quando possibile (batch della stessa forma e backend supportato). Se False, applica sempre il padding al imgsz completo. Vedi Forma fissa vs rettangolo minimo. |
quantize | int o str | None | Precisione di inferenza: 16/"fp16" abilita l'inferenza FP16 sulle GPU supportate; 32/"fp32"/non impostato è FP32. La quantizzazione INT8/PTQ viene configurata durante l'export, quindi utilizzata caricando il modello esportato. Sostituisce il flag deprecato half. |
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, una NPU Huawei Ascend o altri dispositivi di calcolo per l'esecuzione del modello. |
dnn | bool | False | Se True, utilizza il modulo DNN di OpenCV anziché ONNX Runtime per l'inferenza del modello ONNX. |
data | str | None | Percorso a un file YAML del dataset (es. coco8.yaml) letto esclusivamente per il suo names, e solo quando il modello caricato non include i propri nomi di classe: un'esportazione di terze parti o un'esportazione di Ultralytics separata dai metadati con cui viene distribuita. In caso contrario, un tale modello restituisce class0, class1 e così via. |
batch | int | 1 | Specifica la batch size per l'inferenza (funziona solo quando la fonte è una directory, un file video o un file .txt). Una batch size maggiore può garantire un throughput più elevato, 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, evitando output eccessivi in scene dense. |
vid_stride | int | 1 | Stride dei fotogrammi per gli input video. Consente di saltare i fotogrammi nei video per velocizzare l'elaborazione a costo 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 scartati per fare spazio ai nuovi (ottimizzato per applicazioni in tempo reale). Se True, mette in coda i nuovi fotogrammi in un buffer, garantendo che nessun fotogramma venga saltato, ma ciò causerà latenza se gli FPS dell'inferenza sono inferiori agli FPS del flusso. |
visualize | bool | False | Salva una mappa di attivazione delle classi accanto a ciascuna predizione, mostrando quali pixel hanno aumentato i punteggi delle classi predette. Rispetta conf e classes, quindi classes=[0] mappa solo quella classe. Disponibile solo per i modelli PyTorch di Ultralytics. |
augment | bool | False | Abilita l'aumento in fase di test (TTA) per le predizioni, migliorando potenzialmente la robustezza del rilevamento a spese della velocità di inferenza. Disponibile solo per i modelli PyTorch di Ultralytics. |
agnostic_nms | bool | False | Abilita la soppressione dei massimi non agnostica rispetto alla classe (NMS), sopprimendo i box sovrapposti con punteggio inferiore tra classi diverse anziché solo all'interno della stessa classe. Utile in scenari di rilevamento multi-classe in cui la sovrapposizione delle classi è comune. Per i modelli end-to-end (YOLO26, YOLOv10), questo impedisce solo che lo stesso rilevamento compaia con più etichette di classe (duplicati con IoU=1.0) e non esegue una soppressione basata sulla soglia IoU tra box distinti. |
classes | list[int] | None | Filtra le predizioni in base a un set di ID classe. Verranno restituite solo le rilevazioni appartenenti alle classi specificate. Utile per concentrarsi su 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 alle dimensioni dell'immagine originale se abilitato. Se disabilitato, avranno le dimensioni dell'immagine utilizzate durante l'inferenza. |
embed | list[int] | None | Specifica i livelli da cui estrarre vettori di caratteristiche o embeddings. Usa model.embed(source) per gli embedding del penultimo livello, o model.predict(source, embed=[layer]) per selezionare livelli specifici. Utile per attività successive come il clustering o la ricerca di somiglianza. Disponibile solo per i modelli PyTorch di Ultralytics. |
project | str | None | Nome della directory del progetto in cui vengono salvati gli output delle predizioni se save è abilitato. |
name | str | None | Nome dell'esecuzione di predizione. Utilizzato per creare una sottodirectory all'interno della cartella del progetto, dove vengono memorizzati gli output delle predizioni se save è abilitato. |
stream | bool | False | Abilita un'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 registri 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à in formato stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". Torna alla modalità eager con un avviso se non supportato. |
channels_last | bool | False | Utilizza il formato di memoria channels_last (NHWC) per le convoluzioni durante l'inferenza, accelerando le GPU CUDA Tensor Core senza variazioni nei risultati. Si applica solo ai modelli nativi PyTorch; viene ignorato per CPU, MPS e formati esportati come TensorRT e ONNX. |
end2end | bool | None | Sovrascrive la modalità end-to-end nei modelli YOLO che supportano l'inferenza senza NMS (YOLO26, YOLOv10). Impostandola su False è possibile eseguire la predizione utilizzando la tradizionale pipeline NMS, consentendo inoltre di utilizzare l'argomento iou. Per i dettagli, consulta la Guida all'End-to-End Detection. |
Argomenti di visualizzazione:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
show | bool | False | Se True, mostra le immagini o i video annotati in una finestra. Utile per un riscontro visivo immediato durante lo sviluppo o i test. |
save | bool | False or True | Abilita il salvataggio delle immagini o dei video annotati in file. Utile per la documentazione, ulteriori analisi o la condivisione dei risultati. L'impostazione predefinita è True quando si utilizza la CLI e False quando utilizzato 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 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 i dettagli disponibili per il post-processing e l'analisi. |
save_crop | bool | False | Salva immagini ritagliate delle rilevazioni. Utile per l'aumento del dataset, l'analisi o la creazione di dataset focalizzati per oggetti specifici. |
show_labels | bool | True | Mostra le etichette per ogni rilevamento nell'output visivo. Offre una comprensione immediata degli oggetti rilevati. |
show_conf | bool | True | Mostra 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 attorno agli oggetti rilevati. Essenziale per l'identificazione visiva e la posizione degli oggetti in immagini o fotogrammi video. |
line_width | int or None | None | Specifica lo spessore della linea dei bounding box. Se None, lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine. Offre 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. Consulta le tabelle seguenti per i suffissi validi e i comandi di previsione di esempio.
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 in modo nativo da Pillow.
| Suffissi immagine | Esempio di comando Predict | 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 Predict | 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 dell'immagine originale in 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 bounding box orientati. |
semantic_mask | SemanticMask, optional | Un oggetto SemanticMask contenente una mappa densa delle classi per pixel. |
speed | dict | Un dizionario delle velocità di preprocessamento, inferenza e post-processamento in millisecondi per immagine. |
names | dict | Un dizionario che mappa gli indici delle classi ai nomi delle classi. |
path | str | Il percorso verso il file immagine. |
save_dir | str, optional | Directory in cui salvare i risultati. |
Risultati per attività#
Quali campi vengono popolati di seguito dipende dal task del tuo modello — confronta detection, segmentation, semantic segmentation, depth estimation, classification, pose e OBB se non ne hai ancora scelto uno. Ogni predizione restituisce un oggetto Results per immagine o fotogramma. I campi comuni sopra indicati sono sempre disponibili, mentre i dati di predizione specifici del task sono memorizzati nei campi sottostanti. I tensori di coordinate, confidenza e probabilità sono torch.float32 a meno che non venga utilizzata la precisione dimezzata, nel qual caso sono torch.float16. Dopo result.numpy(), i tensori diventano array NumPy con dtype NumPy corrispondenti. Le maschere di istanza sono tensori binari torch.uint8, mentre le maschere semantiche utilizzano il dtype intero pratico più piccolo per gli ID di classe: torch.uint8, torch.int16 o torch.int32, a seconda del numero di classi.
| Attributo | Tipo | Forma | Descrizione |
|---|---|---|---|
result.boxes | Boxes | (N) | Box di rilevamento. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] grezzi, più ID di tracciamento opzionale. |
result.boxes.xyxy | torch.float32 | (N,4) | Riquadri dei pixel xyxy. |
result.boxes.conf | torch.float32 | (N,) | Punteggi di confidenza. |
result.boxes.cls | torch.float32 | (N,) | ID di classe; convertiti in int per i nomi. |
Gli oggetti Results hanno i seguenti metodi:
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
update() | None | Aggiorna l'oggetto Results con nuovi dati come box, maschere, probabilità, obb, keypoint o maschere semantiche. |
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 sul dispositivo e dtype 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 BGR di input e restituisce l'immagine annotata. |
show() | None | Mostra l'immagine con i risultati dell'inferenza annotati. |
save() | str | Salva l'immagine dei 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 riassunto 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. |
Per maggiori dettagli consulta la documentazione della classe Results.
Box#
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 sul dispositivo specificato. |
xyxy | Proprietà (torch.Tensor) | Restituisci le box in formato xyxy. |
conf | Proprietà (torch.Tensor) | Restituisci i valori di confidenza delle box. |
cls | Proprietà (torch.Tensor) | Restituisci i valori di classe delle box. |
id | Proprietà (torch.Tensor) | Restituisci gli ID di tracciamento delle box (se disponibili). |
xywh | Proprietà (torch.Tensor) | Restituisci le box in formato xywh. |
xyxyn | Proprietà (torch.Tensor) | Restituisci le box in formato xyxy normalizzate in base alla dimensione originale dell'immagine. |
xywhn | Proprietà (torch.Tensor) | Restituisci le box in formato xywh normalizzate in base alla dimensione originale dell'immagine. |
Per maggiori dettagli consulta la documentazione della classe Boxes.
Maschere#
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 |
|---|---|---|
data | Proprietà (torch.Tensor) | Tensore di maschera binaria torch.uint8 con forma (N,H,W) e valori 0 o 1. |
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à (list[np.ndarray]) | Una lista di poligoni di maschera normalizzati. |
xy | Proprietà (list[np.ndarray]) | Una lista di poligoni di maschera in coordinate pixel. |
Per maggiori dettagli consulta la documentazione della classe Masks.
SemanticMask#
SemanticMask memorizza una mappa di classe densa per i risultati di segmentazione semantica. A differenza di Masks, non contiene una maschera binaria per oggetto e non fornisce helper per i poligoni.
from ultralytics import YOLO
# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.semantic_mask.data) # print the H x W class-ID map| Nome | Tipo | Descrizione |
|---|---|---|
data | Proprietà (torch.Tensor) | Mappa degli ID di classe con forma (H,W). Il dtype è torch.uint8, torch.int16 o torch.int32, selezionato in base al numero di classi. |
shape | Proprietà (tuple) | Forma della mappa di classe, solitamente corrispondente a result.orig_shape. |
cpu() | Metodo | Restituisce il tensore della maschera semantica nella memoria CPU. |
numpy() | Metodo | Restituisce il tensore della maschera semantica come array NumPy. |
cuda() | Metodo | Restituisce il tensore della maschera semantica nella memoria GPU. |
to() | Metodo | Restituisce il tensore della maschera semantica con il dispositivo e il dtype specificati. |
Keypoint#
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 per i metodi e le proprietà della classe Keypoints, inclusi nome, tipo e descrizione:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce il tensore dei keypoint nella memoria CPU. |
numpy() | Metodo | Restituisce il tensore dei keypoint come array NumPy. |
cuda() | Metodo | Restituisce il tensore dei keypoint nella memoria GPU. |
to() | Metodo | Restituisce il tensore dei keypoint con il dispositivo e il dtype specificati. |
xyn | Proprietà (torch.Tensor) | Un elenco di keypoint normalizzati rappresentati come tensori. |
xy | Proprietà (torch.Tensor) | Un elenco di keypoint in coordinate pixel rappresentati come tensori. |
conf | Proprietà (torch.Tensor) | Restituisce i valori di confidenza dei keypoint se disponibili, altrimenti None. |
Per maggiori dettagli consulta la documentazione della classe Keypoints.
Probs#
L'oggetto Probs può essere utilizzato per ottenere indici e punteggi di classificazione top1 e top5.
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 classe Probs:
| Nome | Tipo | Descrizione |
|---|---|---|
cpu() | Metodo | Restituisce una copia del tensore probs sulla memoria CPU. |
numpy() | Metodo | Restituisce una copia del tensore probs come array NumPy. |
cuda() | Metodo | Restituisce una copia del tensore probs sulla memoria 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 maggiori 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 per i metodi e le 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 sul dispositivo specificato. |
conf | Proprietà (torch.Tensor) | Restituisci i valori di confidenza delle box. |
cls | Proprietà (torch.Tensor) | Restituisci i valori di classe delle box. |
id | Proprietà (torch.Tensor) | Restituisci gli ID di tracciamento delle box (se disponibili). |
xyxy | Proprietà (torch.Tensor) | Restituisci i box orizzontali in formato xyxy. |
xywhr | Proprietà (torch.Tensor) | Restituisci i box ruotati in formato xywhr. |
xyxyxyxy | Proprietà (torch.Tensor) | Restituisci i box ruotati in formato xyxyxyxy. |
xyxyxyxyn | Proprietà (torch.Tensor) | Restituisci i box ruotati in formato xyxyxyxy normalizzati in base alla dimensione dell'immagine. |
Per maggiori 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, keypoint e probabilità) sull'immagine originale. Questo metodo restituisce l'immagine annotata come un 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 | Includi i punteggi di confidenza del rilevamento. | True |
line_width | float | Spessore della linea dei bounding box. Si ridimensiona con la dimensione dell'immagine se None. | None |
font_size | float | Dimensione del carattere del testo. Si ridimensiona con la dimensione 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 | torch.Tensor | Immagine alternativa. I tensor devono essere HWC BGR uint8 continui. | None |
kpt_radius | int | Raggio per i keypoint disegnati. | 5 |
kpt_line | bool | Collega i keypoint con delle linee. | True |
labels | bool | Includi le etichette di classe nelle annotazioni. | True |
boxes | bool | Sovrapponi i bounding box sull'immagine. | True |
masks | bool | Sovrapponi le maschere sull'immagine. | True |
probs | bool | Includi 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, es. 'instance' o 'class'. | 'class' |
txt_color | tuple[int, int, int] | Colore BGR del testo per il bounding box e l'etichetta di classificazione dell'immagine. | (255, 255, 255) |
Inferenza thread-safe#
Garantire la thread safety durante l'inferenza è fondamentale quando esegui più modelli YOLO in parallelo attraverso thread diversi. L'inferenza thread-safe garantisce che le predizioni di ogni thread siano isolate e non interferiscano tra loro, evitando race condition e garantendo output coerenti e affidabili.
Quando usi i modelli YOLO in un'applicazione multi-thread, è importante istanziare oggetti modello separati per ogni thread o impiegare thread-local storage 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 dettagliate, fai riferimento alla nostra Guida all'inferenza thread-safe di YOLO. Questa guida ti fornirà tutte le informazioni necessarie per evitare errori comuni e assicurarti che la tua inferenza multithread funzioni senza intoppi.
Ciclo for della fonte di streaming#
Ecco uno script Python che utilizza OpenCV (cv2) e YOLO per eseguire l'inferenza sui fotogrammi 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'.
Cosa succede dopo#
Pronto a superare un modello preaddestrato? Conferma che il tuo task si adatti al tuo problema, formatta i tuoi dati con la guida ai Dataset, quindi addestra su di essi.
FAQ#
Cos'è Ultralytics YOLO e la sua modalità predict per l'inferenza in tempo reale?#
Ultralytics YOLO è un modello allo stato dell'arte per l'object detection, l'instance segmentation, la semantic segmentation, la depth estimation e la classification in tempo reale. La sua predict mode consente agli utenti di eseguire inferenze ad alta velocità su varie fonti di dati come immagini, video e streaming live. Progettato per prestazioni e versatilità, offre anche modalità di elaborazione in batch e streaming. Per maggiori dettagli sulle sue funzionalità, controlla 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 fonti di dati, tra cui immagini individuali, video, directory, URL e flussi. Puoi specificare la fonte dei dati nella chiamata model.predict(). Ad esempio, usa 'image.jpg' per un'immagine locale o 'https://ultralytics.com/images/bus.jpg' per un URL. Controlla gli esempi dettagliati per varie fonti 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 predittore. La modalità streaming genera un generatore efficiente in termini di memoria di oggetti Results anziché 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 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 le soglie di confidenza, la dimensione dell'immagine e il dispositivo utilizzato per il calcolo. Descrizioni dettagliate di questi argomenti si trovano nella sezione argomenti di inferenza.
Come estraggo gli embedding da un modello YOLO?#
Usa model.embed(source) per estrarre embedding di caratteristiche dal penultimo strato, oppure passa embed=[layer_index] a model.predict() per scegliere strati specifici.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
source = "https://ultralytics.com/images/bus.jpg"
results = model.predict(source) # Results objects
embeddings = model.embed(source) # list of torch.Tensor embeddingsCome posso visualizzare e salvare i risultati delle predizioni YOLO?#
Dopo aver eseguito l'inferenza con YOLO, gli oggetti Results contengono metodi per la visualizzazione e il salvataggio delle immagini annotate. Puoi usare metodi come result.show() e result.save(filename="result.jpg") per visualizzare e salvare i risultati. Eventuali directory padre mancanti nel percorso del file vengono create automaticamente (ad es., result.save("path/to/result.jpg")). Per un elenco completo di questi metodi, fai riferimento alla sezione lavorare con i risultati.


