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

Pestaña de Predicción
Cada modelo incluye un Predict pestaña para inferencia basada en navegador:
- Navega a tu modelo
- Haga clic en la pestaña Predecir.
- Suba una imagen, use un ejemplo o abra su cámara web
- Ver 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 imagen | Arrastre y suelte o haga clic para subir una imagen |
| Imágenes de ejemplo | Haga clic en los ejemplos integrados (imágenes del conjunto de datos o valores predeterminados). |
| Captura de webcam | Transmisión de cámara en vivo con captura de un solo fotograma |
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
- Auto-inferencia: Los resultados aparecen automáticamente después de la carga
Auto-inferencia
El panel de predicción ejecuta la inferencia automáticamente cuando subes una imagen, seleccionas un ejemplo o capturas un fotograma de una 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 tu 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 |
Para los modelos OBB, se muestran en su lugar imágenes aéreas de barcos y aeropuertos.
Imágenes Precargadas
Las imágenes de ejemplo se precargan al cargar la página, lo que permite una inferencia casi instantánea al hacer clic en un ejemplo, sin esperas de descarga.
Cámara web
Haga clic en la tarjeta de la webcam para iniciar una transmisión de cámara en vivo:
- Conceder permiso de cámara cuando se solicite
- Haga clic en la vista previa del video para capturar un fotograma
- La inferencia se ejecuta automáticamente en el fotograma capturado
- Vuelva a hacer clic para reiniciar la cámara web.
Ver resultados
Visualización de resultados de inferencia:
- Bounding boxes con etiquetas de clase como superposiciones SVG
- Puntuaciones de confianza para cada detección
- Colores de clase de la paleta de colores de su conjunto de datos (o la paleta predeterminada de Ultralytics)
- Desglose de velocidad: Preprocesamiento, inferencia, postprocesamiento 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 sin procesar de la API en un bloque de código |
Parámetros de inferencia
Ajuste el comportamiento de detección con los parámetros en la sección Parámetros desplegable:

| 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 | Dimensión de redimensionamiento de entrada (botón de alternancia) |
Reejecución automática
Al cambiar cualquier parámetro, la inferencia se ejecuta automáticamente de nuevo en la imagen actual con un retardo de 500 ms. No es necesario volver a cargar.
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+): Permite más cuadros superpuestos
- Más bajo (0.3-0.5): Fusiona detecciones cercanas de forma más agresiva
- Predeterminado (0.70): Comportamiento de NMS equilibrado para la mayoría de los casos de uso
Predicción del Despliegue
Cada ejecución punto final dedicado incluye un Predict pestaña directamente en su tarjeta de despliegue. Esto utiliza el servicio de inferencia propio del despliegue en lugar del servicio de predicción compartido, lo que le permite probar su endpoint desplegado 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
Clave API Requerida
Para ejecutar inferencia desde sus propios scripts, notebooks o aplicaciones, incluya una clave API. Genere 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 [alto, ancho] |
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 de 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 está limitada a 20 solicitudes/min por clave de API. Cuando se limita, la API devuelve 429 con un Retry-After encabezado. Consulte el completo Referencia del límite de tasa para todas las categorías de puntos finales.
¿Necesita más rendimiento?
Implemente un endpoint dedicado para inferencia ilimitada sin límites de tasa, rendimiento predecible y respuestas consistentes de baja latencia. Para 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 | Verifique el ID del modelo |
| 429 | Límite de tasa excedido | Espere y reintente, o utilice un endpoint 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 la API completa 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))