Meet YOLO26: next-gen vision AI.

Link to this sectionPrevisione del modello con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntroduzione#

Nel mondo del machine learning e della computer vision, il processo di interpretazione dei dati visivi è spesso chiamato inferenza o previsione. Ultralytics YOLO26 offre una potente funzionalità nota come predict mode, pensata per un'inferenza in tempo reale ad alte prestazioni su una vasta gamma di fonti dati.



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

Link to this sectionApplicazioni nel mondo reale#

ManifatturaSportSicurezza
Rilevamento di ricambi per veicoliRilevamento di giocatori di calcioRilevamento di cadute di persone
Rilevamento di ricambi per veicoliRilevamento di giocatori di calcioRilevamento di cadute di persone

Link to this sectionPerché 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: Progettata per un'elaborazione ad alta velocità in tempo reale senza sacrificare l'accuratezza.
  • 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 endpoint API su Ultralytics Platform con scalabilità automatica e monitoraggio, oppure esegui l'inferenza localmente.

Link to this sectionCaratteristiche 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à di streaming: Usa la funzionalità di streaming per generare un generatore di oggetti Results efficiente in termini di memoria. Abilitala impostando stream=True nel 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.
  • 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 una lista Python di oggetti Results o un generatore di oggetti Results efficiente in termini di memoria quando stream=True viene passato al modello durante l'inferenza:

Previsione
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

Link to this sectionFonti di inferenza#

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

Suggerimento

Usa stream=True per l'elaborazione di video lunghi o dataset di grandi dimensioni per gestire la memoria in modo efficiente. Quando stream=False, i risultati per tutti i fotogrammi o i punti dati vengono memorizzati nella memoria, il che può accumularsi rapidamente e causare errori di memoria insufficiente (out-of-memory) per input di grandi dimensioni. Al contrario, stream=True utilizza un generatore, che mantiene in memoria solo i risultati del fotogramma o del punto dati corrente, riducendo significativamente il consumo di memoria e prevenendo problemi di esaurimento della stessa.

SorgenteEsempioTipoNote
immagine'image.jpg'str o PathSingolo file immagine.
URL'https://ultralytics.com/images/bus.jpg'strURL verso un'immagine.
screenshot'screen'strCattura 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 verso immagini, video o directory.
video ✅'video.mp4'str o PathFile video in formati come MP4, AVI, ecc.
directory ✅'path/'str o PathPercorso verso una directory contenente immagini o video.
glob ✅'path/*.jpg'strModello glob per corrispondere a più file. Usa il carattere * come jolly.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL verso 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, es. 8 stream verranno eseguiti con batch-size 8.
webcam ✅0intIndice del dispositivo fotocamera collegato su cui eseguire l'inferenza.

Di seguito sono riportati esempi di codice per l'utilizzo di ciascun tipo di fonte:

Fonti di previsione

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 objects

Link to this sectionArgomenti di inferenza#

model.predict() accetta diversi argomenti che possono essere passati durante l'inferenza per sovrascrivere le impostazioni predefinite:

Link to this sectionForma fissa vs rettangolo minimo (rect)#

Per impostazione predefinita, predict utilizza rect=True, che abilita il padding a rettangolo minimo quando possibile. L'immagine viene ridimensionata per adattarsi all'interno di imgsz e viene aggiunto del padding solo fino al multiplo di stride più vicino, quindi il tensore finale potrebbe essere più piccolo di imgsz. Il padding a rettangolo minimo viene utilizzato solo quando tutte le immagini nel batch hanno la stessa forma e il backend lo supporta (PyTorch .pt o ONNX / Triton dinamici). Altrimenti, le immagini vengono riempite fino al target completo imgsz.

Usa rect=False per riempire sempre fino al target completo imgsz. Questo è consigliato quando hai bisogno di una dimensione di input fissa per corrispondere ai modelli esportati (ONNX, TensorRT, ecc.).

Intero vs tupla imgsz

  • Un intero imgsz=640 diventa un target quadrato (640, 640) dopo l'arrotondamento dello stride.
  • Una tupla imgsz=(384, 672) imposta un target rettangolare. Con rect=True e auto=True, il tensore effettivo può essere più piccolo di questo target.

Addestramento vs predict/export

