Inferenza
Ultralytics Platform fornisce un'API di inferenza per testare i modelli addestrati. Utilizza il browser-based Predict scheda per una rapida convalida o il REST API per l'accesso programmatico.

Scheda Previsione
Ogni modello include un Predict scheda per inferenza basata su browser:
- Naviga al tuo modello
- Fai clic sulla scheda " Predict " (Previsione).
- Carica un'immagine, usa un esempio o apri la tua webcam
- Visualizza immediatamente le previsioni con sovrapposizioni di riquadri di delimitazione

Metodi di immissione
Il pannello di previsione supporta diversi metodi di immissione:
| Metodo | Descrizione |
|---|---|
| Caricamento immagini | Trascina e rilascia o clicca per caricare un'immagine |
| Immagini di esempio | Clicca sugli esempi integrati (immagini del set di dati o impostazioni predefinite) |
| Acquisizione webcam | Immagini live dalla telecamera con acquisizione di singoli fotogrammi |
graph LR
A[Upload Image] --> D[Auto-Inference]
B[Example Image] --> D
C[Webcam Capture] --> D
D --> E[Results + Overlays]
style D fill:#2196F3,color:#fff
style E fill:#4CAF50,color:#fff
Carica Immagine
Trascina e rilascia o clicca per caricare:
- Formati supportati: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP, DNG, MPO
- Dimensione massima: 10MB
- Auto-inferenza: i risultati vengono visualizzati automaticamente dopo il caricamento
Auto-inferenza
Il pannello di previsione esegue automaticamente l'inferenza quando si carica un'immagine, si seleziona un esempio o si cattura un fotogramma dalla webcam. Non è necessario cliccare su alcun pulsante.
Immagini di Esempio
Il pannello di previsione mostra immagini di esempio tratte dal set di dati collegato al modello. Se non è collegato alcun set di dati, vengono utilizzati esempi predefiniti:
| Immagine | Contenuto |
|---|---|
bus.jpg | Scena stradale con veicoli |
zidane.jpg | Scena sportiva con persone |
Per i modelli OBB vengono invece mostrate immagini aeree di imbarcazioni e aeroporti.
Immagini precaricate
Le immagini di esempio vengono precaricate al caricamento della pagina, quindi cliccando su un esempio si avvia un'inferenza quasi istantanea senza tempi di attesa per il download.
Webcam
Clicca sulla scheda della webcam per avviare la trasmissione in diretta:
- Concedi l'autorizzazione alla fotocamera quando richiesto
- Clicca sull'anteprima del video per catturare un fotogramma
- L'inferenza viene eseguita automaticamente sul fotogramma acquisito.
- Clicca di nuovo per riavviare la webcam
Visualizza Risultati
Visualizzazione dei risultati dell'inferenza:
- Riquadri con etichette di classe come sovrapposizioni SVG
- Punteggi di confidenza per ogni detect
- Colori di classe dalla tavolozza dei colori del set di dati (o dalla tavolozza Ultralytics )
- Ripartizione della velocità: pre-elaborazione, inferenza, post-elaborazione e tempo di rete

Il pannello dei risultati mostra:
| Campo | Descrizione |
|---|---|
| Elenco dei rilevamenti | Ogni rilevamento con nome della classe e livello di affidabilità |
| Statistiche sulla velocità | Pre-elaborazione, inferenza, post-elaborazione, rete (ms) |
| Risposta JSON | Risposta API grezza in un blocco di codice |
Parametri di Inferenza
Regola il comportamento di rilevamento con i parametri nella sezione Parametri comprimibile:

| Parametro | Intervallo | Predefinito | Descrizione |
|---|---|---|---|
| Confidenza | 0,01-1,0 | 0.25 | Soglia minima di confidenza |
| IoU | 0,0-0,95 | 0.70 | Soglia IoU NMS |
| Dimensione dell'immagine | 320, 640, 1280 | 640 | Dimensioni di ridimensionamento dell'input (pulsante di attivazione/disattivazione) |
Riavvio automatico
La modifica di qualsiasi parametro riavvia automaticamente l'inferenza sull'immagine corrente con un debounce di 500 ms. Non è necessario ricaricare l'immagine.
Soglia di Confidenza
Filtra le predizioni per confidenza:
- Più alta (0.5+): Meno predizioni, più certe
- Più bassa (0.1-0.25): Più predizioni, con un certo rumore
- Predefinita (0.25): Bilanciata per la maggior parte dei casi d'uso
Soglia IoU
Controllo della Soppressione Non-Massima:
- Superiore (0,7+): consentire una maggiore sovrapposizione delle caselle
- Inferiore (0,3-0,5): unisce i rilevamenti vicini in modo più aggressivo
- Predefinito (0,70): NMS bilanciato per la maggior parte dei casi d'uso
Previsione dell'implementazione
Ogni corsa endpoint dedicato include un Predict scheda direttamente sulla sua scheda di distribuzione. Questo utilizza il servizio di inferenza proprio della distribuzione anziché il servizio di previsione condiviso, consentendo di testare l'endpoint distribuito dal browser.
REST API
Accedi all'inferenza programmaticamente:
Autenticazione
Includi la tua chiave API nelle richieste:
Authorization: Bearer YOUR_API_KEY
Chiave API richiesta
Per eseguire l'inferenza dai propri script, notebook o app, includere una chiave API. Generarne una in Settings (Sezione Chiavi API nella scheda Profilo).
Endpoint
POST https://platform.ultralytics.com/api/models/{modelId}/predict
Richiesta
import requests
url = "https://platform.ultralytics.com/api/models/MODEL_ID/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("image.jpg", "rb")}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
curl -X POST \
"https://platform.ultralytics.com/api/models/MODEL_ID/predict" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.25" \
-F "iou=0.7" \
-F "imgsz=640"
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("conf", "0.25");
formData.append("iou", "0.7");
formData.append("imgsz", "640");
const response = await fetch(
"https://platform.ultralytics.com/api/models/MODEL_ID/predict",
{
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: formData,
}
);
const result = await response.json();
console.log(result);

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,
"functionTimeCall": 0.018,
"model": "model.pt",
"version": {
"ultralytics": "8.4.14",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}

