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

Vorhersage-Tab#
Jedes Modell enthält einen Predict-Tab für browserbasierte Inference:
- 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.

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, DNG, MPO
- Max. Größe: 10MB
- 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.
Beispielbilder#
Das Predict-Panel zeigt Beispielbilder aus dem verknüpften Dataset deines Modells an. Wenn kein Dataset verknüpft ist, werden Standardbeispiele verwendet:
| Bild | Inhalt |
|---|---|
bus.jpg | Straßenszene mit Fahrzeugen |
zidane.jpg | Sportszene mit Personen |
Für OBB-Modelle werden stattdessen Luftaufnahmen von Booten und Flughäfen 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 | Detektionen, Klassifikationen oder semantische Klassenabdeckung |
| Geschwindigkeitsstatistiken | Vorverarbeitung, Inferenz, Nachverarbeitung und Netzwerk (ms) |
| JSON-Antwort | Roh-API-Antwort in einem Codeblock |
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 einen Predict-Tab direkt auf seiner Deployment-Karte. Dies nutzt den eigenen Inference-Service des Deployments anstelle des geteilten Predict-Services, sodass du deinen bereitgestellten Endpunkt aus dem Browser heraus testen kannst.
Dedizierte Endpunkt-API#
Die API Docs-Karte im Modell-Predict-Tab enthält Beispiele für Python-, JavaScript- und cURL-Anfragen. Die Beispiele verwenden Platzhalter, bis du das Modell bereitstellst. Nach der Bereitstellung füllt der Code-Tab der Bereitstellungskarte seine Endpunkt-URL und den für deinen Workspace verfügbaren API-Schlüssel aus.
Authentifizierung#
Füge deinen API-Schlüssel in Anfragen ein:
Authorization: Bearer YOUR_API_KEYUm Inference aus deinen eigenen Skripten, Notebooks oder Apps auszuführen, füge einen API-Schlüssel hinzu. Generiere einen unter Settings > API Keys.
Endpunkt#
POST https://YOUR_DEPLOYMENT_URL.run.app/predictAnfrage#
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, sofern source nicht 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 |
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,
"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 |
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[].speed | Objekt | Verarbeitungszeiten in Millisekunden |
metadata | Objekt | Anfrage-Metadaten und Versionsinformationen |
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 auf 20 Anfragen/Minute für jeden API-Schlüssel, angemeldeten Aufrufer oder anonymen IP beschränkt. Bei Drosselung gibt die API 429 mit einem Retry-After-Header zurück. Siehe die vollständige Rate-Limit-Referenz für alle Endpunktkategorien.
Anfragen, die direkt an einen dedizierten Endpunkt gesendet werden, durchlaufen nicht den API-Ratenbegrenzer der Platform. Für hochvolumige lokale Inferenz siehe die Predict-Modus-Anleitung.
Fehlerbehandlung#
Häufige Fehlerantworten:
| Code | Nachricht | Lösung |
|---|---|---|
| 400 | Ungültiges Bild | Dateiformat prüfen |
| 401 | Nicht autorisiert | API-Key verifizieren |
| 404 | Modell nicht gefunden | Modell-ID prüfen |
| 429 | Ratenbegrenzung erreicht | Warten und erneut versuchen oder Anfragen direkt an einen dedizierten Endpunkt senden |
| 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#
Kann ich Inferenz auf Videos ausführen?#
Beide Inferenzmethoden akzeptieren Videodateien:
- Dedizierte Endpunkte akzeptieren Videodateien direkt. Unterstützte Formate (bis 100 MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Jeder Frame wird einzeln verarbeitet und die Ergebnisse werden pro Frame zurückgegeben. Siehe dedizierte Endpunkte für Details.
- Geteilte Inferenz (
/api/models/{id}/predict) verwendet denselben Predict-Dienst und akzeptiert dieselben Videoformate. Der Browser-Tab Predict wählt nur Bilder aus, verwende daher die API oder einen dedizierten Endpunkt für Videos.
Wie erhalte ich das annotierte Bild?#
Die API gibt JSON-Vorhersagen zurück. Zur Visualisierung:
- Verwende die Vorhersagen, um Boxen lokal zu zeichnen
- Verwende die Ultralytics
plot()Methode:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")Siehe die Predict Modus-Dokumentation für die vollständige Ergebnis-API und Visualisierungsoptionen.
Was ist die maximale Bildgröße?#
- Limit für den Predict-Tab: 10 MB
- Limit der dedizierten Endpunkt-API: 100 MB
- Automatische Größenänderung im Predict-Tab: Bilder werden vor dem Hochladen auf die ausgewählte
Image Sizeskaliert
Große Bilder werden automatisch unter Beibehaltung des Seitenverhältnisses skaliert.
Kann ich Batch-Inferenz ausführen?#
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
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))