Ultralytics YOLO27:

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 minoristaCalles de mercados
Ultralytics YOLO contando personas dentro de regiones poligonales dibujadas en una tiendaRecuentos de regiones de Ultralytics YOLO superpuestos en una calle de mercado concurrida
Conteo de personas en regiones con Ultralytics YOLOConteo 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:

Conteo de regiones con Ultralytics YOLO
# 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:

ArgumentoTipoPredeterminadoDescripción
modelstrNoneRuta al archivo del modelo YOLO de Ultralytics.
regionlist o dictNonePuntos 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_widthint2Grosor de línea de las cajas, los puntos clave y los recuentos que dibuja la solución.
verboseboolTrueActiva 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:

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento que se utilizará. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Establece el umbral de confianza para las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos.
ioufloat0.7Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas.
devicestrNoneEspecifica 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.
imgszint or tuple640Tamañ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_detint300Número máximo de detecciones conservadas por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas.
quantizeint or strNonePrecisió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:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi 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_confboolTrueMuestra 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_labelsboolTrueMuestra 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:

  1. El seguimiento de YOLO26 detecta y sigue todos los objetos del fotograma
  2. Para cada objeto seguido, la solución calcula el centro de la caja delimitadora y comprueba qué polígonos de región lo contienen
  3. 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 region como 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 diccionario region_counts que asocia los nombres de las regiones con sus recuentos, junto con plot_im (el fotograma anotado) y total_tracks (el número de objetos seguidos). Imprime el objeto de resultados para inspeccionar todos los campos disponibles.

  • Sí. Pasa el argumento classes con los índices de clase que quieras conservar, por ejemplo classes=[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ón RegionCounter() Arguments.

  • RegionCounter muestra 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. Usa RegionCounter para conocer la ocupación en directo de una o varias zonas y ObjectCounter para contar entradas y salidas; ObjectCounter es el único que admite regiones con forma de línea.

Comentarios