Ir al contenido

Segmentación y seguimiento de instancias utilizando Ultralytics YOLO11 🚀

¿Qué es la Segmentación de Instancias?

La segmentación de instancias es una tarea de visión artificial que implica la identificación y el delineado de objetos individuales en una imagen a nivel de píxel. A diferencia de la segmentación semántica, que solo clasifica los píxeles por categoría, la segmentación de instancias etiqueta de forma única y delimita con precisión cada instancia de objeto, lo que la hace crucial para aplicaciones que requieren una comprensión espacial detallada como imágenes médicas, conducción autónoma y automatización industrial.

Ultralytics YOLO11 proporciona potentes capacidades de segmentación de instancias que permiten una detección precisa de los límites de los objetos, manteniendo al mismo tiempo la velocidad y la eficiencia por las que se conocen los modelos YOLO.

Existen dos tipos de seguimiento de segmentación de instancias disponibles en el paquete Ultralytics:

  • Segmentación de instancias con objetos de clase: A cada objeto de clase se le asigna un color único para una clara separación visual.

  • Segmentación de instancias con seguimiento de objetos: Cada pista está representada por un color distinto, lo que facilita la identificación y el seguimiento a través de los fotogramas de vídeo.



Ver: Segmentación de instancias con seguimiento de objetos usando Ultralytics YOLO11

Muestras

Segmentación de instancias Segmentación de instancias + Seguimiento de objetos
Segmentación de instancias de Ultralytics Segmentación de Instancias con Ultralytics y Seguimiento de Objetos
Segmentación de Instancias con Ultralytics 😍 Segmentación de Instancias con Ultralytics y Seguimiento de Objetos 🔥

Segmentación de instancias usando Ultralytics YOLO

# Instance segmentation using Ultralytics YOLO11
yolo solutions isegment show=True

# Pass a source video
yolo solutions isegment source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
    # classes=[0, 2],  # segment specific classes i.e, person and car with pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = isegment(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

InstanceSegmentation Argumentos

Aquí tiene una tabla con el InstanceSegmentation argumentos:

Argumento Tipo Predeterminado Descripción
model str None Ruta al archivo del modelo YOLO de Ultralytics.
region list '[(20, 400), (1260, 400)]' Lista de puntos que definen la región de conteo.

También puede aprovechar track argumentos dentro del InstanceSegmentation solución:

