Перейти к содержанию

Подсчет объектов с использованием Ultralytics YOLO11

Что такое подсчет объектов?

Открыть подсчет объектов в Colab

Подсчет объектов с помощью Ultralytics YOLO11 включает в себя точную идентификацию и подсчет конкретных объектов в видео и потоках с камер. YOLO11 превосходно подходит для приложений реального времени, обеспечивая эффективный и точный подсчет объектов для различных сценариев, таких как анализ толпы и наблюдение, благодаря своим современным алгоритмам и возможностям глубокого обучения.



Смотреть: Как выполнять подсчет объектов в реальном времени с помощью Ultralytics YOLO11 🍏

Преимущества подсчета объектов

  • Оптимизация ресурсов: Подсчет объектов облегчает эффективное управление ресурсами, предоставляя точные подсчеты, оптимизируя распределение ресурсов в таких приложениях, как управление запасами.
  • Повышенная безопасность: Подсчет объектов повышает безопасность и видеонаблюдение за счет точного отслеживания и подсчета объектов, помогая в заблаговременном обнаружении угроз.
  • Обоснованное принятие решений: Подсчет объектов предлагает ценную информацию для принятия решений, оптимизации процессов в розничной торговле, управлении дорожным движением и различных других областях.

Приложения в реальном мире

Логистика Аквакультура
Подсчет пакетов на конвейерной ленте с использованием Ultralytics YOLO11 Подсчет рыбы в море с использованием Ultralytics YOLO11
Подсчет пакетов на конвейерной ленте с использованием Ultralytics YOLO11 Подсчет рыбы в море с использованием Ultralytics YOLO11

Подсчет объектов с использованием Ultralytics YOLO

# 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)]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

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

# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize object counter object
counter = solutions.ObjectCounter(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes i.e. person and car with COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers i.e "bytetrack.yaml"
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = counter(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

ObjectCounter Аргументы

Вот таблица с ObjectCounter аргументы:

Аргумент Тип По умолчанию Описание
model str None Путь к файлу модели Ultralytics YOLO.
show_in bool True Флаг для управления отображением количества входящих объектов на видеопотоке.
show_out bool True Флаг для управления отображением количества исходящих объектов на видеопотоке.
region list '[(20, 400), (1260, 400)]' Список точек, определяющих область подсчета.

Параметр ObjectCounter Решение позволяет использовать несколько track аргументы:

Аргумент Тип По умолчанию Описание
tracker str 'botsort.yaml' Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conf float 0.3 Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
iou float 0.5 Устанавливает порог Intersection over Union (IoU) для фильтрации перекрывающихся обнаружений.
classes list None Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verbose bool True Управляет отображением результатов отслеживания, обеспечивая визуальный вывод отслеживаемых объектов.
device str None Указывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

Кроме того, поддерживаются перечисленные ниже аргументы визуализации:

Аргумент Тип По умолчанию Описание
show bool False Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования.
line_width None or int None Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости.
show_conf bool True Отображает оценку достоверности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели для каждого обнаружения.
show_labels bool True Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает немедленное понимание обнаруженных объектов.

Часто задаваемые вопросы

Как подсчитать объекты в видео с использованием Ultralytics YOLO11?

Чтобы подсчитать объекты в видео с помощью Ultralytics YOLO11, вы можете выполнить следующие действия:

  1. Импортируйте необходимые библиотеки (cv2, ultralytics).
  2. Определите область подсчета (например, полигон, линия и т. д.).
  3. Настройте захват видео и инициализируйте счетчик объектов.
  4. Обработайте каждый кадр для отслеживания объектов и их подсчета в пределах определенной области.

Вот простой пример подсчета в регионе:

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", "yolo11n.pt")

Для получения более продвинутых конфигураций и опций ознакомьтесь с решением RegionCounter для одновременного подсчета объектов в нескольких регионах.

Каковы преимущества использования Ultralytics YOLO11 для подсчета объектов?

Использование Ultralytics YOLO11 для подсчета объектов предлагает несколько преимуществ:

  1. Оптимизация ресурсов: Это облегчает эффективное управление ресурсами, предоставляя точные подсчеты, помогая оптимизировать распределение ресурсов в таких отраслях, как управление запасами.
  2. Повышенная безопасность: Повышает безопасность и видеонаблюдение за счет точного отслеживания и подсчета объектов, помогая в заблаговременном обнаружении угроз и системах безопасности.
  3. Обоснованное принятие решений: Предоставляет ценную информацию для принятия решений, оптимизируя процессы в таких областях, как розничная торговля, управление дорожным движением и многое другое.
  4. Обработка в реальном времени: Архитектура YOLO11 обеспечивает инференс в реальном времени, что делает его подходящим для прямых видеотрансляций и приложений, чувствительных ко времени.

Примеры реализации и практическое применение можно найти в решении TrackZone для отслеживания объектов в определенных зонах.

Как я могу подсчитать определенные классы объектов, используя Ultralytics YOLO11?

Чтобы подсчитать определенные классы объектов с помощью Ultralytics YOLO11, вам необходимо указать классы, которые вас интересуют, на этапе отслеживания. Ниже приведен пример на 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", "yolo11n.pt", [0, 2])

В этом примере, classes_to_count=[0, 2] означает, что он считает объекты класса 0 и 2 (например, человек и автомобиль в наборе данных COCO). Вы можете найти больше информации об индексах классов в Документация по набору данных COCO.

Почему мне следует использовать YOLO11 вместо других моделей обнаружения объектов для приложений реального времени?

Ultralytics YOLO11 предоставляет несколько преимуществ по сравнению с другими моделями обнаружения объектов, такими как Faster R-CNN, SSD и предыдущие версии YOLO:

  1. Скорость и эффективность: YOLO11 предлагает возможности обработки в реальном времени, что делает его идеальным для приложений, требующих высокой скорости инференса, таких как наблюдение и автономное вождение.
  2. Точность: Обеспечивает современную точность для задач обнаружения и отслеживания объектов, снижая количество ложных срабатываний и повышая общую надежность системы.
  3. Простота интеграции: YOLO11 предлагает простую интеграцию с различными платформами и устройствами, включая мобильные и периферийные устройства, что имеет решающее значение для современных приложений ИИ.
  4. Гибкость: Поддерживает различные задачи, такие как обнаружение объектов, сегментация и отслеживание, с настраиваемыми моделями для удовлетворения конкретных требований варианта использования.

Ознакомьтесь с документацией Ultralytics YOLO11 для более глубокого изучения ее функций и сравнения производительности.

Могу ли я использовать YOLO11 для продвинутых приложений, таких как анализ толпы и управление трафиком?

Да, Ultralytics YOLO11 идеально подходит для расширенных приложений, таких как анализ толпы и управление трафиком, благодаря своим возможностям обнаружения в реальном времени, масштабируемости и гибкости интеграции. Его расширенные функции позволяют с высокой точностью отслеживать, подсчитывать и классифицировать объекты в динамических средах. Примеры вариантов использования включают:

  • Анализ толпы: Отслеживайте и управляйте большими собраниями, обеспечивая безопасность и оптимизируя поток людей с помощью подсчета на основе регионов.
  • Управление дорожным движением: Отслеживайте и подсчитывайте транспортные средства, анализируйте структуру движения и управляйте заторами в режиме реального времени с помощью возможностей оценки скорости.
  • Розничная аналитика: Анализ моделей перемещения клиентов и взаимодействия с продуктами для оптимизации планировки магазина и улучшения качества обслуживания клиентов.
  • Промышленная автоматизация: Подсчет продукции на конвейерных лентах и мониторинг производственных линий для контроля качества и повышения эффективности.

Для более специализированных приложений изучите Ultralytics Solutions, чтобы получить полный набор инструментов, разработанных для решения реальных задач компьютерного зрения.



📅 Создано 1 год назад ✏️ Обновлено 2 месяца назад

Комментарии