Inferencia#
Ultralytics Platform proporciona inferencia basada en navegador para probar modelos entrenados y endpoints dedicados para acceso mediante programación.

Pestaña Predict#
Cada modelo con pesos incluye una pestaña Predict para la inferencia basada en navegador:
- Navega hasta tu modelo
- Haz clic en la pestaña Predict
- Sube una imagen, utiliza un ejemplo o abre tu webcam
- Revisa la superposición específica de la tarea, el resumen de predicción, el tiempo y la respuesta sin procesar
Los modelos sin pesos muestran un estado vacío en su lugar; entrena el modelo o sube los pesos primero.

Métodos de entrada#
El panel de predicción admite varios métodos de entrada:
| Método | Descripción |
|---|---|
| Carga de imagen | Arrastra y suelta o haz clic para subir una imagen |
| Imágenes de ejemplo | Haz clic en los ejemplos integrados (imágenes del conjunto de datos o predeterminados) |
| Captura de webcam | Transmisión de cámara en directo con captura de fotogramas individuales |
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:#fffSubir imagen#
Arrastra y suelta o haz clic para subir:
- Formatos compatibles: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Tamaño máx.: 10 MB
- Auto-inferencia: Los resultados aparecen automáticamente tras la subida
El panel de predicción ejecuta la inferencia automáticamente cuando subes una imagen, seleccionas un ejemplo o capturas un fotograma de la webcam. No es necesario hacer clic en ningún botón.
Antes de subir la imagen, el panel la redimensiona para que su lado más largo coincida con el valor de Image Size seleccionado y solicita coordenadas normalizadas. Esto mantiene rápida la prueba en el navegador; las solicitudes que envíes por tu cuenta no se redimensionan.
Imágenes de ejemplo#
El panel de predicción muestra hasta dos imágenes de ejemplo del conjunto de datos vinculado de tu modelo, prefiriendo la división val, luego test y después train. Si no hay ningún conjunto de datos vinculado, se usan ejemplos predeterminados:
| Imagen | Contenido |
|---|---|
bus.jpg | Escena de calle 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 de un aeropuerto.
Las imágenes de ejemplo están precargadas al cargar la página, por lo que hacer clic en un ejemplo activa una inferencia casi instantánea sin tiempo de espera por descarga.
Cámara web#
Haz clic en la tarjeta de la webcam para iniciar una transmisión de cámara en directo:
- Concede permiso de acceso a la cámara cuando se te solicite
- Haz clic en la previsualización de vídeo para capturar un fotograma
- La inferencia se ejecuta automáticamente en el fotograma capturado
- Haz clic de nuevo para reiniciar la webcam
Ver resultados#
Los resultados de la inferencia muestran la salida adecuada para la tarea del modelo: cajas, máscaras, puntos clave, cajas orientadas, puntuaciones de clasificación, cobertura semántica o un mapa de profundidad. Los resultados de objetos utilizan los colores de las clases del conjunto de datos cuando están disponibles. El panel también muestra el tiempo de preprocesamiento, inferencia, posprocesamiento y red.
El panel de resultados muestra:
| Campo | Descripción |
|---|---|
| Resumen de resultados | Lista por detección, o las 5 clases principales para modelos de clasificación y semánticos |
| Estadísticas de velocidad | Preprocesamiento, inferencia, posprocesamiento y red (ms) |
| Versiones | Versiones de Ultralytics y PyTorch, además del rango de profundidad o el tamaño de la máscara según corresponda |
| Respuesta JSON | Respuesta sin procesar de la API en un bloque de código, con los datos del mapa en base64 omitidos |
Hay dos controles sobre la vista previa una vez que los resultados están listos: haz clic en la imagen para ampliarla con las superposiciones intactas y usa el botón de descarga para guardar un JPEG anotado del resultado actual.
Parámetros de inferencia#
Ajusta el comportamiento de inferencia con los tres controles deslizantes debajo de la imagen:

