Ultralytics YOLO27:

Predizione del modello con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

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 modalità predict, progettata per l'inferenza in tempo reale ad alte prestazioni su un'ampia gamma di origini dati.

Consulta la anteprima di YOLO27 non rilasciata per gli esempi di inferenza pianificati.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Applicazioni nel mondo reale#

ProduzioneSportSicurezza
Rilevamento di ricambi per veicoliRilevamento dei giocatori di calcioRilevamento delle cadute delle persone

Perché usare Ultralytics YOLO per l'inferenza?#

Ecco perché dovresti prendere in considerazione la modalità predict di YOLO26 per le tue diverse esigenze di inferenza:

  • Versatilità: consente di eseguire l'inferenza su immagini, video e persino stream dal vivo.
  • Prestazioni: progettato per l'elaborazione in tempo reale ad alta velocità senza sacrificare l'accuratezza.
  • Facilità d'uso: interfacce Python e CLI intuitive per una rapida distribuzione e verifica.
  • Altamente personalizzabile: diverse impostazioni e parametri consentono di regolare il comportamento di inferenza del modello in base ai tuoi requisiti specifici.
  • Pronto per la produzione: distribuisci i modelli come endpoint di inferenza della Ultralytics Platform con autoscaling e monitoraggio, oppure esegui l'inferenza localmente.

Funzionalità principali della modalità predict#

La modalità predict di YOLO26 è progettata per essere robusta e versatile e offre:

  • Compatibilità con più origini dati: che i tuoi dati siano costituiti da singole immagini, raccolte di immagini, file video o stream video in tempo reale, la modalità predict è adatta alle tue esigenze.
  • Modalità streaming: usa la funzionalità di streaming per generare un generatore efficiente in termini di memoria di oggetti Results. Attivala impostando stream=True nel metodo di chiamata del predittore. A differenza del comportamento predefinito (stream=False), che restituisce un elenco contenente tutti i risultati, stream=True restituisce i risultati uno alla volta, risultando particolarmente utile per video lunghi e stream dal vivo.
  • Elaborazione batch: elabora più immagini o fotogrammi video in un singolo batch, riducendo ulteriormente il tempo totale di inferenza.
  • Facile integrazione: integra facilmente il modello 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 oppure un generatore efficiente in termini di memoria di oggetti Results quando stream=True viene passato al modello durante l'inferenza:

Predizione
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 disk

Origini dell'inferenza#

YOLO26 può elaborare diversi tipi di origini di input per l'inferenza, come mostrato nella tabella seguente. Le origini includono immagini statiche, stream video e vari formati di dati. La tabella indica anche se ogni origine può essere usata in modalità streaming con l'argomento stream=True ✅. La modalità streaming è utile per elaborare video o stream dal vivo, perché crea un generatore di risultati invece di caricare tutti i fotogrammi in memoria.

Suggerimento

Usa stream=True per elaborare video lunghi o dataset di grandi dimensioni e gestire la memoria in modo efficiente. Quando stream=False, i risultati di tutti i fotogrammi o punti dati vengono conservati in memoria, cosa che può accumularsi rapidamente e causare errori di memoria esaurita per input di grandi dimensioni. Al contrario, stream=True utilizza un generatore che mantiene in memoria solo i risultati del fotogramma o punto dati corrente, riducendo significativamente il consumo di memoria e prevenendo i problemi di memoria esaurita.

OrigineEsempioTipoNote
immagine'image.jpg'str o PathFile di immagine singolo.
URL'https://ultralytics.com/images/bus.jpg'strURL di un'immagine.
screenshot'screen'strAcquisisce uno screenshot.
PILImage.open('image.jpg')PIL.ImageFormato HWC con canali RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayFormato HWC con canali BGR uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayFormato HWC con canali BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorFormato BCHW con canali RGB float32 (0.0-1.0).
CSV'sources.csv'str o PathFile CSV contenente i percorsi di immagini, video o directory.
video ✅'video.mp4'str o PathFile video in formati come MP4, AVI, ecc.
directory ✅'path/'str o PathPercorso di una directory contenente immagini o video.
glob ✅'path/*.jpg'strPattern glob per trovare più file. Usa il carattere * come carattere jolly.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL di un video YouTube.
stream ✅'rtsp://example.com/media.mp4'strURL per protocolli di streaming come RTSP, RTMP, TCP o un indirizzo IP.
multi-stream ✅'list.streams'str o PathFile di testo *.streams con un URL di stream per riga; ad esempio, 8 stream verranno eseguiti con batch-size 8.
webcam ✅0intIndice del dispositivo della fotocamera collegata su cui eseguire l'inferenza.