L'addestramento accetta solo un singolo intero imgsz (una lista [h, w] viene convertita nel valore più grande). Predict ed export accettano sia un intero che 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 o int o NoneNoneSpecifica la fonte dei dati per l'inferenza. Può essere un percorso di un'immagine, un file video, una directory, un URL o un ID di dispositivo per feed live. Se omesso, viene registrato un avviso e il modello ricorre agli asset demo predefiniti (ultralytics/assets o un URL demo per OBB). Supporta una vasta gamma di formati e fonti, consentendo un'applicazione flessibile tra diversi tipi di input.
conffloat0.25Imposta 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.
ioufloat0.7Soglia Intersection Over Union (IoU) per la Non-Maximum Suppression (NMS). Valori inferiori portano a meno rilevazioni eliminando i riquadri sovrapposti, utile per ridurre i duplicati.
imgszint o tuple640Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle.
rectboolTrueSe True, utilizza il padding del rettangolo minimo quando possibile (batch con la stessa forma e backend supportato). Se False, esegue sempre il padding all'intero imgsz. Vedi Forma fissa vs rettangolo minimo.
halfboolFalseAbilita l'inferenza a mezza precisione (FP16), che può velocizzare l'inferenza del modello su GPU supportate con un impatto minimo sull'accuratezza.
devicestrNoneSpecifica il dispositivo per l'inferenza (ad esempio, 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.
batchint1Specifica la dimensione del batch per l'inferenza (funziona solo quando la fonte è una directory, un file video o un file .txt). Una dimensione del batch maggiore può fornire un throughput più elevato, 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 in scene dense.
vid_strideint1Stride 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_bufferboolFalseDetermina se accodare i fotogrammi in arrivo per i flussi video. Se False, i vecchi fotogrammi vengono eliminati per accogliere i nuovi (ottimizzato per applicazioni in tempo reale). Se True, accoda i nuovi fotogrammi in un buffer, assicurando che non vengano saltati fotogrammi, ma causerà latenza se gli FPS dell'inferenza sono inferiori agli FPS del flusso.
visualizeboolFalseAttiva la visualizzazione delle caratteristiche del modello durante l'inferenza, fornendo approfondimenti su ciò che il modello sta "vedendo". Utile per il debug e l'interpretazione del modello.
augmentboolFalseAbilita la test-time augmentation (TTA) per le predizioni, migliorando potenzialmente la robustezza della rilevazione a costo della velocità di inferenza.
agnostic_nmsboolFalseAbilita la Non-Maximum Suppression (NMS) classe-agnostica, che unisce riquadri sovrapposti di classi diverse. Utile in scenari di rilevazione multi-classe dove la sovrapposizione delle classi è comune. Per i modelli end-to-end (YOLO26, YOLOv10), questo impedisce solo che la stessa rilevazione appaia con più etichette di classe (duplicati IoU=1.0) e non esegue la soppressione basata sulla soglia IoU tra riquadri distinti.
classeslist[int]NoneFiltra 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_masksboolFalseRestituisce 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 utilizzata durante l'inferenza.
embedlist[int]NoneSpecifica i livelli da cui estrarre vettori di caratteristiche o embedding. Utile per attività a valle come il clustering o la ricerca di similarità.
projectstrNoneNome della directory del progetto in cui vengono salvati gli output di predizione se save è abilitato.
namestrNoneNome dell'esecuzione della predizione. Utilizzato per creare una sottodirectory all'interno della cartella del progetto, dove gli output di predizione vengono archiviati 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 registri di inferenza dettagliati nel terminale, fornendo un feedback in tempo reale sul processo di predizione.
compilebool o strFalseAbilita la compilazione del grafo PyTorch 2.x torch.compile con backend='inductor'. Accetta True"default", False → disabilita, o una modalità stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". Ripiega su eager con un avviso se non supportato.
end2endboolNoneSovrascrive la modalità end-to-end nei modelli YOLO che supportano l'inferenza senza NMS (YOLO26, YOLOv10). Impostarlo su False ti consente di eseguire la predizione utilizzando la pipeline NMS tradizionale, permettendoti inoltre di utilizzare l'argomento iou. Consulta la guida alla rilevazione End-to-End per i dettagli.

