Inferenza#
Ultralytics Platform fornisce inferenza basata su browser per testare i modelli addestrati e endpoint dedicati per l'accesso programmatico.

Scheda Predizione#
Ogni modello con i pesi include una scheda Predict per l'inferenza basata su browser:
- Vai al tuo modello
- Fai clic sulla scheda Predict
- Carica un'immagine, usa un esempio o apri la webcam
- Esamina la sovrapposizione specifica dell'attività, il riepilogo delle predizioni, i tempi e la risposta grezza
I modelli senza pesi mostrano invece uno stato vuoto: prima addestra il modello o carica i pesi.

Metodi di input#
Il pannello Predict supporta diversi metodi di input:
| Metodo | Descrizione |
|---|---|
| Caricamento di immagini | Trascina e rilascia oppure fai clic per caricare un'immagine |
| Immagini di esempio | Fai clic sugli esempi integrati (immagini del dataset o predefinite) |
| Acquisizione dalla webcam | Flusso video della fotocamera in tempo reale con acquisizione di singoli fotogrammi |
graph LR
A[Upload Image]:::start --> D[Auto-Inference]:::proc
B[Example Image]:::start --> D
C[Webcam Capture]:::start --> D
D --> E[Results + Overlays]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fffCarica immagine#
Trascina e rilascia oppure fai clic per caricare:
- Formati supportati: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Dimensione massima: 10 MB
- Inferenza automatica: i risultati vengono visualizzati automaticamente dopo il caricamento
Il pannello Predict esegue automaticamente l'inferenza quando carichi un'immagine, selezioni un esempio o acquisisci un fotogramma dalla webcam. Non è necessario fare clic su alcun pulsante.
Prima del caricamento, il pannello ridimensiona l'immagine in modo che il lato più lungo corrisponda a Image Size e richiede coordinate normalizzate. Questo rende rapidi i test nel browser; le richieste inviate autonomamente non vengono ridimensionate.
Immagini di esempio#
Il pannello Predict mostra fino a due immagini di esempio dal dataset collegato al tuo modello, preferendo la suddivisione val, poi test, quindi train. Se non è collegato alcun dataset, vengono usati esempi predefiniti:
| Immagine | Contenuto |
|---|---|
bus.jpg | Scena stradale con veicoli |
zidane.jpg | Scena sportiva con persone |
Per i modelli OBB, vengono mostrate invece immagini aeree di imbarcazioni e di un aeroporto.
Le immagini di esempio vengono precaricate al caricamento della pagina, quindi facendo clic su un esempio l'inferenza viene eseguita quasi istantaneamente, senza attese per il download.
Webcam#
Fai clic sulla scheda della webcam per avviare un flusso video della fotocamera in tempo reale:
- Concedi l'autorizzazione all'uso della fotocamera quando richiesto
- Fai clic sull'anteprima video per acquisire un fotogramma
- L'inferenza viene eseguita automaticamente sul fotogramma acquisito
- Fai nuovamente clic per riavviare la webcam
Visualizza risultati#
I risultati dell'inferenza mostrano l'output appropriato per l'attività del modello: riquadri, maschere, punti chiave, riquadri orientati, punteggi di classificazione, copertura semantica o una mappa di profondità. Quando disponibili, i risultati degli oggetti utilizzano i colori delle classi del dataset. Il pannello mostra inoltre i tempi di pre-elaborazione, inferenza, post-elaborazione e rete.

Il pannello dei risultati mostra:
| Campo | Descrizione |
|---|---|
| Riepilogo dei risultati | Elenco delle rilevazioni oppure le prime 5 classi per i modelli di classificazione e semantici |
| Statistiche di velocità | Pre-elaborazione, inferenza, post-elaborazione e rete (ms) |
| Versioni | Versioni di Ultralytics e PyTorch, oltre all'intervallo di profondità o alla dimensione della maschera, se applicabile |
| Risposta JSON | Risposta API grezza in un blocco di codice, con i dati della mappa codificati in base64 omessi |
Quando sono disponibili i risultati, sull'anteprima sono presenti due controlli: fai clic sull'immagine per ingrandirla mantenendo intatte le sovrapposizioni e usa il pulsante di download per salvare un JPEG annotato del risultato corrente.
Parametri di inferenza#
Regola il comportamento dell'inferenza con i tre cursori sotto l'immagine:

| Parametro | Intervallo | Predefinito | Descrizione |
|---|---|---|---|
| Confidenza | 0.01 – 1.0, incrementi di 0.01 | 0.25 | Soglia minima di confidenza |
| IoU | 0.0 – 0.95, incrementi di 0.01 | 0.7 | Soglia IoU di NMS |
| Dimensione immagine | 32 – 1280, incrementi di 32 | 640 | Dimensione di ridimensionamento dell'input |
La modifica di qualsiasi parametro esegue nuovamente l'inferenza sull'immagine corrente con un debounce di 500 ms. Non è necessario caricare di nuovo l'immagine.
Soglia di confidenza#
Filtra le predizioni in base alla confidenza:
- Più alta (0.5+): meno predizioni, ma più certe
- Più bassa (0.1-0.25): più predizioni, con un po' di rumore
- Predefinita (0.25): equilibrata per la maggior parte dei casi d'uso
Soglia IoU#
Controlla la soppressione non massima:
- Più alta (0.7+): consente un numero maggiore di riquadri sovrapposti
- Più bassa (0.3-0.5): sopprime le rilevazioni sovrapposte in modo più aggressivo
- Predefinita (0.7): comportamento NMS equilibrato per la maggior parte dei casi d'uso
Predict del deployment#
Ogni endpoint dedicato attivo include una scheda Predict direttamente nella relativa scheda di deployment. Utilizza il servizio di inferenza del deployment invece del servizio Predict condiviso, consentendoti di testare l'endpoint distribuito dal browser.
Su un endpoint a pagamento con il monitoraggio abilitato, le immagini elaborate contribuiscono anche alla Scheda Monitoraggio. I suoi esempi campionati e i grafici aggregati sono dati leggeri e temporanei conservati in memoria; l'arresto, il riavvio, il ridistribuimento, il ridimensionamento o la sostituzione del modello possono cancellarli. Salva gli esempi in un dataset per conservarli.
API dell'endpoint dedicato#
La scheda API Docs nella scheda Predict del modello contiene richieste di esempio in Python, JavaScript e cURL, precompilate con i valori di confidenza, IoU e dimensione dell'immagine attualmente impostati sui cursori. L'URL e la chiave sono segnaposto finché non esegui il deployment del modello; un pulsante Deploy accanto alle schede del codice porta alla scheda Deploy del modello. Dopo il deployment, la scheda Code della scheda del deployment compila l'URL dell'endpoint e, per i proprietari del workspace, la relativa chiave API associata, pronta per essere copiata ed eseguita.
Autenticazione#
Includi la tua chiave API nelle richieste:
Authorization: Bearer YOUR_API_KEYPer eseguire l'inferenza dai tuoi script, notebook o app, includi una chiave API. Generane una in Settings > API Keys. Un endpoint dedicato accetta solo la singola chiave con cui è stato creato; l'API del modello condiviso accetta qualsiasi chiave attiva nel workspace e i modelli pubblici accettano anche richieste anonime.
Endpoint#
Gli endpoint dedicati ricevono le richieste al proprio URL:
POST https://YOUR_DEPLOYMENT_URL.run.app/predictL'inferenza condivisa utilizza la Platform API con il percorso completo del modello:
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictEntrambi accettano lo stesso corpo multipart/form-data e restituiscono la stessa struttura della risposta. Con l'SDK Python, usa client.models.predict(owner, project, model, body=...) per l'inferenza condivisa o client.deployments.predict(owner, deployment, body=...) per un deployment dedicato:
from ultralytics_platform import Platform
client = Platform() # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})Richiesta#
import requests
url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}
with open("image.jpg", "rb") as image_file:
response = requests.post(url, headers=headers, files={"file": image_file}, data=data)
print(response.json())
Parametri della richiesta#
| Parametro | Tipo | Predefinito | Intervallo | Descrizione |
|---|---|---|---|---|
file | file | - | - | File immagine o video (obbligatorio, a meno che non sia impostato source) |
conf | float | 0.25 | 0.01 – 1.0 | Soglia minima di confidenza |
iou | float | 0.7 | 0.0 – 0.95 | Soglia IoU di NMS |
imgsz | int | 640 | 32 – 1280 | Dimensione dell'immagine di input in pixel |
normalize | bool | false | - | Restituisce le coordinate dei riquadri di delimitazione come valori da 0 a 1 |
decimals | int | 5 | 0 – 10 | Precisione decimale dei valori delle coordinate |
bits | int | 8 | 8, 12, 16 | Quantizzazione della mappa di profondità, solo per i modelli di profondità |
source | string | - | - | URL dell'immagine o stringa base64 (alternativa a file) |
Risposta#
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
},
{
"class": 2,
"name": "car",
"confidence": 0.87,
"box": { "x1": 400, "y1": 200, "x2": 600, "y2": 350 }
}
],
"speed": {
"preprocess": 1.2,
"inference": 12.5,
"postprocess": 2.3
}
}
],
"metadata": {
"imageCount": 1,
"functionTimeAlive": 1284.51,
"functionTimeCall": 0.018,
"task": "detect",
"version": {
"ultralytics": "8.x.x",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}
Campi della risposta#
| Campo | Tipo | Descrizione |
|---|---|---|
images | array | Elenco delle immagini elaborate, una voce per ogni fotogramma video nei video |
images[].shape | array | Dimensioni dell'immagine [altezza, larghezza] |
images[].results | array | Elenco delle rilevazioni |
images[].results[].class | int | Indice della classe (ID intero) |
images[].results[].name | string | Nome della classe |
images[].results[].confidence | float | Confidenza della rilevazione (0-1) |
images[].results[].box | object | Coordinate del riquadro di delimitazione |
images[].semantic_mask | object | Mappa delle classi per pixel (solo modelli semantici) |
images[].depth | object | Mappa di profondità per pixel (solo modelli di profondità) |
images[].speed | object | Tempi di elaborazione in millisecondi |
metadata | object | Numero di immagini, tempi del servizio, attività e versioni di Ultralytics/PyTorch |
Risposte specifiche per attività#
Il formato della risposta varia in base all'attività:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Limiti di frequenza#
L'API condivisa dei modelli è limitata a 20 richieste/minuto per ogni chiave API, utente autenticato o IP anonimo. Quando
viene applicato il limite, l'API restituisce 429 con un'intestazione Retry-After. Consulta il
riferimento completo sui limiti di frequenza per tutte le categorie di endpoint.
Le richieste inviate direttamente a un endpoint dedicato non passano attraverso il limitatore di frequenza dell'API della Platform. L'endpoint riduce comunque il carico restituendo 429 e un'intestazione Retry-After quando raggiunge temporaneamente la capacità massima. Per l'inferenza locale ad alto volume, consulta la guida alla modalità Predict.
Gestione degli errori#
Risposte di errore comuni:
| Codice | Messaggio | Soluzione |
|---|---|---|
| 400 | Immagine non valida | Controlla il formato del file o verifica che il modello disponga di pesi addestrati |
| 401 | Non autorizzato | Verifica la chiave API |
| 404 | Modello non trovato | Controlla il proprietario, il progetto e i nomi del modello |
| 413 | Input troppo grande | Riduci le dimensioni del file al di sotto del limite dell'endpoint |
| 429 | Limite di frequenza raggiunto | Attendi e riprova, oppure invia le richieste direttamente a un endpoint dedicato |
| 500 | Errore del server | Ripeti la richiesta |
| 503 | Servizio non disponibile | Il servizio Predict è in fase di avvio o non è raggiungibile; attendi brevemente e riprova |
FAQ#
Entrambi i metodi di inferenza accettano file video:
- Gli endpoint dedicati accettano direttamente i file video. Formati supportati (fino a 100 MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Ogni fotogramma viene elaborato individualmente e i risultati vengono restituiti per fotogramma. Consulta gli endpoint dedicati per maggiori dettagli.
- L'inferenza condivisa (
POST /api/models/{owner}/{project}/{model}/predict) utilizza lo stesso servizio Predict e accetta gli stessi formati video. La scheda Predict del browser consente di selezionare solo immagini, quindi usa l'API o un endpoint dedicato per i video.
Nella scheda Predict, il pulsante di download sopra l'anteprima salva il risultato corrente come JPEG annotato. L'API restituisce direttamente previsioni JSON. Per visualizzarle:
- Usa le previsioni per disegnare localmente i riquadri
- Usa il metodo
plot()di Ultralytics:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Consulta la documentazione della modalità Predict per l'API completa dei risultati e le opzioni di visualizzazione.
- Limite della scheda Predict: 10 MB
- Limite dell'API: 100 MB sia per l'inferenza condivisa sia per gli endpoint dedicati
- Ridimensionamento automatico nella scheda Predict: le immagini vengono ridimensionate alla
Image Sizeselezionata prima del caricamento
Le immagini grandi vengono ridimensionate automaticamente nel browser mantenendo le proporzioni. Le richieste inviate autonomamente non vengono ridimensionate, quindi le immagini oltre il limite vengono rifiutate con
413.L'API attuale elabora un'immagine per richiesta. Per l'elaborazione in batch:
- Invia richieste separate per ogni immagine
- Distribuisci le richieste tra endpoint dedicati quando appropriato
- Usa l'inferenza locale per batch di grandi dimensioni
Inferenza in batch con Pythonimport concurrent.futures import requests url = "https://YOUR_DEPLOYMENT_URL.run.app/predict" headers = {"Authorization": "Bearer YOUR_API_KEY"} images = ["img1.jpg", "img2.jpg", "img3.jpg"] def predict(image_path): with open(image_path, "rb") as f: return requests.post(url, headers=headers, files={"file": f}).json() with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor: results = list(executor.map(predict, images))