Di seguito sono riportati esempi di codice per usare ogni tipo di origine:

Origini della predizione

Esegui l'inferenza su un file di 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 objects

Argomenti dell'inferenza#

model.predict() accetta più argomenti che possono essere passati al momento dell'inferenza per sovrascrivere i valori predefiniti:

Forma fissa vs rettangolo minimo (rect)#

Per impostazione predefinita, predict usa rect=True, che abilita il padding a rettangolo minimo quando possibile. L'immagine viene ridimensionata per rientrare in imgsz e sottoposta a padding solo fino al multiplo di stride più vicino; pertanto, il tensore finale può essere più piccolo di imgsz. Il padding a rettangolo minimo viene usato solo quando tutte le immagini del batch hanno la stessa forma e il backend lo supporta (.pt PyTorch oppure ONNX / Triton dinamico). In caso contrario, le immagini vengono sottoposte a padding fino alla destinazione completa imgsz.

Usa rect=False per applicare sempre il padding fino alla destinazione imgsz completa. Questa opzione è consigliata quando ti serve una dimensione di input fissa corrispondente ai modelli esportati (ONNX, TensorRT, ecc.).

Intero vs tupla imgsz

  • Un valore intero imgsz=640 diventa una destinazione quadrata (640, 640) dopo l'arrotondamento in base allo stride.
  • Una tupla imgsz=(384, 672) imposta una destinazione rettangolare. Con rect=True e auto=True, il tensore effettivo può essere più piccolo di questa destinazione.

Training vs predict/export

Il training accetta solo un singolo valore intero imgsz (un elenco [h, w] viene convertito nel valore più grande). Predict ed export accettano un valore intero o una tupla (height, width).

Esempio
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:

