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

Подсчет объектов с использованием 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)]"

Параметр region аргумент принимает либо две точки (для линии), либо многоугольник с тремя или более точками. Задайте координаты в том порядке, в котором они должны быть соединены, чтобы счетчик точно знал, где находятся входы и выходы.

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)]  # rectangular 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 the 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 аргументы:

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO .
show_inboolTrueФлаг для управления отображением количества входящих объектов на видеопотоке.
show_outboolTrueФлаг для управления отображением количества исходящих объектов на видеопотоке.
regionlist'[(20, 400), (1260, 400)]'Список точек, определяющих область подсчета.

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

АргументТипПо умолчаниюОписание
trackerstr'botsort.yaml'Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conffloat0.3Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
ioufloat0.5Устанавливает порог пересечения над объединениемIoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verboseboolTrueУправляет отображением результатов отслеживания, обеспечивая визуальный вывод отслеживаемых объектов.
devicestrNoneУказывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

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

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования.
line_widthNone or intNoneУказывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости.
show_confboolTrueОтображает оценку достоверности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели для каждого обнаружения.
show_labelsboolTrueОтображает метки для каждого обнаружения в визуальном выводе. Обеспечивает немедленное понимание обнаруженных объектов.

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

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

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

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

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

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 год назад ✏️ Обновлено 8 дней назад
glenn-jocherRizwanMunawarMatthewNoyceleonnilBurhan-QUltralyticsAssistantIvorZhu331AyushExel

Комментарии