Ultralytics YOLO27:
Get Started

TrackZone с Ultralytics YOLO26#

Что такое TrackZone?#

Open TrackZone In Colab

TrackZone предназначен для мониторинга объектов в заданных областях кадра, а не во всём кадре. Решение построено на базе Ultralytics YOLO26 и объединяет обнаружение объектов и их отслеживание в отдельных зонах на видео и в трансляциях с камер. Современные алгоритмы и технологии глубокого обучения YOLO26 делают его отличным выбором для задач реального времени: он обеспечивает точное и эффективное отслеживание объектов при мониторинге скоплений людей и видеонаблюдении.



Смотри: Как отслеживать объекты в области с помощью Ultralytics YOLO26 | TrackZone 🚀

Преимущества отслеживания объектов в зонах (TrackZone)#

  • Целевой анализ: Отслеживание объектов в отдельных зонах позволяет получать более целенаправленные данные и точно контролировать и анализировать интересующие области, например входы или зоны ограниченного доступа.
  • Снижение нагрузки на последующую обработку: Игнорируя объекты за пределами зоны, TrackZone отбрасывает нерелевантные обнаружения, поэтому в последующей логике нужно подсчитывать, регистрировать или учитывать в оповещениях меньше объектов. При этом обнаружение выполняется на кадре исходного размера с маской, а не на узком фрагменте зоны, поэтому преимущество заключается в более чистом и целевом результате, а не в ускорении инференса модели.
  • Повышение безопасности: Отслеживание в заданных зонах улучшает видеонаблюдение, помогая контролировать важные участки и своевременно выявлять подозрительную активность или нарушения безопасности.
  • Масштабируемые решения: Возможность сосредоточиться на отдельных зонах позволяет адаптировать TrackZone к самым разным сценариям — от торговых помещений до промышленных объектов — и обеспечивает простую интеграцию и масштабирование.

Применение в реальном мире#

Сельское хозяйствоТранспорт
Отслеживание растений в поле с помощью Ultralytics YOLO26Отслеживание автомобилей на дороге с помощью Ultralytics YOLO26
Отслеживание растений в поле с помощью Ultralytics YOLO26Отслеживание автомобилей на дороге с помощью Ultralytics YOLO26
TrackZone с Ultralytics YOLO
# 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:

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
regionlist или dictNoneТочки, задающие интересующую область: список кортежей (x, y) или словарь, сопоставляющий названия областей со списками точек для нескольких областей (только RegionCounter). Если None, решения, которым требуется область, используют заданную по умолчанию область.
line_widthint2Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение.
verboseboolTrueВключает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений.

Решение TrackZone поддерживает параметры track:

АргументТипПо умолчаниюОписание
trackerstr'tracktrack.yaml'Задаёт алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Задаёт порог уверенности для обнаружений: при более низких значениях можно отслеживать больше объектов, но возрастает вероятность ложноположительных срабатываний.
ioufloat0.7Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
devicestrNoneЗадаёт устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, определённый GPU или другое вычислительное устройство для выполнения модели.
imgszint or tuple640Целевой размер изображения для инференса: целое число для квадратного изображения или пара (height, width). Размеры корректируются с учётом шага модели.
max_detint300Максимальное количество обнаружений, сохраняемых в каждом кадре перед отслеживанием; ограничивает число объектов, обрабатываемых решением в насыщенных сценах.
quantizeint or strNoneТочность инференса: 16 (FP16) или 32/unset (FP32) для моделей PyTorch и TorchScript не на CPU; для других форматов точность определяется артефактом модели и средой выполнения. Заменяет устаревший аргумент half.

Также доступны следующие параметры визуализации:

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, показывает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки во время разработки или тестирования.
show_confboolTrueПоказывает оценку уверенности каждой детекции рядом с меткой. Позволяет оценить уверенность модели в каждой детекции.
show_labelsboolTrueПоказывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены.

Подсчёт объектов внутри зоны#

Каждый вызов трекера возвращает объект 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 — если нужны несколько зон или невыпуклая область.

Комментарии