Vai al contenuto

Predizione del modello con Ultralytics YOLO

Ecosistema e integrazioni Ultralytics YOLO

Introduzione

Nel mondo del machine learning e della computer vision, il processo di dare un senso ai dati visivi è chiamato 'inferenza' o 'predizione'. Ultralytics YOLO11 offre una potente funzionalità nota come modalità predict che è pensata per l'inferenza in tempo reale ad alte prestazioni su una vasta gamma di sorgenti di dati.



Guarda: Come estrarre i risultati dalleYOLO11 Ultralytics YOLO11 per progetti personalizzati 🚀

Applicazioni nel mondo reale

ProduzioneSportSicurezza
Rilevamento di pezzi di ricambio per veicoliRilevamento di giocatori di football americanoRilevamento di cadute di persone
Rilevamento di pezzi di ricambio per veicoliRilevamento di giocatori di football americanoRilevamento di cadute di persone

Perché utilizzare Ultralytics YOLO per l'inferenza?

Ecco perché dovresti considerare la modalità predict di YOLO11 per le tue diverse esigenze di inferenza:

  • Versatilità: In grado di eseguire l'inferenza su immagini, video e persino live stream.
  • Prestazioni: Progettato per l'elaborazione in tempo reale ad alta velocità senza sacrificare la precisione.
  • Facilità d'uso: Interfacce intuitive Python e CLI per implementazione e test rapidi.
  • Altamente personalizzabile: Diverse impostazioni e parametri per ottimizzare il comportamento di inferenza del modello in base alle tue esigenze specifiche.

Caratteristiche principali della modalità Predict

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

  • Compatibilità con molteplici sorgenti dati: Che i tuoi dati siano sotto forma di singole immagini, raccolte di immagini, file video o flussi video in tempo reale, la modalità predict ti supporta.
  • Modalità Streaming: Utilizza la funzionalità di streaming per generare un generatore di oggetti efficiente in termini di memoria Results oggetti. Abilita questa opzione impostando stream=True nel metodo call del predittore.
  • Elaborazione batch: Elabora più immagini o fotogrammi video in un singolo batch, riducendo ulteriormente il tempo totale di inferenza.
  • Facilità di integrazione: Facile integrazione con pipeline di dati esistenti e altri componenti software, grazie alla sua API flessibile.

I modelli Ultralytics YOLO restituiscono un elenco Python di Results objects o un generatore di memoria efficiente di Results oggetti efficiente in termini di memoria quando stream=True viene passato al modello durante l'inferenza:

Predizione

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n 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
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True)  # return a generator of Results objects

# Process results generator
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

Sorgenti di inferenza

YOLO11 può elaborare diversi tipi di sorgenti di input per l'inferenza, come mostrato nella tabella seguente. Le sorgenti includono immagini statiche, flussi video e vari formati di dati. La tabella indica anche se ciascuna sorgente può essere utilizzata in modalità streaming con l'argomento stream=True ✅. La modalità streaming è utile per l'elaborazione di video o flussi live in quanto crea un generatore di risultati invece di caricare tutti i fotogrammi in memoria.

Suggerimento

Usa stream=True per l'elaborazione di video lunghi o set di dati di grandi dimensioni per gestire efficientemente la memoria. Quando stream=False, i risultati per tutti i frame o punti dati vengono memorizzati in memoria, il che può sommarsi rapidamente e causare errori di memoria insufficiente per input di grandi dimensioni. Al contrario, stream=True utilizza un generatore, che mantiene in memoria solo i risultati del frame o del punto dati corrente, riducendo significativamente il consumo di memoria e prevenendo problemi di memoria insufficiente.

