Ultralytics YOLO27: Únete a la lista de espera.
Get Started
Fundamentos de visión artificial·Consulta las métricas·Lección 10/10
Lecciónprincipiante

Del laboratorio a producción

Instala Ultralytics, ejecuta YOLO26 con tus propias imágenes, comprueba el resultado según tus especificaciones y elige el siguiente paso.

Diez minutos con un modelo preentrenado bastan para responder a la pregunta que determina todo tu plan: ¿un modelo listo para usar ya cubre tus clases y tu cámara, o necesitas tus propios datos? Aquí instalarás Ultralytics, ejecutarás YOLO26 con imágenes reales y comprobarás el resultado según las especificaciones que redactaste en la primera lección.

Resultado

Ejecuta YOLO26 con tus propias imágenes y decide, a partir del resultado, si vas a crear un prototipo con pesos preentrenados o a construir un conjunto de datos.

Vía rápida
Si ya tienes experiencia, aquí tienes un resumen.
  1. Instala: pip install ultralytics y, después, yolo checks.

  2. Predice: yolo predict model=yolo26n.pt source=https://ultralytics.com/images/bus.jpg.

  3. Comprueba qué clases de tus especificaciones están preentrenadas y si las cajas encajan bien en tus imágenes.

  4. Elige el siguiente curso según la respuesta.

Práctico

Instalación#

pip install ultralytics
yolo checks

La primera línea instala el paquete Python ultralytics y el comando yolo, además de PyTorch si aún no está instalado. yolo checks muestra las versiones de Python, PyTorch y CUDA, así como el hardware que utilizará Ultralytics, para que puedas confirmar la configuración antes de ejecutar nada. Usa un entorno virtual nuevo; en la guía de inicio rápido se explican las configuraciones con conda, Docker y GPU.

Versión de Python

El paquete ultralytics se instala en Python 3.8 y versiones posteriores, pero las versiones actuales de PyTorch necesitan Python 3.10 o posterior. Si tu entorno es anterior, crea primero un entorno virtual nuevo con una versión reciente de Python.

Selector de instalación de PyTorch Start Locally con Stable, Mac, Pip, Python y Default seleccionados, que muestra el comando pip3 para instalar torch, torchvision y torchaudio

Una GPU que no se utiliza

Síntoma: yolo checks muestra CPU en una máquina con una GPU NVIDIA y la inferencia es lenta. Causa: una compilación de PyTorch solo para CPU; por ejemplo, la rueda pip predeterminada en Windows. Solución: selecciona tu sistema operativo, gestor de paquetes y versión de CUDA en el selector de PyTorch de arriba, ejecuta el comando que aparece y vuelve a instalar ultralytics. En un Mac, como en la captura de pantalla, la compilación predeterminada es la adecuada; Ultralytics se ejecuta en la CPU, a menos que pases device=mps para usar la GPU de Apple.

Una primera predicción#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # descarga el modelo nano de ~5 MB en el primer uso
results = model("https://ultralytics.com/images/bus.jpg", save=True)

for box in results[0].boxes:
    print(model.names[int(box.cls)], round(float(box.conf), 2))

Ambos imprimen un resumen de una línea por imagen y guardan la imagen anotada en runs/detect/predict:

image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict

Línea por línea: la imagen se ha redimensionado a 640×480 para la inferencia; el modelo ha detectado cuatro personas y un autobús; la inferencia ha tardado unos 20 ms en la CPU de un portátil. La línea Speed es tu primera comprobación de latencia: compárala con la frecuencia de fotogramas indicada en la línea de entrada de tus especificaciones. Abre la imagen guardada: cada caja muestra la clase, la caja y la confianza de la lección sobre detección.

Comprueba el resultado según tus especificaciones#

PreguntaSi la respuesta es síSi la respuesta es no
¿Están tus clases entre las 80 clases de COCO que conoce el modelo?Crear un prototipo sin entrenarNecesitas datos etiquetados y un ajuste fino (guía de ajuste fino)
En tus imágenes, ¿las cajas por encima de tu umbral señalan los objetos correctos?La tarea y el punto de vista coincidenEspera una brecha de dominio: recopila datos de tus cámaras
¿El tipo de salida es el que necesita tu criterio de decisión?Mantén la tareaCambia los pesos: -seg, -sem, -depth, -pose, -obb o -cls
¿Es lo bastante rápido para la frecuencia de fotogramas que necesitas en el hardware de destino?ContinúaPrueba un modelo más pequeño o un formato de exportación optimizado

