Ultralytics YOLO27:

TrackZone с использованием Ultralytics YOLO26#

Что такое TrackZone?#

Open TrackZone In Colab

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



Watch: How to Track Objects in Region using 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'botsort.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/не задано (FP32) для моделей PyTorch и TorchScript; остальные форматы выполняют вычисления с точностью, выбранной их артефактом и средой выполнения. Заменяет устаревший флаг 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, получив точный контроль над областями, которые хочешь отслеживать.

    # 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 — когда требуются несколько зон или невыпуклая форма.

Комментарии