Link to this sectionTrackZone с использованием Ultralytics YOLO26#
Link to this sectionЧто такое TrackZone?#
TrackZone специализируется на мониторинге объектов в пределах заданных областей кадра, а не всего кадра целиком. Построенный на базе Ultralytics YOLO26, он объединяет обнаружение объектов и отслеживание конкретно внутри зон для видео и потоков с камер в реальном времени. Передовые алгоритмы YOLO26 и технологии глубинного обучения делают его идеальным выбором для задач, требующих точного и эффективного отслеживания объектов, например, в мониторинге толпы и системах видеонаблюдения.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
Link to this sectionПреимущества отслеживания объектов в зонах (TrackZone)#
- Целевой анализ: Отслеживание объектов внутри определенных зон позволяет получать более сфокусированные данные, обеспечивая точный мониторинг и анализ интересующих областей, таких как точки входа или ограниченные зоны.
- Снижение нагрузки на последующую обработку: Игнорируя объекты вне зоны, TrackZone удаляет нерелевантные обнаружения, уменьшая количество объектов, которые нужно подсчитывать, регистрировать или по которым нужно отправлять оповещения в твоей собственной логике. Обнаружение все равно выполняется на полноразмерном кадре, а не на уменьшенном фрагменте зоны, поэтому преимущество заключается в получении более чистого и сфокусированного результата, а не в ускорении инференса модели.
- Улучшенная безопасность: Зональное отслеживание улучшает видеонаблюдение за счет мониторинга критических зон, помогая в раннем обнаружении необычной активности или нарушений безопасности.
- Масштабируемые решения: Возможность фокусироваться на конкретных зонах делает TrackZone адаптируемым к различным сценариям, от торговых площадей до промышленных объектов, обеспечивая бесшовную интеграцию и масштабируемость.
Link to this sectionРеальные сценарии применения#
| Сельское хозяйство | Транспорт |
|---|---|
| Отслеживание растений на поле с помощью 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)].
Link to this sectionАргументы TrackZone#
Вот таблица с аргументами TrackZone:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
region | list | '[(20, 400), (1260, 400)]' | Список точек, определяющих область подсчета. |
Решение TrackZone включает поддержку параметров track:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Указывает алгоритм отслеживания, который нужно использовать. Встроенные опции: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.1 | Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания. |
iou | float | 0.7 | Устанавливает порог Intersection over Union (IoU) для фильтрации перекрывающихся обнаружений. |
classes | list | None | Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы. |
verbose | bool | True | Контролирует отображение результатов отслеживания, предоставляя визуальный вывод отслеживаемых объектов. |
device | str | None | Указывает устройство для вывода (например, cpu, cuda:0 или 0). Позволяет выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели. |
Более того, доступны следующие параметры визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования. |
line_width | int or None | None | Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически подстраивается под размер изображения. Обеспечивает визуальную настройку для ясности. |
show_conf | bool | True | Отображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении. |
show_labels | bool | True | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
Link to this sectionПодсчет объектов внутри зоны#
Каждый вызов трекера возвращает объект 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()Link to this sectionFAQ#
Link to this sectionКак мне отслеживать объекты в определенной области или зоне видеокадра с помощью Ultralytics YOLO26?#
Отслеживание объектов в заданной области или зоне видеокадра с помощью Ultralytics YOLO26 выполняется очень просто. Просто используй команду, приведенную ниже, чтобы запустить отслеживание. Этот подход обеспечивает эффективный анализ и точные результаты, что делает его идеальным для таких приложений, как видеонаблюдение, управление толпой или любой сценарий, требующий зонального отслеживания.
yolo solutions trackzone source="path/to/video.mp4" show=TrueLink to this sectionКак я могу использовать TrackZone в Python с Ultralytics YOLO26?#
Всего за несколько строк кода ты можешь настроить отслеживание объектов в определенных зонах, что упрощает интеграцию в твои проекты.
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()Link to this sectionКак настроить точки зоны для обработки видео с помощью Ultralytics TrackZone?#
Настройка точек зоны для обработки видео с помощью 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 сводит точки к их выпуклой оболочке, поэтому перечисляй их по порядку вдоль периметра области, которую хочешь отслеживать.
Link to this sectionКогда использовать TrackZone вместо ObjectCounter или RegionCounter?#
Все три решения работают с регионами, но они отвечают на разные вопросы:
| Решение | Используй для | Типичный результат |
|---|---|---|
| TrackZone | Отслеживание объектов и мониторинг заполненности в реальном времени внутри одной выпуклой зоны | Отслеживаемые ID и total_tracks для зоны |
| ObjectCounter | Подсчет объектов, пересекающих линию или входящих в регион и выходящих из него | Накопительное количество вошедших и вышедших |
| RegionCounter | Подсчет объектов внутри одного или нескольких произвольных (включая невыпуклые) регионов | Количество объектов по каждому региону |
Выбирай TrackZone, если тебе нужно непрерывное отслеживание внутри одной области, и RegionCounter, если тебе нужно несколько зон или невыпуклая форма.