Ultralytics YOLO27:
Get Started

Segmentación de instancias con Ultralytics YOLO#

Ultralytics YOLO instance segmentation examples

La segmentación de instancias va un paso más allá que la detección de objetos: consiste en identificar los objetos individuales de una imagen y separarlos del resto.

El resultado de un modelo de segmentación de instancias es un conjunto de máscaras o contornos que delimitan cada objeto de la imagen, junto con las etiquetas de clase y las puntuaciones de confianza de cada objeto. La segmentación de instancias resulta útil cuando necesitas saber no solo dónde están los objetos en una imagen, sino también cuál es su forma exacta.



Ver: Ejecuta la segmentación con un modelo Ultralytics YOLO preentrenado en Python.
Consejo

Los modelos YOLO26 Segment usan el sufijo -seg, es decir, yolo26n-seg.pt, y están preentrenados con COCO.

Modelos#

A continuación se muestran los modelos YOLO26 Segment preentrenados con el conjunto de datos COCO.

Los modelos se descargan automáticamente desde la versión más reciente de Ultralytics al usarlos por primera vez.

Modelotamaño
(píxeles)
mAPcaja
50-95(integral)
mAPmáscara
50-95(integral)
Velocidad
CPU ONNX
(ms)
Velocidad
T4 TensorRT10
(ms)
parámetros
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.3
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.5
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.7
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0140.1
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8314.0
  • Los valores de mAPval corresponden a un único modelo y una única escala en el conjunto de datos COCO val2017.
    Reprodúcelos con yolo segment val data=coco.yaml device=0 nms=False
  • La velocidad es el promedio calculado con imágenes de COCO val usando ONNX en CPU y TensorRT10 en una GPU NVIDIA T4.
    Reprodúcela con yolo segment val data=coco.yaml batch=1 device=0|cpu nms=False
  • Los valores de Params y FLOPs corresponden a modelos fusionados tras plegar Conv/BatchNorm y eliminar la rama de detección no utilizada. Los checkpoints preentrenados conservan toda la arquitectura de entrenamiento y pueden mostrar valores más altos.

Estos puntos de control segmentan las 80 clases de COCO. Para segmentar categorías que no estén en esa lista sin volver a entrenar, consulta YOLOE, que recibe las clases como una indicación de texto, un ejemplo visual o un vocabulario integrado.

Consulta la vista previa no publicada de YOLO27 para ver resultados preliminares de cajas y máscaras en COCO.

Entrenar#

