Тепловые карты отслеживания объектов с Ultralytics YOLO26#
Решение для тепловых карт в Ultralytics YOLO26 отслеживает объекты в последовательности кадров видео и накладывает на каждый кадр интенсивность их накопленного перемещения: в оживлённых областях появляются тёплые цвета, а спокойные области остаются холодными. Построенное на основе отслеживания объектов YOLO26, это решение превращает любое видео в пространственную карту активности, показывающую транспортные потоки, перемещение людей и зоны задержки с помощью одного вызова Python или команды CLI.
Watch: Heatmaps using Ultralytics YOLO26
Зачем использовать тепловые карты для анализа видео?#
- Мгновенно выявляй закономерности активности: Интенсивность накапливается там, где отслеживаемые объекты проводят время, поэтому полосы с интенсивным движением, популярные полки или места скопления людей заметны без ручного покадрового просмотра.
- Отслеживание уже встроено: Решение самостоятельно выполняет обнаружение и отслеживание с помощью YOLO26, поэтому тебе не нужно настраивать отдельный конвейер отслеживания.
- Подсчёт за один проход: Передай
region, чтобы считать объекты, входящие в зону и выходящие из неё, пока строится тепловая карта, объединив две аналитические задачи в одном запуске.
Примеры использования в реальном мире#
| Транспорт | Розничная торговля |
|---|---|
![]() | ![]() |
| Тепловая карта транспорта Ultralytics YOLO | Тепловая карта розничной торговли Ultralytics YOLO |
Как создавать тепловые карты с помощью Ultralytics YOLO#
Запусти решение для тепловых карт на источнике видео через 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 | Включает покадровый журнал решения с указанием формы входных данных, количества классов и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода. |
Ты также можешь применять другие аргументы 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 | Задаёт порог пересечения над объединением (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 | Цветовая карта Autumn |
cv2.COLORMAP_BONE | Цветовая карта 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 |
Как работают тепловые карты#
Решение для тепловых карт расширяет класс ObjectCounter. На первом обработанном кадре оно создаёт пустой слой интенсивности, соответствующий размеру кадра. Затем каждый кадр обрабатывается в два этапа:
- отслеживание YOLO26 обнаруживает каждый объект в кадре и отслеживает его
- для каждого отслеживаемого объекта интенсивность тепловой карты увеличивается в пределах круглой области с центром в его ограничивающей рамке
Один раз за кадр накопленный слой интенсивности нормализуется, окрашивается с помощью выбранной цветовой карты и объединяется с исходным кадром. Наложение появляется, как только отслеживается хотя бы один объект; кадры без отслеживаемых объектов отображаются без наложения тепловой карты.
В результате получается динамическая визуализация, которая накапливается со временем и показывает схемы движения транспорта, перемещения людей и другие пространственные особенности в данных видео. Если задан region, решение также считает объекты, входящие в эту область и выходящие из неё, пока строится тепловая карта.
Заключение#
Решение Ultralytics YOLO26 для тепловых карт превращает результаты отслеживания объектов в интуитивно понятное наложение активности с помощью нескольких строк кода. Чтобы продолжить, объедини его с подсчётом объектов, изучи другие решения 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.