La primera pregunta tiene una respuesta exacta: model.names enumera todas las clases que conoce el modelo preentrenado. En las especificaciones de la carretilla elevadora, person es una clase de COCO y forklift no lo es, así que ningún umbral hará que el modelo preentrenado detecte una carretilla elevadora. Este es el resultado más habitual en la primera ejecución: el modelo cubre parte de las especificaciones. Lo correcto es crear un prototipo de la lógica de decisión con las clases disponibles mientras preparas el conjunto de datos para las demás.

Qué cambia en producción#

Un modelo desplegado se encuentra con condiciones que nunca se incluyeron en el muestreo de su conjunto de datos: cámaras nuevas, estaciones del año, productos y uniformes. Sin reentrenamiento, la precisión se degrada; con reentrenamientos periódicos basados en lo que observas en producción, se recupera:

Dos gráficos de la precisión del modelo a lo largo del tiempo: un modelo cuya precisión decae sin reentrenamiento y otro que recupera precisión con cada actualización gracias al reentrenamiento periódico

Todas las lecciones de este curso alimentan ese ciclo: las especificaciones definen un fallo, la auditoría de cobertura indica dónde buscar, el validador de etiquetas y las directrices permiten aprovechar los datos nuevos, y las particiones y métricas fiables te dicen si el modelo reentrenado es realmente mejor. Dos hábitos ayudan a que funcione desde el primer día: registra una muestra de las entradas y predicciones, incluidas las de baja confianza, y conserva el conjunto de prueba congelado para comparar todos los modelos con las mismas imágenes. En Observabilidad y deriva se explica en profundidad la supervisión de la deriva de datos.

Qué hacer a continuación#

CursoHazlo cuando
Creación de conjuntos de datos YOLO de alto rendimientoTus clases no están preentrenadas o tus escenas son distintas de COCO
Entrena tu primer modelo YOLOTienes un conjunto de datos etiquetado y quieres ajustarlo
Ultralytics YOLO en producciónTienes un modelo y necesitas exportarlo, realizar un seguimiento y supervisarlo
Crea con Ultralytics PlatformQuieres gestionar los datos, el etiquetado, el entrenamiento y el despliegue en un solo lugar

¿Prefieres un flujo de trabajo en el navegador? Ultralytics Platform ejecuta el mismo ciclo —subir, anotar, entrenar y desplegar— sin necesidad de instalar nada localmente:

Pruébalo

Edita el script de la solución: pon las clases de tus especificaciones en spec_classes y las rutas a tus imágenes en sources; después, ejecútalo y abre los resultados guardados. Crea una tabla —imagen, clases detectadas, coincidencia con tus especificaciones (sí o no)— y termina con una frase que indique el siguiente paso y el curso que lo cubre.

Commit
git add -A && git commit -m "docs(academy): completed Computer Vision Foundations"
Cuándo se considera terminado
Has terminado la lección cuando se cumplen todas estas condiciones.
  • Has ejecutado YOLO26 con al menos tres imágenes propias y has abierto los resultados guardados.

  • Sabes qué clases de tus especificaciones están preentrenadas y cuáles requieren tus propios datos.

  • Tienes una frase que indica el siguiente paso y el curso que vas a hacer para darlo.

Mostrar solución
from pathlib import Path

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)}  needs your own data: {sorted(spec_classes - known)}")

# 2. What does it find on your images?
sources = [
    "https://ultralytics.com/images/bus.jpg",  # replace with your own images
    "https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
    names = [result.names[int(c)] for c in result.boxes.cls]
    print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")
pretrained: ['person']  needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']

Para las especificaciones de la carretilla elevadora: person está cubierta y forklift no. Siguiente paso: crea ahora un prototipo de la regla de zona para personas con el modelo preentrenado y empieza el curso Creación de conjuntos de datos YOLO de alto rendimiento para recopilar y etiquetar carretillas elevadoras captadas por las cámaras del almacén.

Qué viene después

Curso completado: haz el cuestionario final para obtener tu certificado y, después, continúa con Creación de conjuntos de datos YOLO de alto rendimiento para convertir tus especificaciones en un conjunto de datos listo para entrenar.