Argomenti di visualizzazione:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il 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. L'impostazione predefinita è True quando si utilizza la CLI e False quando utilizzato in 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 della rilevazione in un file di testo, seguendo il formato [class] [x_center] [y_center] [width] [height] [confidence]. Utile per l'integrazione con altri strumenti di analisi.
save_confboolFalseInclude i punteggi di confidenza nei file di testo salvati. Migliora i dettagli disponibili per il post-processing e l'analisi.
save_cropboolFalseSalva immagini ritagliate delle rilevazioni. Utile per l'aumento del dataset, l'analisi o la creazione di dataset focalizzati per oggetti specifici.
show_labelsboolTrueMostra le etichette per ogni rilevamento nell'output visivo. Offre una comprensione immediata degli oggetti rilevati.
show_confboolTrueMostra il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Fornisce informazioni sulla certezza del modello per ogni rilevamento.
show_boxesboolTrueDisegna riquadri di delimitazione attorno agli oggetti rilevati. Essenziale per l'identificazione visiva e la posizione degli oggetti in immagini o fotogrammi video.
line_widthint or NoneNoneSpecifica la larghezza della linea dei bounding box. Se None, la larghezza della linea viene regolata automaticamente in base alla dimensione dell'immagine. Fornisce personalizzazione visiva per chiarezza.

Link to this sectionFormati di immagini e video#

YOLO26 supporta vari formati di immagini e video, come specificato in ultralytics/data/utils.py. Consulta le tabelle sottostanti per i suffissi validi e gli esempi di comandi predict.

Link to this sectionImmagini#

La tabella seguente contiene i formati di immagine validi per Ultralytics.

Nota

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

Suffissi immagineEsempio di comando PredictRiferimento
.avifyolo predict source=image.avifAV1 Image File Format
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpeg2000yolo predict source=image.jpeg2000JPEG 2000
.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

Link to this sectionVideo#

La tabella seguente contiene i formati video validi per Ultralytics.

Suffissi videoEsempio di comando PredictRiferimento
.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 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

Link to this sectionLavorare con i risultati#

Tutte le chiamate predict() di Ultralytics restituiranno 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 in formato (altezza, larghezza).
boxesBoxes, optionalUn oggetto Boxes contenente i bounding box di rilevamento.
masksMasks, optionalUn oggetto Masks contenente le maschere di rilevamento.
probsProbs, optionalUn oggetto Probs contenente le probabilità di ogni classe per l'attività di classificazione.
keypointsKeypoints, optionalUn oggetto Keypoints contenente i punti chiave rilevati per ogni oggetto.
obbOBB, optionalUn oggetto OBB contenente bounding box orientati.
semantic_maskSemanticMask, optionalUn oggetto SemanticMask contenente una mappa densa delle classi per pixel.
speeddictUn dizionario delle velocità di preprocessamento, inferenza e post-processamento in millisecondi per immagine.
namesdictUn dizionario che mappa gli indici delle classi ai nomi delle classi.
pathstrIl percorso verso il file immagine.
save_dirstr, optionalDirectory in cui salvare i risultati.

Link to this sectionRisultati per attività#

Ogni predizione restituisce un oggetto Results per immagine o frame. I campi comuni sopra sono sempre disponibili, mentre i dati di predizione specifici per l'attività sono memorizzati nei campi sottostanti. I tensori di coordinate, confidenza e 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 dtypes 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 conteggio delle classi.

AttributoTipoFormaDescrizione
result.boxesBoxes(N)Box di rilevamento.
result.boxes.datatorch.float32(N,6/7)Valori grezzi [x1,y1,x2,y2,conf,cls], più ID di tracciamento opzionale.
result.boxes.xyxytorch.float32(N,4)Box in pixel xyxy.
result.boxes.conftorch.float32(N,)Punteggi di confidenza.
result.boxes.clstorch.float32(N,)ID di classe; convertiti in int per i nomi.

Gli oggetti Results hanno i seguenti metodi:

