Vai al contenuto

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 "Predict" Ultralytics con sovrapposizione dei rilevamenti

Scheda Previsione

Ogni modello include un Predict scheda per inferenza basata su browser:

  1. Naviga al tuo modello
  2. Fai clic sulla scheda " Predict " (Previsione).
  3. Carica un'immagine, usa un esempio o apri la tua webcam
  4. Visualizza immediatamente le previsioni con sovrapposizioni di riquadri di delimitazione

Ultralytics Scheda Predict Area di rilascio immagini

Metodi di immissione

Il pannello di previsione supporta diversi metodi di immissione:

MetodoDescrizione
Caricamento immaginiTrascina e rilascia o clicca per caricare un'immagine
Immagini di esempioClicca sugli esempi integrati (immagini del set di dati o impostazioni predefinite)
Acquisizione webcamImmagini 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:

ImmagineContenuto
bus.jpgScena stradale con veicoli
zidane.jpgScena 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:

  1. Concedi l'autorizzazione alla fotocamera quando richiesto
  2. Clicca sull'anteprima del video per catturare un fotogramma
  3. L'inferenza viene eseguita automaticamente sul fotogramma acquisito.
  4. 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

Risultati della scheda Predict Ultralytics con rilevamenti e statistiche sulla velocità

Il pannello dei risultati mostra:

CampoDescrizione
Elenco dei rilevamentiOgni rilevamento con nome della classe e livello di affidabilità
Statistiche sulla velocitàPre-elaborazione, inferenza, post-elaborazione, rete (ms)
Risposta JSONRisposta API grezza in un blocco di codice

Parametri di Inferenza

Regola il comportamento di rilevamento con i parametri nella sezione Parametri comprimibile:

Ultralytics Parametri della scheda Predict Cursori

ParametroIntervalloPredefinitoDescrizione
Confidenza0,01-1,00.25Soglia minima di confidenza
IoU0,0-0,950.70Soglia IoU NMS
Dimensione dell'immagine320, 640, 1280640Dimensioni 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);

Esempi di codice della scheda Predict Ultralytics  Python

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"
        }
    }
}

Ultralytics Scheda Predict Visualizzazione risposta Json

Campi della Risposta

CampoTipoDescrizione
imagesarrayElenco delle immagini elaborate
images[].shapearrayDimensioni immagine [altezza, larghezza]
images[].resultsarrayElenco di detect
images[].results[].namestringNome della classe
images[].results[].confidencefloatConfidenza del detect (0-1)
images[].results[].boxoggettoCoordinate del bounding box
images[].speedoggettoTempi di elaborazione in millisecondi
metadataoggettoRichiedi 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:

CodiceMessaggioSoluzione
400Immagine non validaControllare il formato del file
401Non autorizzatoVerificare la chiave API
404Modello non trovatoControllare l'ID del modello
429Limite di frequenza raggiuntoAttendere e riprovare oppure utilizzare un endpoint dedicato per un throughput illimitato.
500Errore del serverRiprovare la richiesta

FAQ

È possibile eseguire l'inferenza su video?

L'API accetta singoli frame. Per i video:

  1. Estrarre i frame localmente
  2. Inviare ogni frame all'API
  3. 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:

  1. Utilizzare le predizioni per disegnare riquadri localmente
  2. 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 Size parametro

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:

  1. Inviare richieste concorrenti
  2. Utilizzare un endpoint dedicato per un throughput più elevato
  3. 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))


📅 Creato 1 mese fa ✏️ Aggiornato 5 giorni fa
glenn-jochersergiuwaxmannLaughing-q

Commenti