Inferenz#
Die Ultralytics Platform bietet eine browserbasierte Inferenz zum Testen trainierter Modelle sowie dedizierte Endpunkte für den programmatischen Zugriff.

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

Eingabemethoden#
Das Predict-Panel unterstützt mehrere Eingabemethoden:
| Methode | Beschreibung |
|---|---|
| Bild hochladen | Ziehe ein Bild per Drag-and-drop hinein oder klicke, um es hochzuladen |
| Beispielbilder | Klicke auf integrierte Beispiele (Datensatzbilder oder Standardbilder) |
| Webcam-Aufnahme | Live-Kamerabild 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#
Ziehe ein Bild per Drag-and-drop hinein oder klicke zum Hochladen:
- Unterstützte Formate: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Maximale Größe: 10 MB
- Automatische Inferenz: Die Ergebnisse werden nach dem Hochladen automatisch angezeigt
Das Predict-Panel führt automatisch eine Inferenz aus, wenn du ein Bild hochlädst, ein Beispiel auswählst oder ein Webcam-Bild aufnimmst. Ein Klick auf eine Schaltfläche ist nicht erforderlich.
Vor dem Hochladen passt das Panel die Bildgröße so an, dass die längste Seite dem ausgewählten Image Size entspricht, und fordert normalisierte Koordinaten an. Dadurch bleibt das Testen im Browser schnell; Anfragen, die du selbst sendest, werden nicht in der Größe angepasst.
Beispielbilder#
Das Predict-Panel zeigt bis zu zwei Beispielbilder aus dem verknüpften Datensatz deines Modells an, bevorzugt aus dem Split val, danach
test und anschließend 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 Luftbilder von Booten und einem Flughafen angezeigt.
Beispielbilder werden beim Laden der Seite vorgeladen. Wenn du auf ein Beispiel klickst, startet die Inferenz daher nahezu sofort, ohne Wartezeit für den Download.
Webcam#
Klicke auf die Webcam-Karte, um ein Live-Kamerabild zu starten:
- Erteile die Kameraberechtigung, wenn du dazu aufgefordert wirst
- Klicke auf die Videovorschau, um ein Bild aufzunehmen
- Die Inferenz wird automatisch für das aufgenommene Bild ausgeführt
- Klicke erneut, um die Webcam neu zu starten
Ergebnisse anzeigen#
Die Inferenzergebnisse zeigen die für die Modellaufgabe geeignete Ausgabe: Boxen, Masken, Keypoints, ausgerichtete Boxen, Klassifikationswerte, semantische Abdeckung oder eine Tiefenkarte. Objektergebnisse verwenden, sofern verfügbar, die Klassenfarben des Datensatzes. Das Panel zeigt außerdem die Zeitmessung für Vorverarbeitung, Inferenz, Nachverarbeitung und Netzwerk an.

Das Ergebnisfenster zeigt:
| Feld | Beschreibung |
|---|---|
| Zusammenfassung der Ergebnisse | Liste der einzelnen Erkennungen oder die fünf häufigsten Klassen bei Klassifikations- und semantischen Modellen |
| Geschwindigkeitsstatistiken | Vorverarbeitung, Inferenz, Nachverarbeitung und Netzwerk (ms) |
| Versionen | Ultralytics- und PyTorch-Versionen sowie gegebenenfalls der Tiefenbereich oder die Maskengröße |
| JSON-Antwort | Rohe API-Antwort in einem Codeblock, wobei base64-Kartendaten ausgelassen werden |
Sobald Ergebnisse vorliegen, befinden sich zwei Steuerelemente über der Vorschau: Klicke auf das Bild, um es mit unveränderten Einblendungen zu vergrößern, und verwende die Download-Schaltfläche, um ein annotiertes JPEG des aktuellen Ergebnisses zu speichern.
Inferenzparameter#
Passe das Inferenzverhalten mit den drei Schiebereglern unter dem Bild an:

| Parameter | Bereich | Standardwert | Beschreibung |
|---|---|---|---|
| Konfidenz | 0.01–1.0, Schritte von 0.01 | 0.25 | Minimaler Konfidenzschwellenwert |
| IoU | 0.0–0.95, Schritte von 0.01 | 0.7 | NMS-IoU-Schwellenwert |
| Bildgröße | 32–1280, Schritte von 32 | 640 | Größe der Eingabe in Pixeln |
Wenn du einen Parameter änderst, wird die Inferenz für das aktuelle Bild nach einer Verzögerung von 500 ms automatisch erneut ausgeführt. Ein erneutes Hochladen ist nicht erforderlich.
Konfidenzschwellenwert#
Filtere Vorhersagen nach ihrer Konfidenz:
- Höher (0.5+): Weniger, aber sicherere Vorhersagen
- Niedriger (0.1–0.25): Mehr Vorhersagen, teilweise mit Rauschen
- Standard (0.25): Ausgewogen für die meisten Anwendungsfälle
IoU-Schwellenwert#
Steuere die Nichtmaximum-Unterdrückung:
- Höher (0.7+): Mehr überlappende Boxen zulassen
- Niedriger (0.3–0.5): Überlappende Erkennungen stärker unterdrücken
- Standard (0.7): Ausgewogenes NMS-Verhalten für die meisten Anwendungsfälle
Bereitstellungs-Predict#
Jeder laufende dedizierte Endpunkt enthält direkt auf seiner Bereitstellungskarte eine Registerkarte Predict. Dabei wird der eigene Inferenzdienst der Bereitstellung anstelle des gemeinsamen Predict-Dienstes verwendet, sodass du deinen bereitgestellten Endpunkt im Browser testen kannst.
Auf einem kostenpflichtigen Endpunkt mit aktiviertem Monitoring tragen verarbeitete Bilder ebenfalls zum Monitoring-Tab bei. Die Stichproben und aggregierten Diagramme des Monitoring-Tabs sind leichtgewichtige, temporäre Daten im Arbeitsspeicher; das Stoppen, Neustarten, Neuausrollen, Ändern der Größe oder Ersetzen des Modells kann die Stichproben und aggregierten Diagramme des Monitoring-Tabs löschen. Speichere Beispiele in einem Dataset, um die Beispiele zu behalten.
API für dedizierte Endpunkte#
Die Karte API Docs in der Registerkarte Predict des Modells enthält Beispielanfragen für Python, JavaScript und cURL, in denen die aktuell über die Schieberegler festgelegten Werte für Konfidenz, IoU und Bildgröße bereits eingetragen sind. URL und Schlüssel sind Platzhalter, bis du das Modell bereitstellst – eine Schaltfläche Deploy neben den Code-Registerkarten führt zur Registerkarte Deploy des Modells. Nach der Bereitstellung werden auf der Registerkarte Code der Bereitstellungskarte die URL dieses Endpunkts und für Arbeitsbereichsbesitzer der zugehörige API-Schlüssel eingetragen, sodass du sie kopieren und ausführen kannst.
Authentifizierung#
Füge deinen API-Schlüssel in Anfragen ein:
Authorization: Bearer YOUR_API_KEYUm Inferenz aus deinen eigenen Skripten, Notebooks oder Apps auszuführen, musst du einen API-Schlüssel einfügen. Erstelle einen unter Settings > API Keys. Ein dedizierter Endpunkt akzeptiert nur den einzelnen Schlüssel, mit dem er erstellt wurde; die gemeinsame Modell-API akzeptiert jeden aktiven Schlüssel im Arbeitsbereich, 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 gemeinsame 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-Textkörper und geben dieselbe Antwortstruktur zurück. Verwende mit dem
Python SDK client.models.predict(owner, project, model, body=...) für die gemeinsame
Inferenz oder client.deployments.predict(owner, deployment, body=...) für eine dedizierte Bereitstellung:
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())
Anfrageparameter#
| Parameter | Typ | Standardwert | Bereich | Beschreibung |
|---|---|---|---|---|
file | file | - | - | Bild- oder Videodatei (erforderlich, sofern source nicht gesetzt ist) |
conf | float | 0.25 | 0.01 – 1.0 | Minimaler Konfidenzschwellenwert |
iou | float | 0.7 | 0.0 – 0.95 | NMS-IoU-Schwellenwert |
imgsz | int | 640 | 32 – 1280 | Größe des Eingabebilds in Pixeln |
normalize | bool | false | - | Gibt Koordinaten der Begrenzungsbox als 0–1 zurück |
decimals | int | 5 | 0 – 10 | Dezimalgenauigkeit der Koordinatenwerte |
bits | int | 8 | 8, 12, 16 | Quantisierung der Tiefenkarte, nur für Tiefenmodelle |
source | string | - | - | Bild-URL oder base64-Zeichenfolge (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, bei Videos ein Eintrag pro Videoframe |
images[].shape | Array | Bildabmessungen [Höhe, Breite] |
images[].results | Array | Liste der Erkennungen |
images[].results[].class | int | Klassenindex (Ganzzahl-ID) |
images[].results[].name | string | Klassenname |
images[].results[].confidence | float | Erkennungskonfidenz (0–1) |
images[].results[].box | Objekt | Koordinaten der Begrenzungsbox |
images[].semantic_mask | Objekt | Klassenkarte pro Pixel (nur semantische Modelle) |
images[].depth | Objekt | Tiefenkarte pro Pixel (nur Tiefenmodelle) |
images[].speed | Objekt | Verarbeitungszeiten in Millisekunden |
metadata | Objekt | Anzahl der Bilder, Dienstzeiten, Task sowie Ultralytics-/PyTorch-Versionen |
Taskspezifische Antworten#
Das Antwortformat variiert je nach Task:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Ratenlimits#
Die gemeinsam genutzte Modell-API ist auf 20 Anfragen/Minute pro API-Key, angemeldeten Aufrufer oder anonyme IP-Adresse begrenzt. Bei einer
Drosselung gibt die API 429 mit einem Retry-After-Header zurück. Eine vollständige Übersicht über alle Endpunktkategorien findest du in der Referenz zu den Ratenlimits.
Anfragen, die direkt an einen dedizierten Endpunkt gesendet werden, durchlaufen nicht den Ratenbegrenzer der Platform API. Der Endpunkt reduziert die Last jedoch weiterhin mit 429 und einem Retry-After-Header, wenn er vorübergehend ausgelastet ist. Informationen zur lokalen Inferenz mit hohem Volumen findest du im Leitfaden zum Predict-Modus.
Fehlerbehandlung#
Häufige Fehlerantworten:
| Code | Nachricht | Lösung |
|---|---|---|
| 400 | Ungültiges Bild | Überprüfe das Dateiformat und ob das Modell trainierte Gewichte besitzt |
| 401 | Nicht autorisiert | Überprüfe den API-Key |
| 404 | Modell nicht gefunden | Überprüfe Besitzer, Projekt- und Modellnamen |
| 413 | Eingabe zu groß | Verringere die Dateigröße unter das Endpunktlimit |
| 429 | Ratenlimit 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 wird gestartet 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 Frame zurückgegeben. Weitere Informationen findest du unter dedizierte Endpunkte.
- Gemeinsam genutzte Inferenz (
POST /api/models/{owner}/{project}/{model}/predict) verwendet denselben Predict-Dienst und akzeptiert dieselben Videoformate. Der Browser-Tab Predict ermöglicht nur die Auswahl von Bildern. Verwende für Videos daher die API oder einen dedizierten Endpunkt.
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. So kannst du diese visualisieren:
- Zeichne mithilfe der Vorhersagen lokal Boxen
- Verwende die Ultralytics-Methode
plot():
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Die vollständige Results-API und Optionen zur Visualisierung findest du in der Dokumentation zum Predict-Modus.
- Limit im Predict-Tab: 10 MB
- API-Limit: 100 MB sowohl für gemeinsam genutzte Inferenz als auch für dedizierte Endpunkte
- Automatische Größenanpassung im Predict-Tab: Bilder werden vor dem Upload auf die ausgewählte
Image Size-Größe angepasst
Große Bilder werden im Browser automatisch angepasst, wobei das Seitenverhältnis erhalten bleibt. Von dir selbst gesendete Anfragen werden nicht angepasst. Bilder über dem Limit werden daher mit
413abgelehnt.Die aktuelle API verarbeitet ein Bild pro Anfrage. Für Batch-Inferenz:
- Sende für jedes Bild eine separate Anfrage
- Verteile die Anfragen bei Bedarf auf dedizierte Endpunkte
- Verwende für große Batches lokale Inferenz
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))