欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 即插即用 | YOLOv8热力图可视化方法详解

即插即用 | YOLOv8热力图可视化方法详解

2024/11/30 8:59:11 来源:https://blog.csdn.net/ALiLiLiYa/article/details/142338437  浏览:    关键词:即插即用 | YOLOv8热力图可视化方法详解

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

在这里插入图片描述

热图简介

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

观看: 使用热图Ultralytics YOLOv8

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

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

真实世界的应用

  • 交通运输
    • Ultralytics YOLOv8 交通热图
  • 零售
    • Ultralytics YOLOv8 零售业热图

热图配置

  • heatmap_alpha:确保该值在 (0.0 - 1.0) 范围内。
  • decay_factor:用于在帧中不再存在对象后删除热图,其值也应在 (0.0 - 1.0) 范围内。

热图使用Ultralytics YOLOv8 示例

热图

import cv2
from ultralytics import YOLO, solutionsmodel = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
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
video_writer = cv2.VideoWriter("heatmap_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))# Define polygon points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 400)]# Init heatmap
heatmap_obj = solutions(colormap=cv2.COLORMAP_PARULA,view_img=True,shape="circle",count_reg_pts=region_points,names=model.names,
)while cap.isOpened():success, im0 = cap.read()if not success:print("Video frame is empty or video processing has been successfully completed.")breaktracks = model.track(im0, persist=True, show=False)im0 = heatmap_obj.generate_heatmap(im0, tracks)video_writer.write(im0)cap.release()
video_writer.release()
cv2.destroyAllWindows()

论据 Heatmap()

名称类型默认值说明
nameslistNone类名词典
imwint0图像宽度
imhint0图像高度
colormapintcv2.COLORMAP_JET热图使用的颜色图
heatmap_alphafloat0.5热图叠加的 Alpha 混合值
view_imgboolFalse是否使用热图叠加显示图像
view_in_countsboolTrue是否显示进入区域的对象计数
view_out_countsboolTrue是否显示退出区域的对象计数
count_reg_ptslistNoneNone定义计数区域的点(直线或多边形)
count_txt_colortuple(0, 0, 0)显示计数的文本颜色
count_bg_colortuple(255, 255, 255)显示计数的背景颜色
count_reg_colortuple(255, 0, 255)计数区域的颜色
region_thicknessint5区域线的厚度
line_dist_threshint15线性计数的距离阈值
line_thicknessint2绘画线条的粗细
decay_factorfloat0.99热图的衰减系数,用于降低随时间变化的强度
shapestr"circle"热图 Blobs 的形状("圆形"或 “矩形”)

论据 model.track

名称类型默认值说明
sourcestrNone指定图像或视频的源目录。支持文件路径和 URL
persistboolFalse启用跨帧持久跟踪对象,维护视频序列中的 ID
trackerstrbotsort.yaml指定要使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml
conffloat0.3设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包括误报
ioufloat0.5设置过滤重叠检测的交并比(IoU)阈值
classeslistNone按类索引过滤结果。例如,classes=[0, 2, 3] 只跟踪指定的类
verboseboolTrue控制跟踪结果的显示,提供跟踪对象的视觉输出

热图 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_HSVHSV(色调、饱和度、值)色彩图
cv::COLORMAP_PINK粉色地图
cv::COLORMAP_HOT热门彩色地图
cv::COLORMAP_PARULA帕鲁拉彩图
cv::COLORMAP_MAGMA岩浆颜色图
cv::COLORMAP_INFERNO地狱彩色地图
cv::COLORMAP_PLASMA等离子彩图
cv::COLORMAP_VIRIDISViridis 彩色地图
cv::COLORMAP_CIVIDISCividis 彩色地图
cv::COLORMAP_TWILIGHT黄昏彩色地图
cv::COLORMAP_TWILIGHT_SHIFTED偏移的曙光色彩图
cv::COLORMAP_TURBO涡轮颜色图
cv::COLORMAP_DEEPGREEN深绿色彩图

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

常见问题

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

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

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

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

import cv2
from ultralytics import YOLO, solutionsmodel = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap_obj = solutions(colormap=cv2.COLORMAP_PARULA, view_img=True, shape="circle", names=model.names)while cap.isOpened():success, im0 = cap.read()if not success:breaktracks = model.track(im0, persist=True, show=False)im0 = heatmap_obj.generate_heatmap(im0, tracks)cv2.imshow("Heatmap", im0)if cv2.waitKey(1) & 0xFF == ord("q"):breakcap.release()
cv2.destroyAllWindows()

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

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

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

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

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

import cv2
from ultralytics import YOLO, solutionsmodel = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap_obj = solutions.(colormap=cv2.COLORMAP_PARULA, view_img=True, shape="circle", names=model.names)classes_for_heatmap = [0, 2]  # Classes to visualize
while cap.isOpened():success, im0 = cap.read()if not success:breaktracks = model.track(im0, persist=True, show=False, classes=classes_for_heatmap)im0 = heatmap_obj.generate_heatmap(im0, tracks)cv2.imshow("Heatmap", im0)if cv2.waitKey(1) & 0xFF == ord("q"):breakcap.release()
cv2.destroyAllWindows()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com