Ultralytics YOLO27:

Inferenza#

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

Scheda Predict di Ultralytics Platform con sovrapposizione delle rilevazioni

Scheda Predizione#

Ogni modello con i 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 predizioni, i tempi e la risposta grezza

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

Area di trascinamento per il caricamento di immagini nella scheda Predict di Ultralytics Platform

Metodi di input#

Il pannello Predict 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 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:#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 vengono visualizzati automaticamente dopo il caricamento
Inferenza automatica

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.

Ridimensionamento lato client

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:

ImmagineContenuto
bus.jpgScena stradale con veicoli
zidane.jpgScena sportiva con persone

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

Immagini precaricate

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:

  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 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.

Risultati della scheda di previsione della piattaforma Ultralytics con rilevamenti e statistiche sulla velocità

Il pannello dei risultati mostra:

CampoDescrizione
Riepilogo dei risultatiElenco 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)
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 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:

Cursori dei parametri nella scheda Predict di Ultralytics Platform

ParametroIntervalloPredefinitoDescrizione
Confidenza0.01 – 1.0, incrementi di 0.010.25Soglia minima di confidenza
IoU0.0 – 0.95, incrementi di 0.010.7Soglia IoU di NMS
Dimensione immagine32 – 1280, incrementi di 32640Dimensione di ridimensionamento dell'input
Nuova esecuzione automatica

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_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 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/predict

L'inferenza condivisa utilizza la Platform API 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 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())

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

Parametri della richiesta#

ParametroTipoPredefinitoIntervalloDescrizione
filefile--File immagine o video (obbligatorio, a meno che non sia impostato source)
conffloat0.250.01 – 1.0Soglia minima di confidenza
ioufloat0.70.0 – 0.95Soglia IoU di NMS
imgszint64032 – 1280Dimensione dell'immagine di input in pixel
normalizeboolfalse-Restituisce le coordinate dei riquadri di delimitazione come valori da 0 a 1
decimalsint50 – 10Precisione decimale dei valori delle coordinate
bitsint88, 12, 16Quantizzazione della mappa di profondità, solo per i modelli di profondità
sourcestring--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"
        }
    }
}

Visualizzazione della risposta JSON nella scheda Predict di Ultralytics Platform

Campi della risposta#

CampoTipoDescrizione
imagesarrayElenco delle immagini elaborate, una voce per ogni fotogramma video nei video
images[].shapearrayDimensioni dell'immagine [altezza, larghezza]
images[].resultsarrayElenco delle rilevazioni
images[].results[].classintIndice della classe (ID intero)
images[].results[].namestringNome della classe
images[].results[].confidencefloatConfidenza della rilevazione (0-1)
images[].results[].boxobjectCoordinate del riquadro di delimitazione
images[].semantic_maskobjectMappa delle classi per pixel (solo modelli semantici)
images[].depthobjectMappa di profondità per pixel (solo modelli di profondità)
images[].speedobjectTempi di elaborazione in millisecondi
metadataobjectNumero 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.

Ti serve un throughput maggiore?

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:

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 serverRipeti la richiesta
503Servizio non disponibileIl 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:

    1. Usa le previsioni per disegnare localmente i riquadri
    2. 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 Size selezionata 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:

    1. Invia richieste separate per ogni immagine
    2. Distribuisci le richieste tra endpoint dedicati quando appropriato
    3. Usa l'inferenza locale per 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