Тепловые карты отслеживания объектов с Ultralytics YOLO26#
Решение Heatmap в Ultralytics YOLO26 отслеживает объекты между видеокадрами и накладывает на каждый кадр карту накопленной интенсивности их движения: оживлённые зоны выделяются тёплыми цветами, а спокойные остаются холодными. Решение построено на отслеживании объектов YOLO26 и превращает любое видео в карту пространственной активности, показывающую транспортные потоки, движение толпы и зоны длительного пребывания. Для этого достаточно одного вызова Python или команды CLI.
Смотри: Как создавать тепловые карты с Ultralytics YOLO26 | Визуализация активности объектов | VisionAI в розничной торговле 🚀
Зачем использовать тепловые карты для анализа видео?#
- Наглядное выявление закономерностей активности: интенсивность накапливается в местах, где находятся отслеживаемые объекты, поэтому оживлённые проходы, популярные полки и места скопления людей легко заметить без ручного просмотра каждого кадра.
- Отслеживание уже встроено: решение самостоятельно выполняет обнаружение и отслеживание объектов с помощью YOLO26, поэтому не нужно настраивать отдельный конвейер отслеживания.
- Подсчёт в том же проходе: передай
region, чтобы подсчитывать входящие в зону и выходящие из неё объекты одновременно с построением тепловой карты и объединить две аналитические задачи в одном запуске.
Применение в реальном мире#
| Транспорт | Розничная торговля |
|---|---|
![]() | ![]() |
| Тепловая карта транспорта Ultralytics YOLO | Тепловая карта розничной торговли Ultralytics YOLO |
Как создавать тепловые карты с помощью Ultralytics YOLO#
Запусти решение Heatmap для видеоисточника из CLI или Python. Пример на Python записывает обработанные кадры в выходной видеофайл:
# Run a heatmap example
yolo solutions heatmap show=True
# Pass a source video
yolo solutions heatmap source="path/to/video.mp4"
# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO
# Heatmaps + object counting
yolo solutions heatmap region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Аргументы Heatmap()#
Вот таблица с аргументами Heatmap:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Цветовая карта для тепловой карты. |
show_in | bool | True | Флаг, управляющий отображением счётчиков входа в видеопотоке. |
show_out | bool | True | Флаг, управляющий отображением счётчиков выхода в видеопотоке. |
region | list или dict | None | Точки, задающие интересующую область: список кортежей (x, y) или словарь, сопоставляющий названия областей со списками точек для нескольких областей (только RegionCounter). Если None, решения, которым требуется область, используют заданную по умолчанию область. |
line_width | int | 2 | Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение. |
verbose | bool | True | Включает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений. |
В решении Heatmap также можно использовать различные аргументы track.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'tracktrack.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 | Показывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены. |
Цветовые карты тепловой карты#
Аргумент colormap принимает любую цветовую карту OpenCV. Передай константу из модуля cv2, например colormap=cv2.COLORMAP_INFERNO:
| Название цветовой карты | Описание |
|---|---|
cv2.COLORMAP_AUTUMN | Цветовая карта «Осень» |
cv2.COLORMAP_BONE | Цветовая карта «Кость» |
cv2.COLORMAP_JET | Цветовая карта Jet |
cv2.COLORMAP_WINTER | Цветовая карта Winter |
cv2.COLORMAP_RAINBOW | Цветовая карта Rainbow |
cv2.COLORMAP_OCEAN | Цветовая карта Ocean |
cv2.COLORMAP_SUMMER | Цветовая карта Summer |
cv2.COLORMAP_SPRING | Цветовая карта Spring |
cv2.COLORMAP_COOL | Цветовая карта Cool |
cv2.COLORMAP_HSV | Цветовая карта HSV (оттенок, насыщенность, значение) |
cv2.COLORMAP_PINK | Цветовая карта Pink |
cv2.COLORMAP_HOT | Цветовая карта Hot |
cv2.COLORMAP_PARULA | Цветовая карта Parula |
cv2.COLORMAP_MAGMA | Цветовая карта Magma |
cv2.COLORMAP_INFERNO | Цветовая карта Inferno |
cv2.COLORMAP_PLASMA | Цветовая карта Plasma |
cv2.COLORMAP_VIRIDIS | Цветовая карта Viridis |
cv2.COLORMAP_CIVIDIS | Цветовая карта Cividis |
cv2.COLORMAP_TWILIGHT | Цветовая карта Twilight |
cv2.COLORMAP_TWILIGHT_SHIFTED | Смещённая цветовая карта Twilight |
cv2.COLORMAP_TURBO | Цветовая карта Turbo |
cv2.COLORMAP_DEEPGREEN | Цветовая карта Deep Green |
Как работают тепловые карты#
Решение Heatmap расширяет класс ObjectCounter. При обработке первого кадра оно создаёт пустой слой интенсивности, соответствующий размеру кадра. Каждый кадр обрабатывается в два этапа:
- YOLO26 отслеживает объекты и обнаруживает каждый из них в кадре
- Для каждого отслеживаемого объекта интенсивность тепловой карты увеличивается в круглой области с центром в его ограничивающей рамке
Один раз за кадр накопленный слой интенсивности нормализуется, раскрашивается с помощью выбранной цветовой карты и накладывается на исходный кадр. Наложение появляется, когда отслежен хотя бы один объект; до этого кадры отображаются без тепловой карты.
В результате получается динамическая визуализация, которая формируется со временем и показывает схемы движения транспорта и толпы, а также другие пространственные закономерности в видеоданных. Если задан region, решение также подсчитывает объекты, входящие в эту область и покидающие её, пока формируется тепловая карта.
Заключение#
Решение Ultralytics YOLO26 Heatmap преобразует результаты отслеживания объектов в наглядное наложение активности — для этого достаточно нескольких строк кода. Чтобы расширить возможности, объедини его с подсчётом объектов, изучи другие решения Ultralytics или прочитай об используемом режиме отслеживания.
Часто задаваемые вопросы#
Ultralytics YOLO26 строит тепловые карты, отслеживая объекты в последовательности видеокадров и накапливая значения интенсивности в местах нахождения каждого отслеживаемого объекта, а затем раскрашивает результат и накладывает его на исходный кадр. В областях, где объекты часто появляются или задерживаются, интенсивность накапливается и отображается более тёплыми цветами. Варианты настройки см. в разделе
Heatmap()«Аргументы».Используй
cv2.VideoWriterиз OpenCV и записывайresults.plot_imдля каждого обработанного кадра, как показано в основном примере. Атрибутplot_imсодержит кадр, на который уже наложена тепловая карта.Да. Передай аргумент
regionвHeatmap(), указав точки линии, прямоугольника или многоугольника. Решение будет подсчитывать объекты, входящие в эту область и покидающие её, пока формируется тепловая карта. Возвращаемые результаты включаютin_count,out_countи количество объектов каждого класса. Подробнее о настройке областей см. в руководстве по подсчёту объектов.Передай аргумент
classesвHeatmap(), указав индексы классов, которые нужно оставить. Например,classes=[0, 2]строит тепловую карту только по людям и автомобилям (индексы классов COCO 0 и 2):import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") heatmap = solutions.Heatmap(show=True, model="yolo26n.pt", classes=[0, 2]) while cap.isOpened(): success, im0 = cap.read() if not success: break results = heatmap(im0) cap.release() cv2.destroyAllWindows()Тепловые карты Ultralytics YOLO26 объединяют обнаружение объектов, отслеживание, накопление интенсивности и наложение результата в одном вызове, тогда как с универсальными инструментами, такими как OpenCV или Matplotlib, тебе придётся самостоятельно создавать весь конвейер. Решение обрабатывает видеопотоки в реальном времени и сразу поддерживает постоянное отслеживание и настраиваемые цветовые карты. Подробнее об используемой модели см. на странице модели YOLO26.

