Inferencia
Ultralytics Platform proporciona una API de inferencia para probar modelos entrenados. Utilice la basada en navegador Predict pestaña para una validación rápida o la REST API para acceso programático.

Pestaña Predecir
Cada modelo incluye un Predict pestaña para inferencia basada en navegador:
- Navega a tu modelo
- Haga clic en la pestaña «Predict» (Predecir ).
- Sube una imagen, utiliza un ejemplo o abre tu cámara web.
- Vea las predicciones al instante con superposiciones de cuadros delimitadores.

Métodos de entrada
El panel de predicción admite múltiples métodos de entrada:
| Método | Descripción |
|---|---|
| Subida de imágenes | Arrastra y suelta o haz clic para subir una imagen. |
| Imágenes de ejemplo | Haga clic en ejemplos integrados (imágenes del conjunto de datos o valores predeterminados). |
| Captura de cámara web | Transmisión en directo con captura de fotogramas individuales |
graph LR
A[Upload Image] --> D[Auto-Inference]
B[Example Image] --> D
C[Webcam Capture] --> D
D --> E[Results + Overlays]
style D fill:#2196F3,color:#fff
style E fill:#4CAF50,color:#fff
Subir imagen
Arrastre y suelte o haga clic para subir:
- Formatos compatibles: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP, DNG, MPO
- Tamaño máximo: 10MB
- Autoinferencia: los resultados aparecen automáticamente después de la carga.
Autoinferencia
El panel de predicción ejecuta la inferencia automáticamente cuando se carga una imagen, se selecciona un ejemplo o se captura un fotograma de la cámara web. No es necesario hacer clic en ningún botón.
Imágenes de ejemplo
El panel de predicción muestra imágenes de ejemplo del conjunto de datos vinculado a su modelo. Si no hay ningún conjunto de datos vinculado, se utilizan ejemplos predeterminados:
| Imagen | Contenido |
|---|---|
bus.jpg | Escena callejera con vehículos |
zidane.jpg | Escena deportiva con personas |
En los modelos OBB, se muestran imágenes aéreas de barcos y aeropuertos.
Imágenes precargadas
Las imágenes de ejemplo se cargan previamente cuando se carga la página, por lo que al hacer clic en un ejemplo se activa una inferencia casi instantánea sin tener que esperar a que se descargue.
Cámara web
Haga clic en la tarjeta de la cámara web para iniciar la transmisión en directo:
- Conceder permiso a la cámara cuando se solicite.
- Haga clic en la vista previa del vídeo para capturar un fotograma.
- La inferencia se ejecuta automáticamente en el fotograma capturado.
- Haga clic de nuevo para reiniciar la cámara web.
Ver resultados
Visualización de resultados de inferencia:
- Cuadros delimitadores con etiquetas de clase como superposiciones SVG
- Puntuaciones de confianza para cada detección
- Colores de clase de la paleta de colores de tu conjunto de datos (o la paleta Ultralytics )
- Desglose de velocidad: preprocesamiento, inferencia, posprocesamiento y tiempo de red.

El panel de resultados muestra:
| Campo | Descripción |
|---|---|
| Lista de detecciones | Cada detección con nombre de clase y confianza |
| Estadísticas de velocidad | Preprocesamiento, inferencia, posprocesamiento, red (ms) |
| Respuesta JSON | Respuesta API sin procesar en un bloque de código |
Parámetros de inferencia
Ajuste el comportamiento de detección con los parámetros de la sección Plegable Parámetros:

| Parámetro | Rango | Predeterminado | Descripción |
|---|---|---|---|
| Confianza | 0,01-1,0 | 0.25 | Umbral mínimo de confianza |
| IoU | 0,0-0,95 | 0.70 | Umbral de IoU de NMS |
| Tamaño de la imagen | 320, 640, 1280 | 640 | Cambiar el tamaño de la entrada (botón de alternancia) |
Reejecución automática
Al cambiar cualquier parámetro, se vuelve a ejecutar automáticamente la inferencia en la imagen actual con un rebote de 500 ms. No es necesario volver a cargarla.
Umbral de confianza
Filtre las predicciones por confianza:
- Más alto (0.5+): Menos predicciones, más certeras
- Más bajo (0.1-0.25): Más predicciones, algo de ruido
- Predeterminado (0.25): Equilibrado para la mayoría de los casos de uso
Umbral de IoU
Controle la NMS:
- Más alto (0,7+): Permitir más solapamiento de cuadros.
- Más bajo (0,3-0,5): fusiona las detecciones cercanas de forma más agresiva.
- Predeterminado (0,70): NMS equilibrado NMS para la mayoría de los casos de uso.
Predicción de implementación
Cada carrera punto final dedicado incluye un Predict pestaña directamente en su tarjeta de implementación. Esto utiliza el servicio de inferencia propio de la implementación en lugar del servicio de predicción compartido, lo que le permite probar su punto final implementado desde el navegador.
REST API
Acceda a la inferencia programáticamente:
Autenticación
Incluya su clave API en las solicitudes:
Authorization: Bearer YOUR_API_KEY
Se requiere clave API
Para ejecutar inferencias desde tus propios scripts, cuadernos o aplicaciones, incluye una clave API. Genera una en Settings (Sección Claves API en la pestaña Perfil).
Endpoint
POST https://platform.ultralytics.com/api/models/{modelId}/predict
Solicitud
import requests
url = "https://platform.ultralytics.com/api/models/MODEL_ID/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("image.jpg", "rb")}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
curl -X POST \
"https://platform.ultralytics.com/api/models/MODEL_ID/predict" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.25" \
-F "iou=0.7" \
-F "imgsz=640"
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("conf", "0.25");
formData.append("iou", "0.7");
formData.append("imgsz", "640");
const response = await fetch(
"https://platform.ultralytics.com/api/models/MODEL_ID/predict",
{
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: formData,
}
);
const result = await response.json();
console.log(result);