| Parámetro | Rango | Predeterminado | Descripción |
|---|---|---|---|
| Confianza | 0,01 – 1,0, pasos de 0,01 | 0.25 | Umbral de confianza mínimo |
| IoU | 0,0 – 0,95, pasos de 0,01 | 0.7 | Umbral de IoU para NMS |
| Image Size (Tamaño de imagen) | 32 – 1280, pasos de 32 | 640 | Dimensión de redimensionamiento de entrada |
Cambiar cualquier parámetro vuelve a ejecutar automáticamente la inferencia en la imagen actual con un debounce de 500ms. No hace falta volver a subirla.
Umbral de confianza#
Filtra las predicciones por confianza:
- Más alto (0.5+): Menos predicciones, pero más seguras
- Más bajo (0.1-0.25): Más predicciones, con algo de ruido
- Predeterminado (0.25): Equilibrado para la mayoría de los casos de uso
Umbral de IoU#
Controla el Non-Maximum Suppression:
- Más alto (0.7+): Permite más cuadros superpuestos
- Menor (0,3-0,5): Suprime las detecciones superpuestas de forma más agresiva
- Predeterminado (0.7): Comportamiento de NMS equilibrado para la mayoría de casos de uso
Inferencia de despliegue#
Cada dedicated endpoint en ejecución incluye una pestaña Predict directamente en su tarjeta de despliegue. Esto utiliza el propio servicio de inferencia del despliegue en lugar del servicio de predicción compartido, lo que te permite probar tu endpoint desplegado desde el navegador.
API de endpoint dedicado#
La tarjeta de API Docs en la pestaña del modelo Predict contiene solicitudes de ejemplo en Python, JavaScript y cURL, precargadas con la confianza, el valor de IoU y el tamaño de imagen configurados actualmente en los controles deslizantes. La URL y la clave son marcadores de posición hasta que despliegues el modelo; un botón Deploy junto a las pestañas de código salta a la pestaña Deploy del modelo. Tras el despliegue, la pestaña Code de la tarjeta de despliegue completa la URL de ese extremo y, para los propietarios del espacio de trabajo, su clave de API asociada, lista para copiar y ejecutar.
Autenticación#
Incluye tu clave de API en las peticiones:
Authorization: Bearer YOUR_API_KEYPara ejecutar la inferencia desde tus propios scripts, notebooks o aplicaciones, incluye una clave de API. Genera una en Settings > API Keys. Un extremo dedicado acepta únicamente la única clave con la que fue creado; la API de modelos compartidos acepta cualquier clave activa en el espacio de trabajo, y los modelos públicos también aceptan solicitudes anónimas.
Endpoint#
Los extremos dedicados aceptan solicitudes en su propia URL:
POST https://YOUR_DEPLOYMENT_URL.run.app/predictLa inferencia compartida utiliza la Platform API con la ruta completa del modelo:
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictAmbos aceptan el mismo cuerpo multipart/form-data y devuelven la misma forma de respuesta. Con el
Python SDK, usa client.models.predict(owner, project, model, body=...) para la inferencia
compartida o client.deployments.predict(owner, deployment, body=...) para un despliegue dedicado:
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})Petición#
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())
Parámetros de petición#
| Parámetro | Tipo | Predeterminado | Rango | Descripción |
|---|---|---|---|---|
file | archivo | - | - | Archivo de imagen o vídeo (obligatorio a menos que se establezca source) |
conf | float | 0.25 | 0.01 – 1.0 | Umbral de confianza mínimo |
iou | float | 0.7 | 0.0 – 0.95 | Umbral de IoU para NMS |
imgsz | entero | 640 | 32 – 1280 | Tamaño de la imagen de entrada en píxeles |
normalize | bool | false | - | Devuelve las coordenadas del bounding box entre 0 y 1 |
decimals | entero | 5 | 0 – 10 | Precisión decimal para los valores de las coordenadas |
bits | entero | 8 | 8, 12, 16 | Cuantización del mapa de profundidad, solo para modelos de profundidad |
source | cadena | - | - | URL de imagen o cadena en base64 (alternativa a file) |
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,
"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"
}
}
}
Campos de respuesta#
| Campo | Tipo | Descripción |
|---|---|---|
images | array | Lista de imágenes procesadas, una entrada por fotograma de vídeo en el caso de los vídeos |
images[].shape | array | Dimensiones de la imagen [altura, anchura] |
images[].results | array | Lista de detecciones |
images[].results[].class | entero | Índice de clase (ID entero) |
images[].results[].name | cadena | Nombre de la clase |
images[].results[].confidence | float | Confianza de la detección (0-1) |
images[].results[].box | objeto | Coordenadas del BBox |
images[].semantic_mask | objeto | Mapa de clases por píxel (solo modelos semánticos) |
images[].depth | objeto | Mapa de profundidad por píxel (solo modelos de profundidad) |
images[].speed | objeto | Tiempos de procesamiento en milisegundos |
metadata | objeto | Recuento de imágenes, tiempos de servicio, tarea y versiones de Ultralytics/PyTorch |
Respuestas específicas para cada 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}
}Límites de tasa#
La API de modelos compartida está limitada a 20 peticiones/minuto para cada clave de API, usuario autenticado o IP anónima. Cuando se limita, la API devuelve 429 con una cabecera Retry-After. Consulta la referencia de límites de velocidad completa para todas las categorías de endpoints.
Las solicitudes enviadas directamente a un dedicated endpoint no pasan por el limitador de velocidad de la Platform API. El extremo aún gestiona la carga con 429 y una cabecera Retry-After cuando se encuentra temporalmente a su máxima capacidad. Para la inferencia local de alto volumen, consulta la Predict mode guide.
Gestión de errores#
Respuestas de error comunes:
| Código | Mensaje | Solución |
|---|---|---|
| 400 | Imagen no válida | Comprueba el formato del archivo o que el modelo tenga pesos entrenados |
| 401 | No autorizado | Verifica tu API key |
| 404 | Modelo no encontrado | Comprueba el propietario, el proyecto y los nombres de los modelos |
| 413 | Entrada demasiado grande | Reduce el tamaño del archivo por debajo del límite del extremo |
| 429 | Límite de tasa superado | Espera y reintenta, o envía peticiones directamente a un dedicated endpoint |
| 500 | Error del servidor | Reintentar solicitud |
| 503 | Servicio no disponible | El servicio Predict se está iniciando o no está disponible; espera un momento y vuelve a intentarlo |
FAQ#
Ambos métodos de inferencia aceptan archivos de vídeo:
- Dedicated endpoints acepta archivos de vídeo directamente. Formatos compatibles (hasta 100 MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Cada fotograma se procesa individualmente y los resultados se devuelven por fotograma. Consulta dedicated endpoints para más detalles.
- Shared inference (
POST /api/models/{owner}/{project}/{model}/predict) utiliza el mismo servicio de predicción y acepta los mismos formatos de vídeo. La pestaña del navegador Predict solo selecciona imágenes, así que utiliza la API o un dedicated endpoint para el vídeo.
En la pestaña Predict, el botón de descarga situado sobre la vista previa guarda el resultado actual como un JPEG anotado. La API en sí devuelve predicciones en formato JSON. Para visualizarlas:
- Utiliza las predicciones para dibujar BBox localmente
- Usa el método
plot()de Ultralytics:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Consulta la documentación del modo Predict para ver la API de resultados completa y las opciones de visualización.
- Límite de la pestaña Predict: 10 MB
- API limit: 100 MB tanto para la inferencia compartida como para los extremos dedicados
- Redimensionamiento automático en la pestaña Predict: Las imágenes se redimensionan al
Image Sizeseleccionado antes de subirlas
Las imágenes grandes se redimensionan automáticamente en el navegador manteniendo la relación de aspecto. Las solicitudes que envíes por tu cuenta no se redimensionan, por lo que las imágenes que superen el límite se rechazarán con
413.La API actual procesa una imagen por solicitud. Para lotes:
- Envía solicitudes separadas para cada imagen
- Distribuye las solicitudes entre endpoints dedicados cuando sea apropiado
- Utiliza la inferencia local para lotes grandes
Inferencia por lotes con 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))