Meet YOLO26: next-gen vision AI.

Link to this section使用 Ultralytics YOLO26 进行对象跟踪热图分析#

Open Heatmaps In Colab

The Heatmap solution in Ultralytics YOLO26 tracks objects across video frames and overlays their accumulated movement intensity onto each frame, so busy areas glow in warm colors while quiet areas stay cool. Built on YOLO26 object tracking, it turns any video into a spatial activity map that reveals traffic flow, crowd movement, and dwell zones with a single Python call or CLI command.



Watch: Heatmaps using Ultralytics YOLO26

Link to this section为什么要将热图用于视频分析?#

  • 一目了然地发现活动模式: 强度会在被跟踪对象停留的地方累积,因此高流量车道、热门货架或人群瓶颈无需逐帧手动查看即可凸显出来。
  • 内置跟踪功能: 该解决方案在内部运行 YOLO26 检测和跟踪,因此无需额外设置跟踪流水线。
  • 同步计数: 在构建热图的同时,通过传递 region 参数来统计进入和离开区域的对象,一次运行即可完成两项分析任务。

Link to this section现实世界应用#

交通运输零售
显示车辆交通密度的 Ultralytics YOLO 热图叠加显示零售客户移动的 Ultralytics YOLO 热图叠加
Ultralytics YOLO 交通热图Ultralytics YOLO 零售热图

Link to this section如何使用 Ultralytics YOLO 生成热图#

通过 CLI 或 Python 在视频源上运行 Heatmap 解决方案。以下 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)]"

Link to this sectionHeatmap() 参数#

这是一个包含 Heatmap 参数的表格:

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
colormapintcv2.COLORMAP_DEEPGREEN用于热力图的颜色映射。
show_inboolTrue控制是否在视频流上显示进入计数的标志。
show_outboolTrue控制是否在视频流上显示离开计数的标志。
regionlistdictNone定义感兴趣区域的点,可以是 (x, y) 元组列表,也可以是将区域名称映射到点列表的字典(仅适用于 RegionCounter)。当为 None 时,需要区域的解决方案将回退到预定义的默认值。

You can also apply different track arguments in the Heatmap solution.

参数类型默认值描述
trackerstr'botsort.yaml'指定要使用的追踪算法。内置选项包括:botsort.yamlbytetrack.yamlocsort.yamldeepocsort.yamlfasttrack.yamltracktrack.yaml
conffloat0.1设置检测的置信度阈值;较低的值允许跟踪更多的对象,但也可能包含误报。
ioufloat0.7设置用于过滤重叠检测的 交并比 (IoU) 阈值。
classeslistNone按类别索引过滤结果。例如,classes=[0, 2, 3] 仅跟踪指定的类别。
verboseboolTrue控制跟踪结果的显示,提供被跟踪对象的视觉输出。
devicestrNone指定推理设备(例如 cpucuda:00)。允许用户在 CPU、特定的 GPU 或其他计算设备之间进行选择以执行模型。

此外,下面列出了支持的可视化参数:

参数类型默认值描述
showboolFalse如果为 True,则在窗口中显示标注后的图像或视频。这对于开发或测试过程中的即时视觉反馈非常有用。
line_widthint or NoneNone指定边界框的线条宽度。如果为 None,则线条宽度会根据图像尺寸自动调整。提供用于清晰度的视觉自定义功能。
show_confboolTrue在标签旁显示每次检测的置信度得分。让你深入了解模型对每次检测的确定性。
show_labelsboolTrue在视觉输出中显示每次检测的标签。提供对检测到对象的即时理解。

Link to this section热图色彩映射表 (Colormaps)#

colormap 参数接受任何 OpenCV 色彩映射表。传递 cv2 模块中的常量,例如 colormap=cv2.COLORMAP_INFERNO

