ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何用 Ultralytics YOLO26 的 Heatmap 方案为视频生成目标移动热力图

如何用 Ultralytics YOLO26 的 Heatmap 方案为视频生成目标移动热力图 如何用 Ultralytics YOLO26 的 Heatmap 方案为视频生成目标移动热力图【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics如果你有一段监控、交通或人流视频想在一张空间分布图上直观看出目标最常出现在哪里、在哪停留Ultralytics 的 Heatmap solution 可以直接完成这件事它基于 YOLO26 的目标跟踪在视频帧间追踪每个目标把每个目标停留位置上的强度持续累加再用 OpenCV colormap 把累加结果上色并叠回原帧。忙的区域呈暖色高亮冷清的区域保持冷色。整个流程只需要一个 Python 脚本或一条 CLI 命令无需自己搭建检测加跟踪的管线。本文的主路径是安装环境 → 用 Python 脚本把热力图叠加帧写入输出视频文件 → 验证结果CLI 和可选的计数区域、类别过滤作为分支给出。准备工作安装ultralytics包文档推荐 pip 方式# Install or upgrade the ultralytics package from PyPI pip install -U ultralytics准备一个输入视频文件脚本中所有示例的路径path/to/video.mp4都需要替换成你自己的视频路径这是读者必须提供的值。示例统一使用yolo26n.pt这个 YOLO26n 检测模型文件名文档中的所有 Heatmap 示例都直接传入该文件名。原理Heatmap 方案每帧做了什么Heatmap 实现继承自ObjectCounter处理流程是第一帧创建一块与帧尺寸相同的空白强度层initialized标志保证只创建一次之后每一帧先由 YOLO26 跟踪检测并跟随帧内所有目标对每个被跟踪目标以其边界框中心为圆心的圆形区域内强度增加每帧结束把累加的强度层归一化、按所选 colormap 上色再与原帧按 0.5/0.5 权重混合。由此产生两个行为特征读结果时要注意热力图是随时间逐步长出来的视频越靠后累计效果越明显当某帧没有跟踪到任何目标时该帧直接显示原图不带热力图叠加。主路径Python 脚本生成热力图视频下面代码来自官方 Heatmap 指南完整可运行。需要替换的只有视频路径path/to/video.mp4输出文件固定为当前目录下的heatmap_output.avi。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)) # Initialize heatmap object heatmap solutions.Heatmap( showTrue, # display the output modelyolo26n.pt, # path to the YOLO26 model file colormapcv2.COLORMAP_PARULA, # colormap of heatmap # regionregion_points, # object counting with heatmaps, you can pass region_points # classes[0, 2], # generate heatmap for specific classes, e.g., 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关键参数说明showTrue会弹出窗口实时显示处理后的帧默认值为False需要显示反馈时才传Trueresults.plot_im是已经叠加好热力图的帧逐帧写入video_writer后得到输出视频脚本跑完会在当前目录生成heatmap_output.avi。替代路径CLI 快速运行安装完成后可以直接用命令行跑yolo solutions heatmap是官方给出的入口语法为yolo SOLUTIONS SOLUTION_NAME ARGS# Run a heatmap example yolo solutions heatmap showTrue # Pass a source video yolo solutions heatmap sourcepath/to/video.mp4 # Pass a custom colormap yolo solutions heatmap colormapcv2.COLORMAP_INFERNO其中source参数仅 CLI 可用用来指定输入视频视频文件、RTSP 等。常用参数Heatmap()可传入以下三类参数默认值来自官方参数表参数类型默认值说明modelstrNoneUltralytics YOLO 模型文件路径colormapintcv2.COLORMAP_DEEPGREEN热力图所用 colormap可传任意cv2.COLORMAP_*常量regionlistordictNone兴趣区域点集None时不计数。传入后同时统计进出该区域的目标数line_widthint2方案绘制的框、关键点、计数的线宽verboseboolTrue开启后按帧输出输入尺寸、类别计数和处理速度的日志另外可透传track参数Heatmap把部分参数转发给跟踪调用参数类型默认值说明trackerstrbotsort.yaml跟踪算法内置选项botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yamlconffloat0.25检测置信度阈值调低会让更多目标被跟踪但可能混入误检ioufloat0.7过滤重叠检测的 IoU 阈值classeslistNone按类别索引过滤如classes[0, 2, 3]只跟踪指定类别devicestrNone推理设备如cpu、cuda:0或0colormap接受任意 OpenCV colormap 常量文档列出的选项包括cv2.COLORMAP_JET、cv2.COLORMAP_HOT、cv2.COLORMAP_INFERNO、cv2.COLORMAP_MAGMA、cv2.COLORMAP_PLASMA、cv2.COLORMAP_PARULA、cv2.COLORMAP_VIRIDIS、cv2.COLORMAP_TURBO等二十余种按需选择即可。可选分支只统计特定类别如果视频里人和车混在一起只想看人COCO 类别索引 0和车索引 2的热力图传入classesimport cv2 from ultralytics import solutions cap cv2.VideoCapture(path/to/video.mp4) # 替换为你的视频路径 heatmap solutions.Heatmap(showTrue, modelyolo26n.pt, classes[0, 2]) while cap.isOpened(): success, im0 cap.read() if not success: break results heatmap(im0) cap.release() cv2.destroyAllWindows()可选分支热力图 区域计数传入region后方案在生成热力图的同时统计进出该区域的目标数。region点集可以是两点一条计数线或三点以上多边形区域按连接顺序书写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把region_points赋给主路径示例中注释掉的region参数即可对应的 CLI 写法是yolo solutions heatmap region[(20, 400), (1080, 400), (1080, 360), (20, 360)]。这些示例坐标按官方文档的 1080 宽画面给出实际使用时需要按你的视频分辨率自行确定。区域配置细节可参考 Object Counting 指南。如何验证结果输出文件脚本正常结束后当前目录应出现heatmap_output.avi。文档没有给出固定的像素级成功标准判断方式就是打开该视频确认目标密集区域随播放时间逐渐出现暖色叠加。返回值检查每次调用heatmap(im0)返回SolutionResults其属性包括plot_im叠加后的帧、in_count与out_count进出区域计数仅在设置region时有意义、classwise_count按类别的计数和total_tracks当前跟踪到的目标数。把示例中被注释的print(results)打开即可查看。逐帧日志verbose默认为True运行时控制台会输出每帧的输入尺寸、类别计数和处理速度可用于确认管线在正常推进。读取失败如果视频路径错误或文件损坏脚本会触发assert cap.isOpened(), Error reading video file直接报错视频读完最后一帧时进入break分支并打印Video frame is empty or processing is complete.。限制与注意点热力图强度是整段视频累计的中途重启脚本会重新从空白强度层开始同一视频想获得完整累计效果需要一次性跑完。未跟踪到目标的帧不带叠加层这是正常行为而非错误。classes使用的是 COCO 类别索引换用自训练模型时类别含义会随你的数据集变化。默认show为False无显示环境如服务器跑脚本时不要开showTrue。延伸阅读Heatmap 完整指南包含 FAQ 与更多 colormap 选项Object Counting 指南region配置与计数逻辑跟踪模式文档各 tracker 算法的对比Solutions 总览Heatmap之外的其他可视化方案【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表