MetodoTipo di ritornoDescrizione
update()NoneAggiorna l'oggetto Results con nuovi dati come box, maschere, probabilità, 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 dtype specificati.
new()ResultsCrea un nuovo oggetto Results con gli stessi attributi di immagine, percorso, nomi e velocità.
plot()np.ndarrayTraccia i risultati del rilevamento su un'immagine BGR di input e restituisce l'immagine annotata.
show()NoneMostra l'immagine con i risultati dell'inferenza annotati.
save()strSalva l'immagine dei risultati dell'inferenza annotati su file e restituisce il nome del file.
verbose()strRestituisce una stringa di log per ogni attività, dettagliando i risultati 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 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()DataFrameConverte i risultati del rilevamento in un DataFrame Polars.
to_csv()strConverte i risultati del rilevamento in formato CSV.
to_json()strConverte i risultati del rilevamento in formato JSON.

Per maggiori dettagli consulta la documentazione della classe Results.

Link to this sectionBox#

L'oggetto Boxes può essere utilizzato per indicizzare, manipolare e convertire le bounding box in diversi formati.

Box
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()MetodoConverti l'oggetto in un array NumPy.
cuda()MetodoSposta l'oggetto nella memoria CUDA.
to()MetodoSposta l'oggetto sul dispositivo specificato.
xyxyProprietà (torch.Tensor)Restituisci le box in formato xyxy.
confProprietà (torch.Tensor)Restituisci i valori di confidenza delle box.
clsProprietà (torch.Tensor)Restituisci i valori di classe delle box.
idProprietà (torch.Tensor)Restituisci gli ID di tracciamento delle box (se disponibili).
xywhProprietà (torch.Tensor)Restituisci le box in formato xywh.
xyxynProprietà (torch.Tensor)Restituisci le box in formato xyxy normalizzate in base alla dimensione originale dell'immagine.
xywhnProprietà (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.

Link to this sectionMaschere#

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])Una lista di poligoni di maschera normalizzati.
xyProprietà (list[np.ndarray])Una lista di poligoni di maschera in coordinate pixel.

Per maggiori dettagli consulta la documentazione della classe Masks.

Link to this sectionSemanticMask#

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.

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 ID-classe con forma (H,W). Il Dtype è torch.uint8, torch.int16 o torch.int32, selezionato in base al conteggio delle classi.
shapeProprietà (tuple)Forma della mappa di classe, che solitamente corrisponde 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.

Link to this sectionKeypoint#

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

Keypoint
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 ulteriori dettagli, consulta la documentazione della classe Keypoints.

Link to this sectionProbs#

L'oggetto Probs può essere utilizzato per indicizzare, ottenere indici top1 e top5 e punteggi di classificazione.

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 che riassume i metodi e le proprietà per la classe Probs:

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

Per ulteriori dettagli, consulta la documentazione della classe Probs.

Link to this sectionOBB#

L'oggetto OBB può essere utilizzato per indicizzare, manipolare e convertire le oriented bounding box 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 per i metodi e le proprietà della classe OBB, inclusi nome, tipo e descrizione:

NomeTipoDescrizione
cpu()MetodoSposta l'oggetto nella memoria CPU.
numpy()MetodoConverti l'oggetto in un array NumPy.
cuda()MetodoSposta l'oggetto nella memoria CUDA.
to()MetodoSposta l'oggetto sul dispositivo specificato.
confProprietà (torch.Tensor)Restituisci i valori di confidenza delle box.
clsProprietà (torch.Tensor)Restituisci i valori di classe delle box.
idProprietà (torch.Tensor)Restituisci gli ID di tracciamento delle box (se disponibili).
xyxyProprietà (torch.Tensor)Restituisci i box orizzontali in formato xyxy.
xywhrProprietà (torch.Tensor)Restituisci i box ruotati in formato xywhr.
xyxyxyxyProprietà (torch.Tensor)Restituisci i box ruotati in formato xyxyxyxy.
xyxyxyxynProprietà (torch.Tensor)Restituisci i box ruotati in formato xyxyxyxy normalizzati in base alla dimensione dell'immagine.

Per ulteriori dettagli, consulta la documentazione della classe OBB.

Link to this sectionVisualizzazione 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 array NumPy, consentendo una facile visualizzazione o il salvataggio.

Plotting
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")

Link to this sectionParametri del metodo plot()#

Il metodo plot() supporta vari argomenti per personalizzare l'output:

