TrackZone с Ultralytics YOLO26#
Что такое TrackZone?#
TrackZone предназначен для мониторинга объектов в заданных областях кадра, а не во всём кадре. Решение построено на базе Ultralytics YOLO26 и объединяет обнаружение объектов и их отслеживание в отдельных зонах на видео и в трансляциях с камер. Современные алгоритмы и технологии глубокого обучения YOLO26 делают его отличным выбором для задач реального времени: он обеспечивает точное и эффективное отслеживание объектов при мониторинге скоплений людей и видеонаблюдении.
Смотри: Как отслеживать объекты в области с помощью Ultralytics YOLO26 | TrackZone 🚀
Преимущества отслеживания объектов в зонах (TrackZone)#
- Целевой анализ: Отслеживание объектов в отдельных зонах позволяет получать более целенаправленные данные и точно контролировать и анализировать интересующие области, например входы или зоны ограниченного доступа.
- Снижение нагрузки на последующую обработку: Игнорируя объекты за пределами зоны, TrackZone отбрасывает нерелевантные обнаружения, поэтому в последующей логике нужно подсчитывать, регистрировать или учитывать в оповещениях меньше объектов. При этом обнаружение выполняется на кадре исходного размера с маской, а не на узком фрагменте зоны, поэтому преимущество заключается в более чистом и целевом результате, а не в ускорении инференса модели.
- Повышение безопасности: Отслеживание в заданных зонах улучшает видеонаблюдение, помогая контролировать важные участки и своевременно выявлять подозрительную активность или нарушения безопасности.
- Масштабируемые решения: Возможность сосредоточиться на отдельных зонах позволяет адаптировать TrackZone к самым разным сценариям — от торговых помещений до промышленных объектов — и обеспечивает простую интеграцию и масштабирование.
Применение в реальном мире#
| Сельское хозяйство | Транспорт |
|---|---|
![]() | ![]() |
| Отслеживание растений в поле с помощью Ultralytics YOLO26 | Отслеживание автомобилей на дороге с помощью Ultralytics YOLO26 |
# Run a trackzone example
yolo solutions trackzone show=True
# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True
# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"TrackZone использует список region, чтобы определить, какую часть кадра нужно контролировать. Задай многоугольник, соответствующий нужной физической зоне (дверям, воротам и т. д.), и оставь включённым show=True во время настройки, чтобы проверить, совпадает ли наложенная область с видеопотоком.
- Каждая запись в
region— это координата пикселя(x, y)в кадре видео. Перечисли точки в том порядке, в котором их нужно соединить по периметру контролируемой области. - Координаты привязаны к разрешению кадра, поэтому область, заданная для потока 1280×720, не подойдёт для потока 640×480. Оставь включённым
show=Trueво время настройки, чтобы убедиться, что наложенная область совпадает с видеопотоком. TrackZoneсводит точки к их выпуклой оболочке, поэтому вогнутая фигура упрощается до наименьшего выпуклого многоугольника, содержащего все её точки. Для невыпуклых фигур или нескольких отдельных областей используй решение RegionCounter.- Если полностью не указать
region, будет использоваться зона по умолчанию[(75, 75), (565, 75), (565, 285), (75, 285)].
Аргументы TrackZone#
Вот таблица с аргументами TrackZone:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
region | list или dict | None | Точки, задающие интересующую область: список кортежей (x, y) или словарь, сопоставляющий названия областей со списками точек для нескольких областей (только RegionCounter). Если None, решения, которым требуется область, используют заданную по умолчанию область. |
line_width | int | 2 | Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение. |
verbose | bool | True | Включает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений. |
Решение TrackZone поддерживает параметры track:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
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/unset (FP32) для моделей PyTorch и TorchScript не на CPU; для других форматов точность определяется артефактом модели и средой выполнения. Заменяет устаревший аргумент half. |
Также доступны следующие параметры визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, показывает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки во время разработки или тестирования. |
show_conf | bool | True | Показывает оценку уверенности каждой детекции рядом с меткой. Позволяет оценить уверенность модели в каждой детекции. |
show_labels | bool | True | Показывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены. |
Подсчёт объектов внутри зоны#
Каждый вызов трекера возвращает объект SolutionResults, атрибут total_tracks которого содержит количество объектов, отслеживаемых в данный момент внутри зоны. Проверяй это значение на каждом кадре, чтобы отслеживать текущую заполненность, например, записывать, насколько загружен вход или зона ограниченного доступа:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = trackzone(im0)
print(f"Objects currently in zone: {results.total_tracks}") # live zone occupancy
cap.release()Часто задаваемые вопросы#
С помощью Ultralytics YOLO26 легко отслеживать объекты в заданной области или зоне кадра видео. Просто выполни приведённую ниже команду, чтобы начать отслеживание. Такой подход обеспечивает эффективный анализ и точные результаты, поэтому он подходит для видеонаблюдения, управления скоплениями людей и других задач, требующих отслеживания в заданных зонах.
yolo solutions trackzone source="path/to/video.mp4" show=TrueВсего несколько строк кода — и ты настроишь отслеживание объектов в отдельных зонах, которое легко интегрировать в свои проекты.
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer = cv2.VideoWriter("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) trackzone = solutions.TrackZone( show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt" ) while cap.isOpened(): success, im0 = cap.read() if not success: break results = trackzone(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows()Настроить точки зоны для обработки видео с помощью Ultralytics TrackZone просто, а параметры можно адаптировать под свои задачи. Зоны можно задать и изменить непосредственно в скрипте Python, точно указав области, которые нужно контролировать.
from ultralytics import solutions # Задание точек области region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)] # Инициализация trackzone trackzone = solutions.TrackZone( show=True, # отобразить результат region=region_points, # передать точки области )Помни, что
TrackZoneсводит точки к их выпуклой оболочке, поэтому вогнутая граница упрощается до наименьшего выпуклого многоугольника, содержащего все её точки.Все три решения работают с областями, но отвечают на разные вопросы:
Решение Для чего использовать Типичный результат TrackZone Отслеживать объекты и контролировать текущую заполненность одной выпуклой зоны Идентификаторы отслеживаемых объектов и total_tracksдля зоныObjectCounter Подсчитывать объекты, пересекающие линию или входящие в область и покидающие её Суммарное количество вошедших и вышедших объектов RegionCounter Подсчитывать объекты в одной или нескольких произвольных областях, в том числе невыпуклых Количество объектов в каждой области Выбирай TrackZone, если нужно непрерывно отслеживать объекты в одной области, а RegionCounter — если нужны несколько зон или невыпуклая область.

