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 instancias | Segmentación de instancias + 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:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta a un archivo de modelo Ultralytics YOLO. |
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.1 | 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.7 | 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 | int or None | 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 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.
