Ultralytics YOLO27:
Get Started

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

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



Смотри: Подсчет объектов в разных областях с помощью Ultralytics YOLO | Решения Ultralytics

Зачем нужен подсчёт по областям?#

  • Несколько зон за один проход: передай словарь именованных многоугольников — для каждой зоны на кадре будет отображаться отдельный счётчик, и один видеопоток охватит все нужные тебе области.
  • Встроенное отслеживание: решение самостоятельно выполняет обнаружение 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'tracktrack.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() «Аргументы».

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

Комментарии