跳至内容

高级数据可视化:使用Ultralytics YOLO11 绘制热图 🚀

热图简介

在 Colab 中打开热图

生成的热图 Ultralytics YOLO11将复杂的数据转换成生动的彩色编码矩阵。这种可视化工具采用色谱来表示不同的数据值,暖色调表示较高的强度,冷色调表示较低的值。热图在可视化复杂的数据模式、相关性和异常情况方面表现出色,为不同领域的数据解读提供了一种易于理解且引人入胜的方法。



观看: 使用热图Ultralytics YOLO11

为什么选择热图进行数据分析?

  • 直观的数据分布可视化:热图简化了对数据集中度和分布的理解,将复杂的数据集转换为易于理解的可视化格式。
  • 高效模式检测:通过热图格式的可视化数据,可以更容易地发现趋势、群组和异常值,从而有助于更快地进行分析并提出见解。
  • 增强空间分析和决策:热图有助于说明空间关系,帮助商业智能、环境研究和城市规划等领域的决策过程。

真实世界的应用

交通运输 零售
Ultralytics YOLO11 交通热图 Ultralytics YOLO11 零售业热图
Ultralytics YOLO11 交通热图 Ultralytics YOLO11 零售业热图

使用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)]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("heatmap_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# For object counting with heatmap, you can pass region points.
# region_points = [(20, 400), (1080, 400)]                                      # line points
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]              # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]   # polygon points

# Initialize heatmap object
heatmap = solutions.Heatmap(
    show=True,  # display the output
    model="yolo11n.pt",  # path to the YOLO11 model file
    colormap=cv2.COLORMAP_PARULA,  # colormap of heatmap
    # region=region_points,  # object counting with heatmaps, you can pass region_points
    # classes=[0, 2],  # generate heatmap for specific classes i.e person and car.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = heatmap(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

Heatmap() 论据

下面的表格显示了 Heatmap 争论:

论据 类型 默认值 说明
model str None Ultralytics YOLO 模型文件的路径。
colormap int cv2.COLORMAP_JET 热图使用的颜色图。
show_in bool True 用于控制是否在视频流中显示输入计数的标志。
show_out bool True 用于控制是否在视频流中显示输出计数的标志。
region list [(20, 400), (1260, 400)] 定义计数区域的点列表。

您还可以应用不同的 track 中的参数 Heatmap 解决方案

论据 类型 默认值 说明
tracker str 'botsort.yaml' 指定要使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml.
conf float 0.3 设置检测的置信度阈值;数值越低,跟踪的物体越多,但可能会出现误报。
iou float 0.5 设置交叉重叠 (IoU) 阈值,用于过滤重叠检测。
classes list None 按类别索引筛选结果。例如 classes=[0, 2, 3] 只跟踪指定的类别。
verbose bool True 控制跟踪结果的显示,提供被跟踪物体的可视化输出。
device str None 指定用于推理的设备(例如:......)、 cpu, cuda:00).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。

此外,支持的可视化参数如下:

论据 类型 默认值 说明
show bool False 如果 True在一个窗口中显示注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。
line_width None or int None 指定边界框的线宽。如果 None根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。

热图 COLORMAPs

彩色地图名称 说明
cv::COLORMAP_AUTUMN 秋色地图
cv::COLORMAP_BONE 骨骼颜色图
cv::COLORMAP_JET 喷气彩图
cv::COLORMAP_WINTER 冬季彩色地图
cv::COLORMAP_RAINBOW 彩虹色地图
cv::COLORMAP_OCEAN 海洋颜色图
cv::COLORMAP_SUMMER 夏季彩色地图
cv::COLORMAP_SPRING 春色地图
cv::COLORMAP_COOL 酷炫的彩色地图
cv::COLORMAP_HSV HSV(色调、饱和度、值)色彩图
cv::COLORMAP_PINK 粉色地图
cv::COLORMAP_HOT 热门彩色地图
cv::COLORMAP_PARULA 帕鲁拉彩图
cv::COLORMAP_MAGMA 岩浆颜色图
cv::COLORMAP_INFERNO 地狱彩色地图
cv::COLORMAP_PLASMA 等离子彩图
cv::COLORMAP_VIRIDIS Viridis 彩色地图
cv::COLORMAP_CIVIDIS Cividis 彩色地图
cv::COLORMAP_TWILIGHT 黄昏彩色地图
cv::COLORMAP_TWILIGHT_SHIFTED 偏移的曙光色彩图
cv::COLORMAP_TURBO 涡轮颜色图
cv::COLORMAP_DEEPGREEN 深绿色彩图

