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 | Точки, определяющие область интереса (ROI): либо список кортежей (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 | Устанавливает порог 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 | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
Подсчет объектов внутри зоны#
Каждый вызов трекера возвращает объект 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()FAQ#
Отслеживание объектов в заданной области или зоне видеокадра с помощью 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 Отслеживание объектов и мониторинг заполненности в реальном времени внутри одной выпуклой зоны Отслеживаемые ID и total_tracksдля зоныObjectCounter Подсчет объектов, пересекающих линию или входящих в регион и выходящих из него Накопительное количество вошедших и вышедших RegionCounter Подсчет объектов внутри одного или нескольких произвольных (включая невыпуклые) регионов Количество объектов по каждому региону Выбирай TrackZone, когда тебе нужен непрерывный трекинг внутри одной области, и RegionCounter, когда тебе нужно несколько зон или невыпуклая форма.