Argumento Tipo Predeterminado Descripción
tracker str 'botsort.yaml' Especifica el algoritmo de seguimiento a utilizar, p. ej., bytetrack.yaml o botsort.yaml.
conf float 0.3 Establece el umbral de confianza para las detecciones; los valores más bajos permiten rastrear más objetos, pero pueden incluir falsos positivos.
iou float 0.5 Establece el umbral de Intersección sobre Unión (IoU) para filtrar detecciones superpuestas.
classes list None Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo rastrea las clases especificadas.
verbose bool True Controla la visualización de los resultados del seguimiento, proporcionando una salida visual de los objetos rastreados.
device str None Especifica el dispositivo para la inferencia (p. ej., cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, una GPU específica u otros dispositivos de cálculo para la ejecución del modelo.

Además, los siguientes argumentos de visualización están disponibles:

Argumento Tipo Predeterminado Descripción
show bool False Si True, muestra las imágenes o vídeos anotados en una ventana. Útil para obtener información visual inmediata durante el desarrollo o las pruebas.
line_width None or int None Especifica el ancho de línea de los cuadros delimitadores. Si None, el ancho de línea se ajusta automáticamente en función del tamaño de la imagen. Proporciona personalización visual para mayor claridad.
show_conf bool True Muestra la puntuación de confianza para cada detección junto con la etiqueta. Ofrece información sobre la certeza del modelo para cada detección.
show_labels bool True Muestra etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.

Aplicaciones de la segmentación de instancias

La segmentación de instancias con YOLO11 tiene numerosas aplicaciones en el mundo real en diversas industrias:

Gestión de residuos y reciclaje

YOLO11 puede utilizarse en instalaciones de gestión de residuos para identificar y clasificar diferentes tipos de materiales. El modelo puede segmentar residuos plásticos, cartón, metal y otros materiales reciclables con gran precisión, lo que permite a los sistemas de clasificación automatizados procesar los residuos de forma más eficiente. Esto es particularmente valioso si se tiene en cuenta que sólo alrededor del 10% de los 7.000 millones de toneladas de residuos plásticos generados a nivel mundial se reciclan.

Vehículos autónomos

En coches autónomos, la segmentación de instancias ayuda a identificar y rastrear peatones, vehículos, señales de tráfico y otros elementos de la carretera a nivel de píxel. Esta comprensión precisa del entorno es crucial para la navegación y las decisiones de seguridad. El rendimiento en tiempo real de YOLO11 lo hace ideal para estas aplicaciones sensibles al tiempo.

Imágenes Médicas

La segmentación de instancias puede identificar y delinear tumores, órganos o estructuras celulares en escaneos médicos. La capacidad de YOLO11 para delinear con precisión los límites de los objetos la hace valiosa para el diagnóstico médico y la planificación del tratamiento.

Monitoreo de obras en construcción

En los sitios de construcción, la segmentación de instancias puede rastrear maquinaria pesada, trabajadores y materiales. Esto ayuda a garantizar la seguridad al monitorear las posiciones de los equipos y detectar cuándo los trabajadores ingresan a áreas peligrosas, al tiempo que optimiza el flujo de trabajo y la asignación de recursos.

Nota

Para cualquier consulta, no dude en publicar sus preguntas en la Sección de Problemas de Ultralytics o en la sección de debate que se menciona a continuación.

Preguntas frecuentes

¿Cómo realizo la segmentación de instancias usando Ultralytics YOLO11?

Para realizar la segmentación de instancias utilizando Ultralytics YOLO11, inicializa el modelo YOLO con una versión de segmentación de YOLO11 y procesa los fotogramas de video a través de él. Aquí tienes un ejemplo de código simplificado:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break
    results = isegment(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Obtenga más información sobre la segmentación de instancias en la guía de Ultralytics YOLO11.

¿Cuál es la diferencia entre la segmentación de instancias y el seguimiento de objetos en Ultralytics YOLO11?

La segmentación de instancias identifica y delinea objetos individuales dentro de una imagen, dando a cada objeto una etiqueta y máscara únicas. El seguimiento de objetos extiende esto asignando IDs consistentes a los objetos a través de los fotogramas de vídeo, facilitando el seguimiento continuo de los mismos objetos a lo largo del tiempo. Cuando se combinan, como en la implementación de YOLO11, se obtienen potentes capacidades para analizar el movimiento y el comportamiento de los objetos en vídeos, manteniendo al mismo tiempo una información precisa de los límites.

¿Por qué debería usar Ultralytics YOLO11 para la segmentación de instancias y el seguimiento en lugar de otros modelos como Mask R-CNN o Faster R-CNN?

Ultralytics YOLO11 ofrece rendimiento en tiempo real, precisión superior y facilidad de uso en comparación con otros modelos como Mask R-CNN o Faster R-CNN. YOLO11 procesa las imágenes en una sola pasada (detección de una etapa), lo que lo hace significativamente más rápido sin dejar de mantener una alta precisión. También proporciona una integración perfecta con Ultralytics HUB, lo que permite a los usuarios gestionar los modelos, los conjuntos de datos y las canalizaciones de entrenamiento de forma eficiente. Para las aplicaciones que requieren tanto velocidad como precisión, YOLO11 proporciona un equilibrio óptimo.

¿Existen conjuntos de datos proporcionados por Ultralytics adecuados para entrenar modelos YOLO11 para la segmentación y el seguimiento de instancias?

Sí, Ultralytics ofrece varios conjuntos de datos adecuados para entrenar modelos YOLO11 para la segmentación de instancias, incluyendo COCO-Seg, COCO8-Seg (un subconjunto más pequeño para pruebas rápidas), Package-Seg y Crack-Seg. Estos conjuntos de datos vienen con anotaciones a nivel de píxel necesarias para las tareas de segmentación de instancias. Para aplicaciones más especializadas, también puedes crear conjuntos de datos personalizados siguiendo el formato de Ultralytics. Puedes encontrar información completa sobre los conjuntos de datos e instrucciones de uso en la documentación de Conjuntos de Datos de Ultralytics.



📅 Creado hace 1 año ✏️ Actualizado hace 4 meses

Comentarios