Тепловые карты отслеживания объектов с Ultralytics YOLO26#
Heatmap solution в Ultralytics YOLO26 отслеживает объекты по кадрам видео и накладывает интенсивность их накопленного движения на каждый кадр, поэтому оживленные зоны подсвечиваются теплыми цветами, а спокойные остаются холодными. Созданное на базе object tracking YOLO26, оно превращает любое видео в карту пространственной активности, которая выявляет транспортные потоки, движение толпы и зоны застоя с помощью одного вызова Python или команды CLI.
Watch: Heatmaps using Ultralytics YOLO26
Зачем использовать тепловые карты для видеоаналитики?#
- Мгновенное обнаружение паттернов активности: Интенсивность накапливается там, где отслеживаемые объекты проводят время, поэтому оживленные полосы, популярные полки или места скопления людей выделяются без необходимости ручного просмотра кадр за кадром.
- Встроенное отслеживание: Решение выполняет обнаружение и отслеживание 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 | Точки, определяющие область интереса (ROI): либо список кортежей (x, y), либо словарь, сопоставляющий имена областей со списками точек для нескольких областей (только для RegionCounter). Когда None, решения, требующие наличия области, возвращаются к предопределенному значению по умолчанию. |
line_width | int | 2 | Толщина линий для рамок, ключевых точек и подсчетов, отрисовываемых решением. |
verbose | bool | True | Включает покадровый лог решения, содержащий форму входных данных, количество классов и скорость обработки. Сам вызов трекинга всегда выполняется молча. |
Ты также можешь применять различные аргументы track в решении Heatmap.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
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 | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
Цветовые карты (Colormaps) тепловых карт#
Аргумент colormap принимает любую OpenCV colormap. Передай константу из модуля cv2, например colormap=cv2.COLORMAP_INFERNO:
| Название цветовой карты | Описание |
|---|---|
cv2.COLORMAP_AUTUMN | Осенняя цветовая карта |
cv2.COLORMAP_BONE | Костяная цветовая карта |
cv2.COLORMAP_JET | Цветовая карта Jet |
cv2.COLORMAP_WINTER | Зимняя цветовая карта |
cv2.COLORMAP_RAINBOW | Радужная цветовая карта |
cv2.COLORMAP_OCEAN | Океаническая цветовая карта |
cv2.COLORMAP_SUMMER | Летняя цветовая карта |
cv2.COLORMAP_SPRING | Весенняя цветовая карта |
cv2.COLORMAP_COOL | Холодная цветовая карта |
cv2.COLORMAP_HSV | Цветовая карта HSV (оттенок, насыщенность, значение) |
cv2.COLORMAP_PINK | Розовая цветовая карта |
cv2.COLORMAP_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 | Цветовая карта сумерек |
cv2.COLORMAP_TWILIGHT_SHIFTED | Смещенная цветовая карта сумерек |
cv2.COLORMAP_TURBO | Цветовая карта Turbo |
cv2.COLORMAP_DEEPGREEN | Темно-зеленая цветовая карта |
Как работают тепловые карты#
Heatmap solution расширяет класс ObjectCounter. На первом обработанном кадре он создает пустой слой интенсивности, соответствующий размеру кадра. Затем каждый кадр обрабатывается в два этапа:
- Отслеживание YOLO26 обнаруживает и следует за каждым объектом в кадре
- Для каждого отслеживаемого объекта интенсивность тепловой карты увеличивается в пределах круговой области, центрированной в его ограничительной рамке (bbox)
Раз в кадр накопленный слой интенсивности нормализуется, раскрашивается с помощью выбранной цветовой карты и накладывается на исходный кадр. Наложение появляется, как только отслеживается хотя бы один объект; кадры без отслеживаемых объектов отображаются без наложения тепловой карты.
Результатом является динамическая визуализация, которая формируется со временем, выявляя закономерности движения транспорта, перемещения толпы или другое пространственное поведение в твоих видеоданных. Когда задан region, решение также counts objects, входящих в эту область и выходящих из нее во время построения тепловой карты.
Заключение#
Решение Ultralytics YOLO26 Heatmap превращает результаты отслеживания объектов в интуитивное наложение активности с помощью нескольких строк кода. Чтобы пойти дальше, объедини его с object counting, изучи другие Ultralytics Solutions или прочитай о лежащем в основе tracking mode.
FAQ#
Ultralytics YOLO26 генерирует тепловые карты путем отслеживания объектов по кадрам видео и накопления значения интенсивности в месте расположения каждого отслеживаемого объекта, а затем раскрашивания результата и его смешивания с исходным кадром. Области, где объекты появляются часто или задерживаются, накапливают большую интенсивность и отображаются более теплыми цветами. Варианты конфигурации см. в разделе Аргументы
Heatmap().Используй
cv2.VideoWriterиз OpenCV и пишиresults.plot_imдля каждого обработанного кадра, как показано в main example. Атрибутplot_imсодержит кадр с уже примененным наложением тепловой карты.Да. Передай аргумент
regionвHeatmap()с точками линии, прямоугольника или многоугольника, и решение будет считать объекты, входящие в эту область и выходящие из нее по мере построения тепловой карты. Возвращаемые результаты включаютin_count,out_countи подсчеты по классам. Сведения о настройке региона см. в object counting guide.Передай аргумент
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 объединяют object detection, трекинг, накопление интенсивности и рендеринг наложения в один вызов, в то время как общие инструменты, такие как OpenCV или Matplotlib, требуют самостоятельного создания этого конвейера. Решение обрабатывает видеопотоки в реальном времени и из коробки поддерживает постоянное трекингование и настраиваемые палитры. Подробную информацию о лежащей в основе модели см. на YOLO26 model page.

