YOLO Vision 2026:

Подсчет объектов в регионах с помощью Ultralytics YOLO26#

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



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

Зачем использовать подсчет в регионах?#

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

Реальные сценарии применения#

РитейлРыночные улицы
Ultralytics YOLO counting people inside drawn polygon regions in a retail storeUltralytics YOLO region counts overlaid on a crowded market street
Подсчет людей в регионах с помощью 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Точки, определяющие область интереса (ROI): либо список кортежей (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Устанавливает порог Intersection over Union (IoU) для фильтрации пересекающихся детекций.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
devicestrNoneЗадает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

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

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

Как работает подсчет в регионах#

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

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

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

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

Заключение#

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

FAQ#

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

  • Передай аргумент 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.

Комментарии