SorgenteEsempioTipoNote
immagine'image.jpg'str oppure PathFile immagine singolo.
URL'https://ultralytics.com/images/bus.jpg'strURL di un'immagine.
screenshot'screen'strAcquisisci 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 oppure PathFile CSV contenente percorsi a immagini, video o directory.
video ✅'video.mp4'str oppure PathFile video in formati come MP4, AVI, ecc.
directory ✅'path/'str oppure PathPercorso di una directory contenente immagini o video.
glob ✅'path/*.jpg'strPattern glob per trovare più file. Utilizzare il carattere * come carattere jolly.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL di un video di 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 oppure Path*.streams file di testo con un URL di stream per riga, ovvero 8 stream verranno eseguiti con una dimensione batch di 8.
webcam ✅0intIndice del dispositivo telecamera collegato su cui eseguire l'inferenza.

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

Sorgenti di previsione

Esegui l'inferenza su un file immagine.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza sul contenuto corrente dello schermo come screenshot.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su un'immagine o un video ospitato da remoto tramite URL.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su un'immagine aperta con Python Imaging Library (PIL).

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Open an image using PIL
source = Image.open("path/to/image.jpg")

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su un'immagine letta con OpenCV.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su un'immagine rappresentata come un array numpy.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su un'immagine rappresentata come un tensor PyTorch.

import torch

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su una raccolta di immagini, URL, video e directory elencati in un file CSV.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"

# Run inference on the source
results = model(source)  # list of Results objects

Esegui l'inferenza su un file video. Utilizzando stream=True, puoi creare un generatore di oggetti Results per ridurre l'utilizzo della memoria.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to video file
source = "path/to/video.mp4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Esegui l'inferenza su tutte le immagini e i video in una directory. Per includere risorse nelle sottodirectory, usa un modello glob come path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to directory containing images and videos for inference
source = "path/to/dir"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Esegui l'inferenza su tutte le immagini e i video che corrispondono a un'espressione glob con * caratteri.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"

# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Esegui l'inferenza su un video di YouTube. Utilizzando stream=True, puoi creare un generatore di oggetti Results per ridurre l'utilizzo della memoria per i video lunghi.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Utilizza la modalità stream per eseguire l'inferenza su flussi video live utilizzando i protocolli RTSP, RTMP, TCP o indirizzo IP. Se viene fornito un singolo flusso, il modello esegue l'inferenza con una dimensione del batch pari a 1. Per più flussi, è possibile utilizzare un .streams file di testo per eseguire l'inferenza in batch, dove la dimensione del batch è determinata dal numero di flussi forniti (ad esempio, dimensione del batch 8 per 8 flussi).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Per l'utilizzo di un singolo flusso, la dimensione del batch è impostata su 1 per impostazione predefinita, consentendo un'elaborazione efficiente in tempo reale del feed video.

Per gestire più flussi video contemporaneamente, utilizza un .streams file di testo contenente una sorgente per riga. Il modello eseguirà l'inferenza in batch dove la dimensione del batch è uguale al numero di stream. Questa configurazione consente l'elaborazione efficiente di più feed contemporaneamente.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per line

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Esempio .streams file di testo:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Ogni riga nel file rappresenta una sorgente di streaming, consentendoti di monitorare ed eseguire l'inferenza su diversi flussi video contemporaneamente.

Puoi eseguire l'inferenza su un dispositivo fotocamera collegato passando l'indice di quella particolare fotocamera a source.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on the source
results = model(source=0, stream=True)  # generator of Results objects

Argomenti di inferenza

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

Nota

Ultralytics utilizza un padding minimo durante l'inferenza per impostazione predefinita (rect=True). In questa modalità, il lato più corto di ogni immagine viene riempito solo quanto necessario per renderlo divisibile per il passo massimo del modello, piuttosto che riempirlo completamente fino al imgsz. Quando si esegue l'inferenza su un batch di immagini, il padding minimo funziona solo se tutte le immagini hanno le stesse dimensioni. Altrimenti, le immagini vengono uniformemente sottoposte a padding in una forma quadrata con entrambi i lati uguali a imgsz.

  • batch=1, usando rect padding per impostazione predefinita.
  • batch>1, usando rect padding solo se tutte le immagini in un batch hanno dimensioni identiche, altrimenti viene utilizzato il padding quadrato per imgsz.

Esempio

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
# Run inference on 'bus.jpg'
yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'

Argomenti di inferenza:

