Recuento de objetos con Ultralytics YOLO26#
¿Qué es el recuento de objetos?#
El recuento de objetos con Ultralytics YOLO26 implica la identificación y el recuento precisos de objetos específicos en vídeos y flujos de cámaras. YOLO26 destaca en aplicaciones en tiempo real, proporcionando un recuento de objetos eficiente y preciso para diversos escenarios como análisis de multitudes y vigilancia, gracias a sus algoritmos de vanguardia y capacidades de deep learning.
Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀
Ventajas del recuento de objetos#
- Optimización de recursos: El recuento de objetos facilita una gestión eficiente de los recursos al proporcionar recuentos precisos, optimizando la asignación de recursos en aplicaciones como la gestión de inventario.
- Seguridad mejorada: El recuento de objetos mejora la seguridad y la vigilancia al rastrear y contar entidades con precisión, lo que ayuda a la detección de amenazas de forma proactiva.
- Toma de decisiones informada: El recuento de objetos ofrece información valiosa para la toma de decisiones, optimizando procesos en el comercio minorista, la gestión de tráfico y otros diversos ámbitos.
Aplicaciones en el mundo real#
| Logística | Acuicultura |
|---|---|
![]() | ![]() |
| Recuento de paquetes en cinta transportadora con Ultralytics YOLO26 | Recuento de peces en el mar con Ultralytics YOLO26 |
Cuenta objetos con YOLO26#
Define un region —dos puntos para una línea o tres o más para un polígono— y pásalo a la solución ObjectCounter. El contador rastrea cada objeto entre fotogramas y registra los recuentos de ENTRADA/SALIDA cuando los objetos rastreados cruzan la línea o pasan a través de la región, devolviendo 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 o más puntos. 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 YOLO de Ultralytics. |
show_in | bool | True | Flag para controlar si se muestran los conteos de entrada en la transmisión de vídeo. |
show_out | bool | True | Flag para controlar si se muestran los conteos de salida en la transmisión 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 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 ObjectCounter permite el uso de varios argumentos de track:
| 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 argumentos de visualización enumerados a continuació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. |
FAQ#
Para contar objetos en un vídeo usando Ultralytics YOLO26, puedes seguir estos pasos:
- Importa las bibliotecas necesarias (
cv2,ultralytics). - Define la región de recuento (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 rastrear los objetos y contarlos dentro de la región definida.
Aquí tienes un ejemplo sencillo para contar 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 configuraciones y opciones más avanzadas, consulta la solución RegionCounter para contar objetos en varias regiones simultáneamente.
- Importa las bibliotecas necesarias (
Usar Ultralytics YOLO26 para el recuento de objetos ofrece varias ventajas:
- Optimización de recursos: Facilita una gestión eficiente de los recursos al proporcionar recuentos precisos, ayudando a optimizar la asignación de recursos en industrias como la gestión de inventario.
- Seguridad mejorada: Mejora la seguridad y la vigilancia al rastrear y contar entidades con precisión, ayudando en la detección proactiva de amenazas y sistemas de seguridad.
- Toma de decisiones informada: Ofrece información valiosa para la toma de decisiones, optimizando procesos en ámbitos como el comercio minorista, la gestión del tráfico y más.
- Procesamiento en tiempo real: La arquitectura de YOLO26 permite la inferencia en tiempo real, lo que la hace adecuada para transmisiones de vídeo en directo y aplicaciones sensibles al tiempo.
Para ejemplos de implementación y aplicaciones prácticas, explora la solución TrackZone para rastrear objetos en zonas específicas.
Para contar clases específicas de objetos usando Ultralytics YOLO26, necesitas especificar las clases que te interesan durante la fase de seguimiento. A continuación, 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 objetos de las clases0y2(por ejemplo, persona y coche en el conjunto de datos COCO). Puedes encontrar más información sobre los índices de clases en la documentación del conjunto de datos COCO.Ultralytics YOLO26 ofrece varias ventajas sobre 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, lo que lo hace ideal para aplicaciones que requieren inferencia de alta velocidad, como la vigilancia y la conducción autónoma.
- Accuracy: Ofrece una precisión de detección y seguimiento de vanguardia, lo que reduce los falsos positivos y mejora la fiabilidad general del sistema.
- Facilidad de integración: YOLO26 ofrece una integración perfecta con varias plataformas y dispositivos, incluidos dispositivos móviles y dispositivos de borde, lo cual es crucial para las aplicaciones de IA modernas.
- Flexibilidad: Es compatible con las tareas de detection y segmentation con el track mode por encima, y ofrece modelos configurables para satisfacer los requisitos específicos de cada caso de uso.
Consulta la documentación de YOLO26 de Ultralytics para profundizar en sus características y comparativas de rendimiento.
Sí, Ultralytics YOLO26 es perfectamente adecuado para aplicaciones avanzadas como el análisis de multitudes y la gestión del tráfico debido a sus capacidades de detección en tiempo real, su escalabilidad y su flexibilidad de integración. Sus funciones avanzadas permiten el seguimiento, el recuento y la clasificación de objetos con alta precisión en entornos dinámicos. Ejemplos de casos de uso incluyen:
- Análisis de multitudes: Monitorea y gestiona grandes concentraciones de gente, garantizando la seguridad y optimizando el flujo de personas con el recuento basado en regiones.
- Gestión de tráfico: Rastrea y cuenta vehículos, analiza patrones de tráfico y gestiona la congestión en tiempo real con capacidades de estimación de velocidad.
- Análisis minorista: Analiza los patrones de movimiento de los clientes y las interacciones con los productos para optimizar la distribución de la tienda y mejorar la experiencia del cliente.
- Automatización industrial: Cuenta los productos en las cintas transportadoras y monitorea las líneas de producción para mejorar el control de calidad y la eficiencia.
Para aplicaciones más especializadas, explora Ultralytics Solutions para obtener un conjunto completo de herramientas diseñadas para retos de visión artificial en el mundo real.

