Link to this sectionSegmentación semántica#
La segmentación semántica asigna una etiqueta de clase a cada píxel de una imagen, produciendo un mapa de clases denso que cubre toda la escena. A diferencia de la segmentación de instancias, que separa objetos individuales, la segmentación semántica agrupa todos los píxeles de la misma clase, independientemente de cuántos objetos distintos estén presentes.
Watch: How to Train Ultralytics YOLO26 Semantic Segmentation Model on Custom Dataset | Ultralytics Platform
La salida de un modelo de segmentación semántica es un único mapa de clases de altura por anchura, donde cada valor de píxel corresponde a una ID de clase predicha. Esto hace que la segmentación semántica sea ideal para tareas de análisis de escenas, como la conducción autónoma, la imagenología médica y la cartografía de cobertura terrestre.
Usa task=semantic o la tarea CLI yolo semantic para la segmentación semántica. Los archivos de modelos de segmentación semántica de YOLO26 utilizan el sufijo -sem, como por ejemplo yolo26n-sem.pt.
Link to this sectionModelos#
A continuación se muestran los modelos de segmentación semántica YOLO26 preentrenados en el conjunto de datos Cityscapes.
Los modelos se descargan automáticamente desde la última versión de Ultralytics al utilizarlos por primera vez.
| Modelo | tamaño (píxeles) | mIoUval | Velocidad RTX3090 PyTorch (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- Los valores de mIoUval son para un modelo único a escala única en el conjunto de validación de Cityscapes.
Reproduce esto conyolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - Las métricas de velocidad están promediadas sobre las imágenes de validación de Cityscapes utilizando una instancia RTX3090.
Reproduce esto conyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - Los valores de Params y FLOPs corresponden al modelo fusionado después de
model.fuse(), que combina las capas Conv y BatchNorm. Los puntos de control preentrenados conservan la arquitectura de entrenamiento completa y pueden mostrar recuentos más altos.
A continuación se muestran los modelos de segmentación semántica YOLO26 preentrenados en el conjunto de datos ADE20K.
Los modelos se descargan automáticamente desde la última versión de Ultralytics al utilizarlos por primera vez.
| Modelo | tamaño (píxeles) | mIoUval | Velocidad RTX3090 PyTorch (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem-ade20k | 640 | 38.8 | 3.9 ± 0.2 | 1.6 | 4.4 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4.2 ± 0.3 | 6.5 | 17.4 |
| YOLO26m-sem-ade20k | 640 | 47.4 | 4.7 ± 0.3 | 14.3 | 59.5 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8.3 ± 0.2 | 17.9 | 75.0 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9.9 ± 0.3 | 40.2 | 168.1 |
- Los valores de mIoUval son para un modelo único a escala única en el conjunto de validación ADE20K.
Reproduce conyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640, reemplazandoyolo26n-sem-ade20k.ptcon el checkpointyolo26*-sem-ade20k.ptdeseado. - Las métricas de velocidad se promedian sobre imágenes de validación de ADE20K utilizando una instancia RTX3090.
Reproduce conyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640, reemplazandoyolo26n-sem-ade20k.ptcon el checkpointyolo26*-sem-ade20k.ptdeseado. - Los valores de Params y FLOPs corresponden al modelo fusionado después de
model.fuse(), que combina las capas Conv y BatchNorm. Los puntos de control preentrenados conservan la arquitectura de entrenamiento completa y pueden mostrar recuentos más altos.
Link to this sectionEntrenar#
Entrena YOLO26n-sem en el conjunto de datos Cityscapes8 durante 100 epochs con un tamaño de imagen de 1024. Para obtener una lista completa de los argumentos disponibles, consulta la página de Configuración.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.yaml") # build a new model from YAML
model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)Consulta los detalles completos del modo train en la página de Entrenamiento.
Link to this sectionFormato del conjunto de datos#
Los conjuntos de datos de segmentación semántica utilizan imágenes de máscara de un solo canal, típicamente PNG, donde cada valor de píxel representa una ID de clase. Los píxeles con valor 255 se tratan como "ignorar" y se excluyen del cálculo de la pérdida. El YAML del conjunto de datos debe especificar las rutas a las imágenes y a sus directorios de máscaras correspondientes. Consulta la Guía de conjuntos de datos de segmentación semántica para conocer los detalles del formato. Los conjuntos de datos compatibles incluyen Cityscapes y ADE20K.
Link to this sectionValidar#
Valida la precisión del modelo YOLO26n-sem entrenado en un conjunto de datos de segmentación semántica. Pasa data explícitamente para que la validación utilice el YAML del conjunto de datos previsto.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou # mean Intersection over Union
metrics.pixel_accuracy # overall pixel accuracyLink to this sectionPredecir#
Usa un modelo YOLO26n-sem entrenado para ejecutar predicciones en imágenes.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
semantic_mask = result.semantic_mask.data # class map, shape (H,W), integer dtype selected by class countConsulta todos los detalles del modo predict en la página Predecir.
Link to this sectionResultado de la salida#
La segmentación semántica de YOLO devuelve un objeto Results por imagen. Cada resultado almacena un mapa de clases denso para toda la imagen en lugar de una lista de máscaras de objetos. Los píxeles con la misma clase predicha comparten la misma ID de clase, incluso cuando pertenecen a objetos separados.
| Atributo | Tipo | Forma | Descripción |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | Mapa de clases denso. |
result.semantic_mask.data | torch.uint8torch.int16torch.int32 | (H,W) | IDs de clase; dtype seleccionado por recuento de clases. |
result.masks | - | - | Sin máscaras de instancia. |
result.boxes | - | - | Sin cajas/confianzas de instancia. |
result.masks.xy | - | - | Sin polígonos predeterminados. |
Para ver los campos de Results específicos de cada tarea, consulta la sección Resultados de predicción por tarea.
Link to this sectionSegmentación de instancias frente a semántica#
| Aspecto | Segmentación de instancias (task="segment") | Segmentación semántica (task="semantic") |
|---|---|---|
| Objetivo de predicción | Segmentar cada objeto detectado por separado | Asignar una ID de clase a cada píxel |
| Campo de salida | result.masks | result.semantic_mask |
| Datos principales | result.masks.data | result.semantic_mask.data |
| Forma | (N,H,W) | (H,W) |
| Valores de píxeles | Valores de máscara binaria: 0 o 1 | IDs de clase: 0, 1, 2, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Objetos de la misma clase | Se mantienen como instancias separadas | Fusionados en la misma región de clase |
| Polígonos | Sí, a través de result.masks.xy y result.masks.xyn | No hay salida de polígono por defecto |
| Cajas y confianza | Sí, a través de result.boxes | No hay cajas ni puntuaciones de confianza por instancia |
| Uso típico | Conteo, seguimiento, recorte, medición a nivel de objeto | Etiquetado denso de escenas, área transitable, cobertura terrestre, regiones médicas |
Link to this sectionExportar#
Exporta un modelo YOLO26n-sem a un formato diferente como ONNX, CoreML, etc.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")Los formatos de exportación de segmentación semántica de YOLO26 disponibles se encuentran en la tabla siguiente. Puedes exportar a cualquier formato utilizando el argumento format, es decir, format='onnx' o format='engine'. Puedes predecir o validar directamente en modelos exportados, es decir, yolo predict model=yolo26n-sem.onnx. Los ejemplos de uso se muestran para tu modelo una vez finalizada la exportación.
| Formato | Argumento format | Modelo | Metadatos | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, quantize, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, quantize, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn.onnx | ✅ | imgsz, batch, name, quantize, data, fraction, device |
Consulta los detalles completos de export en la página Export.
Link to this sectionFAQ#
Link to this section¿Cómo entreno un modelo de segmentación semántica YOLO26 en un conjunto de datos personalizado?#
Para entrenar un modelo de segmentación semántica YOLO26 en un conjunto de datos personalizado, necesitas preparar imágenes de máscara PNG donde cada valor de píxel represente una ID de clase (0, 1, 2, ...) y los píxeles con valor 255 se ignoren durante el entrenamiento. Crea un archivo YAML de conjunto de datos que apunte a tus directorios de imágenes y máscaras, luego entrena el modelo:
from ultralytics import YOLO
# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)Consulta la página de Configuración para ver más argumentos disponibles.
Link to this section¿Cuál es la diferencia entre la segmentación de instancias y la segmentación semántica?#
La segmentación de instancias y la segmentación semántica son tareas a nivel de píxel, pero difieren en un aspecto clave:
- La segmentación semántica asigna una etiqueta de clase a cada píxel, pero no distingue entre objetos individuales de la misma clase. Por ejemplo, todos los coches en una escena comparten la misma etiqueta de clase.
- La segmentación de instancias identifica cada objeto individual por separado, produciendo máscaras distintas para cada objeto, incluso si pertenecen a la misma clase.
La segmentación semántica es la más adecuada para tareas de comprensión de escenas como la conducción autónoma y la cartografía de cobertura terrestre, mientras que la segmentación de instancias se prefiere cuando importa el conteo o el seguimiento de objetos individuales.
Link to this section¿Puedo utilizar datos de segmentación de instancias para entrenar la segmentación semántica?#
Sí. Si tu conjunto de datos utiliza etiquetas de polígono de Ultralytics YOLO (un .txt por imagen), omite masks_dir del YAML del conjunto de datos y el cargador convertirá los polígonos en máscaras semánticas por imagen sobre la marcha. Para conjuntos de datos de clases múltiples (N > 1), se añade automáticamente una clase background extra a names. Para conjuntos de datos de una sola clase (N == 1), el entrenamiento permanece en 1 clase; tu clase declarada se convierte en 1 en la máscara y los píxeles no cubiertos se convierten en 0. Consulta la Guía de conjuntos de datos de segmentación semántica para obtener más detalles.
Link to this section¿Qué conjuntos de datos son compatibles con la segmentación semántica?#
Ultralytics YOLO26 proporciona configuraciones integradas para varios conjuntos de datos de segmentación semántica:
- Cityscapes: Escenas de calles urbanas con 19 clases, ampliamente utilizadas para la investigación en conducción autónoma.
- ADE20K: Un conjunto de datos de análisis de escenas a gran escala con 150 clases.
También puedes utilizar cualquier conjunto de datos personalizado que proporcione anotaciones de máscara PNG donde los valores de píxel correspondan a las IDs de clase.
Link to this section¿Cómo valido un modelo de segmentación semántica YOLO26 preentrenado?#
Valida un modelo de segmentación semántica YOLO26 preentrenado con el YAML del conjunto de datos utilizado para la evaluación:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)Estos pasos te proporcionarán métricas de validación como la intersección sobre unión media (mIoU) y la precisión de píxeles, que son medidas estándar para evaluar el rendimiento de la segmentación semántica.
Link to this section¿Cómo puedo exportar un modelo de segmentación semántica YOLO26 al formato ONNX?#
Exporta un modelo de segmentación semántica YOLO26 al formato ONNX con comandos de Python o CLI:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Export the model to ONNX format
model.export(format="onnx")Para obtener más detalles sobre la exportación a varios formatos, consulta la página de Exportación.