Campi della Risposta
| Campo | Tipo | Descrizione |
|---|---|---|
images | array | Elenco delle immagini elaborate |
images[].shape | array | Dimensioni immagine [altezza, larghezza] |
images[].results | array | Elenco di detect |
images[].results[].name | string | Nome della classe |
images[].results[].confidence | float | Confidenza del detect (0-1) |
images[].results[].box | oggetto | Coordinate del bounding box |
images[].speed | oggetto | Tempi di elaborazione in millisecondi |
metadata | oggetto | Richiedi metadati e informazioni sulla versione |
Risposte Specifiche per Task
Il formato della risposta varia in base al task:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"segments": [[100, 50], [150, 60], ...]
}
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"keypoints": [
{"x": 200, "y": 75, "conf": 0.95},
...
]
}
{
"results": [
{"class": 0, "name": "cat", "confidence": 0.95},
{"class": 1, "name": "dog", "confidence": 0.03}
]
}
{
"class": 0,
"name": "ship",
"confidence": 0.89,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"obb": {"x1": 105, "y1": 48, "x2": 295, "y2": 55, "x3": 290, "y3": 395, "x4": 110, "y4": 402}
}
Limiti di Frequenza
L'inferenza condivisa è limitata in termini di velocità a 20 richieste/min per chiave API. Quando viene limitata, l'API restituisce 429 con un Retry-After intestazione. Vedi il testo completo limite di velocità di riferimento per tutte le categorie di endpoint.
Hai bisogno di maggiore produttività?
Implementa un endpoint dedicato per inferenze illimitate senza limiti di velocità, throughput prevedibile e risposte costanti a bassa latenza. Per le inferenze locali, consulta la guida alla modalità Predict.
Gestione degli Errori
Risposte di errore comuni:
| Codice | Messaggio | Soluzione |
|---|---|---|
| 400 | Immagine non valida | Controllare il formato del file |
| 401 | Non autorizzato | Verificare la chiave API |
| 404 | Modello non trovato | Controllare l'ID del modello |
| 429 | Limite di frequenza raggiunto | Attendere e riprovare oppure utilizzare un endpoint dedicato per un throughput illimitato. |
| 500 | Errore del server | Riprovare la richiesta |
FAQ
È possibile eseguire l'inferenza su video?
L'API accetta singoli frame. Per i video:
- Estrarre i frame localmente
- Inviare ogni frame all'API
- Aggregare i risultati
Per i video in tempo reale, considerare l'implementazione di un endpoint dedicato.
Come si ottiene l'immagine annotata?
L'API restituisce previsioni JSON. Per visualizzare:
- Utilizzare le predizioni per disegnare riquadri localmente
- Utilizzare Ultralytics
plot()metodo:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")
Consulta la documentazione relativa alla modalità Predict per conoscere tutte le opzioni API e di visualizzazione dei risultati.
Qual è la dimensione massima dell'immagine?
- Limite di caricamento: 10MB
- Recommended: <5MB for fast inference
- Ridimensionamento automatico: Le immagini vengono ridimensionate in base alla selezione
Image Sizeparametro
Le immagini di grandi dimensioni vengono ridimensionate automaticamente, preservando il rapporto d'aspetto.
È possibile eseguire l'inferenza in batch?
L'attuale API elabora un'immagine per richiesta. Per il batch:
- Inviare richieste concorrenti
- Utilizzare un endpoint dedicato per un throughput più elevato
- Considerare l'inferenza locale per grandi batch
Inferenza batch con Python
import concurrent.futures
import requests
url = "https://predict-abc123.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))