Recuento de objetos en regiones con Ultralytics YOLO26#
La RegionCounter solution en Ultralytics YOLO26 rastrea objetos a través de los fotogramas de vídeo y, en cada fotograma, cuenta los objetos cuyo centro de cuadro delimitador se encuentra dentro de cada región que defines. Cada región se dibuja en el fotograma con su propio recuento en directo, por lo que puedes supervisar varias zonas, como pasillos de tiendas, carriles de carreteras o áreas de producción, con una sola llamada de Python o comando de CLI.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
¿Por qué utilizar el recuento por regiones?#
- Varias zonas en una sola pasada: Pasa un diccionario de polígonos con nombre y cada zona obtendrá un recuento independiente dibujado en el fotograma, por lo que una única secuencia de vídeo cubre todas las áreas que te interesen.
- Seguimiento integrado: La solución ejecuta la detección de YOLO26 y el object tracking internamente, por lo que no hay ninguna tubería de seguimiento separada que configurar.
- Recuentos que puedes leer mediante programación: Cada fotograma procesado devuelve un objeto de resultados con un diccionario de recuentos de regiones, listo para paneles de control, alertas o registro de datos.
Aplicaciones en el mundo real#
| Comercio minorista | Calles comerciales |
|---|---|
![]() | ![]() |
| Recuento de personas en regiones con Ultralytics YOLO | Recuento de multitudes en regiones con Ultralytics YOLO |
Cómo contar objetos en regiones con Ultralytics YOLO#
Ejecuta la solución RegionCounter en 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 asocie nombres de zonas con listas de puntos. El ejemplo de Python a continuación 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 a un archivo de 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 mapea nombres de regiones a listas de puntos para múltiples regiones (solo RegionCounter). Cuando es None, las soluciones que requieren una región recurren a un valor predeterminado. |
line_width | int | 2 | Grosor de línea para las cajas, puntos clave y recuentos que dibuja la solución. |
verbose | bool | True | Habilita el registro por fotograma de la solución sobre 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 el uso de parámetros de seguimiento de objetos:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica el algoritmo de seguimiento que se va a 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; valores más bajos permiten el seguimiento de más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de Intersection over Union (IoU) para filtrar detecciones superpuestas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo realiza el seguimiento de las clases especificadas. |
device | str | None | Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, una GPU específica u otros dispositivos de computación para la ejecución del modelo. |
Además, se admiten los siguientes ajustes de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si es True, muestra las imágenes o vídeos anotados en una ventana. Es útil para obtener retroalimentación visual inmediata durante el desarrollo o las pruebas. |
show_conf | bool | True | Muestra la puntuación de confianza para cada detección junto a la etiqueta. Proporciona información sobre la certeza del modelo para cada detección. |
show_labels | bool | True | Muestra las etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados. |
Cómo funciona el recuento por regiones#
La RegionCounter solution 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 mantiene tus propios nombres de zona; cada zona se dibuja en 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 a cada objeto en el fotograma
- Para cada objeto rastreado, la solución calcula el centro del BBox 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 reinician antes del siguiente fotograma
Dado que los recuentos se reinician en cada fotograma, el número mostrado en una región es su ocupación actual, lo que significa cuántos objetos hay dentro de ella en este momento, no un total acumulado. Para contar objetos que cruzan un límite de forma acumulativa, utiliza la ObjectCounter solution en su lugar.
Cada llamada también devuelve un objeto de resultados cuyo atributo plot_im contiene el fotograma anotado y cuyo diccionario region_counts mapea los nombres de las regiones a sus recuentos, para que puedas introducir los números en la lógica de tu propia aplicación.
Conclusión#
La solución Ultralytics YOLO26 RegionCounter supervisa 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 object counting, sigue objetos dentro de una sola zona con TrackZone, o explora las otras Ultralytics Solutions.
FAQ#
Ultralytics YOLO26 cuenta objetos en regiones rastreando cada objeto en el fotograma y comprobando si el centro de su cuadro delimitador se encuentra dentro de cada polígono definido por el usuario. El recuento mostrado en una región es su ocupación actual para ese fotograma, no un total acumulado. Las opciones de configuración se enumeran en la sección
RegionCounter()Arguments.Pasa el argumento
regioncomo un diccionario que relacione los nombres de las zonas con listas de puntos, como en el main example: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 un recuento independiente.
El objeto devuelto por cada llamada a
regioncounter(im0)lleva un diccionarioregion_countsque mapea los nombres de las regiones a sus recuentos, junto conplot_im(el fotograma anotado) ytotal_tracks(el número de objetos rastreados). Imprime el objeto de resultados para inspeccionar todos los campos disponibles.Sí. Pasa el argumento
classescon los índices de clase a conservar, por ejemploclasses=[0]para contar únicamente personas con un modelo preentrenado en 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 a medida que cruzan una línea o el límite de una región, rastreando los totales de entrada y salida. UtilizaRegionCounterpara la ocupación en directo de una o más zonas yObjectCounterpara el recuento de entradas y salidas; las regiones en forma de línea solo son compatibles conObjectCounter.

