TrackZone con Ultralytics YOLO11
¿Qué es TrackZone?
TrackZone se especializa en el seguimiento de objetos dentro de áreas designadas de un marco en lugar de todo el marco. Basado en Ultralytics YOLO11integra la detección y el seguimiento de objetos específicamente dentro de zonas para vídeos y secuencias de cámaras en directo. YOLO11 Los algoritmos avanzados y las tecnologías de aprendizaje profundo de TrackZone lo convierten en la opción perfecta para casos de uso en tiempo real, ya que ofrece un seguimiento de objetos preciso y eficaz en aplicaciones como la vigilancia y el control de multitudes.
Observa: Cómo rastrear objetos en una región usando Ultralytics YOLO11 | Zona de seguimiento 🚀
Ventajas del seguimiento de objetos por zonas (TrackZone)
- Análisis específicos: El seguimiento de objetos dentro de zonas específicas permite obtener información más específica, lo que posibilita la supervisión y el análisis precisos de áreas de interés, como puntos de entrada o zonas restringidas.
- Mayor eficacia: Al limitar el alcance del seguimiento a zonas definidas, TrackZone reduce la sobrecarga computacional, lo que garantiza un procesamiento más rápido y un rendimiento óptimo.
- Mayor seguridad: El seguimiento zonal mejora la vigilancia mediante la supervisión de áreas críticas, ayudando a la detección temprana de actividades inusuales o brechas de seguridad.
- Soluciones escalables: La capacidad de centrarse en zonas específicas hace que TrackZone se adapte a diversos escenarios, desde espacios comerciales hasta entornos industriales, garantizando una integración y escalabilidad perfectas.
Aplicaciones en el mundo real
Agricultura | Transporte |
---|---|
![]() |
![]() |
Seguimiento de plantas sobre el terreno Ultralytics YOLO11 | Seguimiento de vehículos en carretera mediante Ultralytics YOLO11 |
TrackZone con Ultralytics YOLO
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
# 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("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init trackzone (object tracking in zones, not complete frame)
trackzone = solutions.TrackZone(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt", # use any model that Ultralytics support, i.e. YOLOv9, YOLOv10
# line_width=2, # adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = trackzone(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the video file
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
TrackZone
Argumentos
Aquí tiene una tabla con los TrackZone
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. |
La solución TrackZone incluye compatibilidad con track
parámetros:
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 las siguientes opciones 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. |
PREGUNTAS FRECUENTES
¿Cómo puedo rastrear objetos en un área o zona específica de un fotograma de vídeo utilizando Ultralytics YOLO11 ?
El seguimiento de objetos en un área o zona definida de un fotograma de vídeo es sencillo con Ultralytics YOLO11 . Basta con utilizar el comando que se proporciona a continuación para iniciar el seguimiento. Este enfoque garantiza un análisis eficaz y unos resultados precisos, por lo que resulta ideal para aplicaciones como la vigilancia, la gestión de multitudes o cualquier escenario que requiera un seguimiento zonal.
¿Cómo puedo utilizar TrackZone en Python con Ultralytics YOLO11 ?
Con unas pocas líneas de código, puede configurar el seguimiento de objetos en zonas específicas, lo que facilita la integración en sus proyectos.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init trackzone (object tracking in zones, not complete frame)
trackzone = solutions.TrackZone(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt",
)
# 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 = trackzone(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
¿Cómo configuro los puntos de zona para el procesamiento de vídeo mediante Ultralytics TrackZone?
La configuración de puntos de zona para el procesamiento de vídeo con Ultralytics TrackZone es sencilla y personalizable. Puede definir y ajustar directamente las zonas a través de un script Python , lo que permite un control preciso de las áreas que desea supervisar.
# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
# Initialize trackzone
trackzone = solutions.TrackZone(
show=True, # display the output
region=region_points, # pass region points
)