Подсчёт объектов в областях с помощью 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#
Запусти решение 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 | 'botsort.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()Arguments.RegionCounterпоказывает, сколько объектов находится в каждой многоугольной зоне на текущем кадре, а ObjectCounter ведёт накопительный подсчёт объектов при пересечении ими линии или границы области, отслеживая общее количество входов и выходов. ИспользуйRegionCounterдля отображения текущей заполненности одной или нескольких зон, аObjectCounter— для подсчёта входов и выходов; области в форме линий поддерживаются толькоObjectCounter.

