Inferenza
Ultralytics Platform fornisce un'Inference API per testare i modelli addestrati. Utilizza l'interfaccia basata su browser Predict scheda per una rapida validazione o la REST API per l'accesso programmatico.

Scheda Prevedi
Ogni modello include un Predict scheda per l'inferenza basata su browser:
- Naviga al tuo modello
- Clicca la scheda Prevedi
- Carica un'immagine, usa un esempio o apri la tua webcam
- Visualizza le previsioni istantaneamente con sovrapposizioni di riquadri di delimitazione

Metodi di Input
Il pannello di previsione supporta molteplici metodi di input:
| Metodo | Descrizione |
|---|---|
| Caricamento immagine | Trascina e rilascia o clicca per caricare un'immagine |
| Immagini di esempio | Clicca gli esempi integrati (immagini del dataset o predefinite) |
| Acquisizione da webcam | Feed della telecamera in tempo reale con acquisizione di un singolo fotogramma |
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 appaiono automaticamente dopo il caricamento
Inferenza Automatica
Il pannello di previsione esegue l'inferenza automaticamente quando si carica un'immagine, si seleziona un esempio o si cattura un frame dalla webcam. Non è necessario cliccare alcun pulsante.
Immagini di Esempio
Il pannello di previsione mostra immagini di esempio dal dataset collegato al modello. Se nessun dataset è collegato, vengono utilizzati 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 aeroporti.
Immagini precaricate
Le immagini di esempio vengono precaricate al caricamento della pagina, quindi cliccando su un esempio si attiva un'inferenza quasi istantanea senza attese di download.
Webcam
Fai clic sulla scheda della webcam per avviare un feed della telecamera in tempo reale:
- Consenti l'accesso alla fotocamera quando richiesto
- Fai clic sull'anteprima del video per acquisire un fotogramma
- L'inferenza viene eseguita automaticamente sul frame 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 delle classi dalla palette di colori del tuo dataset (o dalla palette predefinita di Ultralytics)
- Ripartizione della velocità: Preprocessing, inferenza, post-processing e tempo di rete

Il pannello dei risultati mostra:
| Campo | Descrizione |
|---|---|
| Elenco delle rilevazioni | Ogni detect con nome della classe e confidenza |
| Statistiche di 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 detect con i parametri nella sezione espandibile Parameters:

| 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 | Dimensione di ridimensionamento dell'input (toggle del pulsante) |
Riesecuzione Automatica
La modifica di qualsiasi parametro riesegue automaticamente l'inferenza sull'immagine corrente con un debounce di 500ms. Non è necessario ricaricare.
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 del Deployment
Ogni esecuzione endpoint dedicato include un Predict scheda direttamente sulla sua card di deployment. Questo utilizza il servizio di inferenza proprio del deployment piuttosto che il servizio di predizione condiviso, permettendoti di testare il tuo endpoint deployato 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 tuoi script, notebook o app, includi una chiave API. Generane 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 a 20 richieste/min per chiave API. Quando limitata, l'API restituisce 429 con un Retry-After header. Consulta l'intero Riferimento al limite di frequenza per tutte le categorie di endpoint.
Hai bisogno di maggiore throughput?
Implementa un endpoint dedicato per un'inferenza illimitata senza limiti di frequenza, throughput prevedibile e risposte a bassa latenza costanti. Per l'inferenza locale, consulta la guida alla modalità di previsione.
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 | Verifica l'ID del modello |
| 429 | Limite di frequenza raggiunto | Attendi e riprova, oppure usa 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")
Consultare la documentazione della modalità di predizione per l'API completa dei risultati e le opzioni di visualizzazione.
Qual è la dimensione massima dell'immagine?
- Limite di caricamento: 10MB
- Recommended: <5MB for fast inference
- Ridimensionamento automatico: Le immagini vengono ridimensionate al valore selezionato
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))