Ir al contenido

Recuento de objetos mediante Ultralytics YOLO11

驴Qu茅 es el recuento de objetos?

El recuento de objetos con Ultralytics YOLO11 implica la identificaci贸n y el recuento precisos de objetos espec铆ficos en v铆deos y secuencias de c谩maras. YOLO11 destaca en aplicaciones en tiempo real, proporcionando un recuento de objetos eficiente y preciso para diversos escenarios como el an谩lisis de multitudes y la vigilancia, gracias a sus algoritmos de 煤ltima generaci贸n y a sus capacidades de aprendizaje profundo.


Observa: Recuento de objetos mediante Ultralytics YOLOv8

Observa: Recuento de objetos por clases mediante Ultralytics YOLO11

驴Ventajas del recuento de objetos?

  • Optimizaci贸n de recursos: El recuento de objetos facilita la gesti贸n eficiente de los recursos al proporcionar recuentos precisos y optimizar la asignaci贸n de recursos en aplicaciones como la gesti贸n de inventarios.
  • Seguridad mejorada: El recuento de objetos mejora la seguridad y la vigilancia mediante el seguimiento y recuento precisos de entidades, lo que contribuye a la detecci贸n proactiva de amenazas.
  • Toma de decisiones informada: El recuento de objetos ofrece informaci贸n valiosa para la toma de decisiones y la optimizaci贸n de procesos en el comercio minorista, la gesti贸n del tr谩fico y otros 谩mbitos.

Aplicaciones en el mundo real

Log铆stica Acuicultura
Recuento de paquetes con cinta transportadora Ultralytics YOLO11 Recuento de peces en el mar mediante Ultralytics YOLO11
Recuento de paquetes con cinta transportadora Ultralytics YOLO11 Recuento de peces en el mar mediante Ultralytics YOLO11

Recuento de objetos mediante YOLO11 Ejemplo

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video/file.mp4"

# Pass region coordinates
yolo solutions count region=[(20, 400), (1080, 400), (1080, 360), (20, 360)]
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.mp4")
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))

# Define region points
# region_points = [(20, 400), (1080, 400)]  # For line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # For rectangle region counting
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]  # For polygon region counting

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
    # show_in=True,  # Display in counts
    # show_out=True,  # Display out counts
    # line_width=2,  # Adjust the line width for bounding boxes and text display
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = counter.count(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Argumento ObjectCounter

Aqu铆 tiene una tabla con los ObjectCounter argumentos:

Nombre Tipo Por defecto Descripci贸n
model str None Ruta de acceso al archivo del modelo Ultralytics YOLO
region list [(20, 400), (1260, 400)] Lista de puntos que definen la regi贸n de recuento.
line_width int 2 Grosor de l铆nea de los cuadros delimitadores.
show bool False Indicador para controlar si se muestra el flujo de v铆deo.
show_in bool True Indicador para controlar si se muestran los recuentos en el flujo de v铆deo.
show_out bool True Indicador para controlar si se muestran los recuentos de salida en el flujo de v铆deo.

Argumentos model.track

Argumento Tipo Por defecto Descripci贸n
source str None Especifica el directorio de origen de las im谩genes o v铆deos. Admite rutas de archivo y URL.
persist bool False Permite el seguimiento persistente de objetos entre fotogramas, manteniendo los ID en todas las secuencias de v铆deo.
tracker str botsort.yaml Especifica el algoritmo de seguimiento a utilizar, por ejemplo, bytetrack.yaml o botsort.yaml.
conf float 0.3 Establece el umbral de confianza para las detecciones; los valores m谩s bajos permiten rastrear m谩s objetos pero pueden incluir falsos positivos.
iou float 0.5 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] s贸lo rastrea las clases especificadas.
verbose bool True Controla la visualizaci贸n de los resultados del rastreo, proporcionando una salida visual de los objetos rastreados.

PREGUNTAS FRECUENTES

驴C贸mo puedo contar objetos en un v铆deo utilizando Ultralytics YOLO11 ?

