Conteo de objetos con Ultralytics YOLO26#
¿Qué es el conteo de objetos?#
El conteo de objetos con Ultralytics YOLO26 consiste en identificar y contar con precisión objetos concretos en vídeos y flujos de cámara. YOLO26 destaca en aplicaciones en tiempo real y ofrece un conteo de objetos eficiente y preciso en distintos escenarios, como el análisis de multitudes y la vigilancia, gracias a sus algoritmos de última generación y sus capacidades de aprendizaje profundo.
Ver: Cómo contar objetos en tiempo real con Ultralytics YOLO26 🚀
Ventajas del conteo de objetos#
- Optimización de recursos: El conteo de objetos facilita una gestión eficiente de los recursos al proporcionar recuentos precisos, lo que optimiza la asignación de recursos en aplicaciones como la gestión de inventario.
- Mayor seguridad: El conteo de objetos mejora la seguridad y la vigilancia al realizar un seguimiento y contar entidades con precisión, lo que contribuye a la detección proactiva de amenazas.
- Toma de decisiones fundamentada: El conteo de objetos ofrece información valiosa para tomar decisiones y optimizar procesos en el comercio minorista, la gestión del tráfico y muchos otros ámbitos.
Aplicaciones reales#
| Logística | Acuicultura |
|---|---|
![]() | ![]() |
| Conteo de paquetes en una cinta transportadora con Ultralytics YOLO26 | Conteo de peces en el mar con Ultralytics YOLO26 |
Cuenta objetos con YOLO26#
Define una region para el conteo —dos puntos para una línea o tres o más para un polígono— y pásala a la solución ObjectCounter. El contador sigue cada objeto a lo largo de los fotogramas y suma los recuentos de ENTRADA/SALIDA cuando los objetos seguidos cruzan la línea o atraviesan la región; después, devuelve un fotograma anotado que puedes guardar en un vídeo de salida.
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"El argumento region acepta dos puntos (para una línea) o un polígono con tres puntos o más. Define las coordenadas en el orden en que deben conectarse para que el contador sepa exactamente dónde se producen las entradas y salidas.
Argumentos de ObjectCounter#
Aquí tienes una tabla con los argumentos de ObjectCounter:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta a un archivo de modelo Ultralytics YOLO. |
show_in | bool | True | Indicador que controla si se muestran los recuentos de entradas en la secuencia de vídeo. |
show_out | bool | True | Indicador que controla si se muestran los recuentos de salidas en la secuencia de vídeo. |
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 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_width | int | 2 | Grosor de línea de los cuadros, puntos clave y recuentos que dibuja la solución. |
verbose | bool | True | Activa 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 ObjectCounter permite usar varios argumentos track:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | '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. |
conf | float | 0.25 | Establece el umbral de confianza de 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 solapadas. |
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 (p. ej., cpu, cuda:0 o 0). Permite elegir entre CPU, una GPU concreta u otros dispositivos de cálculo para ejecutar el modelo. |
imgsz | int or tuple | 640 | Tamañ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_det | int | 300 | Nú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. |
quantize | int or str | None | Precisión de inferencia: 16 (FP16) o 32/sin definir (FP32) para modelos de PyTorch y TorchScript; los demás formatos calculan con la precisión que determinen su artefacto y su entorno de ejecución. Sustituye a la opción obsoleta half. |
Además, se admiten los argumentos de visualización que se indican a continuación:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si 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_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 etiquetas para cada detección en la salida visual. Facilita la identificación inmediata de los objetos detectados. |
Preguntas frecuentes#
Para contar objetos en un vídeo con Ultralytics YOLO26, sigue estos pasos:
- Importa las bibliotecas necesarias (
cv2,ultralytics). - Define la región de conteo (por ejemplo, un polígono, una línea, etc.).
- Configura la captura de vídeo e inicializa el contador de objetos.
- Procesa cada fotograma para seguir los objetos y contarlos dentro de la región definida.
Aquí tienes un ejemplo sencillo para contar objetos en una región:
import cv2 from ultralytics import solutions def count_objects_in_region(video_path, output_video_path, model_path): """Count objects in a specific region within a video.""" cap = cv2.VideoCapture(video_path) 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)) video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = counter(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows() count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")Para ver configuraciones y opciones más avanzadas, consulta la solución RegionCounter, que permite contar objetos simultáneamente en varias regiones.
- Importa las bibliotecas necesarias (
Usar Ultralytics YOLO26 para contar objetos ofrece varias ventajas:
- Optimización de recursos: Facilita una gestión eficiente de los recursos al proporcionar recuentos precisos y ayudar a optimizar la asignación de recursos en sectores como la gestión de inventario.
- Mayor seguridad: Mejora la seguridad y la vigilancia al realizar un seguimiento y contar entidades con precisión, lo que contribuye a la detección proactiva de amenazas y a los sistemas de seguridad.
- Toma de decisiones fundamentada: Ofrece información valiosa para tomar decisiones y optimizar procesos en ámbitos como el comercio minorista, la gestión del tráfico y otros.
- Procesamiento en tiempo real: La arquitectura de YOLO26 permite la inferencia en tiempo real, por lo que es ideal para flujos de vídeo en directo y aplicaciones sensibles al tiempo.
Para ver ejemplos de implementación y aplicaciones prácticas, explora la solución TrackZone, que permite seguir objetos en zonas concretas.
Para contar clases concretas de objetos con Ultralytics YOLO26, debes especificar las clases que te interesan durante la fase de seguimiento. A continuación tienes un ejemplo en Python:
import cv2 from ultralytics import solutions def count_specific_classes(video_path, output_video_path, model_path, classes_to_count): """Count specific classes of objects in a video.""" cap = cv2.VideoCapture(video_path) 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)) video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) line_points = [(20, 400), (1080, 400)] counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = counter(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows() count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])En este ejemplo,
classes_to_count=[0, 2]significa que cuenta los objetos de la clase0y la clase2(por ejemplo, persona y coche en el conjunto de datos COCO). Encontrarás más información sobre los índices de clase en la documentación del conjunto de datos COCO.Ultralytics YOLO26 ofrece varias ventajas frente a otros modelos de detección de objetos, como Faster R-CNN, SSD y versiones anteriores de YOLO:
- Velocidad y eficiencia: YOLO26 ofrece capacidades de procesamiento en tiempo real, por lo que es ideal para aplicaciones que requieren inferencias de alta velocidad, como la vigilancia y la conducción autónoma.
- Precisión: Ofrece una precisión de detección y seguimiento de última generación, reduce los falsos positivos y mejora la fiabilidad general del sistema.
- Facilidad de integración: YOLO26 se integra sin problemas con diversas plataformas y dispositivos, incluidos dispositivos móviles y dispositivos periféricos, algo fundamental para las aplicaciones modernas de IA.
- Flexibilidad: Admite tareas de detección y segmentación, además del modo de seguimiento, y permite configurar modelos para satisfacer los requisitos de casos de uso concretos.
Consulta la documentación de YOLO26 de Ultralytics para profundizar en sus funciones y comparar su rendimiento.
Sí, Ultralytics YOLO26 es ideal para aplicaciones avanzadas, como el análisis de multitudes y la gestión del tráfico, gracias a sus capacidades de detección en tiempo real, su escalabilidad y su flexibilidad de integración. Sus funciones avanzadas permiten seguir, contar y clasificar objetos con gran precisión en entornos dinámicos. Algunos casos de uso son:
- Análisis de multitudes: Supervisa y gestiona grandes concentraciones de personas, garantiza la seguridad y optimiza el flujo de la multitud con el conteo por regiones.
- Gestión del tráfico: Sigue y cuenta vehículos, analiza patrones de tráfico y gestiona la congestión en tiempo real mediante la estimación de velocidad.
- Análisis del comercio minorista: Analiza los patrones de movimiento de los clientes y sus interacciones con los productos para optimizar la distribución de las tiendas y mejorar la experiencia del cliente.
- Automatización industrial: Cuenta productos en cintas transportadoras y supervisa líneas de producción para controlar la calidad y mejorar la eficiencia.
Para aplicaciones más especializadas, explora las soluciones de Ultralytics, un conjunto completo de herramientas diseñadas para afrontar retos reales de visión artificial.

