Saltar a contenido

Segmentación de Instancias

Ejemplos de segmentación de instancias

La segmentación de instancias va un paso más allá de la detección de objetos e implica identificar objetos individuales en una imagen y segmentarlos del resto de la imagen.

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



Mira: Ejecuta la Segmentación con el Modelo Ultralytics YOLOv8 Preentrenado en Python.

Consejo

Los modelos YOLOv8 Segment utilizan el sufijo -seg, es decir, yolov8n-seg.pt y están preentrenados en el COCO.

Modelos

Aquí se muestran los modelos Segment preentrenados YOLOv8. Los modelos Detect, Segment y Pose están preentrenados en el conjunto de datos COCO, mientras que los modelos Classify están preentrenados en el conjunto de datos ImageNet.

Los Modelos se descargan automáticamente desde el último lanzamiento de Ultralytics release en su primer uso.

Modelo Tamaño
(píxeles)
mAPcaja
50-95
mAPmáscara
50-95
Velocidad
CPU ONNX
(ms)
Velocidad
A100 TensorRT
(ms)
Parámetros
(M)
FLOPs
(B)
YOLOv8n-seg 640 36.7 30.5 96.1 1.21 3.4 12.6
YOLOv8s-seg 640 44.6 36.8 155.7 1.47 11.8 42.6
YOLOv8m-seg 640 49.9 40.8 317.0 2.18 27.3 110.2
YOLOv8l-seg 640 52.3 42.6 572.4 2.79 46.0 220.5
YOLOv8x-seg 640 53.4 43.4 712.1 4.02 71.8 344.1
  • Los valores mAPval son para un único modelo a una única escala en el conjunto de datos COCO val2017.
    Reproducir utilizando yolo val segment data=coco.yaml device=0
  • La Velocidad promediada sobre imágenes de COCO val utilizando una instancia de Amazon EC2 P4d.
    Reproducir utilizando yolo val segment data=coco128-seg.yaml batch=1 device=0|cpu

Entrenamiento

Entrena el modelo YOLOv8n-seg en el conjunto de datos COCO128-seg durante 100 épocas con tamaño de imagen de 640. Para una lista completa de argumentos disponibles, consulta la página de Configuración.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-seg.yaml')  # construir un nuevo modelo desde YAML
model = YOLO('yolov8n-seg.pt')  # cargar un modelo preentrenado (recomendado para entrenamiento)
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt')  # construir desde YAML y transferir pesos

# Entrenar el modelo
results = model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)
# Construir un nuevo modelo desde YAML y comenzar a entrenar desde cero
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640

# Comenzar a entrenar desde un modelo *.pt preentrenado
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

# Construir un nuevo modelo desde YAML, transferir pesos preentrenados y comenzar a entrenar
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640

Formato del conjunto de datos

El formato del conjunto de datos de segmentación YOLO puede encontrarse detallado en la Guía de Conjuntos de Datos. Para convertir tu conjunto de datos existente de otros formatos (como COCO, etc.) al formato YOLO, utiliza la herramienta JSON2YOLO de Ultralytics.

Validación

Valida la precisión del modelo YOLOv8n-seg entrenado en el conjunto de datos COCO128-seg. No es necesario pasar ningún argumento ya que el modelo retiene sus datos de entrenamiento y argumentos como atributos del modelo.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-seg.pt')  # cargar un modelo oficial
model = YOLO('ruta/a/mejor.pt')  # cargar un modelo personalizado

# Validar el modelo
metrics = model.val()  # no se necesitan argumentos, el conjunto de datos y configuraciones se recuerdan
metrics.box.map    # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps   # una lista contiene map50-95(B) de cada categoría
metrics.seg.map    # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps   # una lista contiene map50-95(M) de cada categoría
yolo segment val model=yolov8n-seg.pt  # validar el modelo oficial
yolo segment val model=ruta/a/mejor.pt  # validar el modelo personalizado

Predicción

Usa un modelo YOLOv8n-seg entrenado para realizar predicciones en imágenes.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-seg.pt')  # cargar un modelo oficial
model = YOLO('ruta/a/mejor.pt')  # cargar un modelo personalizado

# Predecir con el modelo
results = model('https://ultralytics.com/images/bus.jpg')  # predecir en una imagen
yolo segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg'  # predecir con el modelo oficial
yolo segment predict model=ruta/a/mejor.pt source='https://ultralytics.com/images/bus.jpg'  # predecir con el modelo personalizado

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

Exportación

Exporta un modelo YOLOv8n-seg a un formato diferente como ONNX, CoreML, etc.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-seg.pt')  # cargar un modelo oficial
model = YOLO('ruta/a/mejor.pt')  # cargar un modelo entrenado personalizado

# Exportar el modelo
model.export(format='onnx')
yolo export model=yolov8n-seg.pt format=onnx  # exportar el modelo oficial
yolo export model=ruta/a/mejor.pt format=onnx  # exportar el modelo entrenado personalizado

Los formatos disponibles para exportar YOLOv8-seg se muestran en la tabla a continuación. Puedes predecir o validar directamente en modelos exportados, es decir, yolo predict model=yolov8n-seg.onnx. Se muestran ejemplos de uso para tu modelo después de que se completa la exportación.

Formato Argumento format Modelo Metadatos Argumentos
PyTorch - yolov8n-seg.pt -
TorchScript torchscript yolov8n-seg.torchscript imgsz, optimize
ONNX onnx yolov8n-seg.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-seg_openvino_model/ imgsz, half
TensorRT engine yolov8n-seg.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-seg.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-seg_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-seg.pb imgsz
TF Lite tflite yolov8n-seg.tflite imgsz, half, int8
TF Edge TPU edgetpu yolov8n-seg_edgetpu.tflite imgsz
TF.js tfjs yolov8n-seg_web_model/ imgsz
PaddlePaddle paddle yolov8n-seg_paddle_model/ imgsz
ncnn ncnn yolov8n-seg_ncnn_model/ imgsz, half

Consulta todos los detalles del modo export en la página de Exportación.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (4)

Comentarios