Para contar objetos en un v铆deo utilizando Ultralytics YOLO11 , puede seguir estos pasos:

  1. Importe las bibliotecas necesarias (cv2, ultralytics).
  2. Defina la regi贸n de recuento (por ejemplo, un pol铆gono, una l铆nea, etc.).
  3. Configure la captura de v铆deo e inicialice el contador de objetos.
  4. Procesa cada fotograma para rastrear los objetos y contarlos dentro de la regi贸n definida.

He aqu铆 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 video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

Explore m谩s configuraciones y opciones en la secci贸n Recuento de objetos.

驴Cu谩les son las ventajas de utilizar Ultralytics YOLO11 para el recuento de objetos?

La utilizaci贸n de Ultralytics YOLO11 para el recuento de objetos ofrece varias ventajas:

  1. Optimizaci贸n de recursos: Facilita la gesti贸n eficiente de los recursos al proporcionar recuentos precisos, ayudando a optimizar la asignaci贸n de recursos en sectores como la gesti贸n de inventarios.
  2. Seguridad mejorada: Mejora la seguridad y la vigilancia mediante el seguimiento y recuento precisos de entidades, lo que contribuye a la detecci贸n proactiva de amenazas.
  3. Toma de decisiones informada: Ofrece informaci贸n valiosa para la toma de decisiones, optimizando procesos en 谩mbitos como el comercio minorista o la gesti贸n del tr谩fico, entre otros.

Para aplicaciones reales y ejemplos de c贸digo, visite la secci贸n Ventajas del recuento de objetos.

驴C贸mo puedo contar clases espec铆ficas de objetos utilizando Ultralytics YOLO11 ?

Para contar clases espec铆ficas de objetos utilizando Ultralytics YOLO11 , debe especificar las clases que le interesan durante la fase de seguimiento. A continuaci贸n se muestra un ejemplo de 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 video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

En este ejemplo, classes_to_count=[0, 2]lo que significa que cuenta los objetos de la clase 0 y 2 (por ejemplo, persona y coche).

驴Por qu茅 deber铆a utilizar YOLO11 en lugar de otros modelos de detecci贸n de objetos para aplicaciones en tiempo real?

Ultralytics YOLO11 ofrece varias ventajas sobre otros modelos de detecci贸n de objetos como Faster R-CNN, SSD y las versiones anteriores de YOLO :

  1. Velocidad y eficacia: YOLO11 ofrece capacidades de procesamiento en tiempo real, por lo que es ideal para aplicaciones que requieren una inferencia de alta velocidad, como la vigilancia y la conducci贸n aut贸noma.
  2. Precisi贸n: proporciona una precisi贸n de vanguardia para tareas de detecci贸n y seguimiento de objetos, reduciendo el n煤mero de falsos positivos y mejorando la fiabilidad general del sistema.
  3. Facilidad de integraci贸n: YOLO11 ofrece una integraci贸n perfecta con diversas plataformas y dispositivos, incluidos los dispositivos m贸viles y de borde, lo cual es crucial para las aplicaciones modernas de IA.
  4. Flexibilidad: Admite diversas tareas como la detecci贸n, la segmentaci贸n y el seguimiento de objetos con modelos configurables para satisfacer requisitos de casos de uso espec铆ficos.

Consultela documentaci贸n de Ultralytics YOLO11 para profundizar en sus caracter铆sticas y comparar su rendimiento.

驴Puedo utilizar YOLO11 para aplicaciones avanzadas como el an谩lisis de multitudes y la gesti贸n del tr谩fico?

S铆, Ultralytics YOLO11 es perfectamente adecuado 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, escalabilidad y flexibilidad de integraci贸n. Sus funciones avanzadas permiten el seguimiento, recuento y clasificaci贸n de objetos con gran precisi贸n en entornos din谩micos. Algunos ejemplos de uso son:

  • An谩lisis de multitudes: Supervise y gestione grandes concentraciones, garantizando la seguridad y optimizando el flujo de multitudes.
  • Gesti贸n del tr谩fico: Siga y cuente los veh铆culos, analice los patrones de tr谩fico y gestione la congesti贸n en tiempo real.

Para m谩s informaci贸n y detalles de implementaci贸n, consulte la gu铆a Aplicaciones reales del recuento de objetos con YOLO11.

Creado hace 1 a帽o 鉁忥笍 Actualizado hace 15 d铆as

Comentarios