Подсчет объектов в регионах с помощью Ultralytics YOLO26#
Решение RegionCounter solution в Ultralytics YOLO26 отслеживает объекты по кадрам видео и на каждом кадре подсчитывает объекты, центр ограничивающего прямоугольника которых попадает внутрь каждой определенной тобой области. Каждая область отрисовывается на кадре с собственным счетчиком в реальном времени, поэтому ты можешь мониторить несколько зон, таких как проходы магазина, полосы дороги или производственные участки, с помощью всего одного вызова Python или команды CLI.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
Зачем использовать подсчет в регионах?#
- Несколько зон за один проход: Передай словарь именованных многоугольников, и для каждой зоны на кадре будет отображаться независимый счетчик, поэтому один видеопоток охватит все интересующие тебя области.
- Встроенный трекинг: Решение выполняет детектирование YOLO26 и отслеживание объектов внутри себя, поэтому не нужно настраивать отдельный конвейер трекинга.
- Счетчики, доступные программно: Каждый обработанный кадр возвращает объект результатов со словарем счетчиков регионов, готовый для дашбордов, оповещений или логирования.
Реальные сценарии применения#
| Ритейл | Рыночные улицы |
|---|---|
![]() | ![]() |
| Подсчет людей в регионах с помощью Ultralytics YOLO | Подсчет толпы в регионах с помощью Ultralytics YOLO |
Как подсчитывать объекты в регионах с помощью Ultralytics YOLO#
Запусти решение RegionCounter для источника видео из CLI или Python. Регион может быть списком точек (одна зона) или словарем, который сопоставляет имена зон со списками точек. В примере на Python ниже объекты подсчитываются в двух именованных регионах, а обработанные кадры записываются в выходной видеофайл:
# 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:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
region | list или dict | None | Точки, определяющие область интереса (ROI): либо список кортежей (x, y), либо словарь, сопоставляющий имена областей со списками точек для нескольких областей (только для RegionCounter). Когда None, решения, требующие наличия области, возвращаются к предопределенному значению по умолчанию. |
line_width | int | 2 | Толщина линий для рамок, ключевых точек и подсчетов, отрисовываемых решением. |
verbose | bool | True | Включает покадровый лог решения, содержащий форму входных данных, количество классов и скорость обработки. Сам вызов трекинга всегда выполняется молча. |
Решение RegionCounter позволяет использовать параметры отслеживания объектов:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Задает алгоритм трекинга, который нужно использовать. Встроенные опции: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания. |
iou | float | 0.7 | Устанавливает порог Intersection over Union (IoU) для фильтрации пересекающихся детекций. |
classes | list | None | Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы. |
device | str | None | Задает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели. |
Кроме того, поддерживаются следующие настройки визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования. |
show_conf | bool | True | Отображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении. |
show_labels | bool | True | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
Как работает подсчет в регионах#
Решение RegionCounter solution преобразует каждую переданную тобой область в многоугольник, содержащий не менее трех точек на регион. Простой список точек становится единой зоной с именем Region#01, в то время как словарь сохраняет твои собственные имена зон; каждая зона отрисовывается своим цветом из палитры Ultralytics. Затем каждый кадр обрабатывается в три этапа:
- Отслеживание YOLO26 обнаруживает и следует за каждым объектом в кадре
- Для каждого отслеживаемого объекта решение вычисляет центр ограничивающего прямоугольника и проверяет, внутри каких многоугольников региона он находится
- Счетчик каждого региона отображается в его центре, а значения сбрасываются перед следующим кадром
Поскольку счетчики сбрасываются на каждом кадре, число, отображаемое на области, представляет собой текущую заполненность (то есть сколько объектов находится внутри нее прямо сейчас), а не нарастающий итог. Чтобы подсчитывать пересекающие границу объекты накопительным образом, используй решение 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.

