Ultralytics YOLO27:

Подсчёт объектов в областях с помощью Ultralytics YOLO26#

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



Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions

Зачем использовать подсчёт объектов в областях?#

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

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

Розничная торговляУлицы рынка
Ultralytics YOLO подсчитывает людей внутри нарисованных многоугольных областей в магазинеСчётчики областей Ultralytics YOLO отображаются поверх изображения оживлённой рыночной улицы
Подсчёт людей в областях с помощью Ultralytics YOLOПодсчёт людей в толпе в областях с помощью Ultralytics YOLO

Как подсчитывать объекты в областях с помощью Ultralytics YOLO#

Запусти решение RegionCounter для видеоисточника через CLI или Python. Областью может быть список точек (одна зона) или словарь, сопоставляющий названия зон со списками точек. Пример на Python ниже подсчитывает объекты в двух именованных областях и записывает обработанные кадры в выходной видеофайл:

Подсчёт объектов в областях с помощью Ultralytics YOLO
# Run a region counting example
yolo solutions region show=True

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

# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

Аргументы RegionCounter()#

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

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

Решение RegionCounter позволяет использовать параметры отслеживания объектов:

АргументТипПо умолчаниюОписание
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Отображает метки каждой детекции в визуальном результате. Даёт непосредственное представление об обнаруженных объектах.

Как работает подсчёт объектов в областях#

Решение RegionCounter преобразует каждую переданную область в многоугольник, содержащий не менее трёх точек. Обычный список точек становится одной зоной с именем Region#01, а словарь сохраняет заданные тобой названия зон; каждая зона отображается своим цветом из палитры Ultralytics. Затем каждый кадр обрабатывается в три этапа:

  1. отслеживание YOLO26 обнаруживает каждый объект в кадре и отслеживает его
  2. Для каждого отслеживаемого объекта решение вычисляет центр ограничивающей рамки и проверяет, какие многоугольники областей его содержат
  3. Счётчик каждой области отображается в её центре, а перед обработкой следующего кадра счётчики сбрасываются

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

Каждый вызов также возвращает объект результатов, атрибут plot_im которого содержит аннотированный кадр, а словарь region_counts сопоставляет названия областей с их счётчиками, поэтому ты можешь передавать эти числа в логику собственного приложения.

Заключение#

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

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

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

  • Передай аргумент region в виде словаря, сопоставляющего названия зон со списками точек, как в основном примере:

    from ultralytics import solutions
    
    region_points = {
        "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
        "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
    }
    regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)

    Каждая именованная зона отображается своим цветом и имеет отдельный счётчик.

  • Объект, возвращаемый каждым вызовом regioncounter(im0), содержит словарь region_counts, сопоставляющий названия областей с их счётчиками, а также plot_im (аннотированный кадр) и total_tracks (количество отслеживаемых объектов). Выведи объект результатов, чтобы просмотреть все доступные поля.

  • Да. Передай аргумент classes с индексами нужных классов, например classes=[0], чтобы подсчитывать только людей с моделью, предварительно обученной на COCO. Полный список аргументов, связанных с отслеживанием, приведён в разделе RegionCounter() Arguments.

  • RegionCounter показывает, сколько объектов находится в каждой многоугольной зоне на текущем кадре, а ObjectCounter ведёт накопительный подсчёт объектов при пересечении ими линии или границы области, отслеживая общее количество входов и выходов. Используй RegionCounter для отображения текущей заполненности одной или нескольких зон, а ObjectCounter — для подсчёта входов и выходов; области в форме линий поддерживаются только ObjectCounter.

Комментарии