TrackZone с использованием Ultralytics YOLO26#
Что такое TrackZone?#
TrackZone специализируется на мониторинге объектов в обозначенных областях кадра, а не во всём кадре. Построенный на базе Ultralytics YOLO26, он объединяет обнаружение объектов и отслеживание именно в пределах зон для видео и потоков с камер в реальном времени. Передовые алгоритмы YOLO26 и технологии глубокого обучения делают его отличным выбором для сценариев реального времени, обеспечивая точное и эффективное отслеживание объектов в таких приложениях, как мониторинг толпы и видеонаблюдение.
Watch: How to Track Objects in Region using 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 | '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 | Отображает метки каждой детекции в визуальном результате. Даёт непосредственное представление об обнаруженных объектах. |
Подсчёт объектов внутри зоны#
Каждый вызов трекера возвращает объект 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, получив точный контроль над областями, которые хочешь отслеживать.
# Define region points region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)] # Initialize trackzone trackzone = solutions.TrackZone( show=True, # display the output region=region_points, # pass region points )Помни, что
TrackZoneсводит точки к их выпуклой оболочке, поэтому перечисляй их по порядку вдоль периметра области, которую нужно отслеживать.Все три решения работают с областями, но отвечают на разные вопросы:
Решение Используй для Типичный результат TrackZone Отслеживания объектов и мониторинга заполненности в реальном времени внутри одной выпуклой зоны Идентификаторы отслеживаемых объектов и total_tracksдля зоныObjectCounter Подсчёта объектов, пересекающих линию или входящих в область и выходящих из неё Накопленные значения входов и выходов RegionCounter Подсчёта объектов внутри одной или нескольких произвольных областей, включая невыпуклые Количество объектов в каждой области Выбирай TrackZone, когда нужно непрерывное отслеживание внутри одной области, а RegionCounter — когда требуются несколько зон или невыпуклая форма.