Respuesta
{
"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,
"model": "model.pt",
"version": {
"ultralytics": "8.4.14",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}

Campos de Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
images | array | Lista de imágenes procesadas |
images[].shape | array | Dimensiones de la imagen [altura, anchura] |
images[].results | array | Lista de detect |
images[].results[].name | string | Nombre de clase |
images[].results[].confidence | float | Confianza de detect (0-1) |
images[].results[].box | objeto | Coordenadas del cuadro delimitador |
images[].speed | objeto | Tiempos de procesamiento en milisegundos |
metadata | objeto | Solicitar metadatos e información sobre la versión |
Respuestas Específicas de la Tarea
El formato de respuesta varía según la tarea:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"segments": [[100, 50], [150, 60], ...]
}
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"keypoints": [
{"x": 200, "y": 75, "conf": 0.95},
...
]
}
{
"results": [
{"class": 0, "name": "cat", "confidence": 0.95},
{"class": 1, "name": "dog", "confidence": 0.03}
]
}
{
"class": 0,
"name": "ship",
"confidence": 0.89,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"obb": {"x1": 105, "y1": 48, "x2": 295, "y2": 55, "x3": 290, "y3": 395, "x4": 110, "y4": 402}
}
Límites de Tasa
La inferencia compartida tiene una velocidad limitada a 20 solicitudes/min por clave API. Cuando se limita, la API devuelve 429 con un Retry-After encabezado. Ver el completo Referencia de límite de velocidad para todas las categorías de puntos finales.
¿Necesita más rendimiento?
Implemente un punto final dedicado para una inferencia ilimitada sin límites de velocidad, con un rendimiento predecible y respuestas consistentes de baja latencia. Para la inferencia local, consulte la guía del modo Predict.
Manejo de Errores
Respuestas de error comunes:
| Código | Mensaje | Solución |
|---|---|---|
| 400 | Imagen no válida | Verifique el formato del archivo |
| 401 | No autorizado | Verifique la clave de API |
| 404 | Modelo no encontrado | Comprueba el ID del modelo. |
| 429 | Límite de tasa excedido | Espere y vuelva a intentarlo, o utilice un punto final dedicado para un rendimiento ilimitado. |
| 500 | Error del servidor | Reintente la solicitud |
Preguntas frecuentes
¿Puedo ejecutar inferencia en video?
La API acepta fotogramas individuales. Para video:
- Extraiga fotogramas localmente
- Envíe cada fotograma a la API
- Agregue los resultados
Para video en tiempo real, considere implementar un endpoint dedicado.
¿Cómo obtengo la imagen anotada?
La API devuelve predicciones JSON. Para visualizar:
- Utilice las predicciones para dibujar cuadros localmente
- Use Ultralytics
plot()método:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")
Consulte la documentación del modo Predict para obtener información completa sobre la API de resultados y las opciones de visualización.
¿Cuál es el tamaño máximo de imagen?
- Límite de subida: 10MB
- Recommended: <5MB for fast inference
- Redimensionamiento automático: Las imágenes se redimensionan al tamaño seleccionado.
Image Sizeparameter
Las imágenes grandes se redimensionan automáticamente conservando la relación de aspecto.
¿Puedo ejecutar inferencia por lotes?
La API actual procesa una imagen por solicitud. Para procesamiento por lotes:
- Envíe solicitudes concurrentes
- Utilice un endpoint dedicado para un mayor rendimiento.
- Considere la inferencia local para grandes lotes.
Inferencia por lotes con Python
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))