ArgomentoTipoDescrizionePredefinito
confboolIncludi i punteggi di confidenza del rilevamento.True
line_widthfloatSpessore della linea dei bounding box. Scala con la dimensione dell'immagine se None.None
font_sizefloatDimensione del font del testo. Scala con la dimensione dell'immagine se None.None
fontstrNome del font per le annotazioni di testo.'Arial.ttf'
pilboolRestituisci l'immagine come oggetto PIL Image.False
imgnp.ndarrayImmagine alternativa per la visualizzazione. Usa l'immagine originale se None.None
im_gputorch.TensorImmagine accelerata via GPU per una visualizzazione più rapida delle maschere. Shape: (1, 3, 640, 640).None
kpt_radiusintRaggio per i keypoint disegnati.5
kpt_lineboolCollega i keypoint con delle linee.True
labelsboolIncludi le etichette di classe nelle annotazioni.True
boxesboolSovrapponi i bounding box sull'immagine.True
masksboolSovrapponi le maschere sull'immagine.True
probsboolIncludi le probabilità di classificazione.True
showboolVisualizza l'immagine annotata direttamente 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, es. 'instance' o 'class'.'class'
txt_colortuple[int, int, int]Colore BGR del testo per il bounding box e l'etichetta di classificazione dell'immagine.(255, 255, 255)

Link to this sectionInferenza 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:

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 uno sguardo approfondito sull'inferenza thread-safe con i modelli YOLO e istruzioni passo dopo passo, fai riferimento alla nostra Guida all'inferenza thread-safe con YOLO. Questa guida ti fornirà tutte le informazioni necessarie per evitare problemi comuni e assicurarti che la tua inferenza multi-thread funzioni senza intoppi.

Link to this sectionCiclo for per sorgenti in streaming#

Ecco uno script Python che utilizza OpenCV (cv2) e YOLO per eseguire l'inferenza sui frame video. Questo script presuppone che tu abbia già installato i pacchetti necessari (opencv-python e ultralytics).

Ciclo for per lo 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 frame del video, visualizzerà i risultati e li mostrerà in una finestra. Il ciclo può essere interrotto premendo 'q'.

Link to this sectionFAQ#

Link to this sectionCos'è Ultralytics YOLO e la sua modalità predict per l'inferenza in tempo reale?#

Ultralytics YOLO è un modello allo stato dell'arte per object detection, instance segmentation, semantic segmentation e classificazione in tempo reale. La sua modalità predict consente agli utenti di eseguire inferenza ad alta velocità su varie sorgenti di dati come immagini, video e live stream. Progettata per prestazioni e versatilità, offre anche modalità di elaborazione batch e streaming. Per maggiori dettagli sulle sue funzionalità, consulta la modalità predict di Ultralytics YOLO.

Link to this sectionCome posso eseguire l'inferenza utilizzando Ultralytics YOLO su diverse sorgenti di dati?#

Ultralytics YOLO può elaborare un'ampia gamma di sorgenti di dati, incluse singole immagini, video, directory, URL e stream. Puoi specificare la sorgente 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. Dai un'occhiata agli esempi dettagliati per varie sorgenti di inferenza nella documentazione.

Link to this sectionCome 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 dal punto di vista della memoria di oggetti Results invece di caricare tutti i frame in memoria. Per elaborare video lunghi o grandi dataset, la modalità streaming è particolarmente utile. Scopri di più sulla modalità streaming.

Link to this sectionQuali argomenti di inferenza supporta Ultralytics YOLO?#

Il metodo model.predict() in YOLO supporta vari argomenti come conf, iou, imgsz, device e altri. Questi argomenti ti consentono di personalizzare il processo di inferenza, impostando parametri come soglie di confidenza, dimensione dell'immagine e dispositivo utilizzato per il calcolo. Descrizioni dettagliate di questi argomenti si trovano nella sezione argomenti di inferenza.

Link to this sectionCome posso visualizzare e salvare i risultati delle predizioni YOLO?#

Dopo aver eseguito l'inferenza con YOLO, gli oggetti Results contengono metodi per visualizzare e salvare immagini annotate. Puoi utilizzare metodi come result.show() e result.save(filename="result.jpg") per visualizzare e salvare i risultati. Qualsiasi directory principale mancante nel percorso del nome del file viene creata automaticamente (es. result.save("path/to/result.jpg")). Per un elenco completo di questi metodi, fai riferimento alla sezione lavorare con i risultati.

Commenti