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.
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 un ID de clase predicho. Esto hace que la segmentación semántica sea ideal para tareas de análisis de escenas como la conducción autónoma, imágenes médicas y mapeo de cobertura terrestre.
Utiliza task=semantic o la tarea CLI yolo semantic para la segmentación semántica. Los archivos de modelos de segmentación semántica YOLO26 utilizan el sufijo -sem, como yolo26n-sem.pt.
Link to this sectionModelos#
Los modelos de segmentación semántica YOLO26 preentrenados en el conjunto de datos Cityscapes se muestran a continuación.
Los modelos se descargan automáticamente desde la última versión de Ultralytics en su primer uso.
| Modelo | tamaño (píxeles) | mIoUval | Velocidad RTX3090 PyTorch (ms) | parámetros (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 solo modelo a una sola escala en el conjunto de validación de Cityscapes.
Reproduce conyolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - Las métricas de Velocidad se promedian sobre las imágenes de validación de Cityscapes utilizando una instancia RTX3090.
Reproduce conyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - Los valores de Parámetros y FLOPs son para el 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 épocas 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, normalmente PNG, donde cada valor de píxel representa un 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 del conjunto de datos de segmentación semántica para obtener detalles sobre el 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#
Utiliza 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 los detalles completos del modo predict en la página de Predicción.
Link to this sectionResultado de la salida#
La segmentación semántica YOLO devuelve un objeto Results por imagen. Cada resultado almacena un mapa de clases denso para la imagen completa en lugar de una lista de máscaras de objetos. Los píxeles con la misma clase predicha comparten el mismo 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 según el recuento de clases. |
result.masks | - | - | No hay máscaras de instancia. |
result.boxes | - | - | No hay cajas/confianzas de instancia. |
result.masks.xy | - | - | No hay 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 un 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íxel | 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 | Se fusionan 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 de forma predeterminada |
| 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 a continuación. Puedes exportar a cualquier formato usando el argumento format, por ejemplo, format='onnx' o format='engine'. Puedes realizar predicciones o validaciones directamente en los modelos exportados, por ejemplo, yolo predict model=yolo26n-sem.onnx. Se muestran ejemplos de uso para tu modelo una vez que se completa la exportación.
| Formato | Argumento format | Modelo | Metadatos | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Consulta todos los detalles de export en la página Export.
Link to this sectionPreguntas frecuentes#
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 con un conjunto de datos personalizado, necesitas preparar imágenes de máscara PNG donde cada valor de píxel represente un 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)Revisa 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?#
Tanto la segmentación de instancias como la segmentación semántica son tareas a nivel de píxel, pero difieren en un aspecto clave:
- 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.
- 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 el mapeo de cobertura terrestre, mientras que la segmentación de instancias es preferible cuando importa contar o rastrear 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 archivo .txt por imagen), omite masks_dir del YAML del conjunto de datos y el cargador convertirá los polígonos a máscaras semánticas por imagen sobre la marcha. Para conjuntos de datos multiclase (N > 1), se añade automáticamente una clase background adicional 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 de conducción autónoma.
- ADE20K: Un conjunto de datos de análisis de escenas a gran escala con 150 clases.
También puedes usar cualquier conjunto de datos personalizado que proporcione anotaciones de máscara PNG donde los valores de los píxeles correspondan a los 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 media de Intersección sobre Unión (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 Python o comandos 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 más detalles sobre la exportación a varios formatos, consulta la página Export.