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

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

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

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

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



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

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

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

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

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

Подсчет объектов с использованием 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="yolo26n.pt",  # model="yolo26n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes, e.g., person and car with the COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers, e.g., "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.1Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
ioufloat0.7Устанавливает порог Intersection over Union (IoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verboseboolTrueУправляет отображением результатов отслеживания, обеспечивая визуальный вывод отслеживаемых объектов.
devicestrNoneУказывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

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

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

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

Как подсчитать объекты в видео с помощью Ultralytics YOLO26?

Чтобы подсчитать объекты в видео с помощью Ultralytics YOLO26, выполните следующие шаги:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



📅 Создано 2 лет назад ✏️ Обновлено 7 дней назад
glenn-jocherRizwanMunawarRizwanMunawarMatthewNoycepderrengerleonnilBurhan-QUltralyticsAssistantIvorZhu331AyushExel

Комментарии