Ultralytics YOLO27:
Get Started

Inferenza#

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

Scheda Predict del modello Ultralytics Platform con sovrapposizione delle rilevazioni

Scheda Predict#

Ogni modello con pesi include una scheda Predict per l'inferenza basata su browser:

  1. Vai al tuo modello
  2. Fai clic sulla scheda Predict
  3. Carica un'immagine, usa un esempio o apri la webcam
  4. Esamina la sovrapposizione specifica dell'attività, il riepilogo delle previsioni, i tempi e la risposta grezza

I modelli senza pesi mostrano invece uno stato vuoto: addestra il modello o carica prima i pesi.

Area di caricamento immagini della scheda Predict di Ultralytics Platform

Metodi di input#

Il pannello di previsione supporta diversi metodi di input:

MetodoDescrizione
Caricamento di immaginiTrascina e rilascia oppure fai clic per caricare un'immagine
Immagini di esempioFai clic sugli esempi integrati (immagini del dataset o predefinite)
Acquisizione dalla webcamFlusso video in diretta con acquisizione di un singolo fotogramma
Telecamera IPFlusso RTSP o RTSPS sulla tua distribuzione
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:#fff

Carica 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 appaiono automaticamente dopo il caricamento
Inferenza automatica

Il pannello di previsione esegue automaticamente l'inferenza quando carichi un'immagine, selezioni un esempio o acquisisci un fotogramma dalla webcam. Non è necessario fare clic su alcun pulsante.

Ridimensionamento lato client

Prima del caricamento, il pannello ridimensiona l'immagine in modo che il lato più lungo corrisponda al valore selezionato di Image Size e richiede coordinate normalizzate. Questo velocizza i test nel browser; le richieste inviate manualmente non vengono ridimensionate.

Immagini di esempio#

Il pannello di previsione mostra fino a due immagini di esempio dal dataset collegato al modello, dando la precedenza alla suddivisione val, poi a test e infine a train. Se non è collegato alcun dataset, vengono usati gli esempi predefiniti:

ImmagineContenuto
bus.jpgScena di strada con veicoli
zidane.jpgScena sportiva con persone

Per i modelli OBB vengono mostrate invece immagini aeree di barche e di un aeroporto.

Immagini precaricate

Le immagini di esempio vengono precaricate all'apertura della pagina, quindi facendo clic su un esempio l'inferenza parte quasi istantaneamente, senza attese per il download.

Webcam#

Seleziona Webcam sopra l'area dell'immagine per avviare un flusso video in diretta:

  1. Concedi l'autorizzazione all'uso della fotocamera quando richiesto
  2. Fai clic sull'anteprima video per acquisire un fotogramma
  3. L'inferenza viene eseguita automaticamente sul fotogramma acquisito
  4. Fai clic su Torna alla webcam per riprendere il flusso in diretta

Nella scheda Predict della tua distribuzione, la webcam esegue invece l'inferenza in modo continuo. Consulta Inferenza da telecamera in diretta.

Visualizza i 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 usano i colori delle classi del dataset. Il pannello mostra anche i tempi di preelaborazione, inferenza, postelaborazione e rete.

Risultati della scheda Predict di Ultralytics Platform con rilevazioni e statistiche sulla velocità

Il pannello dei risultati mostra:

CampoDescrizione
Riepilogo dei risultatiElenco per rilevazione, oppure le prime 5 classi per i modelli di classificazione e semantici
Statistiche sulla velocitàPreelaborazione, inferenza, postelaborazione e rete (ms)
VersioniVersioni di Ultralytics e PyTorch, oltre all'intervallo di profondità o alla dimensione della maschera, se applicabile
Risposta JSONRisposta API grezza in un blocco di codice, con i dati della mappa in base64 omessi

Quando i risultati sono disponibili, sopra l'anteprima compaiono due controlli: fai clic sull'immagine per ingrandirla mantenendo 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 (i modelli di profondità mostrano solo Dimensione immagine):

Cursori dei parametri della scheda Predict di Ultralytics Platform

ParametroIntervalloPredefinitoDescrizione
ConfidenzaDa 0.01 a 1.0, incrementi di 0.010.25Soglia minima di confidenza
IoUDa 0.0 a 0.95, incrementi di 0.010.7Soglia IoU di NMS
Dimensione immagineDa 32 a 1280, incrementi di 32640Dimensione di ridimensionamento dell'input
Esecuzione automatica

