高级数据可视化:使用Ultralytics YOLO11 绘制热图 🚀
热图简介
生成的热图 Ultralytics YOLO11将复杂的数据转换成生动的彩色编码矩阵。这种可视化工具采用色谱来表示不同的数据值,暖色调表示较高的强度,冷色调表示较低的值。热图在可视化复杂的数据模式、相关性和异常情况方面表现出色,为不同领域的数据解读提供了一种易于理解且引人入胜的方法。
观看: 使用热图Ultralytics YOLO11
为什么选择热图进行数据分析?
- 直观的数据分布可视化:热图简化了对数据集中度和分布的理解,将复杂的数据集转换为易于理解的可视化格式。
- 高效模式检测:通过热图格式的可视化数据,可以更容易地发现趋势、群组和异常值,从而有助于更快地进行分析并提出见解。
- 增强空间分析和决策:热图有助于说明空间关系,帮助商业智能、环境研究和城市规划等领域的决策过程。
真实世界的应用
交通运输 | 零售 |
---|---|
Ultralytics YOLO11 交通热图 | Ultralytics YOLO11 零售业热图 |
热图使用Ultralytics YOLO11 示例
# Run a heatmap example
yolo solutions heatmap show=True
# Pass a source video
yolo solutions heatmap source="path/to/video/file.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/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))
# In case you want to apply object counting + heatmaps, you can pass region points.
# region_points = [(20, 400), (1080, 400)] # Define line points
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # Define region points
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # Define polygon points
# Init heatmap
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, # If you want to do object counting with heatmaps, you can pass region_points
# classes=[0, 2], # If you want to generate heatmap for specific classes i.e person and car.
# show_in=True, # Display in counts
# show_out=True, # Display out counts
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = heatmap.generate_heatmap(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
论据 Heatmap()
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 模型文件的路径 |
colormap |
int |
cv2.COLORMAP_JET |
热图使用的颜色图。 |
show |
bool |
False |
是否使用热图叠加显示图像。 |
show_in |
bool |
True |
是否显示进入区域的对象计数。 |
show_out |
bool |
True |
是否显示退出区域的对象计数。 |
region |
list |
None |
定义计数区域的点(直线或多边形)。 |
line_width |
int |
2 |
绘画线条的粗细。 |
论据 model.track
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
source |
str |
None |
指定图片或视频的源目录。支持文件路径和 URL。 |
persist |
bool |
False |
可在帧间持续跟踪对象,在视频序列中保持 ID。 |
tracker |
str |
botsort.yaml |
指定要使用的跟踪算法,例如 bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;数值越低,跟踪的物体越多,但可能会出现误报。 |
iou |
float |
0.5 |
设置交叉重叠 (IoU) 阈值,用于过滤重叠检测。 |
classes |
list |
None |
按类别索引筛选结果。例如 classes=[0, 2, 3] 只跟踪指定的类别。 |
verbose |
bool |
True |
控制跟踪结果的显示,提供被跟踪物体的可视化输出。 |
热图 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 通过将复杂数据转换为彩色编码矩阵,不同色调代表数据强度,从而生成热图。热图更容易直观地显示数据中的模式、相关性和异常情况。较暖的色调表示较高的数值,而较冷的色调表示较低的数值。其主要优点包括直观可视化数据分布、高效模式检测和增强决策空间分析。有关详细信息和配置选项,请参阅热图配置部分。
能否使用Ultralytics YOLO11 同时执行对象跟踪和生成热图?
是的,Ultralytics YOLO11 支持同时进行对象跟踪和热图生成。这可以通过其 Heatmap
解决方案集成了对象跟踪模型。为此,您需要初始化热图对象并使用YOLO11 的跟踪功能。下面是一个简单的示例:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, show=True, model="yolo11n.pt")
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
im0 = heatmap.generate_heatmap(im0)
cv2.imshow("Heatmap", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
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/file.mp4")
heatmap = solutions.Heatmap(show=True, model="yolo11n.pt", classes=[0, 2])
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
im0 = heatmap.generate_heatmap(im0)
cv2.imshow("Heatmap", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
企业为什么要选择Ultralytics YOLO11 在数据分析中生成热图?
Ultralytics YOLO11 高级对象检测和实时热图生成的无缝集成,使其成为希望更有效地实现数据可视化的企业的理想选择。其主要优势包括直观的数据分布可视化、高效的模式检测和增强的空间分析,从而更好地做出决策。此外,YOLO11 的尖端功能,如持续跟踪、可定制的颜色图和对各种导出格式的支持,使其在综合数据分析方面优于其他工具,如 TensorFlow和 OpenCV 等其他工具更胜一筹。了解有关商业应用的更多信息,请访问Ultralytics Plans。