Подсчёт объектов в областях с помощью Ultralytics YOLO26#
Решение RegionCounter в Ultralytics YOLO26 отслеживает объекты между кадрами видео и на каждом кадре подсчитывает объекты, центры ограничивающих рамок которых находятся внутри заданных тобой областей. Каждая область отображается на кадре вместе с текущим счётчиком, поэтому ты можешь отслеживать несколько зон — например, проходы магазина, полосы движения или производственные участки — с помощью одного вызова Python или команды CLI.
Смотри: Подсчет объектов в разных областях с помощью Ultralytics YOLO | Решения Ultralytics
Зачем нужен подсчёт по областям?#
- Несколько зон за один проход: передай словарь именованных многоугольников — для каждой зоны на кадре будет отображаться отдельный счётчик, и один видеопоток охватит все нужные тебе области.
- Встроенное отслеживание: решение самостоятельно выполняет обнаружение 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 | Точки, задающие интересующую область: список кортежей (x, y) или словарь, сопоставляющий названия областей со списками точек для нескольких областей (только RegionCounter). Если None, решения, которым требуется область, используют заданную по умолчанию область. |
line_width | int | 2 | Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение. |
verbose | bool | True | Включает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений. |
Решение RegionCounter позволяет задавать параметры отслеживания объектов:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Задаёт алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Задаёт порог уверенности для обнаружений: при более низких значениях можно отслеживать больше объектов, но возрастает вероятность ложноположительных срабатываний. |
iou | float | 0.7 | Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся обнаружений. |
classes | list | None | Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы. |
device | str | None | Задаёт устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, определённый GPU или другое вычислительное устройство для выполнения модели. |
imgsz | int or tuple | 640 | Целевой размер изображения для инференса: целое число для квадратного изображения или пара (height, width). Размеры корректируются с учётом шага модели. |
max_det | int | 300 | Максимальное количество обнаружений, сохраняемых в каждом кадре перед отслеживанием; ограничивает число объектов, обрабатываемых решением в насыщенных сценах. |
quantize | int or str | None | Точность инференса: 16 (FP16) или 32/не задано (FP32) для моделей PyTorch и TorchScript; другие форматы используют точность, выбранную артефактом и средой выполнения. Заменяет устаревший флаг half. |
Также поддерживаются следующие настройки визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, показывает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки во время разработки или тестирования. |
show_conf | bool | True | Показывает оценку уверенности каждой детекции рядом с меткой. Позволяет оценить уверенность модели в каждой детекции. |
show_labels | bool | True | Показывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены. |
Как работает подсчёт по областям#
Решение RegionCounter преобразует каждую переданную область в многоугольник, состоящий как минимум из трёх точек. Простой список точек задаёт одну зону с именем Region#01, а словарь позволяет использовать собственные названия зон; каждая зона отображается отдельным цветом из палитры Ultralytics. Затем каждый кадр обрабатывается в три этапа:
- YOLO26 отслеживает объекты и обнаруживает каждый из них в кадре
- Для каждого отслеживаемого объекта решение вычисляет центр ограничивающей рамки и проверяет, в какие многоугольные области он попадает
- Счётчик каждой области отображается в её центре, а перед обработкой следующего кадра счётчики сбрасываются
Поскольку счётчики сбрасываются на каждом кадре, число, отображаемое для области, показывает её текущую заполненность — то есть сколько объектов находится в ней прямо сейчас, а не накопительный итог. Чтобы вести накопительный подсчёт объектов, пересекающих границу, используй решение 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.