Quando modifichi un parametro, l'inferenza viene eseguita di nuovo automaticamente sull'immagine corrente con un ritardo di 500 ms. Non è necessario caricare di nuovo l'immagine.

Soglia di confidenza#

Filtra le previsioni in base alla confidenza:

  • Più alta (0.5+): meno previsioni, più affidabili
  • Più bassa (0.1-0.25): più previsioni, con un po' di rumore
  • Predefinita (0.25): un buon equilibrio per la maggior parte dei casi d'uso

Soglia IoU#

Controlla la soppressione non massima (NMS):

  • Più alta (0.7+): consente un maggior numero di riquadri sovrapposti
  • Più bassa (0.3-0.5): sopprime le rilevazioni sovrapposte in modo più aggressivo
  • Predefinita (0.7): un comportamento NMS equilibrato per la maggior parte dei casi d'uso

Inferenza di deployment#

Ogni endpoint dedicato in esecuzione include una scheda Predict nella relativa pagina di deployment. Questa scheda usa il servizio di inferenza del deployment anziché il servizio di inferenza condiviso, così puoi testare l'endpoint di cui hai eseguito il deployment dal browser.

Su un endpoint pronto, anche le immagini elaborate contribuiscono alla scheda Monitoring. Gli esempi e i grafici aggregati sono dati temporanei e leggeri conservati in memoria; arrestare, riavviare, ridistribuire, ridimensionare o sostituire il modello può cancellarli. Salva gli esempi in un dataset per conservarli.

Inferenza da telecamera in diretta#

Nella scheda Predict di una distribuzione di tua proprietà, seleziona Webcam o Telecamera IP per eseguire l'endpoint su un video in diretta:

OrigineCome funziona
WebcamIl browser invia i fotogrammi all'endpoint uno alla volta e sovrappone ogni risultato al flusso in diretta
Telecamera IPInserisci un URL rtsp:// o rtsps://, incluse le credenziali, e fai clic su Connetti; l'endpoint legge il flusso della telecamera e invia ogni risultato

L'inferenza in diretta usa la chiave API associata all'endpoint, che solo il proprietario dell'area di lavoro può caricare; per gli altri membri del team la webcam acquisisce singoli fotogrammi e la Telecamera IP non è disponibile, come nella scheda Predict di un modello. La telecamera IP deve essere raggiungibile da Internet: l'endpoint rifiuta indirizzi di rete locale come 192.168.x.x. Ogni risultato riguarda il fotogramma più recente, quindi i fotogrammi vengono saltati se l'inferenza è in ritardo. Le modifiche ai cursori si applicano al fotogramma successivo della webcam e riavviano il flusso della telecamera IP. L'inferenza in diretta si interrompe quando la scheda del browser è nascosta. Fai clic sull'anteprima per acquisire un fotogramma oppure su Disconnetti per interrompere la visualizzazione della telecamera IP.

Telecamera in background#

Un endpoint con dimensioni personalizzate per CPU e memoria può continuare a monitorare una telecamera IP dopo che ti disconnetti o chiudi la pagina. Quando la telecamera connessa mostra i risultati, attiva Continua a funzionare in background. Nell'intestazione della distribuzione compare Telecamera attiva e i risultati vengono inviati alla scheda Monitoraggio come esempi temporanei e statistiche delle predizioni.

  • Impostazioni: la telecamera in background usa sempre la confidenza predefinita (0.25), IoU (0.7) e la dimensione immagine di addestramento del modello; i cursori non si applicano.
  • Costo: funziona sull'istanza attiva dell'endpoint senza costi aggiuntivi; la tariffa oraria di attività si applica sia che la telecamera sia attiva, sia che sia spenta.
  • Modifiche: attivare o disattivare la telecamera oppure passare a un'altra telecamera riavvia l'istanza dell'endpoint. In questo modo l'endpoint resta pronto, ma i dati temporanei di monitoraggio vengono cancellati.
  • Arresto: disattiva l'interruttore. Disconnetterti o chiudere la pagina non interrompe il funzionamento; ridimensionando l'endpoint alle dimensioni predefinite, invece, la telecamera viene rimossa. Se la telecamera si disconnette, l'endpoint continua a tentare la riconnessione.
  • Ciclo di vita dell'endpoint: arrestando l'endpoint si fermano la telecamera e gli addebiti; riavviandolo, la telecamera salvata riprende a funzionare.

Gli endpoint con dimensioni predefinite supportano l'inferenza in diretta da webcam e telecamera IP senza l'opzione in background. Per salvare una telecamera in background tramite API, usa l'azione camera della distribuzione.

