Vai al contenuto

Previsione del modello con Ultralytics YOLO

Ultralytics YOLO ecosistema e integrazioni

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
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 impostando stream=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=FalseI 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.

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

Eseguire l'inferenza sul contenuto della schermata corrente 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

Eseguire l'inferenza su un'immagine o un video ospitato in 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

Eseguire 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

Eseguire 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

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.

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

Eseguire l'inferenza su un file video. Utilizzando stream=Trueè possibile creare un generatore di oggetti Risultati per ridurre l'uso 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

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/**/*.

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

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.

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

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.

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:

Esempio

from ultralytics import YOLO

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

# Run inference on 'bus.jpg' with arguments
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

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 Falsei 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 Truevisualizza 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 NoneLa 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

from ultralytics import YOLO

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

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

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

from ultralytics import YOLO

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

# Run inference on an image
results = model("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 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

from ultralytics import YOLO

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

# Run inference on an image
results = model("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 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

from ultralytics import YOLO

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

# Run inference on an image
results = model("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 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

from ultralytics import YOLO

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

# Run inference on an image
results = model("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à 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

from ultralytics import YOLO

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

# Run inference on an image
results = model("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 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, 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. 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.

📅C reato 1 anno fa ✏️ Aggiornato 1 mese fa

Commenti