Conteo de objetos en regiones con Ultralytics YOLO26#
La solución RegionCounter de Ultralytics YOLO26 realiza el seguimiento de objetos entre los fotogramas del vídeo y, en cada fotograma, cuenta los objetos cuyo centro de la caja delimitadora se encuentra dentro de cada región que defines. Cada región se dibuja en el fotograma con su propio recuento en directo, para que puedas supervisar varias zonas, como pasillos de tiendas, carriles de carretera o áreas de producción, con una sola llamada de Python o un comando de CLI.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
¿Por qué usar el conteo por regiones?#
- Varias zonas en una sola pasada: Pasa un diccionario de polígonos con nombre y cada zona tendrá su propio recuento dibujado en el fotograma, de modo que un único flujo de vídeo cubra todas las áreas que te interesen.
- Seguimiento integrado: La solución ejecuta internamente la detección de YOLO26 y el seguimiento de objetos, por lo que no tienes que configurar una canalización de seguimiento independiente.
- Recuentos que puedes leer mediante programación: Cada fotograma procesado devuelve un objeto de resultados con un diccionario de recuentos por región, listo para usar en paneles, alertas o registros.
Aplicaciones en el mundo real#
| Comercio minorista | Calles de mercados |
|---|---|
![]() | ![]() |
| Conteo de personas en regiones con Ultralytics YOLO | Conteo de multitudes en regiones con Ultralytics YOLO |
Cómo contar objetos en regiones con Ultralytics YOLO#
Ejecuta la solución RegionCounter sobre una fuente de vídeo desde la CLI o Python. Una región puede ser una lista de puntos (una sola zona) o un diccionario que asocia nombres de zonas con listas de puntos. El ejemplo de Python siguiente cuenta objetos en dos regiones con nombre y escribe los fotogramas procesados en un archivo de vídeo de salida:
# Run a region counting example
yolo solutions region show=True
# Pass a source video
yolo solutions region source="path/to/video.mp4"
# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Argumentos de RegionCounter()#
Aquí tienes una tabla con los argumentos de RegionCounter:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta al archivo del modelo YOLO de Ultralytics. |
region | list o dict | None | Puntos que definen la región de interés, ya sea una lista de tuplas (x, y) o un diccionario que asigne nombres de región a listas de puntos para varias regiones (solo RegionCounter). Cuando None, las soluciones que requieren una región recurren a una región predeterminada. |
line_width | int | 2 | Grosor de línea de las cajas, los puntos clave y los recuentos que dibuja la solución. |
verbose | bool | True | Activa el registro por fotograma de la solución, que incluye la forma de entrada, los recuentos de clases y la velocidad de procesamiento. La llamada de seguimiento en sí siempre es silenciosa. |
La solución RegionCounter permite usar parámetros de seguimiento de objetos:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica el algoritmo de seguimiento que se utilizará. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza para las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones superpuestas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas. |
device | str | None | Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite seleccionar entre la CPU, una GPU específica u otros dispositivos de cálculo para ejecutar el modelo. |
imgsz | int or tuple | 640 | Tamaño de imagen de inferencia objetivo: un número entero para una imagen cuadrada o un par (height, width). Las formas se ajustan al paso del modelo. |
max_det | int | 300 | Número máximo de detecciones conservadas por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas. |
quantize | int or str | None | Precisión de inferencia: 16 (FP16) o 32/sin definir (FP32) para los modelos de PyTorch y TorchScript; otros formatos calculan a la precisión que seleccionan su artefacto y su motor de ejecución. Sustituye al indicador obsoleto half. |
Además, se admiten los siguientes ajustes de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si True, muestra las imágenes o vídeos anotados en una ventana. Es útil para obtener información visual inmediata durante el desarrollo o las pruebas. |
show_conf | bool | True | Muestra la puntuación de confianza de cada detección junto a su etiqueta. Permite conocer el grado de certeza del modelo para cada detección. |
show_labels | bool | True | Muestra las etiquetas de cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados. |
Cómo funciona el conteo por regiones#
La solución RegionCounter convierte cada región que pasas en un polígono, con al menos tres puntos por región. Una lista simple de puntos se convierte en una única zona llamada Region#01, mientras que un diccionario conserva los nombres de zona que hayas definido; cada zona se dibuja con su propio color de la paleta de Ultralytics. A continuación, cada fotograma se procesa en tres pasos:
- El seguimiento de YOLO26 detecta y sigue todos los objetos del fotograma
- Para cada objeto seguido, la solución calcula el centro de la caja delimitadora y comprueba qué polígonos de región lo contienen
- El recuento de cada región se dibuja en su centro y los recuentos se restablecen antes del siguiente fotograma
Como los recuentos se reinician en cada fotograma, el número mostrado en una región representa su ocupación actual, es decir, cuántos objetos hay dentro en ese momento, no un total acumulado. Para contar acumulativamente los objetos que cruzan un límite, usa la solución ObjectCounter.
Cada llamada también devuelve un objeto de resultados cuyo atributo plot_im contiene el fotograma anotado y cuyo diccionario region_counts asocia los nombres de las regiones con sus recuentos, para que puedas incorporar los números a la lógica de tu propia aplicación.
Conclusión#
La solución RegionCounter de Ultralytics YOLO26 supervisa los recuentos de objetos en directo en tantas zonas con nombre como necesites con unas pocas líneas de código. Para ir más allá, cuenta los cruces de límites con el conteo de objetos, sigue objetos dentro de una sola zona con TrackZone o explora las demás Ultralytics Solutions.
Preguntas frecuentes#
Ultralytics YOLO26 cuenta objetos en regiones siguiendo cada objeto del fotograma y comprobando si el centro de su caja delimitadora se encuentra dentro de cada polígono definido por el usuario. El recuento mostrado en una región representa su ocupación actual en ese fotograma, no un total acumulado. Las opciones de configuración aparecen en la sección
RegionCounter()Arguments.Pasa el argumento
regioncomo un diccionario que asocie los nombres de las zonas con listas de puntos, como en el ejemplo principal:from ultralytics import solutions region_points = { "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)], "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)], } regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)Cada zona con nombre se dibuja con su propio color y tiene un recuento independiente.
El objeto que devuelve cada llamada a
regioncounter(im0)contiene un diccionarioregion_countsque asocia los nombres de las regiones con sus recuentos, junto conplot_im(el fotograma anotado) ytotal_tracks(el número de objetos seguidos). Imprime el objeto de resultados para inspeccionar todos los campos disponibles.Sí. Pasa el argumento
classescon los índices de clase que quieras conservar, por ejemploclasses=[0]para contar solo personas con un modelo preentrenado con COCO. La lista completa de argumentos relacionados con el seguimiento se encuentra en la secciónRegionCounter()Arguments.RegionCountermuestra cuántos objetos hay dentro de cada zona poligonal en el fotograma actual, mientras que ObjectCounter cuenta los objetos de forma acumulativa cuando cruzan una línea o el límite de una región, realizando el seguimiento de los totales de entradas y salidas. UsaRegionCounterpara conocer la ocupación en directo de una o varias zonas yObjectCounterpara contar entradas y salidas;ObjectCounteres el único que admite regiones con forma de línea.

