Ultralytics YOLO27:

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

Open Heatmaps In Colab

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



Watch: Heatmaps using Ultralytics YOLO26

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

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

Примеры использования в реальном мире#

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

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

Запусти решение для тепловых карт на источнике видео через 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Включает покадровый журнал решения с указанием формы входных данных, количества классов и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода.

Ты также можешь применять другие аргументы track в решении Heatmap.

АргументТипПо умолчаниюОписание
trackerstr'botsort.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Цветовая карта 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. На первом обработанном кадре оно создаёт пустой слой интенсивности, соответствующий размеру кадра. Затем каждый кадр обрабатывается в два этапа:

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

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

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

Комментарии