ArgomentoTipoPredefinitoDescrizione
sourcestr oppure int oppure NoneNoneSpecifica la sorgente dei dati per l'inferenza. Può essere il percorso di un'immagine, un file video, una directory, un URL o l'ID di un dispositivo per i flussi live. Se omesso, viene registrato un avviso e il modello usa gli asset demo integrati (ultralytics/assets oppure un URL demo per OBB). Supporta un'ampia gamma di formati e sorgenti, consentendo applicazioni flessibili su diversi tipi di input.
conffloat0.25Imposta la soglia minima di confidenza per le rilevazioni. Gli oggetti rilevati con una confidenza inferiore a questa soglia verranno ignorati. La regolazione di questo valore può contribuire a ridurre i falsi positivi.
ioufloat0.7Soglia di Intersezione sull'unione (IoU) per la Soppressione non massima (NMS). Valori inferiori producono meno rilevazioni eliminando i riquadri sovrapposti, utile per ridurre i duplicati.
imgszint o tuple640Destinazione del letterbox. Un numero intero produce un N×N quadrato; una tupla produce (height, width). Con rect=True, il tensore effettivo può essere più piccolo di questa destinazione a causa del padding a rettangolo minimo. Usa rect=False per una dimensione fissa. Consulta Forma fissa vs rettangolo minimo.
rectboolTrueSe True, usa il padding a rettangolo minimo quando possibile (batch con la stessa forma e backend supportato). Se False, applica sempre il padding fino a imgsz completo. Consulta Forma fissa vs rettangolo minimo.
quantizeint o strNonePrecisione di inferenza: 16/"fp16" e 32/"fp32"/non impostato selezionano il calcolo FP16 o FP32 per i modelli PyTorch e TorchScript; gli altri formati calcolano alla precisione selezionata dal loro artefatto e runtime. A 16 OpenVINO esegue comunque l'arrotondamento a FP16 dell'input sul client e lo riporta a FP32, senza modificare la precisione in cui calcola il runtime. La quantizzazione INT8/PTQ viene configurata durante l'export, quindi utilizzata caricando il modello esportato. Sostituisce il flag deprecato half.
devicestrNoneSpecifica il dispositivo per l'inferenza (ad esempio cpu, cuda:0, 0, npu o npu:0). Consente di scegliere tra CPU, una GPU specifica, NPU Huawei Ascend o altri dispositivi di calcolo per l'esecuzione del modello.
dnnboolFalseSe True, usa il modulo DNN di OpenCV invece di ONNX Runtime per l'inferenza dei modelli ONNX.
datastrNonePercorso a un file YAML del dataset (ad esempio coco8.yaml), letto esclusivamente per il suo names e solo quando il modello caricato non contiene nomi di classi propri: un'esportazione di terze parti oppure un'esportazione Ultralytics separata dai metadati forniti con essa. In caso contrario, tale modello restituisce class0, class1 e così via.
batchint1Specifica la dimensione del batch per l'inferenza (funziona solo quando la sorgente è una directory, un file video o un file .txt). Una dimensione del batch maggiore può fornire un throughput superiore, riducendo il tempo totale richiesto per l'inferenza.
max_detint300Numero massimo di rilevazioni consentite per immagine. Limita il numero totale di oggetti che il modello può rilevare in una singola inferenza, evitando output eccessivi nelle scene dense.
vid_strideint1Passo dei fotogrammi per gli input video. Consente di saltare fotogrammi nei video per velocizzare l'elaborazione, a scapito della risoluzione temporale. Un valore pari a 1 elabora ogni fotogramma; valori maggiori saltano dei fotogrammi.
stream_bufferboolFalseDetermina se accodare i fotogrammi in arrivo per gli stream video. Se False, i fotogrammi meno recenti vengono eliminati per fare spazio a quelli nuovi (ottimizzato per le applicazioni in tempo reale). Se True, i nuovi fotogrammi vengono accodati in un buffer, garantendo che nessun fotogramma venga saltato, ma causando latenza se gli FPS dell'inferenza sono inferiori agli FPS dello stream.
visualizeboolFalseSalva una mappa di attivazione delle classi accanto a ogni predizione, mostrando quali pixel hanno aumentato i punteggi della classe predetta. Rispetta conf e classes, quindi classes=[0] mappa solo quella classe. Disponibile solo per i modelli PyTorch di Ultralytics.
augmentboolFalseAbilita l'augmentation al momento del test (TTA) per le predizioni, migliorando potenzialmente la robustezza delle rilevazioni a scapito della velocità di inferenza. Disponibile solo per i modelli PyTorch di Ultralytics.
agnostic_nmsboolFalseAbilita la soppressione non massimale agnostica rispetto alle classi (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. Con l'inferenza senza NMS (nms=False su YOLO26 o YOLOv10), questo impedisce solo che lo stesso rilevamento appaia con più etichette di classe (duplicati con IoU=1.0) e non esegue la soppressione basata sulla soglia IoU tra box distinti.
classeslist[int]NoneFiltra le predizioni in base a un insieme di ID di classe. Verranno restituite solo le rilevazioni appartenenti alle classi specificate. Utile per concentrarsi sugli oggetti rilevanti nelle attività di rilevamento multiclasse.
retina_masksboolFalseRestituisce maschere di segmentazione ad alta risoluzione. Se abilitato, le maschere restituite (masks.data) corrisponderanno alle dimensioni dell'immagine originale. Se disabilitato, avranno le dimensioni dell'immagine utilizzata durante l'inferenza.
embedlist[int]NoneSpecifica i layer dai quali estrarre vettori di caratteristiche o embedding. Usa model.embed(source) per gli embedding del penultimo layer oppure model.predict(source, embed=[layer]) per selezionare layer specifici. Utile per attività successive come il clustering o la ricerca per similarità. Disponibile solo per i modelli PyTorch di Ultralytics.
projectstrNoneNome della directory del progetto in cui vengono salvati gli output delle predizioni se save è abilitato.
namestrNoneNome dell'esecuzione della predizione. Viene utilizzato per creare una sottodirectory all'interno della cartella del progetto, in cui vengono archiviati gli output delle predizioni se save è abilitato.
streamboolFalseAbilita 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.
verboseboolTrueControlla se visualizzare log dettagliati dell'inferenza nel terminale, fornendo feedback in tempo reale sul processo di predizione.
compilebool o strFalseAbilita la compilazione del grafo torch.compile di PyTorch 2.x con backend='inductor'. Accetta True"default", False → disabilita, oppure una modalità stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". Se non è supportata, torna alla modalità eager con un avviso.
channels_lastboolNoneUsa il formato di memoria channels_last (NHWC) per l'inferenza nativa con PyTorch. None lo abilita automaticamente su CPU x86 Linux e Windows con oneDNN abilitato e PyTorch 1.13 o versioni successive, False lo disabilita e True lo richiede su CPU x86 o dispositivi CUDA supportati. ARM64, MPS, versioni precedenti di PyTorch, CPU senza oneDNN e formati esportati come TensorRT e ONNX rimangono invariati.
nmsbool, facoltativoNoneEsegue l'inferenza uno-a-molti con NMS per impostazione predefinita (None o True). Imposta False per utilizzare la testa uno-a-uno senza NMS quando disponibile. Consulta la guida al rilevamento end-to-end per i dettagli.

Argomenti di visualizzazione:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, visualizza le immagini o i video annotati in una finestra. È utile per ottenere un feedback visivo immediato durante lo sviluppo o i test.
saveboolFalse or TrueAbilita il salvataggio delle immagini o dei video annotati in file. Utile per la documentazione, ulteriori analisi o la condivisione dei risultati. Il valore predefinito è True usando la CLI e False usando Python.
save_framesboolFalseDurante l'elaborazione dei video, salva i singoli fotogrammi come immagini. Utile per estrarre fotogrammi specifici o per un'analisi dettagliata fotogramma per fotogramma.
save_txtboolFalseSalva 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_confboolFalseInclude i punteggi di confidenza nei file di testo salvati. Aumenta il livello di dettaglio disponibile per la post-elaborazione e l'analisi.
save_cropboolFalseSalva immagini ritagliate delle rilevazioni. Utile per l'augmentation del dataset, l'analisi o la creazione di dataset mirati per oggetti specifici.
show_labelsboolTrueVisualizza le etichette per ogni rilevazione nell'output visivo. Consente di comprendere immediatamente gli oggetti rilevati.
show_confboolTrueVisualizza il punteggio di confidenza per ogni rilevazione accanto all'etichetta. Fornisce informazioni sul grado di certezza del modello per ogni rilevazione.
show_boxesboolTrueDisegna riquadri di delimitazione attorno agli oggetti rilevati. È essenziale per l'identificazione visiva e la localizzazione degli oggetti nelle immagini o nei fotogrammi video.
line_widthint or NoneNoneSpecifica la larghezza della linea dei riquadri di delimitazione. Se None, la larghezza della linea viene regolata automaticamente in base alle dimensioni dell'immagine. Consente una personalizzazione visiva per migliorare la 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 le estensioni valide e i comandi di predizione di esempio.

Immagini#

La tabella seguente contiene i formati di immagine Ultralytics validi.

Nota

I formati HEIC/HEIF richiedono pi-heif, che viene installato automaticamente al primo utilizzo. AVIF è supportato nativamente da Pillow.

Estensioni delle immaginiComando di predizione di esempioRiferimento
.avifyolo predict source=image.avifFormato file immagine AV1
.bmpyolo predict source=image.bmpFormato file BMP Microsoft
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicFormato immagine ad alta efficienza
.heifyolo predict source=image.heifFormato immagine ad alta efficienza
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Video#

La tabella seguente contiene i formati video Ultralytics validi.

Estensioni dei videoComando di predizione di esempioRiferimento
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Parte 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movFormato file QuickTime
.mp4yolo predict source=video.mp4MPEG-4 Parte 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Parte 2
.mpgyolo predict source=video.mpgMPEG-1 Parte 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmProgetto WebM

Utilizzo dei Results#

Tutte le chiamate Ultralytics predict() restituiscono un elenco di oggetti Results:

Risultati
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 inference

Gli oggetti Results hanno i seguenti attributi:

AttributoTipoDescrizione
orig_imgnp.ndarrayL'immagine originale come array NumPy.
orig_shapetupleLa forma dell'immagine originale nel formato (altezza, larghezza).
boxesBoxes, optionalUn oggetto Boxes contenente le box di delimitazione dei rilevamenti.
masksMasks, optionalUn oggetto Masks contenente le maschere dei rilevamenti.
probsProbs, optionalUn oggetto Probs contenente le probabilità di ogni classe per l'attività di classificazione.
keypointsKeypoints, optionalUn oggetto Keypoints contenente i keypoint rilevati per ogni oggetto.
obbOBB, optionalUn oggetto OBB contenente box di delimitazione orientate.
semantic_maskSemanticMask, optionalUn oggetto SemanticMask contenente una mappa densa delle classi per pixel.
speeddictUn dizionario delle velocità di pre-elaborazione, inferenza e post-elaborazione in millisecondi per immagine.
namesdictUn dizionario che associa gli indici delle classi ai nomi delle classi.
pathstrIl percorso del file immagine.
save_dirstr, optionalDirectory in cui salvare i risultati.

Risultati per attività#

I campi che si popolano qui sotto dipendono dal task del tuo modello — confronta detection, segmentation, semantic segmentation, depth estimation, classification, pose e OBB se non ne hai ancora scelto uno. Ciascuna prediction restituisce un oggetto Results per ogni immagine o frame. I campi comuni di cui sopra sono sempre disponibili, mentre i dati di prediction specifici del task sono memorizzati nei campi sottostanti. I tensori di coordinate e confidenza di YOLO sono torch.float32; i tensori di probabilità sono torch.float32 a meno che non venga utilizzata la mezza precisione, nel qual caso sono torch.float16. Dopo result.numpy(), i tensori diventano array NumPy con i corrispondenti dtypes di NumPy. Le maschere di istanza sono tensori binari torch.uint8, mentre le maschere semantiche utilizzano il tipo di dato intero più piccolo possibile per gli ID delle classi: torch.uint8, torch.int16 o torch.int32, a seconda del numero di classi.

AttributoTipoFormaDescrizione
result.boxesBoxes(N)Box di rilevamento.
result.boxes.datatorch.float32(N,6/7)[x1,y1,x2,y2,conf,cls] grezzi, oltre all'ID di tracciamento opzionale.
result.boxes.xyxytorch.float32(N,4)Box dei pixel xyxy.
result.boxes.conftorch.float32(N,)Punteggi di confidenza.
result.boxes.clstorch.float32(N,)ID delle classi; converti in int per ottenere i nomi.

Gli oggetti Results hanno i seguenti metodi:

MetodoTipo restituitoDescrizione
update()NoneAggiorna l'oggetto Results con nuovi dati come box, maschere, probs, obb, keypoint o maschere semantiche.
cpu()ResultsRestituisce una copia dell'oggetto Results con tutti i tensori spostati nella memoria CPU.
numpy()ResultsRestituisce una copia dell'oggetto Results con tutti i tensori convertiti in array NumPy.
cuda()ResultsRestituisce una copia dell'oggetto Results con tutti i tensori spostati nella memoria GPU.
to()ResultsRestituisce una copia dell'oggetto Results con i tensori spostati sul dispositivo e con il tipo di dati specificati.
new()ResultsCrea un nuovo oggetto Results con gli stessi attributi image, path, names e speed.
plot()np.ndarrayTraccia i risultati del rilevamento su un'immagine BGR di input e restituisce l'immagine annotata.
show()NoneVisualizza l'immagine con i risultati dell'inferenza annotati.
save()strSalva in un file l'immagine dei risultati dell'inferenza annotati e restituisce il nome del file.
verbose()strRestituisce una stringa di log per ogni attività, descrivendo in dettaglio gli esiti del rilevamento e della classificazione.
save_txt()strSalva i risultati del rilevamento in un file di testo e restituisce il percorso del file salvato.
save_crop()NoneSalva le immagini delle rilevazioni ritagliate nella directory specificata.
summary()List[Dict[str, Any]]Converte i risultati dell'inferenza in un dizionario riepilogativo con normalizzazione opzionale.
to_df()DataFrameConverte i risultati delle rilevazioni in un DataFrame Polars.
to_csv()strConverte i risultati delle rilevazioni in formato CSV.
to_json()strConverte i risultati delle rilevazioni in formato JSON.

Per maggiori dettagli, consulta la documentazione della classe Results.

Riquadri#

L'oggetto Boxes può essere utilizzato per indicizzare, manipolare e convertire i riquadri delimitatori in diversi formati.

Riquadri
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 boxes

Ecco una tabella dei metodi e delle proprietà della classe Boxes, inclusi nome, tipo e descrizione:

NomeTipoDescrizione
cpu()MetodoSposta l'oggetto nella memoria CPU.
numpy()MetodoConverte l'oggetto in un array NumPy.
cuda()MetodoSposta l'oggetto nella memoria CUDA.
to()MetodoSposta l'oggetto sul dispositivo specificato.
xyxyProprietà (torch.Tensor)Restituisce i riquadri nel formato xyxy.
confProprietà (torch.Tensor)Restituisce i valori di confidenza dei riquadri.
clsProprietà (torch.Tensor)Restituisce i valori delle classi dei riquadri.
idProprietà (torch.Tensor)Restituisce gli ID di tracciamento dei riquadri (se disponibili).
xywhProprietà (torch.Tensor)Restituisce i riquadri nel formato xywh.
xyxynProprietà (torch.Tensor)Restituisce i riquadri nel formato xyxy normalizzati in base alle dimensioni dell'immagine originale.
xywhnProprietà (torch.Tensor)Restituisce i riquadri nel formato xywh normalizzati in base alle dimensioni dell'immagine originale.

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.

Maschere
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 masks

Ecco una tabella dei metodi e delle proprietà della classe Masks, inclusi nome, tipo e descrizione:

NomeTipoDescrizione
dataProprietà (torch.Tensor)Tensore di maschera binaria torch.uint8 con forma (N,H,W) e valori 0 o 1.
cpu()MetodoRestituisce il tensore delle maschere nella memoria CPU.
numpy()MetodoRestituisce il tensore delle maschere come array NumPy.
cuda()MetodoRestituisce il tensore delle maschere nella memoria GPU.
to()MetodoRestituisce il tensore delle maschere con il dispositivo e il dtype specificati.
xynProprietà (list[np.ndarray])Un elenco di poligoni delle maschere normalizzati.
xyProprietà (list[np.ndarray])Un elenco di poligoni delle maschere in coordinate pixel.

Per maggiori dettagli, consulta la documentazione della classe Masks.

SemanticMask#

SemanticMask memorizza una mappa densa delle classi per i risultati della segmentazione semantica. A differenza di Masks, non contiene una maschera binaria per ogni oggetto e non fornisce helper per i poligoni.

SemanticMask
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
NomeTipoDescrizione
dataProprietà (torch.Tensor)Mappa degli ID delle classi con forma (H,W). Il dtype è torch.uint8, torch.int16 o torch.int32, selezionato in base al numero di classi.
shapeProprietà (tuple)Forma della mappa delle classi, generalmente corrispondente a result.orig_shape.
cpu()MetodoRestituisce il tensore della maschera semantica nella memoria CPU.
numpy()MetodoRestituisce il tensore della maschera semantica come array NumPy.
cuda()MetodoRestituisce il tensore della maschera semantica nella memoria GPU.
to()MetodoRestituisce il tensore della maschera semantica con il dispositivo e il dtype specificati.

Punti chiave#

L'oggetto Keypoints può essere utilizzato per indicizzare, manipolare e normalizzare le coordinate.

Punti chiave
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 keypoints

Ecco una tabella dei metodi e delle proprietà della classe Keypoints, inclusi nome, tipo e descrizione:

NomeTipoDescrizione
cpu()MetodoRestituisce il tensore dei keypoint nella memoria CPU.
numpy()MetodoRestituisce il tensore dei keypoint come array NumPy.
cuda()MetodoRestituisce il tensore dei keypoint nella memoria GPU.
to()MetodoRestituisce il tensore dei keypoint con il dispositivo e il dtype specificati.
xynProprietà (torch.Tensor)Un elenco di keypoint normalizzati rappresentati come tensori.
xyProprietà (torch.Tensor)Un elenco di keypoint in coordinate pixel rappresentati come tensori.
confProprietà (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 gli indici e i punteggi di classificazione top1 e top5.

Probs
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 probabilities

Ecco una tabella riepilogativa dei metodi e delle proprietà della classe Probs:

NomeTipoDescrizione
cpu()MetodoRestituisce una copia del tensore probs nella memoria CPU.
numpy()MetodoRestituisce una copia del tensore probs come array NumPy.
cuda()MetodoRestituisce una copia del tensore probs nella memoria GPU.
to()MetodoRestituisce una copia del tensore probs con il dispositivo e il dtype specificati.
top1Proprietà (int)Indice della classe principale.
top5Proprietà (list[int])Indici delle 5 classi principali.
top1confProprietà (torch.Tensor)Confidenza della classe principale.
top5confProprietà (torch.Tensor)Confidenze delle 5 classi principali.

Per maggiori dettagli, consulta la documentazione della classe Probs.

OBB#

L'oggetto OBB può essere utilizzato per indicizzare, manipolare e convertire i riquadri delimitatori orientati in diversi formati.

OBB
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 boxes

Ecco una tabella dei metodi e delle proprietà della classe OBB, inclusi nome, tipo e descrizione:

NomeTipoDescrizione
cpu()MetodoSposta l'oggetto nella memoria CPU.
numpy()MetodoConverte l'oggetto in un array NumPy.
cuda()MetodoSposta l'oggetto nella memoria CUDA.
to()MetodoSposta l'oggetto sul dispositivo specificato.
confProprietà (torch.Tensor)Restituisce i valori di confidenza dei riquadri.
clsProprietà (torch.Tensor)Restituisce i valori delle classi dei riquadri.
idProprietà (torch.Tensor)Restituisce gli ID di tracciamento dei riquadri (se disponibili).
xyxyProprietà (torch.Tensor)Restituisce i riquadri orizzontali nel formato xyxy.
xywhrProprietà (torch.Tensor)Restituisce i riquadri ruotati nel formato xywhr.
xyxyxyxyProprietà (torch.Tensor)Restituisce i riquadri ruotati nel formato xyxyxyxy.
xyxyxyxynProprietà (torch.Tensor)Restituisce i riquadri ruotati nel formato xyxyxyxy normalizzati in base alle dimensioni dell'immagine.

Per maggiori dettagli, consulta la documentazione della classe OBB.

Risultati della visualizzazione#

Il metodo plot() negli oggetti Results facilita la visualizzazione delle predizioni sovrapponendo gli oggetti rilevati (come riquadri delimitatori, maschere, keypoint e probabilità) all'immagine originale. Questo metodo restituisce l'immagine annotata come array NumPy, consentendone facilmente la visualizzazione o il salvataggio.

Visualizzazione
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 diversi argomenti per personalizzare l'output:

ArgomentoTipoDescrizionePredefinito
confboolIncludi i punteggi di confidenza delle rilevazioni.True
line_widthfloatLarghezza delle linee dei riquadri delimitatori. Viene ridimensionata in base alle dimensioni dell'immagine se None.None
font_sizefloatDimensione del carattere del testo. Viene ridimensionata in base alle dimensioni dell'immagine se None.None
fontstrNome del carattere per le annotazioni testuali.'Arial.ttf'
pilboolRestituisci l'immagine come oggetto PIL Image.False
imgnp.ndarray | torch.TensorImmagine alternativa. I tensori devono essere HWC BGR uint8 contigui.None
kpt_radiusintRaggio dei keypoint disegnati.5
kpt_lineboolCollega i keypoint con linee.True
labelsboolIncludi le etichette delle classi nelle annotazioni.True
boxesboolSovrapponi i riquadri delimitatori all'immagine.True
masksboolSovrapponi le maschere all'immagine.True
probsboolIncludi le probabilità di classificazione.True
showboolVisualizza direttamente l'immagine annotata utilizzando il visualizzatore di immagini predefinito.False
saveboolSalva l'immagine annotata in un file specificato da filename.False
filenamestrPercorso e nome del file in cui salvare l'immagine annotata se save è True.None
color_modestrSpecifica la modalità colore, ad esempio 'instance' o 'class'.'class'
txt_colortuple[int, int, int]Colore del testo BGR per il riquadro delimitatore e l'etichetta di classificazione dell'immagine.(255, 255, 255)

Inferenza thread-safe#

Garantire la sicurezza dei thread durante l'inferenza è fondamentale 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 multithread, è importante istanziare oggetti modello separati per ogni thread oppure utilizzare l'archiviazione locale al thread per prevenire conflitti:

Inferenza thread-safe

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 un'analisi approfondita dell'inferenza thread-safe con i modelli YOLO e istruzioni dettagliate passo passo, consulta la nostra Guida all'inferenza YOLO thread-safe. Questa guida ti fornirà tutte le informazioni necessarie per evitare le problematiche comuni e garantire che l'inferenza multithread venga eseguita senza problemi.

Ciclo for della sorgente in 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).

Ciclo for in streaming
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 fotogramma del video, visualizzerà i risultati e li mostrerà in una finestra. Puoi uscire dal ciclo premendo 'q'.

E adesso?#

Pronto a passare oltre un modello pretrained? Verifica che il tuo task sia adatto al tuo problema, formatta i tuoi dati con la guida ai dataset, quindi addestra il modello.

FAQ#

  • Ultralytics YOLO è un modello all'avanguardia per la rilevazione degli oggetti, la segmentazione delle istanze, la segmentazione semantica, la stima della profondità e la classificazione in tempo reale. La sua modalità predict consente di eseguire inferenze ad alta velocità su diverse sorgenti di dati, come immagini, video e flussi live. Progettata per garantire prestazioni e versatilità, offre anche modalità di elaborazione batch e streaming. Per maggiori dettagli sulle sue funzionalità, consulta la modalità predict di Ultralytics YOLO.

  • Ultralytics YOLO può elaborare un'ampia gamma di sorgenti di dati, incluse immagini singole, video, directory, URL e flussi. Puoi specificare la sorgente di dati nella chiamata model.predict(). Ad esempio, usa 'image.jpg' per un'immagine locale o 'https://ultralytics.com/images/bus.jpg' per un URL. Consulta nella documentazione gli esempi dettagliati per varie sorgenti di inferenza.

  • Per ottimizzare la velocità dell'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 iteratore efficiente in termini di memoria di oggetti Results invece di caricare tutti i fotogrammi in memoria. La modalità streaming è particolarmente utile per elaborare video lunghi o dataset di grandi dimensioni. Scopri di più sulla modalità streaming.

  • Il metodo model.predict() in YOLO supporta diversi argomenti, come conf, iou, imgsz, device e altri. Questi argomenti consentono di personalizzare il processo di inferenza, impostando parametri come le soglie di confidenza, le dimensioni dell'immagine e il dispositivo utilizzato per il calcolo. Descrizioni dettagliate di questi argomenti sono disponibili nella sezione argomenti di inferenza.

  • Usa model.embed(source) per estrarre gli embedding delle feature dal penultimo livello oppure passa embed=[layer_index] a model.predict() per scegliere livelli 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 embeddings
  • 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 padre mancanti nel percorso del nome file vengono create automaticamente (ad es., result.save("path/to/result.jpg")). Per un elenco completo di questi metodi, consulta la sezione utilizzo dei risultati.

Commenti