Descripción general de los conjuntos de datos de segmentación semántica#
La segmentación semántica asigna una etiqueta de clase a cada píxel de una imagen. A diferencia de la segmentación de instancias, la segmentación semántica no separa los objetos individuales de una misma clase. El objetivo de entrenamiento es un mapa de clases denso en el que cada píxel almacena un ID de clase.
Esta guía explica el formato de conjunto de datos que utilizan los modelos Ultralytics YOLO de segmentación semántica y enumera las configuraciones de conjuntos de datos integradas disponibles para el entrenamiento y la validación.
Formatos de conjuntos de datos compatibles#
Se admiten dos formatos de etiquetas. El cargador del conjunto de datos selecciona las máscaras PNG si el YAML del conjunto de datos define una clave masks_dir o si ya existe una carpeta masks/ junto a las imágenes en la raíz del conjunto de datos; de lo contrario, recurre a las etiquetas de polígonos YOLO.
Formato de máscara PNG#
Los conjuntos de datos 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 el valor de cada píxel es el índice de clase correspondiente al píxel de la imagen.
- Los valores de píxel
0,1,2, ... representan los ID de clase de la correspondencianamesdel conjunto de datos. - El valor de píxel
255se trata como etiqueta de exclusión y se excluye del cálculo de pérdidas y métricas. - Los archivos de máscara deben tener el mismo nombre base que el archivo de imagen correspondiente, por ejemplo,
frankfurt_000000_000294.png. - De forma predeterminada, las máscaras se buscan como
.png; si no se encuentran, también se aceptan otras extensiones de imagen compatibles. Utiliza formatos sin pérdida como.pngo.tiff, ya que la compresión con pérdida (p. ej.,.jpg) altera los valores de píxel 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 conjunto de datos sustituye al componente de ruta images para encontrar las máscaras.
dataset/
├── images/
│ ├── train/
│ └── val/
└── masks/
├── train/
└── val/Por ejemplo, a la imagen images/train/aachen_000000_000019.png le corresponde la máscara masks/train/aachen_000000_000019.png cuando masks_dir: masks.
Formato de etiquetas de polígonos YOLO#
Si tu conjunto de datos ya tiene etiquetas de polígonos Ultralytics YOLO (un .txt por imagen con filas <class-index> <x1> <y1> <x2> <y2> ...), puedes entrenar directamente con ellas un modelo de segmentación semántica, sin necesidad de convertirlas a máscaras PNG. Consulta el formato de conjuntos de datos de segmentación de instancias para ver la estructura de las filas.
Esta ruta se selecciona automáticamente cuando el YAML del conjunto de datos no incluye masks_dir y no existe una carpeta masks/ junto a las imágenes en la raíz del conjunto de datos. Elimina o cambia el nombre de cualquier carpeta masks/ sobrante; de lo contrario, el cargador recurrirá al modo de máscaras PNG y buscará las máscaras en ella. Funcionamiento:
- Los polígonos se convierten en una máscara semántica por imagen durante la carga y se ordenan por área, de modo que los objetos más pequeños prevalecen sobre los más grandes en las zonas superpuestas.
- Varias clases (
N > 1ennames): se añade una clasebackgroundadicional después de las clases declaradas para los píxeles que no cubre ningún polígono. El modelo se crea conN + 1canales de salida, y el último canal corresponde al fondo. - Una sola clase (
N == 1ennames): se sigue entrenando con una clase. La máscara es binaria: la clase declarada se representa como1y los píxeles que no cubre ningún polígono, como0. No se añade ninguna clase de fondo adicional anames. - Los píxeles añadidos por el relleno de la ampliación de datos (p. ej., un recorte aleatorio) siguen utilizando
255como etiqueta de exclusión.
Utiliza esta ruta cuando tus datos ya estén etiquetados con polígonos de instancias y quieras crear un modelo de segmentación semántica a partir de los mismos archivos.
Formato YAML del conjunto de datos#
Los conjuntos de datos de segmentación semántica se configuran con archivos YAML. Los campos principales son:
| Clave | Descripción |
|---|---|
path | Directorio raíz del conjunto de datos. |
train | Ruta de las imágenes de entrenamiento relativa a path o una ruta absoluta. |
val | Ruta de las imágenes de validación relativa a path o una ruta absoluta. |
test | Ruta opcional de las imágenes de prueba. |
masks_dir | Nombre del directorio utilizado para las máscaras semánticas. Omite esta clave (si no hay una carpeta masks/ en la raíz del conjunto de datos) para cambiar al formato de etiquetas de polígonos YOLO. |
names | Correspondencia entre el ID de clase y el nombre de clase. |
label_mapping | Correspondencia opcional de los ID del conjunto de datos de origen con los ID de entrenamiento o con ignore_label. |
# 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.zipUsa 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 correspondencias que convierten los ID de etiqueta 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 la CLI:
from ultralytics import YOLO
# Cargar un modelo de segmentación semántica preentrenado
model = YOLO("yolo26n-sem.pt")
# Entrenar con el conjunto de datos de segmentación semántica Cityscapes8
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)Conjuntos de datos compatibles#
Ultralytics proporciona archivos YAML de conjuntos de datos de segmentación semántica para estos conjuntos de datos. Consulta la página de la tarea de segmentación semántica para ver la tabla completa de referencia de modelos preentrenados.
- Cityscapes: conjunto de datos de segmentación semántica de escenas urbanas con 19 clases de entrenamiento.
- Cityscapes8: subconjunto de Cityscapes con 8 imágenes para pruebas rápidas y comprobaciones de CI.
- ADE20K: conjunto de datos de interpretación de escenas con 150 clases semánticas.
Añadir tu propio conjunto de datos#
Opción A — Máscaras PNG#
- Guarda las imágenes en carpetas de particiones como
images/trainyimages/val. - Guarda una máscara de un solo canal por imagen en las carpetas de máscaras correspondientes, como
masks/trainymasks/val. - Asegúrate de que los valores de píxel de las máscaras sean ID de clase. Usa
255para los píxeles que deban ignorarse. - Crea un YAML del conjunto de datos con
path,train,val,masks_dirynames. - Añade
label_mappingsolo cuando los ID de las máscaras deban convertirse en 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: buildingOpción B — Etiquetas de polígonos#
- Organiza las imágenes y los archivos de polígonos
.txtexactamente igual que para la segmentación de instancias. - Crea un YAML del conjunto de datos con
path,train,valynames— omitemasks_dir. - Asegúrate de que no haya ninguna carpeta
masks/junto a las imágenes en la raíz del conjunto de datos: su mera presencia activa el modo de máscaras PNG del cargador, aunquemasks_dirno esté en el YAML. - No añadas una entrada «background» a
names. En los conjuntos de datos multiclase, el cargador añade una automáticamente; en los conjuntos de datos de una sola clase, el entrenamiento se mantiene en 1 clase: la clase que declares se convierte en1en la máscara y los píxeles sin cubrir pasan a ser0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carUltralytics Platform proporciona una herramienta de anotación de polígonos para la tarea semántica, además de anotación inteligente asistida por SAM: anota directamente en el navegador y exporta el conjunto de datos etiquetado con polígonos resultante, o entrénalo, sin tener que configurar esta estructura manualmente.
Preguntas frecuentes#
Las máscaras de segmentación semántica son mapas densos de píxeles. Cada píxel almacena un ID de clase y hay una imagen de máscara por cada imagen de entrenamiento. Las etiquetas de segmentación de instancias de Ultralytics YOLO usan archivos de texto con coordenadas de polígonos, una fila por cada instancia de objeto.
El valor de píxel
255se usa como etiqueta de omisión. Estos píxeles se excluyen del cálculo de la pérdida y las métricas, lo que resulta útil para regiones vacías, píxeles sin etiquetar o clases que no formen parte del conjunto de etiquetas de entrenamiento.Sí. Cada máscara semántica debe tener el mismo nombre base de archivo que la imagen correspondiente. El cargador del conjunto de datos sustituye el componente de directorio
imagespormasks_diry busca archivos de máscara coincidentes; si no encuentra una máscara.png, recurre a otras extensiones de imagen compatibles (.jpg,.tiff, etc.), aunque solo se recomiendan formatos sin pérdida, ya que este método alternativo no lo garantiza.Sí, si ya coinciden con los ID de clase de
names. Si el conjunto de datos de origen usa ID no contiguos o incluye etiquetas que deban ignorarse, añade una secciónlabel_mappingpara convertir los valores de píxel de origen en ID de entrenamiento.Sí. Los conjuntos de datos de segmentación de instancias usan etiquetas de polígonos de Ultralytics YOLO (un
.txtpor imagen con filas<class-index> <x1> <y1> <x2> <y2> ...), y puedes reutilizar los mismos archivos para la segmentación semántica: solo omitemasks_dirdel YAML del conjunto de datos y asegúrate de que no haya ninguna carpetamasks/junto a las imágenes en la raíz del conjunto de datos (su mera presencia activa el modo de máscaras PNG, aunque no se haya definidomasks_dir). El cargador convierte entonces los polígonos en máscaras por imagen sobre la marcha. En los conjuntos de datos multiclase (N > 1), se añade una clasebackgroundadicional y el modelo se crea conN + 1canales de salida. En los conjuntos de datos de una sola clase (N == 1), el entrenamiento se mantiene en 1 clase: la máscara muestra la clase que declares como1y los píxeles sin cubrir como0.Ultralytics incluye archivos YAML de conjuntos de datos listos para usar para Cityscapes (19 clases de escenas urbanas), el subconjunto ligero Cityscapes8 para probar flujos de trabajo y ADE20K (150 clases de interpretación de escenas). Cada página documenta la lista exacta de clases, los pasos de descarga y un ejemplo de entrenamiento verificado.