Trasmettere i risultati in streaming dall'API#

Invia un URL RTSP o RTSPS come source con l'intestazione Accept: text/event-stream a un URL di endpoint dedicato per ricevere i risultati come eventi inviati dal server:

curl -N -X POST \
  "https://YOUR_DEPLOYMENT_URL.run.app/predict" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: text/event-stream" \
  -F "source=rtsp://user:password@camera.example.com:554/stream" \
  -F "conf=0.25"

Ogni evento di fotogramma contiene images nel formato della risposta, con coordinate normalizzate (0-1), un URL dati JPEG preview del fotogramma e metadata con l'attività e i nomi delle classi. Si applicano solo conf, iou e imgsz, e lo streaming dell'URL della telecamera in background dell'endpoint usa le impostazioni predefinite. Gli eventi che contengono solo status non includono fotogrammi, e un evento con un messaggio error (impossibilità di leggere la telecamera o di eseguire il modello sull'endpoint) termina lo streaming. Lo streaming si chiude anche quando l'endpoint si riavvia o la richiesta raggiunge il limite di tempo; se termina senza errori, riconnettiti con un intervallo di attesa crescente. La route di predizione delle distribuzioni della Platform API e l'SDK non supportano lo streaming; invia le richieste della telecamera all'URL dell'endpoint con la chiave API associata. Una richiesta source della telecamera senza l'intestazione restituisce 400.

API dell'endpoint dedicato#

La scheda Predict del modello contiene la scheda API Docs con esempi di richieste Python, JavaScript e cURL, precompilati con i valori di confidenza, IoU e dimensione dell'immagine impostati correntemente tramite i cursori. L'URL e la chiave sono segnaposto finché non esegui il deployment del modello: un pulsante Deploy accanto alle schede del codice apre la scheda Deploy del modello. Dopo il deployment, la scheda dei risultati Docs nella scheda Predict della pagina di deployment inserisce l'URL dell'endpoint e, per i proprietari dell'area di lavoro, la chiave API associata, pronti per essere copiati ed eseguiti.

Autenticazione#

Includi la tua chiave API nelle richieste:

Authorization: Bearer YOUR_API_KEY
Chiave API obbligatoria

Per 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 nell'area di lavoro 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/predict

L'inferenza condivisa usa l'API Platform con il percorso completo del modello:

POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predict

Entrambi accettano lo stesso corpo multipart/form-data e restituiscono risposte con la stessa struttura. Con l'SDK Python, usa client.models.predict(owner, project, model, body=...) per l'inferenza condivisa oppure client.deployments.predict(owner, deployment, body=...) per un deployment dedicato. Entrambi i metodi SDK chiamano l'API Platform, quindi si applicano i limiti di frequenza e il limite di dimensione delle richieste. Per evitarli, invia una richiesta direttamente all'URL di un endpoint dedicato, come mostrato in Richiesta. Esempio di inferenza condivisa:

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())

Esempi di codice della scheda Predict di Ultralytics Platform, scheda Python

Parametri della richiesta#

ParametroTipoPredefinitoIntervalloDescrizione
filefile--File immagine o video (obbligatorio se non è impostato source)
conffloat0.250.01 – 1.0Soglia minima di confidenza
ioufloat0.70.0 – 0.95Soglia IoU di NMS
imgszint-32 – 1280Dimensione dell'immagine di input in pixel; per impostazione predefinita usa la dimensione di addestramento del modello (640 se non disponibile)
normalizeboolfalse-Restituisce le coordinate del riquadro di delimitazione nell'intervallo da 0 a 1
decimalsint50 – 10Precisione decimale dei valori delle coordinate
vid_strideint1≥ 1Esegue la previsione su un frame video ogni N; viene ignorato per le immagini
bitsint88, 12, 16Quantizzazione della mappa di profondità, solo per i modelli di profondità
sourcestringa--URL dell'immagine o stringa base64 (in alternativa a file); massimo 4.096 caratteri tramite l'API Platform

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,
        "classNames": ["person", "bicycle", "car", "..."],
        "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"
        }
    }
}

Vista della risposta JSON della scheda Predict di Ultralytics Platform

Campi della risposta#