色彩映射名称描述
cv2.COLORMAP_AUTUMNAutumn 色彩映射
cv2.COLORMAP_BONEBone 色彩映射
cv2.COLORMAP_JETJet 色彩映射
cv2.COLORMAP_WINTERWinter 色彩映射
cv2.COLORMAP_RAINBOWRainbow 色彩映射
cv2.COLORMAP_OCEANOcean 色彩映射
cv2.COLORMAP_SUMMERSummer 色彩映射
cv2.COLORMAP_SPRINGSpring 色彩映射
cv2.COLORMAP_COOLCool 色彩映射
cv2.COLORMAP_HSVHSV (色相、饱和度、明度) 色彩映射
cv2.COLORMAP_PINKPink 色彩映射
cv2.COLORMAP_HOTHot 色彩映射
cv2.COLORMAP_PARULAParula 色彩映射
cv2.COLORMAP_MAGMAMagma 色彩映射
cv2.COLORMAP_INFERNOInferno 色彩映射
cv2.COLORMAP_PLASMAPlasma 色彩映射
cv2.COLORMAP_VIRIDISViridis 色彩映射
cv2.COLORMAP_CIVIDISCividis 色彩映射
cv2.COLORMAP_TWILIGHTTwilight 色彩映射
cv2.COLORMAP_TWILIGHT_SHIFTEDShifted Twilight 色彩映射
cv2.COLORMAP_TURBOTurbo 色彩映射
cv2.COLORMAP_DEEPGREENDeep Green 色彩映射

Link to this section热图的工作原理#

Heatmap 解决方案 扩展了 ObjectCounter 类。在处理第一帧时,它会创建一个与帧大小匹配的空白强度层。每一帧随后分两步处理:

  1. YOLO26 跟踪检测并跟踪帧中的每个对象
  2. 对于每个被跟踪的对象,热图强度在其边界框中心的圆形区域内增加

每帧处理一次,累积的强度层会进行归一化,使用选定的色彩映射表着色,并与原始帧混合。叠加层一旦跟踪到至少一个对象就会出现;没有被跟踪对象的帧将显示为没有热图叠加。

结果是一个随时间构建的动态可视化效果,揭示了视频数据中的交通模式、人群移动或其他空间行为。当设置了 region 时,该解决方案还会在构建热图的同时 统计对象 进入和离开该区域的数量。

Link to this section结论#

Ultralytics YOLO26 Heatmap 解决方案只需几行代码即可将对象跟踪结果转化为直观的活动叠加层。要进一步了解,请将其与 对象计数 结合使用,探索其他 Ultralytics 解决方案,或阅读有关底层 跟踪模式 的内容。

Link to this section常见问题解答#

Link to this sectionUltralytics YOLO26 如何从视频生成热图?#

Ultralytics YOLO26 通过在视频帧中跟踪对象并累积每个跟踪对象位置的强度值,然后对结果进行着色并与原始帧混合来生成热图。对象频繁出现或停留的区域强度会增加,并以暖色呈现。有关配置选项,请参阅 Heatmap() 参数 部分。

Link to this section如何将热图输出保存到视频文件?#

使用 OpenCV 的 cv2.VideoWriter 并为每个处理过的帧写入 results.plot_im,如 主要示例 所示。plot_im 属性包含了已经应用了热图叠加的帧。

Link to this section我可以将热图与对象计数结合使用吗?#

可以。将带有线、矩形或多边形点的 region 参数传递给 Heatmap(),该解决方案会在构建热图的同时统计进入和离开该区域的对象。返回的结果包括 in_countout_count 以及各类的计数。有关区域配置的详细信息,请参阅 对象计数指南

Link to this section如何使用 Ultralytics YOLO26 在热图中仅可视化特定的物体类别?#

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()

Link to this section是什么让 Ultralytics YOLO26 的热图有别于 OpenCV 或 Matplotlib 等其他数据可视化工具?#

Ultralytics YOLO26 热图将 对象检测、跟踪、强度累积和叠加渲染集成到一个调用中,而 OpenCV 或 Matplotlib 等通用工具则需要你自己构建该流水线。该解决方案可实时处理视频流,并开箱即用地支持持久跟踪和可自定义的色彩映射表。有关底层模型的详细信息,请参阅 YOLO26 模型页面

评论