这些颜色图通常用于用不同的颜色表示可视化数据。

热图在Ultralytics YOLO11中的工作原理

Ultralytics YOLO11 中的热图解决方案扩展了ObjectCounter类,用于生成视频流中的移动模式并将其可视化。初始化时,该解决方案会创建一个空白的热图层,并随着对象在帧中的移动而更新。

对于每个检测到的物体,解决方案

  1. 使用YOLO11 的跟踪功能跨帧跟踪对象
  2. 更新对象所在位置的热图强度
  3. 应用选定的颜色映射,使强度值可视化
  4. 在原始框架上叠加彩色热图

其结果是一种动态可视化效果,随着时间的推移而不断增强,揭示视频数据中的交通模式、人群流动或其他空间行为。

常见问题

Ultralytics YOLO11 如何生成热图及其优势是什么?

Ultralytics YOLO11 通过将复杂数据转换为彩色编码矩阵,不同色调代表数据强度,从而生成热图。热图更容易直观地显示数据中的模式、相关性和异常情况。较暖的色调表示较高的数值,而较冷的色调表示较低的数值。其主要优点包括直观可视化数据分布、高效模式检测和增强决策空间分析。有关详细信息和配置选项,请参阅热图配置部分。

能否使用Ultralytics YOLO11 同时执行对象跟踪和生成热图?

是的,Ultralytics YOLO11 支持同时进行对象跟踪和热图生成。这可以通过其 Heatmap 解决方案集成了对象跟踪模型。为此,您需要初始化热图对象并使用YOLO11 的跟踪功能。下面是一个简单的示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
heatmap = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, show=True, model="yolo11n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = heatmap(im0)
cap.release()
cv2.destroyAllWindows()

如需进一步指导,请查看跟踪模式页面。

Ultralytics YOLO11 热图与OpenCV或 Matplotlib 等其他数据可视化工具有何不同?

Ultralytics YOLO11 热图专为与其对象检测和跟踪模型集成而设计,为实时数据分析提供了端到端的解决方案。与 OpenCV 或 Matplotlib 等通用可视化工具不同,YOLO11 热图针对性能和自动处理进行了优化,支持持续跟踪、衰减系数调整和实时视频叠加等功能。有关YOLO11 独特功能的更多信息,请访问Ultralytics YOLO11 简介

如何使用Ultralytics YOLO11 在热图中只显示特定对象类别?

您可以通过在 track() YOLO 方法。例如,如果您只想可视化汽车和人(假设它们的类指数分别为 0 和 2),您可以设置 classes 参数。

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
heatmap = solutions.Heatmap(show=True, model="yolo11n.pt", classes=[0, 2])

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = heatmap(im0)
cap.release()
cv2.destroyAllWindows()

企业为什么要选择Ultralytics YOLO11 在数据分析中生成热图?

Ultralytics YOLO11 高级对象检测和实时热图生成的无缝集成,使其成为希望更有效地实现数据可视化的企业的理想选择。其主要优势包括直观的数据分布可视化、高效的模式检测和增强的空间分析,从而更好地做出决策。此外,YOLO11 的尖端功能,如持续跟踪、可定制的颜色图和对各种导出格式的支持,使其在综合数据分析方面优于其他工具,如 TensorFlow和 OpenCV 等其他工具更胜一筹。了解有关商业应用的更多信息,请访问Ultralytics Plans

📅创建于 1 年前 ✏️已更新 5 天前

评论