Inferencia

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

Ultralytics Platform Model Predict Tab With Detections Overlay

Pestaña Predict

Cada modelo incluye una pestaña Predict para realizar inferencias desde el navegador:

  1. Navega hasta tu modelo
  2. Haz clic en la pestaña Predict
  3. Sube una imagen, utiliza un ejemplo o abre tu cámara web
  4. Visualiza las predicciones al instante con superposiciones de cajas delimitadoras (bounding boxes)

Ultralytics Platform Predict Tab Image Upload Dropzone

Métodos de entrada

El panel de predicción admite múltiples métodos de entrada:

MétodoDescripción
Carga de imagenArrastra y suelta o haz clic para subir una imagen
Imágenes de ejemploHaz clic en los ejemplos integrados (imágenes del conjunto de datos o valores predeterminados)
Captura por cámara webTransmisión en vivo de la cámara 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

Arrastra y suelta o haz clic para subir:

  • Formatos admitidos: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP, DNG, MPO
  • Tamaño máximo: 10MB
  • Inferencia automática: Los resultados aparecen automáticamente tras la subida
Inferencia automática

El panel de predicción ejecuta la inferencia automáticamente cuando subes una imagen, seleccionas un ejemplo o capturas 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 tu modelo. Si no hay ningún conjunto de datos vinculado, se utilizan ejemplos predeterminados:

ImagenContenido
bus.jpgEscena urbana con vehículos
zidane.jpgEscena deportiva con personas

Para modelos OBB, se muestran imágenes aéreas de barcos y aeropuertos en su lugar.

Imágenes precargadas

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.

Webcam

Haz clic en la tarjeta de la cámara web para iniciar la transmisión en vivo:

  1. Concede permiso a la cámara cuando se te solicite
  2. Haz clic en la vista previa de vídeo para capturar un fotograma
  3. La inferencia se ejecuta automáticamente en el fotograma capturado
  4. Haz clic de nuevo para reiniciar la cámara web

Ver resultados

Los resultados de la inferencia muestran:

  • 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 tu conjunto de datos (o la paleta predeterminada de Ultralytics)
  • Desglose de velocidad: Tiempo de preprocesamiento, inferencia, posprocesamiento y red

Ultralytics Platform Predict Tab Results With Detections And Speed Stats

El panel de resultados muestra:

CampoDescripción
Lista de deteccionesCada detección con nombre de clase y confianza
Estadísticas de velocidadPreprocesamiento, inferencia, posprocesamiento, red (ms)
Respuesta JSONRespuesta cruda de la API en un bloque de código

Parámetros de inferencia

Ajusta el comportamiento de detección con los parámetros en la sección desplegable Parameters:

Ultralytics Platform Predict Tab Parameters Sliders

ParámetroRangoPredeterminadoDescripción
Confidence0.01 – 1.00.25Umbral mínimo de confianza
IoU0.0 – 0.950,7Umbral IoU para NMS
Image Size320, 640, 1280 (selector en la interfaz)640Dimensión de redimensionamiento de entrada (la API acepta cualquier valor de 32 a 1280)
Re-ejecución automática

Cambiar cualquier parámetro vuelve a ejecutar automáticamente la inferencia en la imagen actual con un debounce de 500ms. No es necesario volver a subir la imagen.

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 casos de uso

Umbral IoU

Controla la supresión no máxima (NMS):

  • Más alto (0.7+): Permite más cajas solapadas
  • Más bajo (0.3-0.5): Fusiona detecciones cercanas de forma más agresiva
  • Predeterminado (0.7): Comportamiento de NMS equilibrado para la mayoría de casos de uso

Predict en 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, permitiéndote probar tu endpoint desplegado desde el navegador.

REST API

Accede a la inferencia de forma programática:

Autenticación

Incluye tu clave de API en las solicitudes:

Authorization: Bearer YOUR_API_KEY
Clave de API requerida

Para ejecutar la inferencia desde tus propios scripts, notebooks o aplicaciones, incluye una clave de API. Genera una en Settings > API Keys.

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())

Ultralytics Platform Predict Tab Code Examples Python Tab

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.x.x",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

Ultralytics Platform Predict Tab Json Response View

Campos de respuesta

CampoTipoDescripción
imagesarrayLista de imágenes procesadas
images[].shapearrayDimensiones de la imagen [altura, anchura]
images[].resultsarrayLista de detecciones
images[].results[].namestringNombre de la clase
images[].results[].confidencefloatConfianza de detección (0-1)
images[].results[].boxobjetoCoordenadas de BBox
images[].speedobjetoTiempos de procesamiento en milisegundos
metadataobjetoMetadatos de la solicitud 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}
}

Facturación

La inferencia compartida (la pestaña Predict y el endpoint /api/models/{id}/predict) está incluida sin coste adicional en todos los planes. No hay cargos por solicitud para la inferencia compartida.

Para cargas de trabajo de producción que requieran un mayor rendimiento, despliega un dedicated endpoint.

Límites de tasa

La inferencia compartida tiene un límite de 20 solicitudes/min por API key. Cuando se limita, la API devuelve un 429 con una cabecera Retry-After. Consulta la referencia de límites de tasa completa para todas las categorías de endpoints.

¿Necesitas más rendimiento?

Despliega un dedicated endpoint para una inferencia ilimitada sin límites de tasa, rendimiento predecible y respuestas consistentes de baja latencia. Para la inferencia local, consulta la guía del modo Predict.

Gestión de errores

Respuestas de error comunes:

CódigoMensajeSolución
400Imagen no válidaComprueba el formato del archivo
401No autorizadoVerifica tu API key
404Modelo no encontradoComprueba el ID del modelo
429Límite de tasa alcanzadoEspera y vuelve a intentar, o usa un dedicated endpoint para un rendimiento ilimitado
500Error del servidorReintenta la solicitud

Preguntas frecuentes

¿Puedo ejecutar la inferencia en vídeo?

Ambos métodos de inferencia aceptan archivos de vídeo:

  • Los dedicated endpoints aceptan 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.
  • La inferencia compartida (/api/models/{id}/predict) utiliza el mismo servicio de predicción y acepta los mismos formatos de vídeo. Sin embargo, la pestaña Predict del navegador en la IU solo permite subir imágenes; utiliza la REST API directamente o un dedicated endpoint para flujos de trabajo de vídeo. El endpoint compartido también tiene límite de tasa de 20 req/min, por lo que los dedicated endpoints son la mejor opción para cargas de trabajo de vídeo pesadas.

¿Cómo obtengo la imagen anotada?

La API devuelve predicciones en JSON. Para visualizar:

  1. Usa las predicciones para dibujar cajas localmente
  2. 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 obtener la API de resultados completa y las opciones de visualización.

¿Cuál es el tamaño máximo de imagen?

  • Límite de carga: 10MB
  • Recomendado: <5MB para una inferencia rápida
  • Auto-resize: Las imágenes se redimensionan según el parámetro Image Size seleccionado

Las imágenes grandes se redimensionan automáticamente manteniendo la relación de aspecto.

¿Puedo ejecutar inferencia por lotes?

La API actual procesa una imagen por solicitud. Para lotes:

  1. Envía solicitudes simultáneas
  2. Usa un dedicated endpoint para un mayor rendimiento
  3. Considera la inferencia local para lotes grandes
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))

Comentarios