Segmentación y seguimiento de instancias mediante Ultralytics YOLO11 🚀
¿Qué es la segmentación de instancias?
La segmentación de instancias es una tarea de visión por ordenador que consiste en identificar y delinear 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ías, la segmentación por instancias etiqueta de forma única y delimita con precisión cada instancia de objeto, por lo que resulta crucial para aplicaciones que requieren una comprensión espacial detallada, como las imágenes médicas, la conducción autónoma y la automatización industrial.
Ultralytics YOLO11 ofrece potentes funciones de segmentación de instancias que permiten detectar con precisión los límites de los objetos, manteniendo la velocidad y eficacia por las que son conocidos los modelos YOLO .
Existen dos tipos de seguimiento de la 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 separación visual clara.
-
Segmentación de instancias con pistas 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.
Observa: Segmentación de instancias con seguimiento de objetos mediante Ultralytics YOLO11
Muestras
Segmentación de instancias | Segmentación de instancias + Seguimiento de objetos |
---|---|
![]() |
![]() |
Ultralytics Segmentación de instancias 😍 | Ultralytics Segmentación de instancias con seguimiento de objetos 🔥 |
Segmentación de instancias mediante Ultralytics YOLO
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 los InstanceSegmentation
argumentos:
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
model |
str |
None |
Ruta al archivo del modeloYOLO Ultralytics . |
region |
list |
[(20, 400), (1260, 400)] |
Lista de puntos que definen la región de recuento. |
También puede beneficiarse de track
argumentos dentro del InstanceSegmentation
solución:
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Especifica el algoritmo de seguimiento a utilizar, por ejemplo, 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 las detecciones solapadas. |
classes |
list |
None |
Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] sólo rastrea las clases especificadas. |
verbose |
bool |
True |
Controla la visualización de los resultados del rastreo, proporcionando una salida visual de los objetos rastreados. |
device |
str |
None |
Especifica el dispositivo para la inferencia (por ejemplo, cpu , cuda:0 o 0 ). Permite a los usuarios seleccionar entre CPU, un GPU específico u otros dispositivos de cálculo para la ejecución del modelo. |
Además, dispone de los siguientes argumentos de visualización:
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
show |
bool |
False |
Si True muestra las imágenes o vídeos anotados en una ventana. Resulta ú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. |
Aplicaciones de la segmentación de instancias
La segmentación de instancias con YOLO11 tiene numerosas aplicaciones reales en diversos sectores:
Gestión de residuos y reciclaje
YOLO11 puede utilizarse en instalaciones de gestión de residuos para identificar y clasificar distintos 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 automatizados de clasificación procesar los residuos con mayor eficacia. Esto es especialmente valioso si se tiene en cuenta que sólo se recicla el 10% de los 7.000 millones de toneladas de residuos plásticos que se generan en el mundo.
Vehículos autónomos
En los coches autoconducidos, la segmentación de instancias ayuda a identificar y seguir a peatones, vehículos, señales de tráfico y otros elementos de la carretera a nivel de píxel. Este conocimiento preciso del entorno es crucial para las decisiones de navegación y seguridad. El rendimiento en tiempo real de YOLO11 lo hace ideal para estas aplicaciones sensibles al tiempo.
Imagen médica
La segmentación de instancias permite identificar y delinear tumores, órganos o estructuras celulares en exploraciones médicas. La capacidad de YOLO11 para delinear con precisión los límites de los objetos lo hace valioso para el diagnóstico médico y la planificación de tratamientos.
Supervisión de obras
En las obras de construcción, la segmentación de instancias puede realizar un seguimiento de la maquinaria pesada, los trabajadores y los materiales. Esto ayuda a garantizar la seguridad supervisando las posiciones de los equipos y detectando cuándo los trabajadores entran en zonas 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 deUltralytics o en la sección de debate mencionada a continuación.
PREGUNTAS FRECUENTES
¿Cómo se realiza la segmentación de instancias mediante Ultralytics YOLO11 ?
Para realizar la segmentación de instancias utilizando Ultralytics YOLO11 , inicialice el modelo YOLO con una versión de segmentación de YOLO11 y procese los fotogramas de vídeo a través de él. He aquí 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íaUltralytics 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 perfila objetos individuales dentro de una imagen, asignando a cada objeto una etiqueta y una máscara únicas. El seguimiento de objetos amplía esta función asignando identificadores coherentes a los objetos en todos los fotogramas de vídeo, lo que facilita 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 los vídeos, al tiempo que se mantiene una información precisa de los límites.
¿Por qué debería utilizar Ultralytics YOLO11 para la segmentación y el seguimiento, por ejemplo, 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 en una sola etapa), lo que lo hace significativamente más rápido a la vez que mantiene una alta precisión. También ofrece una integración perfecta con Ultralytics HUB, lo que permite a los usuarios gestionar modelos, conjuntos de datos y canales de formación de forma eficaz. Para aplicaciones que requieren tanto velocidad como precisión, YOLO11 ofrece un equilibrio óptimo.
¿Existen conjuntos de datos proporcionados por Ultralytics adecuados para entrenar modelos YOLO11 , por ejemplo de segmentación y seguimiento?
Sí, Ultralytics ofrece varios conjuntos de datos adecuados para el entrenamiento de modelos YOLO11 para la segmentación de instancias, incluidos COCO-Seg, COCO8-Seg (un subconjunto más pequeño para pruebas rápidas), Package-Seg y Crack-Seg. Estos conjuntos de datos incluyen las anotaciones a nivel de píxel necesarias para las tareas de segmentación de instancias. Para aplicaciones más especializadas, también se pueden crear conjuntos de datos personalizados siguiendo el formato de Ultralytics . Encontrará información completa sobre los conjuntos de datos e instrucciones de uso en la documentación sobre los conjuntos de datos de Ultralytics .