Ultralytics YOLO27: Únete a la lista de espera.
Get Started
Fundamentos de visión artificial·Elige una tarea·Lección 2/10
Lecciónprincipiante

Las siete tareas de visión

Asocia una línea de salida con clasificación, detección, segmentación de instancias, segmentación semántica, estimación de profundidad, pose u OBB y elige los pesos de YOLO26 para empezar.

Elegir la tarea es la decisión más costosa que tomarás antes de entrenar. Elige segmentación cuando basten los recuadros y multiplicarás el coste de etiquetado; elige recuadros verticales para barcos vistos desde un dron y cada recuadro será casi todo agua. Ultralytics YOLO admite siete tareas con una sola API, así que la elección depende de la salida que necesitas, no de las herramientas.

Resultado

Indica la única tarea y el archivo de pesos de YOLO26 que encajan con tu línea de salida y explica en una línea por qué no necesitas la siguiente tarea, más costosa.

Vía rápida
Si ya tienes experiencia, aquí tienes un resumen.
  1. Una etiqueta para toda la imagen: clasificación.

  2. Qué es y dónde está, cuando basta con un rectángulo: detección.

  3. Contorno exacto de cada objeto: segmentación de instancias. Clase de cada píxel: segmentación semántica.

  4. Distancia de cada píxel: estimación de profundidad.

  5. Articulaciones o puntos de referencia: pose. Objetos inclinados vistos desde arriba: OBB.

  6. La misma API YOLO() para las siete tareas; solo cambia el archivo de pesos.

Práctico

Resumen de las siete tareas#

Resultados de las siete tareas de Ultralytics YOLO: una hoja clasificada, coches y peatones detectados, coches segmentados, un mapa semántico de una calle, el esqueleto de pose de un corredor, recuadros girados sobre barcos y un mapa de profundidad

Lee la tabla fijándote en la columna de salida: es lo que debe coincidir con la línea de salida de tu especificación.

TareaSalidaResponde aPesos de YOLO26
ClasificaciónUna etiqueta por imagen, con una probabilidad«¿Qué aparece en esta imagen?»yolo26n-cls.pt
DetecciónClase, recuadro y confianza por objeto«¿Qué hay y dónde?»yolo26n.pt
Segmentación de instanciasClase y máscara de píxeles por objeto«¿Qué forma exacta tiene cada objeto?»yolo26n-seg.pt
Segmentación semánticaUna clase para cada píxel«¿Qué tipo de región es cada píxel?»yolo26n-sem.pt
Estimación de profundidadDistancia en metros para cada píxel«¿A qué distancia está cada píxel?»yolo26n-depth.pt
Estimación de poseCaja y puntos clave por persona u objeto«¿Qué postura tiene el cuerpo?»yolo26n-pose.pt
Cajas delimitadoras orientadasCaja girada por objeto«¿Qué hay y dónde, y con qué ángulo?»yolo26n-obb.pt

Hay dos pares que suelen confundir. Segmentación de instancias frente a segmentación semántica: la segmentación de instancias separa cada objeto (tres coches, tres máscaras); la segmentación semántica etiqueta los píxeles solo por clase (una región de «coche», sin recuento). Detección frente a OBB: ambas devuelven una caja por objeto, pero una OBB gira con el objeto, algo importante cuando los objetos aparecen en ángulo en imágenes aéreas.

Una API, siete resultados#

Cambiar de tarea no significa cambiar de herramienta. El archivo de pesos determina qué se devuelve, y el objeto Results rellena el atributo correspondiente:

from ultralytics import YOLO

image = "https://ultralytics.com/images/bus.jpg"
outputs = ["probs", "boxes", "masks", "semantic_mask", "depth", "keypoints", "obb"]

for suffix in ["-cls", "", "-seg", "-sem", "-depth", "-pose", "-obb"]:
    weights = f"yolo26n{suffix}.pt"
    model = YOLO(weights)
    result = model(image, verbose=False)[0]
    filled = [name for name in outputs if getattr(result, name) is not None]
    print(f"{weights:18} task={model.task:9} -> {', '.join(filled)}")
yolo26n-cls.pt     task=classify  -> probs
yolo26n.pt         task=detect    -> boxes
yolo26n-seg.pt     task=segment   -> boxes, masks
yolo26n-sem.pt     task=semantic  -> semantic_mask
yolo26n-depth.pt   task=depth     -> depth
yolo26n-pose.pt    task=pose      -> boxes, keypoints
yolo26n-obb.pt     task=obb       -> obb

Fíjate en la columna de la derecha: la segmentación y la pose también devuelven cajas, porque son detección más una cosa. La segmentación semántica y la profundidad no devuelven resultados por objeto: describen cada píxel. Tu código posterior lee exactamente uno de estos atributos, así que la línea de salida de tu especificación debe indicar cuál.

Cómo elegir en la práctica#

