Ultralytics YOLO27:

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

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

Open Object Counting In Colab

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



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

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

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

Примеры использования в реальном мире#

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

Подсчёт объектов с YOLO26#

Задай область подсчёта region — две точки для линии или три и более для полигона — и передай её решению ObjectCounter. Счётчик отслеживает каждый объект между кадрами и подсчитывает входящие и исходящие объекты, когда отслеживаемые объекты пересекают линию или проходят через область, возвращая аннотированный кадр, который можно записать в выходное видео.

Подсчёт объектов с использованием 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 принимает либо две точки (для линии), либо полигон с тремя и более точками. Задай координаты в порядке их соединения, чтобы счётчик точно определял места входа и выхода.

Аргументы ObjectCounter#

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

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
show_inboolTrueФлаг, управляющий отображением количества входящих объектов в видеопотоке.
show_outboolTrueФлаг, управляющий отображением количества выходящих объектов в видеопотоке.
regionlist или dictNoneТочки, определяющие интересующую область: либо список кортежей (x, y), либо словарь, сопоставляющий названия регионов со списками точек для нескольких регионов (только RegionCounter). Если None, решения, которым нужен регион, используют заранее заданный регион по умолчанию.
line_widthint2Толщина линий для рамок, ключевых точек и счётчиков, которые рисует решение.
verboseboolTrueВключает покадровый журнал решения с указанием формы входных данных, количества классов и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода.

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

АргументТипПо умолчаниюОписание
trackerstr'botsort.yaml'Определяет используемый алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Задаёт порог уверенности для детекций: более низкие значения позволяют отслеживать больше объектов, но могут включать ложноположительные результаты.
ioufloat0.7Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся детекций.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
devicestrNoneОпределяет устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, конкретный GPU или другое вычислительное устройство для выполнения модели.
imgszint or tuple640Целевой размер изображения для вывода: целое число для квадрата или пара (height, width). Формы подстраиваются под шаг модели.
max_detint300Максимальное количество обнаружений, сохраняемых на кадр перед трекингом, ограничивает объекты, обрабатываемые решением в плотных сценах.
quantizeint or strNoneТочность вывода: 16 (FP16) или 32/не задано (FP32) для моделей PyTorch и TorchScript; остальные форматы выполняют вычисления с точностью, выбранной их артефактом и средой выполнения. Заменяет устаревший флаг half.

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

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

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

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

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

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

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

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

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

  • Чтобы подсчитывать определённые классы объектов с помощью 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.

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

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

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

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

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

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

Комментарии