YOLO Vision 2026:

Descripción general de los datasets de segmentación semántica#

Semantic segmentation asigna una etiqueta de clase a cada píxel de una imagen. A diferencia de la instance segmentation, la segmentación semántica no separa objetos individuales de la misma clase. El objetivo de entrenamiento es un mapa de clases denso donde cada píxel almacena un ID de clase.

Esta guía explica el formato de dataset que utilizan los modelos de segmentación semántica YOLO de Ultralytics y enumera las configuraciones de dataset integradas disponibles para el entrenamiento y la validación.

Formatos de conjuntos de datos compatibles#

Se admiten dos formatos de etiquetas. El cargador de datasets selecciona máscaras PNG cuando el YAML del dataset define una clave masks_dir, o cuando ya existe una carpeta masks/ junto a tus imágenes en la raíz del dataset; de lo contrario, recurre a las etiquetas de polígono de YOLO.

Formato de máscara PNG#

Los datasets de segmentación semántica utilizan un archivo de imagen y un archivo de máscara por muestra. La máscara es una imagen de un solo canal, normalmente PNG, donde cada valor de píxel es el índice de clase correspondiente al píxel de la imagen.

  • Los valores de los píxeles 0, 1, 2, ... representan los IDs de clase del mapeo del dataset names.
  • El valor de píxel 255 se trata como la etiqueta de omisión y se excluye del cálculo de la pérdida y de las métricas.
  • Los archivos de máscara deben usar el mismo nombre base que su archivo de imagen correspondiente, por ejemplo frankfurt_000000_000294.png.
  • Las máscaras se resuelven como .png por defecto; si faltan, también se aceptan otras extensiones de imagen compatibles. Usa formatos sin pérdida como .png o .tiff, ya que la compresión con pérdida (p. ej., .jpg) corrompe los valores de los píxeles de los ID de clase.

La estructura predeterminada mantiene las imágenes y las máscaras en carpetas paralelas. El valor masks_dir del YAML del dataset reemplaza el componente de ruta images para encontrar las máscaras.

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

Por ejemplo, una imagen en images/train/aachen_000000_000019.png se empareja con una máscara en masks/train/aachen_000000_000019.png cuando masks_dir: masks.

Formato de etiqueta de polígono YOLO#

Si tu dataset ya tiene etiquetas de polígono de Ultralytics YOLO (un .txt por imagen con filas de <class-index> <x1> <y1> <x2> <y2> ...), puedes entrenar la segmentación semántica directamente a partir de ellas, sin necesidad de convertir a máscaras PNG. Consulta el instance segmentation dataset format para ver la estructura a nivel de fila.

Esta ruta se selecciona automáticamente cuando el YAML del dataset omite masks_dir y no existe ninguna carpeta masks/ junto a tus imágenes en la raíz del dataset. Elimina o cambia el nombre de cualquier carpeta masks/ sobrante, o el cargador volverá al modo de máscara PNG y buscará máscaras allí. Comportamiento:

  • Los polígonos se convierten en una máscara semántica por imagen en el momento de la carga, ordenados por área para que los objetos más pequeños se superpongan a los más grandes en las regiones de solapamiento.
  • Multiclase (N > 1 en names): se añade una clase adicional background después de tus clases declaradas para los píxeles no cubiertos por ningún polígono. El modelo se construye con canales de salida N + 1 y el último canal es el fondo.
  • Monoclase (N == 1 en names): se sigue entrenando como 1 clase. La máscara es binaria, mostrando tu clase declarada como 1 y los píxeles no cubiertos por ningún polígono como 0. No se añade ninguna clase de fondo adicional a names.
  • Los píxeles añadidos mediante el relleno de aumento (p. ej., recorte aleatorio) siguen utilizando 255 como etiqueta de omisión.

Utiliza esta ruta cuando tus datos ya estén etiquetados como polígonos de instancia y quieras obtener un modelo de segmentación semántica a partir de los mismos archivos.

Formato YAML del dataset#

Los datasets de segmentación semántica se configuran con archivos YAML. Los campos principales son:

ClaveDescripción
pathDirectorio raíz del dataset.
trainRuta de la imagen de entrenamiento relativa a path, o una ruta absoluta.
valRuta de la imagen de validación relativa a path, o una ruta absoluta.
testRuta de la imagen de prueba opcional.
masks_dirNombre de directorio utilizado para las máscaras semánticas. Omite esta clave (sin ninguna carpeta masks/ en la raíz del dataset) para cambiar al formato de etiquetas de polígono de YOLO.
namesMapeo de ID de clase a nombre de clase.
label_mappingMapeo opcional desde los ID del dataset de origen hasta los ID de entrenamiento o ignore_label.
ultralytics/cfg/datasets/cityscapes8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes8 ← downloads here (small subset)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

masks_dir: masks # semantic mask directory

# Cityscapes 19-class labels
names:
  0: road
  1: sidewalk
  2: building
  3: wall
  4: fence
  5: pole
  6: traffic light
  7: traffic sign
  8: vegetation
  9: terrain
  10: sky
  11: person
  12: rider
  13: car
  14: truck
  15: bus
  16: train
  17: motorcycle
  18: bicycle

# Map source label IDs to train IDs; ignore_label is converted to 255.
label_mapping:
  -1: ignore_label
  0: ignore_label
  1: ignore_label
  2: ignore_label
  3: ignore_label
  4: ignore_label
  5: ignore_label
  6: ignore_label
  7: 0
  8: 1
  9: ignore_label
  10: ignore_label
  11: 2
  12: 3
  13: 4
  14: ignore_label
  15: ignore_label
  16: ignore_label
  17: 5
  18: ignore_label
  19: 6
  20: 7
  21: 8
  22: 9
  23: 10
  24: 11
  25: 12
  26: 13
  27: 14
  28: 15
  29: ignore_label
  30: ignore_label
  31: 16
  32: 17
  33: 18

# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zip

Usa label_mapping cuando los ID de las máscaras de origen no coincidan ya con los ID de clase de entrenamiento contiguos. Cityscapes y ADE20K incluyen mapeos que convierten los ID de etiquetas originales en ID de entrenamiento de segmentación semántica de YOLO e ignoran las etiquetas no utilizadas.

Uso#

Entrena un modelo de segmentación semántica YOLO26 con Python o CLI:

Ejemplo
from ultralytics import YOLO

# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Conjuntos de datos compatibles#

Ultralytics proporciona archivos YAML de dataset de segmentación semántica para estos datasets. Consulta la semantic segmentation task page para ver la tabla completa de puntos de referencia de modelos preentrenados.

  • Cityscapes: Conjunto de datos de segmentación semántica de escenas urbanas callejeras con 19 clases de entrenamiento.
  • Cityscapes8: Un subconjunto de 8 imágenes de Cityscapes para pruebas rápidas y comprobaciones de CI.
  • ADE20K: Conjunto de datos de análisis de escenas con 150 clases semánticas.

Añadir tu propio dataset#

Opción A: Máscaras PNG#

  1. Guarda tus imágenes en carpetas de división como images/train y images/val.
  2. Guarda una única máscara de un solo canal por imagen en las carpetas de máscara reflejadas, como masks/train y masks/val.
  3. Asegúrate de que los valores de los píxeles de las máscaras sean ID de clase. Usa 255 para los píxeles que deban ignorarse.
  4. Crea un YAML de dataset con path, train, val, masks_dir y names.
  5. Añade label_mapping solo cuando los ID de tus máscaras necesiten convertirse a ID de entrenamiento contiguos.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

Opción B: Etiquetas de polígono#

  1. Dispone las imágenes y los archivos de polígono .txt exactamente igual que para la instance segmentation.
  2. Crea un YAML de dataset con path, train, val y namesomite masks_dir.
  3. Asegúrate de que no exista ninguna carpeta masks/ junto a tus imágenes en la raíz del dataset; su mera presencia cambia el cargador al modo de máscara PNG incluso sin masks_dir en el YAML.
  4. No añadas una entrada "background" a names. Para los datasets multiclase, el cargador añade una automáticamente; para los datasets monoclase, el entrenamiento se mantiene en 1 clase: tu clase declarada se convierte en 1 en la máscara y los píxeles no cubiertos se convierten en 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Ultralytics Platform proporciona una herramienta de anotación de polígonos para la tarea semántica, además de la anotación inteligente asistida por SAM: anota directamente en el navegador y exporta o entrena con el dataset resultante etiquetado con polígonos sin configurar esta estructura a mano.

FAQ#

  • Las máscaras de segmentación semántica son mapas de píxeles densos. Cada píxel almacena un ID de clase y hay una imagen de máscara por imagen de entrenamiento. Las etiquetas de segmentación de instancias en Ultralytics YOLO utilizan archivos de texto con coordenadas de polígono, una fila por instancia de objeto.

  • El valor de píxel 255 se utiliza como etiqueta de omisión. Estos píxeles se omiten durante el cálculo de la pérdida y de las métricas, lo cual es útil para regiones vacías, píxeles sin etiquetar o clases fuera del conjunto de etiquetas de entrenamiento.

  • Sí. Cada máscara semántica debe tener el mismo nombre base que la imagen correspondiente. El cargador de datasets reemplaza el componente de directorio images por masks_dir y busca archivos de máscara coincidentes, recurriendo a otras extensiones de imagen compatibles (.jpg, .tiff, etc.) si no se encuentra una máscara .png, aunque solo se recomiendan formatos sin pérdida, ya que el mecanismo alternativo no lo aplica.

  • Sí, si ya coinciden con tus ID de clase de names. Si el dataset de origen utiliza ID no contiguos o incluye etiquetas que deben ignorarse, añade una sección label_mapping para convertir los valores de los píxeles de origen en ID de entrenamiento.

  • Sí. Los datasets de segmentación de instancias utilizan etiquetas de polígono de Ultralytics YOLO (un .txt por imagen con filas de <class-index> <x1> <y1> <x2> <y2> ...), y los mismos archivos se pueden reutilizar para la segmentación semántica; simplemente omite masks_dir del YAML del dataset y asegúrate de que no exista ninguna carpeta masks/ junto a tus imágenes en la raíz del dataset (su mera presencia activa el modo de máscara PNG incluso sin masks_dir configurado). A continuación, el cargador convierte los polígonos en máscaras por imagen sobre la marcha. Para datasets multiclase (N > 1) se añade una clase adicional background, y el modelo se construye con canales de salida N + 1. Para datasets monoclase (N == 1) el entrenamiento se mantiene en 1 clase: la máscara muestra tu clase declarada como 1 y los píxeles no cubiertos como 0.

  • Ultralytics incluye archivos YAML de dataset listos para usar para Cityscapes (19 clases de escenas urbanas), el subconjunto ligero Cityscapes8 para pruebas de conductos y ADE20K (150 clases de análisis de escenas). Cada página documenta la lista exacta de clases, los pasos de descarga y un ejemplo de entrenamiento verificado.

Comentarios