ArgomentoTipoPredefinitoDescrizione
sourcestr'ultralytics/assets'Specifica l'origine dati per l'inferenza. Può essere un percorso di immagine, un file video, una directory, un URL o un ID dispositivo per feed live. Supporta una vasta gamma di formati e sorgenti, consentendo un'applicazione flessibile attraverso diversi tipi di input.
conffloat0.25Imposta la soglia minima di confidenza per i rilevamenti. 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 di Intersection Over Union (IoU) per la Non-Maximum Suppression (NMS). Valori inferiori comportano un minor numero di detection eliminando le caselle sovrapposte, utile per ridurre i duplicati.
imgszint oppure tuple640Definisce le dimensioni dell'immagine per l'inferenza. Può essere un singolo numero intero 640 per il ridimensionamento quadrato o una tupla (altezza, larghezza). Un dimensionamento appropriato può migliorare il rilevamento accuratezza e la velocità di elaborazione.
rectboolTrueSe abilitato, aggiunge un padding minimo al lato più corto dell'immagine finché non è divisibile per lo stride per migliorare la velocità di inferenza. Se disabilitato, aggiunge un padding all'immagine per renderla quadrata durante l'inferenza.
halfboolFalseAbilita l'inferenza in mezza precisione (FP16), che può accelerare l'inferenza del modello su GPU supportate con un impatto minimo sulla precisione.
devicestrNoneSpecifica il dispositivo per l'inferenza (ad esempio, cpu, cuda:0 oppure 0). Consente agli utenti di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello.
batchint1Specifica la dimensione del batch per l'inferenza (funziona solo quando la sorgente è una directory, un file video o .txt file). Un batch size più grande può fornire una maggiore velocità di elaborazione, riducendo il tempo totale necessario per l'inferenza.
max_detint300Numero massimo di detect consentiti per immagine. Limita il numero totale di oggetti che il modello può detect in una singola inferenza, prevenendo output eccessivi in scene dense.
vid_strideint1Frame stride per gli input video. Consente di saltare i frame nei video per accelerare l'elaborazione a scapito della risoluzione temporale. Un valore di 1 elabora ogni frame, valori più alti saltano i frame.
stream_bufferboolFalseDetermina se mettere in coda i frame in arrivo per i flussi video. Se False, i vecchi frame vengono eliminati per fare spazio ai nuovi frame (ottimizzato per applicazioni in tempo reale). Se True, mette in coda nuovi frame in un buffer, assicurando che nessun frame venga saltato, ma causerà latenza se l'FPS di inferenza è inferiore all'FPS dello stream.
visualizeboolFalseAttiva la visualizzazione delle caratteristiche del modello durante l'inferenza, fornendo informazioni su ciò che il modello sta "vedendo". Utile per il debug e l'interpretazione del modello.
augmentboolFalseAbilita l'aumento dei dati in fase di test (TTA) per le previsioni, migliorando potenzialmente la robustezza del rilevamento a scapito della velocità di inferenza.
agnostic_nmsboolFalseAbilita la Non-Maximum Suppression (NMS) class-agnostic, che unisce i box sovrapposti di classi diverse. Utile in scenari di detect multi-classe in cui la sovrapposizione di classi è comune.
classeslist[int]NoneFiltra le previsioni a un insieme di ID di classe. Verranno restituiti solo i rilevamenti appartenenti alle classi specificate. Utile per concentrarsi sugli oggetti rilevanti nelle attività di rilevamento multi-classe.
retina_masksboolFalseRestituisce maschere di segmentazione ad alta risoluzione. Le maschere restituite (masks.data) corrisponderanno alla dimensione originale dell'immagine se abilitate. Se disabilitate, hanno la dimensione dell'immagine utilizzata durante l'inferenza.
embedlist[int]NoneSpecifica i livelli da cui estrarre vettori di caratteristiche o embeddings. 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 previsione se save è abilitato.
namestrNoneNome dell'esecuzione della previsione. Utilizzato per creare una sottodirectory all'interno della cartella del progetto, in cui vengono memorizzati gli output di previsione se save è abilitato.
streamboolFalseAbilita l'elaborazione efficiente della memoria per video lunghi o numerose immagini restituendo un generatore di oggetti Results invece di caricare tutti i frame in memoria contemporaneamente.
verboseboolTrueControlla se visualizzare i log di inferenza dettagliati nel terminale, fornendo feedback in tempo reale sul processo di previsione.
compilebool oppure strFalseAbilita PyTorch 2.x torch.compile compilazione del grafico con backend='inductor'. Accetta True"default", False → disabilita, oppure una modalità stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". In caso di mancato supporto, torna all'esecuzione eager con un avviso.

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 nei file. Utile per la documentazione, ulteriori analisi o la condivisione dei risultati. Impostato su True per impostazione predefinita quando si utilizza la CLI e su False quando si utilizza python.
save_framesboolFalseQuando si elaborano video, salva i singoli frame come immagini. Utile per estrarre frame specifici o per un'analisi dettagliata frame per frame.
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, migliorando il livello di dettaglio disponibile per la post-elaborazione e l'analisi.
save_cropboolFalseSalva le immagini ritagliate dei rilevamenti. Utile per l'aumento del dataset, l'analisi o la creazione di dataset mirati per oggetti specifici.
show_labelsboolTrueMostra le etichette per ogni rilevamento nell'output visivo, fornendo una comprensione immediata degli oggetti rilevati.
show_confboolTrueVisualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta, offrendo una panoramica 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_widthNone or intNoneSpecifica lo spessore della linea dei riquadri di delimitazione. Se None, lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine, fornendo una personalizzazione visiva per una maggiore chiarezza.