Empieza por lo que debe describir cada predicción y elige después la tarea más sencilla que responda a la decisión:

  1. Una etiqueta para toda la imagen → clasificación.
  2. Una clase para cada píxel, sin necesidad de separar objetos → segmentación semántica.
  3. Una distancia para cada píxel → estimación de profundidad.
  4. Algo sobre cada objeto:
    • dónde está, para contarlo, localizarlo o filtrarlo → detección (añade seguimiento para mantener la identidad entre fotogramas);
    • su forma, contorno o área exactos → segmentación de instancias;
    • su postura → pose;
    • su rotación en imágenes aéreas → OBB.

Si encajan dos tareas, elige la más barata de etiquetar y ejecutar. La detección es la opción predeterminada para la mayoría de los productos: las cajas son rápidas de dibujar y revisar, y, con seguimiento, ya permiten contar, generar alertas por zonas y analizar el tráfico, como en esta vista de una autopista:

Tráfico de una autopista seguido con Ultralytics YOLO, con un ID persistente y una trayectoria de movimiento en cada coche, autobús y camión

Profundidad: la tarea que responde a «a qué distancia»#

La estimación de profundidad devuelve un mapa del tamaño de la imagen con una distancia en metros por píxel: sin clases ni cajas. Úsala cuando la decisión dependa de la distancia: un robot que evita obstáculos, un vehículo que reduce la velocidad cuando algo está cerca o una estimación aproximada del volumen de una pila.

from ultralytics import YOLO

model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg", verbose=False)[0]

depth = result.depth.data  # meters, one value per pixel
print(f"depth map {tuple(depth.shape)}, nearest {float(depth.min()):.1f} m, farthest {float(depth.max()):.1f} m")
depth map (1080, 810), nearest 2.0 m, farthest 14.9 m

Una sola cámara infiere la profundidad a partir de indicios aprendidos, como la perspectiva y el tamaño de los objetos; por eso, mide el error en tus propias escenas antes de usarla para distancias críticas para la seguridad. La profundidad combina bien con la detección: detecta el objeto y, después, consulta el mapa de profundidad dentro de su caja.

Errores habituales#

Confusión habitualSíntomaMejor opción
Segmentación cuando bastarían las cajasEl código posterior nunca lee la máscaraDetección
Cajas verticales en imágenes aéreasLas cajas contienen sobre todo fondo y se suprimen entre sí las detecciones cercanasOBB
Clasificación para una escena con varios objetosLa etiqueta depende de un objeto pequeñoDetección más una regla
Segmentación semántica cuando necesitas recuentosLos objetos que se tocan se fusionan en una sola regiónSegmentación de instancias
Usar el tamaño de la caja como aproximación de la distanciaLas reglas fallan cuando varía el tamaño de los objetosEstimación de profundidad o detección más profundidad
Usar la pose para comprobar si hay alguienNunca consultas un punto claveDetección
No pagues por salidas que no vas a utilizar

Las salidas más completas cuestan más en cada etapa: las máscaras y los puntos clave tardan más en dibujarse y revisarse, y necesitan reglas de etiquetado más estrictas. Empieza por la tarea más barata que resuelva la línea de decisión y amplíala solo cuando un consumidor real necesite más detalle.

Pruébalo

Coge la línea de salida de tu especificación de la lección 1 y sigue los pasos anteriores. Anota la tarea, el archivo de pesos YOLO26 con el que empezarías, el atributo Results que leerá tu código y una frase que explique por qué no hace falta la siguiente tarea, más costosa. ¿Aún no tienes proyecto? Usa la especificación de la carretilla elevadora.

Cuándo se considera terminado
Has terminado la lección cuando se cumplen todas estas condiciones.
  • Has indicado una tarea, su archivo de pesos YOLO26 y el atributo Results que lee tu código.

  • Has escrito una frase que explica por qué no hace falta la siguiente tarea, más costosa.

  • Puedes decir si tu proyecto necesita segmentación de instancias o semántica, profundidad o ninguna de ellas, y explicar por qué.

Mostrar solución

Para la especificación de la carretilla elevadora, la respuesta es detección con yolo26n.pt, a partir de result.boxes.

La decisión debe saber dónde están las carretillas elevadoras y las personas para que el código pueda comprobar lo cerca que están. Las cajas responden a esa necesidad. La segmentación de instancias añadiría trabajo de etiquetado sin cambiar la alerta, porque el borde inferior de una caja ya indica la posición en el suelo. No hace falta la pose, porque la postura no forma parte de la decisión. La profundidad podría ayudar a convertir las posiciones de la imagen en metros, pero una cámara fija calibrada permite mapear el plano del suelo sin ella. Solo merece la pena probar OBB si las cámaras apuntan directamente hacia abajo y las carretillas aparecen en ángulos diagonales pronunciados.

Qué viene después

A continuación, veremos más de cerca la detección: la tarea más versátil y por la que empiezan la mayoría de los productos.