Entrena YOLO26n-seg con el conjunto de datos COCO8-seg durante 100 épocas con un tamaño de imagen de 640. Consulta la página de Configuración para ver la lista completa de argumentos disponibles.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-seg.yaml")  # Crea un modelo nuevo a partir de YAML
model = YOLO("yolo26n-seg.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # Crea el modelo a partir de YAML y transfiere los pesos

# Entrenar el modelo
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Consulta la página Entrenamiento para ver todos los detalles del modo train. También puedes entrenar modelos de segmentación con el entrenamiento en la nube de Ultralytics Platform.

Formato del conjunto de datos#

Encontrarás información detallada sobre el formato de los conjuntos de datos de segmentación YOLO en la Guía de conjuntos de datos. Para convertir un conjunto de datos COCO JSON existente al formato YOLO, usa la función integrada convert_coco con use_segments=True, tal como se explica en la guía de conversión de COCO a YOLO. También puedes crear máscaras de segmentación con la anotación de Ultralytics Platform mediante herramientas de polígonos y anotación inteligente con tecnología SAM.

Validar#

Valida la precisión del modelo YOLO26n-seg entrenado. No hacen falta argumentos, ya que model conserva data y los argumentos de entrenamiento como atributos del modelo: path/to/best.pt del ejemplo de Entrenamiento valida con COCO8-seg. Los pesos oficiales registran una ruta al conjunto de datos de entrenamiento que no existe en tu equipo, así que, tras mostrar un aviso, usan el valor predeterminado de la tarea coco8-seg.yaml. Pasa data para validar con otro conjunto de datos.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-seg.pt")  # carga un modelo oficial
model = YOLO("path/to/best.pt")  # cargar un modelo personalizado

# Valida el modelo
metrics = model.val()  # no hacen falta argumentos; se recuerdan el conjunto de datos y los ajustes
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # una lista que contiene mAP50-95(B) para cada categoría
metrics.box.image_metrics  # diccionario de métricas por imagen para det, con precisión, exhaustividad, F1, TP, FP y FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # una lista que contiene mAP50-95(M) para cada categoría
metrics.seg.image_metrics  # diccionario de métricas por imagen para seg, con precisión, exhaustividad, F1, TP, FP y FN

Predecir#

Usa un modelo YOLO26n-seg entrenado para hacer predicciones sobre imágenes.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-seg.pt")  # carga un modelo oficial
model = YOLO("path/to/best.pt")  # cargar un modelo personalizado

# Haz predicciones con el modelo
results = model("https://ultralytics.com/images/bus.jpg")  # haz una predicción sobre una imagen

# Accede a los resultados
for result in results:
    xy = result.masks.xy  # polígonos de máscaras en coordenadas de píxeles
    xyn = result.masks.xyn  # polígonos de máscaras normalizados
    masks = result.masks.data  # máscaras binarias, forma (N,H,W), tipo de datos torch.uint8

Consulta todos los detalles del modo predict en la página de predicción.

Resultados de salida#

La segmentación de instancias de YOLO devuelve un objeto Results por imagen. Cada resultado almacena predicciones por objeto: cada instancia detectada tiene su propia máscara binaria, clase, confianza y caja.

AtributoTipoFormaDescripción
result.masksMasks(N)Máscaras de instancia.
result.masks.datatorch.uint8(N,H,W)Máscaras binarias, con valores 0 o 1.
result.masks.xynp.float32list[(P,2)]Polígonos de píxeles.
result.masks.xynnp.float32list[(P,2)]Polígonos normalizados.
result.boxesBoxes(N)Cuadros/clases/confianzas de instancia.
result.boxes.clstorch.float32(N,)ID de clase; conviértelos a int para obtener los nombres.

Para consultar los campos Results específicos de cada tarea, visita la sección resultados de predicción por tarea.

Segmentación de instancias frente a segmentación semántica#

La segmentación de instancias se realiza a nivel de objeto: dos coches generan dos máscaras, dos cajas y dos puntuaciones de confianza. La segmentación semántica clasifica a nivel de píxel: esos mismos coches pasan a ser píxeles con el mismo ID de clase en un mapa de clases del tamaño de la imagen, sin cajas ni puntuaciones de confianza por objeto, ni una lista de polígonos predeterminada. Consulta la comparación campo por campo en la página de segmentación semántica.

Exportar#

Exporta un modelo YOLO26n-seg a otro formato, como ONNX, CoreML, etc.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-seg.pt")  # carga un modelo oficial
model = YOLO("path/to/best.pt")  # cargar un modelo personalizado

# Exporta el modelo
model.export(format="onnx")

Los formatos de exportación disponibles para YOLO26-seg aparecen en la tabla siguiente. Puedes exportar a cualquier formato con el argumento format, es decir, format='onnx' o format='engine'. También puedes hacer predicciones o validar directamente con modelos exportados, por ejemplo, yolo predict model=yolo26n-seg.onnx. Cuando termine la exportación, se mostrarán ejemplos de uso de tu modelo.

Nota

CoreML admite NMS integrado (nms=True) para detección, segmentación de instancias y pose con formas estáticas. Las exportaciones de segmentación predeterminadas (nms=None) dejan NMS a cargo del consumidor.

FormatoArgumento formatModeloMetadatosArgumentos
PyTorch-yolo26n-seg.pt✅-
TorchScripttorchscriptyolo26n-seg.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-seg.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-seg_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-seg.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-seg_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-seg_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-seg_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-seg_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-seg_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-seg_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None usa de forma predeterminada salidas sin procesar para NMS externa. Establece nms=False para seleccionar una cabeza sin NMS disponible; los formatos no compatibles recurren a su ruta de salida nativa. Las entradas nms anteriores identifican los formatos que pueden integrar NMS con nms=True.

Consulta todos los detalles de export en la página Exportar.

Preguntas frecuentes#

  • Para entrenar un modelo de segmentación YOLO26 con un conjunto de datos personalizado, primero tienes que prepararlo en el formato de segmentación YOLO. Puedes usar la utilidad integrada convert_coco para convertir conjuntos de datos COCO JSON. Cuando el conjunto de datos esté listo, puedes entrenar el modelo con Python o con comandos de CLI:

    Ejemplo
    from ultralytics import YOLO
    
    # Carga un modelo YOLO26 Segment preentrenado
    model = YOLO("yolo26n-seg.pt")
    
    # Entrenar el modelo
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Consulta la página de Configuración para ver más argumentos disponibles.

  • La detección de objetos identifica y localiza objetos en una imagen dibujando cajas delimitadoras a su alrededor, mientras que la segmentación de instancias no solo identifica las cajas delimitadoras, sino que también delimita la forma exacta de cada objeto. Los modelos de segmentación de instancias YOLO26 generan máscaras o contornos que delimitan cada objeto detectado, lo cual resulta especialmente útil en tareas donde es importante conocer la forma precisa de los objetos, como el diagnóstico por imagen o la conducción autónoma.

  • Ultralytics YOLO26 es un modelo de última generación, conocido por su gran precisión y rendimiento en tiempo real, lo que lo hace ideal para tareas de segmentación de instancias. Los modelos YOLO26 Segment vienen preentrenados con el conjunto de datos COCO, lo que garantiza un rendimiento sólido con una gran variedad de objetos. Además, YOLO admite funciones de entrenamiento, validación, predicción y exportación con una integración sencilla, por lo que es muy versátil tanto para la investigación como para aplicaciones industriales.

  • Cargar y validar un modelo YOLO de segmentación preentrenado es sencillo. Así puedes hacerlo con Python y con CLI:

    Ejemplo
    from ultralytics import YOLO
    
    # Cargar un modelo preentrenado
    model = YOLO("yolo26n-seg.pt")
    
    # Valida el modelo
    metrics = model.val()
    print("Mean Average Precision for boxes:", metrics.box.map)
    print("Mean Average Precision for masks:", metrics.seg.map)

    Estos pasos te proporcionarán métricas de validación como la precisión media promedio (mAP), esencial para evaluar el rendimiento del modelo.

  • Exportar un modelo YOLO de segmentación al formato ONNX es sencillo y puedes hacerlo con Python o con comandos de CLI:

    Ejemplo
    from ultralytics import YOLO
    
    # Cargar un modelo preentrenado
    model = YOLO("yolo26n-seg.pt")
    
    # Exporta el modelo al formato ONNX
    model.export(format="onnx")

    Encontrarás más detalles sobre la exportación a distintos formatos en la página de Exportación.

Comentarios