Formati di immagine e video

YOLO11 supporta vari formati di immagine e video, come specificato in ultralytics/data/utils.py. Consultare le tabelle seguenti per i suffissi validi e gli esempi di comandi predict.

Immagini

La tabella seguente contiene i formati immagine Ultralytics validi.

Nota

Le immagini HEIC sono supportate solo per l'inferenza, non per l'addestramento.

Suffissi ImmagineEsempio di Comando PredictRiferimenti
.bmpyolo predict source=image.bmpFormato File Microsoft BMP
.dngyolo predict source=image.dngAdobe DNG
.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
.pfmyolo predict source=image.pfmPortable FloatMap
.HEICyolo predict source=image.HEICHigh Efficiency Image Format

Video

La tabella seguente contiene i formati video Ultralytics validi.

Suffissi VideoEsempio di Comando PredictRiferimenti
.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

Lavorare con i risultati

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

Risultati

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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

Results gli oggetti hanno i seguenti attributi:

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

Results Gli oggetti hanno i seguenti metodi:

MetodoTipo di ritornoDescrizione
update()NoneAggiorna l'oggetto Results con nuovi dati di detection (boxes, masks, probs, obb, keypoints).
cpu()ResultsRestituisce una copia dell'oggetto Results con tutti i tensor spostati nella memoria della CPU.
numpy()ResultsRestituisce una copia dell'oggetto Results con tutti i tensor convertiti in array numpy.
cuda()ResultsRestituisce una copia dell'oggetto Results con tutti i tensor spostati nella memoria della GPU.
to()ResultsRestituisce una copia dell'oggetto Results con i tensor spostati nel dispositivo e nel dtype specificati.
new()ResultsCrea un nuovo oggetto Results con gli stessi attributi di immagine, percorso, nomi e velocità.
plot()np.ndarrayTraccia i risultati del detection su un'immagine RGB di input e restituisce l'immagine annotata.
show()NoneVisualizza l'immagine con i risultati dell'inferenza annotati.
save()strSalva l'immagine dei risultati dell'inferenza annotata in un file e restituisce il nome del file.
verbose()strRestituisce una stringa di log per ogni task, che descrive in dettaglio 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 riassuntivo 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, consultare la Results documentazione della classe.

Box

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

Box

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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 per i Boxes metodi e le proprietà della classe, inclusi il nome, il tipo e la descrizione:

NomeTipoDescrizione
cpu()MetodoSposta l'oggetto nella memoria della 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 di classe dei riquadri.
idProprietà (torch.Tensor)Restituisce gli ID di track 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 alla dimensione originale dell'immagine.
xywhnProprietà (torch.Tensor)Restituisce i riquadri nel formato xywh normalizzati in base alla dimensione originale dell'immagine.

Per maggiori dettagli, consultare la Boxes documentazione della classe.

Maschere

Masks L'oggetto può essere utilizzato per indicizzare, manipolare e convertire le maschere in segmenti.

Maschere

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-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 per i Masks metodi e le proprietà della classe, inclusi il nome, il tipo e la descrizione:

NomeTipoDescrizione
cpu()MetodoRestituisce il tensor delle maschere nella memoria della CPU.
numpy()MetodoRestituisce il tensor delle maschere come array NumPy.
cuda()MetodoRestituisce il tensor delle maschere nella memoria della GPU.
to()MetodoRestituisce il tensor delle maschere con il dispositivo e il dtype specificati.
xynProprietà (torch.Tensor)Un elenco di segmenti normalizzati rappresentati come tensor.
xyProprietà (torch.Tensor)Un elenco di segmenti in coordinate pixel rappresentati come tensor.

Per maggiori dettagli, consultare la Masks documentazione della classe.

Punti chiave

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

Punti chiave

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-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 per i Keypoints metodi e le proprietà della classe, inclusi il nome, il tipo e la descrizione:

NomeTipoDescrizione
cpu()MetodoRestituisce il tensor dei keypoint nella memoria della CPU.
numpy()MetodoRestituisce il tensor dei keypoint come array NumPy.
cuda()MetodoRestituisce il tensor dei keypoint nella memoria della GPU.
to()MetodoRestituisce il tensor dei keypoint con il dispositivo e il dtype specificati.
xynProprietà (torch.Tensor)Un elenco di keypoint normalizzati rappresentati come tensor.
xyProprietà (torch.Tensor)Un elenco di keypoint in coordinate pixel rappresentati come tensor.
confProprietà (torch.Tensor)Restituisce i valori di confidenza dei keypoint, se disponibili; altrimenti, None.

Per maggiori dettagli, consultare la Keypoints documentazione della classe.

Probabilità

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

Probabilità

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-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 Probs classe:

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

Per maggiori dettagli, consultare la Probs documentazione della classe.

OBB

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

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-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 OBB metodi e le proprietà della classe, inclusi il nome, il tipo e la descrizione:

NomeTipoDescrizione
cpu()MetodoSposta l'oggetto nella memoria della 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 di classe dei riquadri.
idProprietà (torch.Tensor)Restituisce gli ID di track dei riquadri (se disponibili).
xyxyProprietà (torch.Tensor)Restituisce i riquadri orizzontali nel formato xyxy.
xywhrProprietà (torch.Tensor)Restituisce i box ruotati in formato xywhr.
xyxyxyxyProprietà (torch.Tensor)Restituisce i box ruotati in formato xyxyxyxy.
xyxyxyxynProprietà (torch.Tensor)Restituisce i box ruotati in formato xyxyxyxy normalizzati in base alle dimensioni dell'immagine.

Per maggiori dettagli, consultare la OBB documentazione della classe.

Tracciamento dei risultati

Il plot() metodo in Results objects facilita la visualizzazione delle previsioni sovrapponendo gli oggetti rilevati (come bounding box, maschere, punti chiave e probabilità) sull'immagine originale. Questo metodo restituisce l'immagine annotata come un array NumPy, consentendo una facile visualizzazione o salvataggio.

Plotting

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

plot() Parametri del metodo

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

