Ultralytics YOLO27:
Get Started

Conteo de objetos en regiones con Ultralytics YOLO26#

La solución RegionCounter de Ultralytics YOLO26 sigue objetos a lo largo de los fotogramas del vídeo y cuenta, en cada fotograma, los objetos cuyo centro de la caja delimitadora cae dentro de cada región que definas. 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 única llamada de Python o un comando de CLI.



Ver: Conteo de objetos en distintas regiones con Ultralytics YOLO | Soluciones de Ultralytics

¿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 recuento independiente dibujado en el fotograma, de modo que un solo flujo de vídeo cubra todas las áreas que te interesan.
  • Seguimiento integrado: La solución ejecuta internamente la detección de YOLO26 y el seguimiento de objetos, así que no tienes que conectar una canalización de seguimiento independiente.
  • Recuentos que puedes consultar 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 reales#

Comercio minoristaCalles de mercado
Ultralytics YOLO cuenta personas dentro de regiones poligonales dibujadas en una tiendaRecuentos por región de Ultralytics YOLO superpuestos en una calle de mercado concurrida
Conteo de personas por regiones con Ultralytics YOLOConteo de multitudes por 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 zona con listas de puntos. El siguiente ejemplo en Python cuenta objetos en dos regiones con nombre y guarda los fotogramas procesados en un archivo de vídeo de salida:

Conteo por 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 a un archivo de modelo Ultralytics YOLO.
regionlist o dictNonePuntos que definen la región de interés, ya sea una lista de tuplas (x, y) o un diccionario que asigna nombres de región a listas de puntos para varias regiones (solo RegionCounter). Si None, las soluciones que requieren una región usan una región predeterminada predefinida.
line_widthint2Grosor de línea de los cuadros, puntos clave y recuentos que dibuja la solución.
verboseboolTrueActiva el registro por fotograma de la forma de entrada, los recuentos por clase y la velocidad de procesamiento de la solución. La llamada de seguimiento en sí siempre es silenciosa.

La solución RegionCounter permite usar parámetros de seguimiento de objetos:

ArgumentoTipoPredeterminadoDescripción
trackerstr'tracktrack.yaml'Especifica el algoritmo de seguimiento que se va a usar. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Establece el umbral de confianza de 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 solapadas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas.
devicestrNoneEspecifica el dispositivo para la inferencia (p. ej., cpu, cuda:0 o 0). Permite elegir entre CPU, una GPU concreta u otros dispositivos de cálculo para ejecutar el modelo.
imgszint or tuple640Tamaño de imagen de destino para la inferencia: un entero para una imagen cuadrada o una pareja (height, width). Las dimensiones se ajustan al stride del modelo.
max_detint300Número máximo de detecciones que se conservan 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/unset (FP32) para los modelos PyTorch y TorchScript fuera de CPU; los demás formatos usan la precisión que seleccionen el artefacto y el entorno de ejecución. Sustituye al argumento obsoleto half.

Además, se admiten los siguientes ajustes de visualización:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi True, muestra las imágenes o los 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 etiquetas para cada detección en la salida visual. Facilita la identificación inmediata de los objetos detectados.

Cómo funciona el conteo por regiones#

La solución RegionCounter convierte cada región que le pases en un polígono con al menos tres puntos. Una lista sencilla 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 un color propio 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 que se muestra en una región indica su ocupación actual, es decir, cuántos objetos hay dentro en ese momento, no un total acumulado. Para contar de forma acumulativa los objetos que cruzan un límite, usa en su lugar 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 región con sus recuentos, para que puedas usar los números en la lógica de tu propia aplicación.

Conclusión#

La solución RegionCounter de Ultralytics YOLO26 supervisa en directo el recuento de objetos 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 soluciones de Ultralytics.

Preguntas frecuentes#

  • Ultralytics YOLO26 cuenta objetos en regiones siguiendo cada objeto del fotograma y comprobando si el centro de su caja delimitadora está dentro de cada polígono definido por el usuario. El recuento que se muestra en una región indica su ocupación actual en ese fotograma, no un total acumulado. Las opciones de configuración se enumeran en la sección RegionCounter() Arguments.

  • Pasa el argumento region como un diccionario que asocie nombres de zona 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 un color propio y tiene un recuento independiente.

  • El objeto que devuelve cada llamada a regioncounter(im0) contiene un diccionario region_counts que asocia los nombres de región con sus recuentos, además de plot_im (el fotograma anotado) y total_tracks (el número de objetos seguidos). Imprime el objeto de resultados para consultar 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 está en la sección RegionCounter() Argumentos.

  • RegionCounter muestra 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, y realiza un seguimiento de los totales de entradas y salidas. Usa RegionCounter para conocer la ocupación en tiempo real de una o varias zonas y ObjectCounter para contar entradas y salidas; solo ObjectCounter admite regiones con forma de línea.

Comentarios