Ultralytics YOLO27:
Get Started

Тепловые карты отслеживания объектов с Ultralytics YOLO26#

Open Heatmaps In Colab

Решение Heatmap в Ultralytics YOLO26 отслеживает объекты между видеокадрами и накладывает на каждый кадр карту накопленной интенсивности их движения: оживлённые зоны выделяются тёплыми цветами, а спокойные остаются холодными. Решение построено на отслеживании объектов YOLO26 и превращает любое видео в карту пространственной активности, показывающую транспортные потоки, движение толпы и зоны длительного пребывания. Для этого достаточно одного вызова Python или команды CLI.



Смотри: Как создавать тепловые карты с Ultralytics YOLO26 | Визуализация активности объектов | VisionAI в розничной торговле 🚀

Зачем использовать тепловые карты для анализа видео?#

  • Наглядное выявление закономерностей активности: интенсивность накапливается в местах, где находятся отслеживаемые объекты, поэтому оживлённые проходы, популярные полки и места скопления людей легко заметить без ручного просмотра каждого кадра.
  • Отслеживание уже встроено: решение самостоятельно выполняет обнаружение и отслеживание объектов с помощью YOLO26, поэтому не нужно настраивать отдельный конвейер отслеживания.
  • Подсчёт в том же проходе: передай region, чтобы подсчитывать входящие в зону и выходящие из неё объекты одновременно с построением тепловой карты и объединить две аналитические задачи в одном запуске.

Применение в реальном мире#

ТранспортРозничная торговля
Тепловая карта Ultralytics YOLO с наложением плотности автомобильного движенияТепловая карта Ultralytics YOLO с наложением перемещений покупателей в магазине
Тепловая карта транспорта Ultralytics YOLOТепловая карта розничной торговли Ultralytics YOLO

Как создавать тепловые карты с помощью Ultralytics YOLO#

Запусти решение Heatmap для видеоисточника из CLI или Python. Пример на Python записывает обработанные кадры в выходной видеофайл:

Тепловые карты с помощью Ultralytics YOLO
# 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:

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
colormapintcv2.COLORMAP_DEEPGREENЦветовая карта для тепловой карты.
show_inboolTrueФлаг, управляющий отображением счётчиков входа в видеопотоке.
show_outboolTrueФлаг, управляющий отображением счётчиков выхода в видеопотоке.
regionlist или dictNoneТочки, задающие интересующую область: список кортежей (x, y) или словарь, сопоставляющий названия областей со списками точек для нескольких областей (только RegionCounter). Если None, решения, которым требуется область, используют заданную по умолчанию область.
line_widthint2Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение.
verboseboolTrueВключает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений.

В решении Heatmap также можно использовать различные аргументы track.

АргументТипПо умолчаниюОписание
trackerstr'tracktrack.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Показывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены.

Цветовые карты тепловой карты#

Аргумент 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. При обработке первого кадра оно создаёт пустой слой интенсивности, соответствующий размеру кадра. Каждый кадр обрабатывается в два этапа:

  1. YOLO26 отслеживает объекты и обнаруживает каждый из них в кадре
  2. Для каждого отслеживаемого объекта интенсивность тепловой карты увеличивается в круглой области с центром в его ограничивающей рамке

Один раз за кадр накопленный слой интенсивности нормализуется, раскрашивается с помощью выбранной цветовой карты и накладывается на исходный кадр. Наложение появляется, когда отслежен хотя бы один объект; до этого кадры отображаются без тепловой карты.

В результате получается динамическая визуализация, которая формируется со временем и показывает схемы движения транспорта и толпы, а также другие пространственные закономерности в видеоданных. Если задан 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.

Комментарии