ArgomentoTipoDescrizionePredefinito
confboolIncludi i punteggi di confidenza del rilevamento.True
line_widthfloatLarghezza della linea dei bounding box. Scala con le dimensioni dell'immagine se None.None
font_sizefloatDimensione del font del testo. Scala con le dimensioni dell'immagine se None.None
fontstrNome del font per le annotazioni di testo.'Arial.ttf'
pilboolRestituisce l'immagine come oggetto PIL Image.False
imgnp.ndarrayImmagine alternativa per il plotting. Utilizza l'immagine originale se None.None
im_gputorch.TensorImmagine accelerata tramite GPU per un plotting delle maschere più veloce. Forma: (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, ad esempio 'instance' o 'class'.'class'
txt_colortuple[int, int, int]Colore del testo RGB 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 si eseguono più modelli YOLO in parallelo su diversi thread. L'inferenza thread-safe garantisce che le predizioni di ciascun thread siano isolate e non interferiscano tra loro, evitando race condition e garantendo output coerenti e affidabili.

Quando si utilizzano modelli YOLO in un'applicazione multi-thread, è importante istanziare oggetti modello separati per ciascun thread o impiegare lo storage thread-local per prevenire conflitti:

Inferenza thread-safe

Istanza un singolo modello all'interno di ciascun 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()

Per un'analisi approfondita dell'inferenza thread-safe con i modelli YOLO e istruzioni dettagliate, consulta la nostra Guida all'inferenza thread-safe di YOLO. Questa guida ti fornirà tutte le informazioni necessarie per evitare insidie comuni e garantire che la tua inferenza multi-thread funzioni senza problemi.

Sorgente di streaming for-loop

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

Streaming for-loop

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.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à predizioni su ciascun frame del video, visualizzerà i risultati e li mostrerà in una finestra. È possibile uscire dal loop premendo 'q'.

FAQ

Cos'è Ultralytics YOLO e la sua modalità predict per l'inferenza in tempo reale?

Ultralytics YOLO è un modello all'avanguardia per il rilevamento di oggetti, la segmentazione e la classificazione in tempo reale. La sua modalità predict consente agli utenti di eseguire inferenze ad alta velocità su varie sorgenti di dati come immagini, video e streaming live. Progettato per prestazioni e versatilità, offre anche modalità di elaborazione batch e streaming. Per maggiori dettagli sulle sue funzionalità, consulta la modalità predict di Ultralytics YOLO.

Come posso eseguire l'inferenza utilizzando Ultralytics YOLO su diverse sorgenti di dati?

Ultralytics YOLO è in grado di elaborare un'ampia gamma di sorgenti dati, tra cui singole immagini, video, directory, URL e stream. È possibile specificare la sorgente dati nel model.predict() comando. Ad esempio, utilizzare 'image.jpg' per un'immagine locale o 'https://ultralytics.com/images/bus.jpg' per un URL. Consultare gli esempi dettagliati per le varie sorgenti di inferenza nella documentazione.

Come posso ottimizzare la velocità di inferenza e l'utilizzo della memoria di YOLO?

Per ottimizzare la velocità di inferenza e gestire la memoria in modo efficiente, è possibile utilizzare la modalità streaming impostando stream=True nel metodo call del predittore. La modalità streaming genera un generatore di oggetti a basso consumo di memoria Results invece di caricare tutti i frame in memoria. Per l'elaborazione di video lunghi o set di dati di grandi dimensioni, la modalità streaming è particolarmente utile. Ulteriori informazioni sul modalità streaming.

Quali argomenti di inferenza supporta Ultralytics YOLO?

Il model.predict() il metodo in YOLO supporta vari argomenti come conf, iou, imgsz, devicee altro ancora. 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 sezione.

Come posso visualizzare e salvare i risultati delle predizioni di YOLO?

Dopo aver eseguito l'inferenza con YOLO, gli Results oggetti contengono metodi per visualizzare e salvare le immagini annotate. È possibile utilizzare metodi come result.show() e result.save(filename="result.jpg") per visualizzare e salvare i risultati. Per un elenco completo di questi metodi, consultare la sezione lavorare con i risultati sezione.



📅 Creato 2 anni fa ✏️ Aggiornato 2 giorni fa
glenn-jocherRizwanMunawarLaughing-qUltralyticsAssistantMatthewNoyceY-T-Gbanu4prasadjk4esergiuwaxmannIvorZhu331Burhan-Qplashchynskitensorturtle

Commenti