Ir al contenido

Segmentación de Instancias y Tracking usando Ultralytics YOLO26 🚀

¿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 YOLO26 proporciona potentes capacidades de segmentación de instancias que permiten una detección precisa de los límites de los objetos, manteniendo la velocidad y eficiencia por las que son conocidos 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.

  • segment de instancias con Object Tracks: Cada track está representado por un color distinto, facilitando la fácil identificación y el track a través de los fotogramas de video.



Ver: Segmentación de Instancias con Tracking de Objetos usando Ultralytics YOLO26

Muestras

Segmentación de instanciasSegmentación de instancias + Seguimiento de objetos
Segmentación de instancias de UltralyticsSegmentació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 YOLO26
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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
    # classes=[0, 2],  # segment specific classes, e.g., person and car with the 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:

ArgumentoTipoPredeterminadoDescripción
modelstrNoneRuta a un archivo de modelo Ultralytics YOLO.
regionlist'[(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:

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento a utilizar, p. ej., bytetrack.yaml o botsort.yaml.
conffloat0.1Establece el umbral de confianza para las detecciones; los valores más bajos permiten rastrear más objetos, pero pueden incluir falsos positivos.
ioufloat0.7Establece el umbral de Intersección sobre Unión (IoU) para filtrar detecciones superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo rastrea las clases especificadas.
verboseboolTrueControla la visualización de los resultados del seguimiento, proporcionando una salida visual de los objetos rastreados.
devicestrNoneEspecifica 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:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi 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_widthint or NoneNoneEspecifica 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_confboolTrueMuestra 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_labelsboolTrueMuestra 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 YOLO26 tiene numerosas aplicaciones en el mundo real en diversas industrias:

Gestión de residuos y reciclaje

YOLO26 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 alta precisión, lo que permite a los sistemas de clasificación automatizados procesar los residuos de manera más eficiente. Esto es particularmente valioso considerando que solo alrededor del 10% de los 7 mil 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 trackear 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 YOLO26 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 YOLO26 para delinear con precisión los límites de los objetos lo hace valioso para el diagnóstico médico y la planificación del tratamiento.

Monitoreo de obras en construcción

En las obras de construcción, la segmentación de instancias puede rastrear maquinaria pesada, trabajadores y materiales. Esto ayuda a garantizar la seguridad al supervisar las posiciones de los equipos y detectar cuándo los trabajadores entran en á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 YOLO26?

Para realizar la segmentación de instancias usando Ultralytics YOLO26, inicialice el modelo YOLO con una versión de segmentation de YOLO26 y procese los fotogramas de video a través de él. Aquí tiene 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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
)

# 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 YOLO26.

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

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

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

Ultralytics YOLO26 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. YOLO26 procesa imágenes en una sola pasada (detección de una etapa), lo que lo hace significativamente más rápido mientras mantiene una alta precisión. También proporciona una integración perfecta con Ultralytics Platform, lo que permite a los usuarios gestionar modelos, conjuntos de datos y pipelines de entrenamiento de manera eficiente. Para aplicaciones que requieren tanto velocidad como precisión, YOLO26 proporciona un equilibrio óptimo.

¿Hay algún conjunto de datos proporcionado por Ultralytics adecuado para entrenar modelos YOLO26 para la segmentación de instancias y el tracking?

Sí, Ultralytics ofrece varios conjuntos de datos adecuados para entrenar modelos YOLO26 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 puede crear conjuntos de datos personalizados siguiendo el formato Ultralytics. La información completa del conjunto de datos y las instrucciones de uso se pueden encontrar en la documentación de Ultralytics Datasets.



📅 Creado hace 2 años ✏️ Actualizado hace 2 días
glenn-jocherRizwanMunawarRizwanMunawarpderrengerleonnilUltralyticsAssistantMatthewNoyceIvorZhu331

Comentarios