Inference#
Ultralytics Platform bietet browserbasierte Inferenz zum Testen trainierter Modelle und dedizierte Endpunkte für den programmatischen Zugriff.

Vorhersage-Tab#
Jedes Modell mit Gewichten enthält einen Predict-Tab für die browserbasierte Inferenz:
- Navigiere zu deinem Modell
- Klicke auf den Predict-Tab
- Lade ein Bild hoch, verwende ein Beispiel oder öffne deine Webcam
- Überprüfe das aufgabenbezogene Overlay, die Vorhersagezusammenfassung, das Timing und die Rohantwort.
Modelle ohne Gewichte zeigen stattdessen einen leeren Zustand an – trainiere das Modell oder lade zuerst Gewichte hoch.

Eingabemethoden#
Das Predict-Panel unterstützt mehrere Eingabemethoden:
| Methode | Beschreibung |
|---|---|
| Bild-Upload | Per Drag-and-Drop oder Klick ein Bild hochladen |
| Beispielbilder | Klicke auf integrierte Beispiele (Dataset-Bilder oder Standardwerte) |
| Webcam-Aufnahme | Live-Kamera-Feed mit Einzelbildaufnahme |
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:#fffBild hochladen#
Per Drag-and-Drop oder Klick hochladen:
- Unterstützte Formate: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Maximale Größe: 10 MB
- Auto-Inference: Ergebnisse erscheinen automatisch nach dem Hochladen
Das Predict-Panel führt die Inference automatisch aus, wenn du ein Bild hochlädst, ein Beispiel auswählst oder einen Webcam-Frame aufnimmst. Ein Button-Klick ist nicht erforderlich.
Vor dem Hochladen ändert das Panel die Größe des Bildes so, dass seine längste Seite dem ausgewählten Image Size entspricht, und fordert normalisierte Koordinaten an. Dies hält das Testen im Browser schnell; von dir selbst gesendete Anfragen werden nicht in der Größe verändert.
Beispielbilder#
Das Vorhersage-Panel zeigt bis zu zwei Beispielfilder aus dem verknüpften Datensatz deines Modells, wobei der val-Split bevorzugt wird, gefolgt von test und dann train. Wenn kein Datensatz verknüpft ist, werden Standardbeispiele verwendet:
| Bild | Inhalt |
|---|---|
bus.jpg | Straßenszene mit Fahrzeugen |
zidane.jpg | Sportszene mit Personen |
Bei OBB-Modellen werden stattdessen Luftaufnahmen von Booten und einem Flughafen angezeigt.
Beispielbilder werden beim Laden der Seite vorab geladen, sodass das Anklicken eines Beispiels eine nahezu sofortige Inference ohne Download-Wartezeit auslöst.
Webcam#
Klicke auf die Webcam-Karte, um einen Live-Kamera-Feed zu starten:
- Erteile die Kameraerlaubnis, wenn du dazu aufgefordert wirst
- Klicke auf die Videovorschau, um einen Frame aufzunehmen
- Die Inference läuft automatisch auf dem aufgenommenen Frame
- Klicke erneut, um die Webcam neu zu starten
Ergebnisse anzeigen#
Inferenzergebnisse zeigen die Ausgabe, die für die Modellaufgabe geeignet ist: Boxen, Masken, Keypoints, orientierte Boxen, Klassifikationswerte, semantische Abdeckung oder eine Tiefenkarte. Objektergebnisse verwenden die Klassenfarben des Datasets, sofern verfügbar. Das Panel zeigt außerdem das Vorverarbeitungs-, Inferenz-, Nachverarbeitungs- und Netzwerk-Timing.
Das Ergebnisfenster zeigt:
| Feld | Beschreibung |
|---|---|
| Ergebniszusammenfassung | Liste pro Detektion oder die Top-5-Klassen für Klassifizierungs- und semantische Modelle |
| Geschwindigkeitsstatistiken | Vorverarbeitung, Inferenz, Nachverarbeitung und Netzwerk (ms) |
| Versionen | Ultralytics- und PyTorch-Versionen sowie Tiefenbereich oder Maskengröße, sofern zutreffend |
| JSON-Antwort | Rohe API-Antwort in einem Codeblock, wobei base64-Kartendaten weggelassen wurden |
Sobald Ergebnisse vorliegen, befinden sich zwei Steuerelemente über der Vorschau: Klicke auf das Bild, um es bei intakten Overlays zu vergrößern, und verwende die Download-Schaltfläche, um ein annotiertes JPEG des aktuellen Ergebnisses zu speichern.
Inference-Parameter#
Passe das Inferenzverhalten mit den drei Reglern unter dem Bild an:

