Previsione del modello con Ultralytics YOLO
Introduzione
Nel mondo dell'apprendimento automatico e della visione computerizzata, il processo di creazione di senso dai dati visivi è chiamato "inferenza" o "predizione". Ultralytics YOLO11 offre una potente funzione nota come modalità di predizione che è stata concepita per l'inferenza ad alte prestazioni e in tempo reale su un'ampia gamma di fonti di dati.
Guarda: Come estrarre gli output dal modello Ultralytics YOLO per progetti personalizzati.
Applicazioni nel mondo reale
Produzione | Sport | Sicurezza |
---|---|---|
Rilevamento dei ricambi per veicoli | Rilevamento dei giocatori di calcio | Rilevamento delle cadute di persone |
Perché utilizzare Ultralytics YOLO per l'inferenza?
Ecco perché dovreste considerare la modalità di predizione di YOLO11 per le vostre esigenze di inferenza:
- Versatilità: È in grado di fare inferenze su immagini, video e persino flussi in diretta.
- Prestazioni: Progettato per l'elaborazione in tempo reale e ad alta velocità senza sacrificare la precisione.
- Facilità d'uso: interfacce intuitive Python e CLI per un'implementazione e un test rapidi.
- Altamente personalizzabile: Diverse impostazioni e parametri per regolare il comportamento del modello di inferenza in base alle vostre esigenze specifiche.
Caratteristiche principali della modalità Predict
YOLO11La modalità di previsione è stata progettata per essere robusta e versatile:
- Compatibilità con più fonti di dati: Che si tratti di singole immagini, di una raccolta di immagini, di file video o di flussi video in tempo reale, la modalità di previsione è la soluzione ideale.
- Modalità di streaming: Utilizzate la funzione di streaming per generare un generatore efficiente di memoria di
Results
oggetti. Attivare questa funzione impostandostream=True
nel metodo di chiamata del predittore. - Elaborazione batch: La possibilità di elaborare più immagini o fotogrammi video in un unico lotto, accelerando ulteriormente i tempi di inferenza.
- Integrazione facile: si integra facilmente con le pipeline di dati esistenti e con altri componenti software, grazie alla sua API flessibile.
Ultralytics YOLO restituiscono un elenco Python di Results
o un generatore Python efficiente in termini di memoria di oggetti Results
oggetti quando stream=True
viene passato al modello durante l'inferenza:
Prevedere
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
Fonti 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 ogni sorgente può essere utilizzata in modalità streaming con l'argomento stream=True
✅. La modalità Streaming è vantaggiosa per l'elaborazione di video o flussi live, poiché crea un generatore di risultati invece di caricare tutti i fotogrammi in memoria.
Suggerimento
Utilizzo stream=True
per l'elaborazione di video lunghi o di grandi insiemi di dati, per gestire in modo efficiente la memoria. Quando stream=False
I risultati di tutti i fotogrammi o di tutti i punti di dati vengono memorizzati, il che può portare a un rapido accumulo e a errori fuori memoria per input di grandi dimensioni. Al contrario, stream=True
utilizza un generatore che mantiene in memoria solo i risultati del fotogramma o del punto dati corrente, riducendo in modo significativo il consumo di memoria e prevenendo i problemi di fuori memoria.
Fonte | Esempio | Tipo | Note |
---|---|---|---|
immagine | 'image.jpg' |
str o Path |
File immagine singolo. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
URL di un'immagine. |
schermata | 'screen' |
str |
Catturare una schermata. |
PIL | Image.open('image.jpg') |
PIL.Image |
Formato HWC con canali RGB. |
OpenCV | cv2.imread('image.jpg') |
np.ndarray |
Formato HWC con canali BGR uint8 (0-255) . |
numpy | np.zeros((640,1280,3)) |
np.ndarray |
Formato HWC con canali BGR uint8 (0-255) . |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
Formato BCHW con canali RGB float32 (0.0-1.0) . |
CSV | 'sources.csv' |
str o Path |
File CSV contenente i percorsi di immagini, video o directory. |
video ✅ | 'video.mp4' |
str o Path |
File video in formati come MP4, AVI, ecc. |
directory ✅ | 'path/' |
str o Path |
Percorso di una directory contenente immagini o video. |
globale ✅ | 'path/*.jpg' |
str |
Schema globale per la corrispondenza di più file. Utilizzate l'opzione * come carattere jolly. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
URL di un video di YouTube. |
flusso ✅ | 'rtsp://example.com/media.mp4' |
str |
URL per i protocolli di streaming come RTSP, RTMP, TCP o un indirizzo IP. |
multi-stream ✅ | 'list.streams' |
str o Path |
*.streams con un URL di flusso per riga, cioè 8 flussi verranno eseguiti con una dimensione di batch pari a 8. |
webcam ✅ | 0 |
int |
Indice del dispositivo della telecamera collegata su cui eseguire l'inferenza. |
Di seguito sono riportati esempi di codice per l'utilizzo di ciascun tipo di sorgente:
Fonti di previsione
Eseguire l'inferenza su un file immagine.
Eseguire l'inferenza sul contenuto della schermata corrente come screenshot.
Eseguire l'inferenza su un'immagine o un video ospitato in remoto tramite URL.
Eseguire l'inferenza su un'immagine aperta con Python Imaging Library (PIL).
Eseguire l'inferenza su un'immagine letta con OpenCV.
Esegue l'inferenza su un'immagine rappresentata come 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
Eseguire l'inferenza su un'immagine rappresentata come un PyTorch tensor.
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
Eseguire l'inferenza su una raccolta di immagini, URL, video e directory elencate in un file CSV.
Eseguire l'inferenza su un file video. Utilizzando stream=True
è possibile creare un generatore di oggetti Risultati per ridurre l'uso della memoria.
Eseguire l'inferenza su tutte le immagini e i video di una directory. Per catturare anche le immagini e i video nelle sottodirectory, utilizzare uno schema glob, ad esempio path/to/dir/**/*
.
Eseguire l'inferenza su tutte le immagini e i video che corrispondono a un'espressione globale con *
personaggi.
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
Eseguire l'inferenza su un video di YouTube. Utilizzando stream=True
è possibile creare un generatore di oggetti Risultati per ridurre l'utilizzo della memoria per i video lunghi.
Utilizzare la modalità stream per eseguire l'inferenza su flussi video in diretta utilizzando i protocolli RTSP, RTMP, TCP o indirizzo IP. Se viene fornito un singolo flusso, il modello esegue l'inferenza con un Dimensione del lotto di 1. Per flussi multipli, un .streams
può essere usato per eseguire l'inferenza in batch, dove la dimensione del batch è determinata dal numero di flussi forniti (ad esempio, batch-size 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 di default su 1, consentendo un'efficiente elaborazione in tempo reale del feed video.
Per gestire più flussi video simultaneamente, utilizzare una scheda .streams
file di testo contenente le fonti di streaming. Il modello esegue l'inferenza in batch, dove la dimensione del batch è uguale al numero di flussi. Questa impostazione consente un'elaborazione efficiente di più flussi in contemporanea.
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 del file rappresenta una sorgente di streaming, consentendo di monitorare ed eseguire inferenze su più flussi video contemporaneamente.
È possibile eseguire l'inferenza su una telecamera collegata passando l'indice di quella particolare telecamera a source
.
Argomenti di inferenza
model.predict()
accetta più argomenti che possono essere passati al momento dell'inferenza per sovrascrivere i valori predefiniti:
Esempio
Argomenti di inferenza:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Specifica l'origine dei dati per l'inferenza. Può essere un percorso di immagine, un file video, una directory, un URL o un ID dispositivo per i feed live. Supporta un'ampia gamma di formati e fonti, consentendo un'applicazione flessibile a diversi tipi di input. |
conf |
float |
0.25 |
Imposta la soglia minima di confidenza per i rilevamenti. Gli oggetti rilevati con una confidenza inferiore a questa soglia vengono ignorati. La regolazione di questo valore può contribuire a ridurre i falsi positivi. |
iou |
float |
0.7 |
Soglia di Intersection Over Union (IoU) per la soppressione non massima (NMS). Valori più bassi determinano un minor numero di rilevamenti eliminando le caselle sovrapposte, utili per ridurre i duplicati. |
imgsz |
int or tuple |
640 |
Definisce la dimensione dell'immagine per l'inferenza. Può essere un singolo numero intero 640 per il ridimensionamento quadrato o una tupla (altezza, larghezza). Un dimensionamento corretto può migliorare il rilevamento precisione e velocità di elaborazione. |
half |
bool |
False |
Abilita l'inferenza a mezza precisione (FP16), che può accelerare l'inferenza del modello sulle GPU supportate con un impatto minimo sulla precisione. |
device |
str |
None |
Specifica il dispositivo per l'inferenza (ad es, cpu , cuda:0 o 0 ). Consente agli utenti di scegliere tra CPU, uno specifico GPU o altri dispositivi di calcolo per l'esecuzione del modello. |
batch |
int |
1 |
Specifica la dimensione del batch per l'inferenza (funziona solo quando la sorgente è una directory, un file video o .txt file). Una dimensione maggiore del batch può garantire una maggiore produttività, riducendo il tempo totale necessario per l'inferenza. |
max_det |
int |
300 |
Numero massimo di rilevamenti consentiti per immagine. Limita il numero totale di oggetti che il modello può rilevare in una singola inferenza, prevenendo un numero eccessivo di risultati in scene dense. |
vid_stride |
int |
1 |
Frame stride per gli ingressi video. Consente di saltare i fotogrammi nei video per accelerare l'elaborazione a scapito della risoluzione temporale. Un valore di 1 elabora ogni fotogramma, valori più alti saltano i fotogrammi. |
stream_buffer |
bool |
False |
Determina se mettere in coda i fotogrammi in arrivo per i flussi video. Se False i vecchi fotogrammi vengono eliminati per accogliere i nuovi (ottimizzato per le applicazioni in tempo reale). Se `True', accoda i nuovi fotogrammi in un buffer, assicurando che nessun fotogramma venga saltato, ma causerà latenza se l'FPS dell'inferenza è inferiore all'FPS del flusso. |
visualize |
bool |
False |
Attiva la visualizzazione delle caratteristiche del modello durante l'inferenza, fornendo informazioni su ciò che il modello "vede". Utile per il debugging e l'interpretazione del modello. |
augment |
bool |
False |
Consente l'aumento del tempo di test (TTA) per le previsioni, migliorando potenzialmente la robustezza del rilevamento al costo della velocità di inferenza. |
agnostic_nms |
bool |
False |
Abilita la soppressione non massimale (NMS), che unisce le caselle sovrapposte di classi diverse. Utile in scenari di rilevamento multiclasse in cui la sovrapposizione di classi è comune. |
classes |
list[int] |
None |
Filtra le previsioni in base a un insieme di ID di classe. Verranno restituiti solo i rilevamenti appartenenti alle classi specificate. Utile per concentrarsi sugli oggetti rilevanti in compiti di rilevamento multiclasse. |
retina_masks |
bool |
False |
Restituisce maschere di segmentazione ad alta risoluzione. Le maschere restituite (masks.data ) corrisponderanno alle dimensioni dell'immagine originale, se abilitati. Se sono disabilitati, hanno la dimensione dell'immagine usata durante l'inferenza. |
embed |
list[int] |
None |
Specifica i livelli da cui estrarre vettori di caratteristiche o embeddings. Utile per attività a valle come il clustering o la ricerca di similarità. |
project |
str |
None |
Nome della directory del progetto in cui vengono salvati i risultati della predizione, se save è abilitato. |
name |
str |
None |
Nome della corsa di predizione. Utilizzato per creare una sottocartella all'interno della cartella del progetto, dove vengono memorizzati gli output della predizione se save è abilitato. |
Argomenti di visualizzazione:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
show |
bool |
False |
Se True visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
save |
bool |
False o True |
Consente di salvare su file le immagini o i video annotati. Utile per la documentazione, per ulteriori analisi o per la condivisione dei risultati. Predefinito a True quando si usa CLI e False quando si usa Python. |
save_frames |
bool |
False |
Durante l'elaborazione dei video, salva i singoli fotogrammi come immagini. È utile per estrarre fotogrammi specifici o per un'analisi dettagliata fotogramma per fotogramma. |
save_txt |
bool |
False |
Salva i risultati del rilevamento in un file di testo, seguendo il formato [class] [x_center] [y_center] [width] [height] [confidence] . Utile per l'integrazione con altri strumenti di analisi. |
save_conf |
bool |
False |
Include i punteggi di confidenza nei file di testo salvati. Aumenta i dettagli disponibili per la post-elaborazione e l'analisi. |
save_crop |
bool |
False |
Salva le immagini ritagliate dei rilevamenti. Utile per aumentare il set di dati, per l'analisi o per creare set di dati mirati per oggetti specifici. |
show_labels |
bool |
True |
Visualizza le etichette per ogni rilevamento nell'output visivo. Fornisce una comprensione immediata degli oggetti rilevati. |
show_conf |
bool |
True |
Visualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Fornisce indicazioni sulla certezza del modello per ogni rilevamento. |
show_boxes |
bool |
True |
Disegna riquadri di delimitazione attorno agli oggetti rilevati. È essenziale per l'identificazione visiva e la localizzazione degli oggetti nelle immagini o nei fotogrammi video. |
line_width |
None o int |
None |
Specifica la larghezza della linea delle caselle di delimitazione. Se None La larghezza della linea viene regolata automaticamente in base alle dimensioni dell'immagine. Fornisce una personalizzazione visiva per la chiarezza. |
Formati immagine e video
YOLO11 supporta diversi formati di immagini e video, come specificato in ultralytics/data/utils .py. Vedere le tabelle seguenti per i suffissi validi e gli esempi di comandi di previsione.
Immagini
La tabella seguente contiene i formati di immagine Ultralytics validi.
Nota
Le immagini HEIC sono supportate solo per l'inferenza, non per l'addestramento.
Suffissi immagine | Esempio di comando Predict | Riferimento |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft Formato file BMP |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.jpeg |
yolo predict source=image.jpeg |
JPEG |
.jpg |
yolo predict source=image.jpg |
JPEG |
.mpo |
yolo predict source=image.mpo |
Oggetto multi immagine |
.png |
yolo predict source=image.png |
Grafica di rete portatile |
.tif |
yolo predict source=image.tif |
Tag Formato file immagine |
.tiff |
yolo predict source=image.tiff |
Tag Formato file immagine |
.webp |
yolo predict source=image.webp |
WebP |
.pfm |
yolo predict source=image.pfm |
Mappa galleggiante portatile |
.HEIC |
yolo predict source=image.HEIC |
Formato immagine ad alta efficienza |
Video
La tabella seguente contiene i formati video validi di Ultralytics .
Suffissi video | Esempio di comando Predict | Riferimento |
---|---|---|
.asf |
yolo predict source=video.asf |
Formato dei sistemi avanzati |
.avi |
yolo predict source=video.avi |
Interleave audio-video |
.gif |
yolo predict source=video.gif |
Formato di interscambio grafico |
.m4v |
yolo predict source=video.m4v |
MPEG-4 Parte 14 |
.mkv |
yolo predict source=video.mkv |
Matroska |
.mov |
yolo predict source=video.mov |
Formato file QuickTime |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 Parte 14 - Wikipedia |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 Parte 2 |
.mpg |
yolo predict source=video.mpg |
MPEG-1 Parte 2 |
.ts |
yolo predict source=video.ts |
Flusso di trasporto MPEG |
.wmv |
yolo predict source=video.wmv |
Windows Media Video |
.webm |
yolo predict source=video.webm |
Progetto WebM |
Lavorare con i risultati
Tutti Ultralytics predict()
restituirà un elenco di Results
oggetti:
Risultati
Results
hanno i seguenti attributi:
Attributo | Tipo | Descrizione |
---|---|---|
orig_img |
numpy.ndarray |
L'immagine originale come array numpy. |
orig_shape |
tuple |
La forma dell'immagine originale in formato (altezza, larghezza). |
boxes |
Boxes, optional |
Un oggetto Scatole contenente le caselle di delimitazione del rilevamento. |
masks |
Masks, optional |
Un oggetto Masks contenente le maschere di rilevamento. |
probs |
Probs, optional |
Un oggetto Probs contenente le probabilità di ciascuna classe per il compito di classificazione. |
keypoints |
Keypoints, optional |
Un oggetto Punti chiave contenente i punti chiave rilevati per ogni oggetto. |
obb |
OBB, optional |
Un oggetto OBB contenente caselle di delimitazione orientate. |
speed |
dict |
Un dizionario delle velocità di preprocesso, inferenza e postprocesso in millisecondi per immagine. |
names |
dict |
Un dizionario di nomi di classi. |
path |
str |
Il percorso del file immagine. |
Results
hanno i seguenti metodi:
Metodo | Tipo di ritorno | Descrizione |
---|---|---|
update() |
None |
Aggiornare gli attributi delle caselle, delle maschere e dei problemi dell'oggetto Risultati. |
cpu() |
Results |
Restituisce una copia dell'oggetto Results con tutti i tensori sulla memoria di CPU . |
numpy() |
Results |
Restituisce una copia dell'oggetto Results con tutti i tensori come array numpy. |
cuda() |
Results |
Restituisce una copia dell'oggetto Results con tutti i tensori sulla memoria di GPU . |
to() |
Results |
Restituisce una copia dell'oggetto Results con i tensori sul dispositivo e sul tipo di d specificato. |
new() |
Results |
Restituisce un nuovo oggetto Results con la stessa immagine, lo stesso percorso e gli stessi nomi. |
plot() |
numpy.ndarray |
Traccia i risultati del rilevamento. Restituisce un array numpy dell'immagine annotata. |
show() |
None |
Mostra i risultati annotati sullo schermo. |
save() |
None |
Salvare i risultati annotati su file. |
verbose() |
str |
Restituisce la stringa di registro per ogni attività. |
save_txt() |
None |
Salvare le previsioni in un file txt. |
save_crop() |
None |
Salvare le previsioni ritagliate in save_dir/cls/file_name.jpg . |
tojson() |
str |
Converte l'oggetto in formato JSON. |
Per maggiori dettagli, consultare la sezione Results
documentazione della classe.
Scatole
Boxes
può essere usato per indicizzare, manipolare e convertire i rettangoli di selezione in diversi formati.
Scatole
Ecco una tabella per il Boxes
metodi e proprietà della classe, compresi nome, tipo e descrizione:
Nome | Tipo | Descrizione |
---|---|---|
cpu() |
Metodo | Spostare l'oggetto nella memoria di CPU . |
numpy() |
Metodo | Converte l'oggetto in un array numpy. |
cuda() |
Metodo | Spostare l'oggetto nella memoria di CUDA . |
to() |
Metodo | Sposta l'oggetto nel dispositivo specificato. |
xyxy |
Proprietà (torch.Tensor ) |
Restituisce le caselle in formato xyxy. |
conf |
Proprietà (torch.Tensor ) |
Restituisce i valori di confidenza delle caselle. |
cls |
Proprietà (torch.Tensor ) |
Restituisce i valori delle classi delle caselle. |
id |
Proprietà (torch.Tensor ) |
Restituisce gli ID traccia delle caselle (se disponibili). |
xywh |
Proprietà (torch.Tensor ) |
Restituisce le caselle in formato xywh. |
xyxyn |
Proprietà (torch.Tensor ) |
Restituisce le caselle in formato xyxy normalizzate in base alle dimensioni dell'immagine originale. |
xywhn |
Proprietà (torch.Tensor ) |
Restituisce le caselle in formato xywh normalizzate in base alle dimensioni dell'immagine originale. |
Per maggiori dettagli, consultare la sezione Boxes
documentazione della classe.
Maschere
Masks
può essere usato per indicizzare, manipolare e convertire le maschere in segmenti.
Maschere
Ecco una tabella per il Masks
metodi e proprietà della classe, compresi nome, tipo e descrizione:
Nome | Tipo | Descrizione |
---|---|---|
cpu() |
Metodo | Restituisce le maschere tensor sulla memoria CPU . |
numpy() |
Metodo | Restituisce le maschere tensor come array numpy. |
cuda() |
Metodo | Restituisce le maschere tensor sulla memoria GPU . |
to() |
Metodo | Restituisce le maschere tensor con il dispositivo e il tipo specificato. |
xyn |
Proprietà (torch.Tensor ) |
Un elenco di segmenti normalizzati rappresentati come tensori. |
xy |
Proprietà (torch.Tensor ) |
Un elenco di segmenti in coordinate pixel rappresentati come tensori. |
Per maggiori dettagli, consultare la sezione Masks
documentazione della classe.
Punti chiave
Keypoints
può essere usato per indicizzare, manipolare e normalizzare le coordinate.
Punti chiave
Ecco una tabella per il Keypoints
metodi e proprietà della classe, compresi nome, tipo e descrizione:
Nome | Tipo | Descrizione |
---|---|---|
cpu() |
Metodo | Restituisce i punti chiave tensor sulla memoria CPU . |
numpy() |
Metodo | Restituisce i punti chiave tensor come array numpy. |
cuda() |
Metodo | Restituisce i punti chiave tensor sulla memoria GPU . |
to() |
Metodo | Restituisce i punti chiave tensor con il dispositivo e il tipo di d specificato. |
xyn |
Proprietà (torch.Tensor ) |
Un elenco di punti chiave normalizzati rappresentati come tensori. |
xy |
Proprietà (torch.Tensor ) |
Un elenco di punti chiave in coordinate pixel rappresentati come tensori. |
conf |
Proprietà (torch.Tensor ) |
Restituisce i valori di confidenza dei punti chiave, se disponibili, altrimenti nessuno. |
Per maggiori dettagli, consultare la sezione Keypoints
documentazione della classe.
Probi
Probs
può essere usato per indicizzare, ottenere top1
e top5
indici e punteggi di classificazione.
Probi
Ecco una tabella che riassume i metodi e le proprietà dell'oggetto Probs
classe:
Nome | Tipo | Descrizione |
---|---|---|
cpu() |
Metodo | Restituisce una copia dei probi tensor sulla memoria di CPU . |
numpy() |
Metodo | Restituisce una copia dei probi tensor come array numpy. |
cuda() |
Metodo | Restituisce una copia dei probi tensor sulla memoria di GPU . |
to() |
Metodo | Restituisce una copia dei probi tensor con il dispositivo e il tipo specificato. |
top1 |
Proprietà (int ) |
Indice della classe 1 superiore. |
top5 |
Proprietà (list[int] ) |
Indici delle prime 5 classi. |
top1conf |
Proprietà (torch.Tensor ) |
Fiducia nella prima classe. |
top5conf |
Proprietà (torch.Tensor ) |
Confidenze delle prime 5 classi. |
Per maggiori dettagli, consultare la sezione Probs
documentazione della classe.
OBB
OBB
può essere usato per indicizzare, manipolare e convertire i rettangoli di selezione orientati in diversi formati.
OBB
Ecco una tabella per il OBB
metodi e proprietà della classe, compresi nome, tipo e descrizione:
Nome | Tipo | Descrizione |
---|---|---|
cpu() |
Metodo | Spostare l'oggetto nella memoria di CPU . |
numpy() |
Metodo | Converte l'oggetto in un array numpy. |
cuda() |
Metodo | Spostare l'oggetto nella memoria di CUDA . |
to() |
Metodo | Sposta l'oggetto nel dispositivo specificato. |
conf |
Proprietà (torch.Tensor ) |
Restituisce i valori di confidenza delle caselle. |
cls |
Proprietà (torch.Tensor ) |
Restituisce i valori delle classi delle caselle. |
id |
Proprietà (torch.Tensor ) |
Restituisce gli ID traccia delle caselle (se disponibili). |
xyxy |
Proprietà (torch.Tensor ) |
Restituisce le caselle orizzontali in formato xyxy. |
xywhr |
Proprietà (torch.Tensor ) |
Restituisce le caselle ruotate nel formato xywhr. |
xyxyxyxy |
Proprietà (torch.Tensor ) |
Restituisce le caselle ruotate in formato xyxyxyxy. |
xyxyxyxyn |
Proprietà (torch.Tensor ) |
Restituisce le caselle ruotate in formato xyxyxyxy normalizzate in base alle dimensioni dell'immagine. |
Per maggiori dettagli, consultare la sezione OBB
documentazione della classe.
Tracciare i risultati
Il plot()
metodo in Results
facilita la visualizzazione delle previsioni sovrapponendo gli oggetti rilevati (come bounding box, maschere, punti chiave e probabilità) all'immagine originale. Questo metodo restituisce l'immagine annotata come array NumPy, per facilitarne la visualizzazione o il salvataggio.
Tracciatura
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg'
results = model(["bus.jpg", "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()
supporta vari argomenti per personalizzare l'output:
Argomento | Tipo | Descrizione | Predefinito |
---|---|---|---|
conf |
bool |
Includere i punteggi di fiducia del rilevamento. | True |
line_width |
float |
Larghezza delle linee dei riquadri di delimitazione. Scala con le dimensioni dell'immagine se None . |
None |
font_size |
float |
Dimensione del carattere del testo. Scala con le dimensioni dell'immagine se None . |
None |
font |
str |
Nome del carattere per le annotazioni di testo. | 'Arial.ttf' |
pil |
bool |
Restituisce l'immagine come oggetto Immagine PIL. | False |
img |
numpy.ndarray |
Immagine alternativa per il plottaggio. Utilizza l'immagine originale se None . |
None |
im_gpu |
torch.Tensor |
GPU-Immagine accelerata per una più rapida tracciatura della maschera. Forma: (1, 3, 640, 640). | None |
kpt_radius |
int |
Raggio per i punti chiave disegnati. | 5 |
kpt_line |
bool |
Collegare i punti chiave con linee. | True |
labels |
bool |
Includere le etichette delle classi nelle annotazioni. | True |
boxes |
bool |
Sovrappone i riquadri di delimitazione all'immagine. | True |
masks |
bool |
Sovrapporre le maschere all'immagine. | True |
probs |
bool |
Includere le probabilità di classificazione. | True |
show |
bool |
Visualizzare l'immagine annotata direttamente con il visualizzatore di immagini predefinito. | False |
save |
bool |
Salva l'immagine annotata in un file specificato da filename . |
False |
filename |
str |
Percorso e nome del file in cui salvare l'immagine annotata se save è True . |
None |
color_mode |
str |
Specificare la modalità di colore, ad esempio 'istanza' o 'classe'. | 'class' |
Inferenza sicura per i thread
Garantire la sicurezza dei thread durante l'inferenza è fondamentale quando si eseguono più modelli YOLO in parallelo su diversi thread. L'inferenza thread-safe garantisce che le previsioni di ciascun thread siano isolate e non interferiscano l'una con l'altra, evitando condizioni di gara e assicurando risultati coerenti e affidabili.
Quando si utilizzano i modelli YOLO in un'applicazione multi-thread, è importante istanziare oggetti modello separati per ogni thread o utilizzare la memorizzazione locale dei thread per evitare conflitti:
Inferenza sicura per i thread
Istanziare 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
Per uno sguardo approfondito sull'inferenza thread-safe con i modelli di YOLO e per le istruzioni passo-passo, consultare la nostra Guida all'inferenza thread-safeYOLO . Questa guida fornisce tutte le informazioni necessarie per evitare le insidie più comuni e garantire che l'inferenza multi-thread funzioni senza problemi.
Fonte di streaming for
-Anello
Ecco uno script Python che utilizza OpenCV (cv2
) e YOLO per eseguire l'inferenza sui fotogrammi video. Questo script presuppone che siano già stati installati 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 esegue le previsioni su ogni fotogramma del video, visualizza i risultati e li mostra in una finestra. Il ciclo può essere interrotto premendo 'q'.
FAQ
Che cos'è Ultralytics YOLO e la sua modalità di predizione per l'inferenza in tempo reale?
Ultralytics YOLO è un modello all'avanguardia per il rilevamento, la segmentazione e la classificazione degli oggetti in tempo reale. La sua modalità di predizione consente agli utenti di eseguire inferenze ad alta velocità su varie fonti di dati come immagini, video e flussi live. Progettato per garantire prestazioni e versatilità, offre anche modalità di elaborazione batch e di streaming. Per maggiori dettagli sulle sue caratteristiche, consultate il sitoUltralytics YOLO predict mode.
Come posso eseguire l'inferenza utilizzando Ultralytics YOLO su diverse fonti di dati?
Ultralytics YOLO può elaborare un'ampia gamma di sorgenti di dati, tra cui singole immagini, video, directory, URL e flussi. È possibile specificare l'origine dei dati nel campo model.predict()
chiamata. Ad esempio, utilizzare 'image.jpg'
per un'immagine locale o 'https://ultralytics.com/images/bus.jpg'
per un URL. Consultate gli esempi dettagliati per i vari fonti di inferenza nella documentazione.
Come si ottimizza la velocità di inferenza di YOLO e l'utilizzo della memoria?
Per ottimizzare la velocità di inferenza e gestire la memoria in modo efficiente, è possibile utilizzare la modalità di streaming impostando stream=True
nel metodo di chiamata del predittore. La modalità di streaming genera un generatore efficiente in termini di memoria di Results
invece di caricare tutti i fotogrammi in memoria. Per l'elaborazione di video lunghi o di grandi insiemi di dati, la modalità streaming è particolarmente utile. Per saperne di più modalità streaming.
Quali argomenti di inferenza sostiene Ultralytics YOLO ?
Il model.predict()
in YOLO supporta vari argomenti come conf
, iou
, imgsz
, device
e 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. Le descrizioni dettagliate di questi argomenti si trovano nella sezione argomenti di inferenza sezione.
Come posso visualizzare e salvare i risultati delle previsioni di YOLO ?
Dopo aver eseguito l'inferenza con YOLO, il Results
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 il documento lavorare con i risultati sezione.