高级 数据可视化:使用 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.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包含误报。 |
iou |
float |
0.5 |
设置用于过滤重叠检测的 Intersection over Union (IoU) 阈值。 |
classes |
list |
None |
按类别索引过滤结果。例如, classes=[0, 2, 3] 仅跟踪指定的类别。 |
verbose |
bool |
True |
控制跟踪结果的显示,提供被跟踪对象的可视化输出。 |
device |
str |
None |
指定用于推理的设备(例如, cpu , cuda:0 或 0 )。允许用户在 CPU、特定 GPU 或其他计算设备之间进行选择,以执行模型。 |
此外,下面列出了支持的可视化参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
show |
bool |
False |
可视化参数: True ,则在窗口中显示带注释的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。 |
line_width |
None or int |
None |
指定边界框的线条宽度。 如果 None ,则线条宽度会根据图像大小自动调整。 提供视觉自定义以提高清晰度。 |
show_conf |
bool |
True |
在标签旁边显示每个检测的置信度分数。 可以深入了解模型对每次检测的确定性。 |
show_labels |
bool |
True |
在可视化输出中显示每个检测的标签。 能够立即理解检测到的对象。 |
热图 COLORMAPs
颜色映射名称 | 描述 |
---|---|
cv::COLORMAP_AUTUMN |
Autumn 颜色映射 |
cv::COLORMAP_BONE |
Bone 颜色映射 |
cv::COLORMAP_JET |
Jet 颜色映射 |
cv::COLORMAP_WINTER |
Winter 颜色映射 |
cv::COLORMAP_RAINBOW |
Rainbow 颜色映射 |
cv::COLORMAP_OCEAN |
Ocean 颜色映射 |
cv::COLORMAP_SUMMER |
Summer 颜色映射 |
cv::COLORMAP_SPRING |
Spring 颜色映射 |
cv::COLORMAP_COOL |
Cool 颜色映射 |
cv::COLORMAP_HSV |
HSV(色调、饱和度、明度)颜色映射 |
cv::COLORMAP_PINK |
Pink 颜色映射 |
cv::COLORMAP_HOT |
Hot 颜色映射 |
cv::COLORMAP_PARULA |
Parula 颜色映射 |
cv::COLORMAP_MAGMA |
Magma 颜色映射 |
cv::COLORMAP_INFERNO |
Inferno 颜色映射 |
cv::COLORMAP_PLASMA |
Plasma 颜色映射 |
cv::COLORMAP_VIRIDIS |
Viridis 色彩图 |
cv::COLORMAP_CIVIDIS |
Cividis 色彩图 |
cv::COLORMAP_TWILIGHT |
Twilight 色彩图 |
cv::COLORMAP_TWILIGHT_SHIFTED |
Shifted Twilight 色彩图 |
cv::COLORMAP_TURBO |
Turbo 色彩图 |
cv::COLORMAP_DEEPGREEN |
Deep Green 色彩图 |
这些色彩图通常用于以不同的颜色表示形式可视化数据。
热图在 Ultralytics YOLO11 中的工作原理
Ultralytics YOLO11 中的 热图解决方案扩展了 ObjectCounter 类,以生成和可视化视频流中的移动模式。初始化后,该解决方案会创建一个空白热图层,当对象在帧中移动时,该图层会更新。
对于每个检测到的对象,解决方案是:
- 使用 YOLO11 的跟踪功能跨帧跟踪对象
- 更新对象位置的热图强度
- 应用选定的颜色映射来可视化强度值
- 将彩色热图叠加在原始帧上
结果是一个随时间构建的动态可视化,揭示了视频数据中的交通模式、人群移动或其他空间行为。
常见问题
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 仅在热图中可视化特定的对象类别?
您可以通过在 YOLO 模型的 track()
方法中指定所需的类来可视化特定的对象类别。例如,如果您只想可视化汽车和人(假设它们的类索引为 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 了解有关业务应用的更多信息。