| Parameter | Bereich | Standard | Beschreibung |
|---|---|---|---|
| Konfidenz | 0.01 – 1.0, in Schritten von 0.01 | 0.25 | Minimaler Konfidenz-Schwellenwert |
| IoU | 0.0 – 0.95, in Schritten von 0.01 | 0.7 | NMS IoU-Schwellenwert |
| Bildgröße | 32 – 1280, in Schritten von 32 | 640 | Eingabe-Größenänderungsdimension |
Das Ändern eines Parameters führt automatisch zu einer erneuten Inference auf dem aktuellen Bild mit einem 500ms-Debounce. Ein erneutes Hochladen ist nicht erforderlich.
Konfidenz-Schwellenwert#
Filtere Vorhersagen nach Konfidenz:
- Höher (0.5+): Weniger, aber sicherere Vorhersagen
- Niedriger (0.1-0.25): Mehr Vorhersagen, etwas Rauschen
- Standard (0.25): Ausgewogen für die meisten Anwendungsfälle
IoU-Schwellenwert#
Steuere Non-Maximum Suppression:
- Höher (0.7+): Erlaubt mehr überlappende Boxen
- Niedriger (0.3-0.5): Überlappende Detektionen aggressiver unterdrücken
- Standard (0.7): Ausgewogenes NMS-Verhalten für die meisten Anwendungsfälle
Deployment-Predict#
Jeder laufende dedizierte Endpunkt enthält direkt auf seiner Bereitstellungskarte einen Predict-Tab. Dieser verwendet den eigenen Inferenzdienst der Bereitstellung anstelle des gemeinsam genutzten Vorhersagedienstes, sodass du deinen bereitgestellten Endpunkt direkt vom Browser aus testen kannst.
Dedizierte Endpunkt-API#
Die Karte API Docs im Tab Predict des Modells enthält Python-, JavaScript- und cURL-Beispielfragen, die mit den derzeit auf den Reglern eingestellten Werten für Konfidenz, IoU und Bildgröße vorab ausgefüllt sind. Die URL und der Schlüssel sind Platzhalter, bis du das Modell bereitstellst – eine Deploy-Schaltfläche neben den Code-Tabs springt zum Tab Deploy des Modells. Nach der Bereitstellung füllt sich der Tab Code der Bereitstellungskarte mit der URL dieses Endpunkts und für Workspace-Besitzer mit dem gebundenen API-Schlüssel, der zum Kopieren und Ausführen bereitsteht.
Authentifizierung#
Füge deinen API-Schlüssel in Anfragen ein:
Authorization: Bearer YOUR_API_KEYUm die Inferenz von deinen eigenen Skripten, Notebooks oder Apps aus auszuführen, füge einen API-Schlüssel hinzu. Generiere einen in Settings > API Keys. Ein dedizierter Endpunkt akzeptiert nur den einzelnen Schlüssel, mit dem er erstellt wurde; die gemeinsam genutzte Modell-API akzeptiert jeden aktiven Schlüssel im Workspace, und öffentliche Modelle akzeptieren auch anonyme Anfragen.
Endpunkt#
Dedizierte Endpunkte nehmen Anfragen unter ihrer eigenen URL entgegen:
POST https://YOUR_DEPLOYMENT_URL.run.app/predictDie gemeinsam genutzte Inferenz verwendet die Platform API mit dem vollständigen Pfad des Modells:
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictBeide akzeptieren denselben multipart/form-data-Body und geben dieselbe Antwortstruktur zurück. Verwende im Python SDK client.models.predict(owner, project, model, body=...) für gemeinsame Inference oder client.deployments.predict(owner, deployment, body=...) für ein dediziertes Deployment:
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})Anfrage#
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())
Anfrage-Parameter#
| Parameter | Typ | Standard | Bereich | Beschreibung |
|---|---|---|---|---|
file | Datei | - | - | Bild- oder Videodatei (erforderlich, es sei denn, source ist gesetzt) |
conf | float | 0.25 | 0.01 – 1.0 | Minimaler Konfidenz-Schwellenwert |
iou | float | 0.7 | 0.0 – 0.95 | NMS IoU-Schwellenwert |
imgsz | int | 640 | 32 – 1280 | Eingabebildgröße in Pixeln |
normalize | bool | false | - | BBox-Koordinaten als 0 – 1 zurückgeben |
decimals | int | 5 | 0 – 10 | Dezimalpräzision für Koordinatenwerte |
bits | int | 8 | 8, 12, 16 | Tiefenkarten-Quantisierung, nur Tiefenmodelle |
source | string | - | - | Bild-URL oder Base64-String (Alternative zu file) |
Antwort#
{
"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"
}
}
}
Antwortfelder#
| Feld | Typ | Beschreibung |
|---|---|---|
images | array | Liste der verarbeiteten Bilder, ein Eintrag pro Videobild bei Videos |
images[].shape | array | Bildabmessungen [Höhe, Breite] |
images[].results | array | Liste der Erkennungen |
images[].results[].class | int | Klassen-Index (Ganzzahl-ID) |
images[].results[].name | string | Klassenname |
images[].results[].confidence | float | Erkennungskonfidenz (0-1) |
images[].results[].box | Objekt | Koordinaten der Bounding Box |
images[].semantic_mask | Objekt | Pixelgenaue Klassenkarte (nur semantische Modelle) |
images[].depth | Objekt | Pixelgenaue Tiefenkarte (nur Tiefenmodelle) |
images[].speed | Objekt | Verarbeitungszeiten in Millisekunden |
metadata | Objekt | Anzahl der Bilder, Dienstlaufzeiten, Aufgabe und Ultralytics/PyTorch-Versionen |
Aufgabenspezifische Antworten#
Das Antwortformat variiert je nach Aufgabe:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Ratenbegrenzungen#
Die gemeinsam genutzte Modell-API ist für jeden API-Schlüssel, angemeldeten Aufrufer oder anonymen IP-Bereich auf 20 Anfragen/Minute begrenzt. Bei Drosselung gibt die API 429 mit einem Retry-After-Header zurück. Weitere Informationen findest du in der vollständigen Ratenbegrenzungs-Referenz für alle Endpunktkategorien.
Anfragen, die direkt an einen dedicated endpoint gesendet werden, passieren nicht den Ratenbegrenzer der Platform API. Der Endpunkt leitet Lasten bei vorübergehender Auslastung weiterhin mit 429 und einem Retry-After-Header ab. Für lokale Inferenz mit hohem Volumen siehe die Predict mode guide.
Fehlerbehandlung#
Häufige Fehlerantworten:
| Code | Nachricht | Lösung |
|---|---|---|
| 400 | Ungültiges Bild | Überprüfe das Dateiformat oder ob das Modell trainierte Gewichte hat |
| 401 | Nicht autorisiert | API-Key verifizieren |
| 404 | Modell nicht gefunden | Überprüfe die Namen von Besitzer, Projekt und Modell |
| 413 | Eingabe zu groß | Reduziere die Dateigröße unter das Endpunktlimit |
| 429 | Ratenbegrenzung erreicht | Warte und versuche es erneut, oder sende Anfragen direkt an einen dedizierten Endpunkt. |
| 500 | Serverfehler | Anfrage wiederholen |
| 503 | Dienst nicht verfügbar | Der Predict-Dienst startet gerade oder ist nicht erreichbar; warte kurz und versuche es erneut |
FAQ#
Beide Inferenzmethoden akzeptieren Videodateien:
- Dedizierte Endpunkte akzeptieren Videodateien direkt. Unterstützte Formate (bis zu 100 MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Jedes Bild wird einzeln verarbeitet und die Ergebnisse werden pro Bild zurückgegeben. Weitere Einzelheiten findest du unter dedizierte Endpunkte.
- Shared inference (
POST /api/models/{owner}/{project}/{model}/predict) verwendet denselben Vorhersagedienst und akzeptiert dieselben Videoformate. Der Browser-Tab Predict wählt nur Bilder aus, verwende daher die API oder einen dedicated endpoint für Videos.
Im Tab Predict speichert die Download-Schaltfläche über der Vorschau das aktuelle Ergebnis als annotiertes JPEG. Die API selbst gibt JSON-Vorhersagen zurück. Um diese zu visualisieren:
- Verwende die Vorhersagen, um Boxen lokal zu zeichnen
- Verwende die
plot()-Methode von Ultralytics:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Die vollständige Ergebnis-API und Visualisierungsoptionen findest du in der Dokumentation zum Vorhersagemodus.
- Limit für den Predict-Tab: 10 MB
- API limit: 100 MB für sowohl gemeinsam genutzte Inferenz als auch dedizierte Endpunkte
- Automatische Größenanpassung im Predict-Tab: Bilder werden vor dem Hochladen auf die ausgewählte
Image Sizeskaliert
Große Bilder werden im Browser automatisch in der Größe angepasst, während das Seitenverhältnis beibehalten wird. Von dir selbst gesendete Anfragen werden nicht in der Größe angepasst, sodass Bilder, die das Limit überschreiten, mit
413abgelehnt werden.Die aktuelle API verarbeitet ein Bild pro Anfrage. Für Batches:
- Separate Anfragen für jedes Bild senden
- Anfragen nach Möglichkeit auf dedizierte Endpunkte verteilen
- Lokale Inferenz für große Batches verwenden
Batch-Inferenz mit Pythonimport 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))