CampoTipoDescrizione
imagesarrayElenco delle immagini elaborate, con una voce per ogni frame video elaborato
images[].shapearrayDimensioni dell'immagine [altezza, larghezza]
images[].resultsarrayElenco delle rilevazioni
images[].results[].classintIndice della classe (ID intero)
images[].results[].namestringaNome della classe
images[].results[].confidencefloatConfidenza della rilevazione (0-1)
images[].results[].boxoggettoCoordinate del riquadro di delimitazione
images[].semantic_maskoggettoMappa delle classi per pixel (solo per i modelli semantici)
images[].depthoggettoMappa di profondità per pixel (solo per i modelli di profondità)
images[].speedoggettoTempi di elaborazione in millisecondi
metadataoggettoNumero di immagini, nomi delle classi del modello, tempi del servizio, attività e versioni

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 del modello condiviso è limitata a 20 richieste al minuto per ogni chiave API, utente autenticato o IP anonimo. Anche la route di inferenza predict dei deployment di Platform (POST /api/deployments/{owner}/{deployment}/predict) ha lo stesso limite. Quando vengono applicati limiti, l'API restituisce 429 con un'intestazione Retry-After. Consulta la guida completa ai limiti di frequenza per tutte le categorie di endpoint.

Ti serve una capacità maggiore?

Le richieste inviate direttamente a un endpoint dedicato non passano attraverso il limitatore di frequenza dell'API Platform. Se l'endpoint raggiunge temporaneamente la capacità massima, continua comunque a ridurre il carico con 429 e un'intestazione Retry-After. Per eseguire inferenze locali ad alto volume, consulta la guida alla modalità Predict.

Gestione degli errori#

Risposte di errore comuni:

CodiceMessaggioSoluzione
400Immagine non validaControlla il formato del file o verifica che il modello disponga di pesi addestrati
401Non autorizzatoVerifica la chiave API
404Modello non trovatoControlla il proprietario, il progetto e i nomi del modello
413Input troppo grandeRiduci le dimensioni del file al di sotto del limite dell'endpoint
429Limite di frequenza raggiuntoAttendi e riprova oppure invia le richieste direttamente a un endpoint dedicato
500Errore del serverRiprova la richiesta
503Servizio non disponibileIl servizio Predict si sta avviando o non è raggiungibile; attendi qualche istante e riprova

Domande frequenti#

  • Entrambi i metodi di inferenza accettano file video:

    • Gli endpoint dedicati accettano direttamente i file video. Formati supportati (fino a 32 MB per richiesta): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. I risultati vengono restituiti per ogni frame elaborato e una richiesta può durare fino a 1 ora. Per i dettagli, consulta la documentazione sugli endpoint dedicati.
    • L'inferenza condivisa (POST /api/models/{owner}/{project}/{model}/predict) usa lo stesso servizio di predizione e accetta gli stessi formati video, ma le richieste sono limitate a circa 4.5 MB e scadono dopo circa 30 secondi: è quindi adatta solo a brevi clip. La scheda Predici del browser carica solo immagini, quindi usa un endpoint dedicato per i file video oppure Inferenza da telecamera in diretta per una webcam o una telecamera IP.

    I modelli di profondità non accettano file video.

  • Nella scheda Predict, il pulsante di download sopra l'anteprima salva il risultato corrente come JPEG annotato. L'API restituisce solo previsioni JSON. Per visualizzarle:

    1. Usa le previsioni per disegnare i riquadri localmente
    2. Esegui il modello localmente con Ultralytics e salva il risultato annotato con save() (oppure ottieni un array con plot()):
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    results = model("image.jpg")
    results[0].save("annotated.jpg")

    Consulta la documentazione della modalità Predict per conoscere l'API completa dei risultati e le opzioni di visualizzazione.

    • Limite della scheda Predict: 10 MB
    • Limite dell'API di inferenza condivisa: circa 4,5 MB per richiesta, anche tramite l'SDK Python
    • Limite degli endpoint dedicati: 32 MB per richiesta inviata direttamente all'URL dell'endpoint
    • Ridimensionamento automatico nella scheda Predict: le immagini vengono ridimensionate alla Image Size selezionata prima del caricamento

    Le immagini di grandi dimensioni vengono ridimensionate automaticamente nel browser mantenendo le proporzioni. Le richieste inviate autonomamente non vengono ridimensionate, quindi quelle che superano il limite vengono rifiutate con 413.

  • L'API attuale elabora un'immagine per richiesta. Per elaborare un batch:

    1. Invia richieste separate per ogni immagine
    2. Se opportuno, distribuisci le richieste su endpoint dedicati
    3. Usa l'inferenza locale per i batch di grandi dimensioni
    Inferenza in batch con Python
    import 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))

Commenti