FEATURED · 精选文章

基于 Ultralytics YOLO26 的实时队列管理与区域人数统计实战

发布时间 / 2026/9/8 22:00:24
来源 / 创域科博编辑部
栏目 / 资讯中心
基于 Ultralytics YOLO26 的实时队列管理与区域人数统计实战 基于 Ultralytics YOLO26 的实时队列管理与区域人数统计实战【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics队列管理Queue Management是指借助 Ultralytics YOLO26 对排队区域内的行人或车辆进行持续检测与跟踪从而实时掌握队列长度、辅助优化等候流程的计算机视觉方案。本文以官方指南 queue-management.md 为骨架结合仓库中 QueueManager 实现 与底层 solutions.py、config.py 源码完整讲解该方案的概念、优势、CLI/Python 用法、全部可调参数、内部计数原理与落地实践建议读完即可在零售收银台、机场值机、银行网点、医院候诊等场景搭建一套可运行的实时队列监控应用。什么是实时队列管理队列管理本质上是对排队区域的智能监控让摄像头持续捕捉等候区画面由 YOLO 模型识别画面中的人/车辆配合多目标跟踪MOT维持每个目标的身份 ID最终统计出当前仍停留在划定区域内的目标数量即实时的队列长度。其核心目标是通过量化排队过程来缩短等待时间、提升运营效率并改善顾客满意度。在 Ultralytics 中这一能力被封装为solutions.QueueManager属于仓库ultralytics/solutions解决方案族中的一员与目标计数ObjectCounter、区域计数RegionCounter、人群密度热力图Heatmap等方案共用同一套基座。它不是简单地每帧检测一遍人数而是基于跟踪轨迹判断目标当前是否处于排队区域内因此能在人员走动、进出区域的真实场景下给出稳定的队列占用数。队列管理带来的核心价值围绕排队场景YOLO26 驱动的队列管理方案主要提供四方面价值显著降低等待时间系统化地组织与管理队列让顾客把时间花在服务与商品上而不是排队上从而提升满意度。提升运营效率通过队列长度数据合理调配人员与资源优化排班降低人力成本并提升整体生产力。实时数据洞察逐帧输出队列人数为管理者提供即时、可量化的决策依据例如何时增开收银台。改善顾客体验缓解长时间等待带来的焦躁情绪帮助企业提升客户满意度和忠诚度。值得强调的是文档中的等待时间更多是一个管理视角的衡量指标——严格来说本方案直接给出的是区域内目标数量live queue length等待时间可通过记录目标进出区域的时刻进一步推导相关结果字段定义可参见下方结果对象小节。实时队列管理的典型应用场景该方案在文档中被定位为跨行业的通用能力典型场景包括零售 / 商超监控收银台结账队伍长度及时增开窗口缩短结账等待机场 / 交通枢纽值机柜台、安检口等关键节点的排队疏导医疗 / 银行门诊候诊、柜台叫号等场景的人流组织与动态调配。用 QueueManager 实现实时队列管理QueueManager的核心工作方式是为等候区域划定一个多边形 ROI逐帧统计仍然停留在这个多边形内部的跟踪目标数量并把实时队列数绘制到输出画面上。你可以通过 CLI 或 Python API 两种方式驱动它。方式一CLI 命令行仓库通过yolo solutions子命令统一分发各类解决方案queue在 解决方案注册表 中被映射到QueueManager类因此可以直接执行# 运行一个队列管理示例未指定 source 时会自动下载并播放演示视频 yolo solutions queue showTrue # 指定自己的视频文件作为输入源 yolo solutions queue sourcepath/to/video.mp4 # 显式传入排队区域坐标四边形的四个角点 yolo solutions queue region[(20, 400), (1080, 400), (1080, 360), (20, 360)]需要注意以下几点 CLI 行为均来自源码可验证的实现事实当is_cliTrue且未提供source时BaseSolution 会从 Ultralytics 官方资源下载solutions_ci_demo.mp4作为默认演示视频CLI 模式下处理完成的结果视频默认写入runs/solutions/exp目录参见 cfg/init.py 中对解决方案任务保存目录的创建逻辑region参数在 CLI 中直接以 Python 字面量语法传递坐标点列表yolo solutions的用法帮助文本中也给出了相同格式的示例见 cfg/init.py。方式二Python APIPython 方式便于与自己的采集、存储或告警系统集成官方文档给出如下可直接运行的完整脚本import cv2 from ultralytics import solutions cap cv2.VideoCapture(path/to/video.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 cv2.VideoWriter(queue_management.avi, cv2.VideoWriter_fourcc(*mp4v), fps, (w, h)) # 定义排队区域四边形的四个角点 queue_region [(20, 400), (1080, 400), (1080, 360), (20, 360)] # region points # queue_region [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon points首尾闭合写法 # 初始化队列管理器 queuemanager solutions.QueueManager( showTrue, # 弹窗显示处理结果 modelyolo26n.pt, # YOLO26 nano 模型文件 regionqueue_region, # 排队区域坐标点 ) # 逐帧处理视频 while cap.isOpened(): success, im0 cap.read() if not success: print(Video frame is empty or processing is complete.) break results queuemanager(im0) # print(results) # 可通过字符串打印查看队列数等结果字段 video_writer.write(results.plot_im) # 把标注后的帧写入输出视频 cap.release() video_writer.release() cv2.destroyAllWindows() # 关闭所有打开的窗口代码中QueueManager是可直接调用的对象每次queuemanager(im0)等价于触发其父类BaseSolution.__call__内部按顺序执行跟踪track→ 解决方案处理process→ 返回SolutionResults并自动记录跟踪与处理各自的耗时见 solutions.py。区域坐标的两种写法从 queue_management.py 的注释可以看到区域既可以用不闭合的四边形点列给出也可以写成首尾闭合的多边形点列。QueueManager构造时会调用initialize_region()见 solutions.py当点数 ≥ 3 时用 shapely 的Polygon建立多边形点数不足 3 时退化为LineString线段。而队列计数要求目标处于区域内因此排队区域请务必提供 ≥ 3 个点构成多边形两点的直线区域不会被计入队列数详见内部原理小节。QueueManager 参数详解官方文档通过宏渲染参数表仓库中对应宏源文件为 docs/macros/solutions-args.md、docs/macros/solutions-track-args.md 与 docs/macros/visualization-args.md。这些参数的默认值最终都落在统一配置类 SolutionConfig 中任何非法参数名都会被update()拒绝并抛出ValueErrorconfig.py。核心构造参数参数类型默认值说明modelstrNoneUltralytics YOLO 模型文件的路径。传None时 BaseSolution 会自动回退为yolo26n.pt。regionlist或dictNone兴趣区域坐标点。此处为(x, y)元组列表为None时使用预置默认区域[(10, 200), (540, 200), (540, 180), (10, 180)]solutions.py。line_widthint2绘制检测框、区域边框与文字时使用的线条粗细。verboseboolTrue是否逐帧输出日志输入尺寸、各类别计数、处理耗时等注意跟踪调用本身始终静默。跟踪相关参数QueueManager内部逐帧调用self.model.track(...)跟踪参数经由track_add_args转发solutions.py官方文档列出以下最常用的五个参数类型默认值说明trackerstrbotsort.yaml指定跟踪算法。仓库 ultralytics/cfg/trackers 内置botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。conffloat0.25检测置信度阈值调低可跟踪更多目标但也可能引入误检。ioufloat0.7非极大值抑制中过滤重叠框的 IoU 阈值。classeslistNone按类别索引过滤例如classes[0]只统计person类COCO 中索引 0。devicestrNone推理设备如cpu、cuda:0或0。其余同样会传给跟踪器的底层参数还包括max_det默认300每帧最大检测数与imgsz默认640推理输入尺寸它们一并出现在track_add_args中。跟踪器配置 YAML 存放于 ultralytics/cfg/trackers 目录可整体定制如deepocsort.yaml、fasttrack.yaml等算法以权衡精度与速度。可视化参数参数类型默认值说明showboolFalse为True时在窗口实时显示标注画面按q键关闭solutions.py。注意showTrue需要图形显示环境BaseSolution会用check_imshow预先检查。show_confboolTrue在标签上显示置信度分数。show_labelsboolTrue为每个检测显示类别标签。标签的具体拼接逻辑见 adjust_box_label当show_labelsFalse时标签整体不绘制否则显示格式为track_id 类别名 置信度类别名与置信度是否展示分别受show_labels、show_conf控制。结果对象字段官方文档的示例脚本通过results.plot_im取得标注画面。除此之外QueueManager.process返回的SolutionResultssolutions.py还携带结构化数据可直接用于业务逻辑plot_im携带队列数文字与检测框标注的当前帧queue_count当前帧位于排队区域内的目标数量total_tracks当前帧被跟踪到的目标总数speed{track: ..., solution: ...}毫秒耗时用于性能监控。内部原理队列人数是如何逐帧算出来的理解计数逻辑有助于正确地布置区域与解读结果。在 queue_management.py 的 process 方法 中每帧处理流程如下重置本帧计数self.counts 0保证队列数是当前这一帧的实况值而非累计值。跟踪并抽取轨迹调用extract_tracks(im0)solutions.py内部执行model.track(sourceim0, persistTrue, classes..., verboseFalse, ...)随后取出每帧的目标框boxes、类别clss、跟踪 IDtrack_ids、置信度confs若没有跟踪结果则清空上述列表并告警No tracks found.。记录跟踪历史对每个目标以track_id为键追加其边界框中心点到track_history历史保留最近 30 个点超出即丢弃最旧点solutions.py同时会清理已被跟踪器标记移除的 IDforget_tracks。判断是否在区域内计数条件见 queue_management.py区域点数region_length 3必须构成多边形该目标已存在历史轨迹len(track_history) 1即至少连续两帧被跟踪到用于滤除单帧闪过的误检该目标当前帧中心点self.track_line[-1]落在由 shapelyprep预处理的Polygon内self.r_s.contains(...)。三者同时满足才self.counts 1。绘制与返回用SolutionAnnotator绘制区域边框与角点draw_region并在区域几何中心以带背景的色块叠加Queue Counts : {counts}文案queue_counts_display最后封装成SolutionResults返回。由此可以推导出该方案的几个使用要点结果是此刻区域内目标数每帧重置适合判断现在排了几个人不适合表达今天共服务了多少人累计统计请参考 solutions/index.md 中的计数类方案跟踪质量决定准确性区域判定依赖稳定的 track ID频繁遮挡或镜头抖动会造成 ID 切换track_id 变化因此参数表中tracker、conf、iou的选择会直接影响队列数的可靠性依赖shapely几何库构造任何 Solution 时都会执行check_requirements(shapely2.0.0)solutions.py运行前请确保该依赖已安装。实施落地最佳实践官方文档给出的四条策略是保证现场效果的关键科学布设摄像头机位应能完整无遮挡地覆盖整个队列区域避免柱子、柜台等造成目标断跟踪。合理划定排队区域依据空间实际布局小心设定区域边界。区域应贴合真实的排队通道宁可略窄于通道也不要跨到无关过道否则会把路人计入队列。微调置信度阈值根据光照条件与人群密度调整conf。灯光昏暗、相互遮挡严重的场景可适度调低以召回更多目标同时用classes过滤掉非目标类别。对接既有业务系统将实时队列数接入数字标牌、员工值班提醒或工单系统实现队列过长自动开窗/自动通知的闭环响应。常见问题FAQ1. 如何用 YOLO26 做实时队列管理按官方文档的推荐步骤加载模型 → 读取视频流 → 划定 ROI → 逐帧推理。下面是精简版最小示例import cv2 from ultralytics import solutions cap cv2.VideoCapture(path/to/video.mp4) queue_region [(20, 400), (1080, 400), (1080, 360), (20, 360)] queuemanager solutions.QueueManager( modelyolo26n.pt, regionqueue_region, line_width3, showTrue, ) while cap.isOpened(): success, im0 cap.read() if success: results queuemanager(im0) # results.queue_count 即当前队列人数 cap.release() cv2.destroyAllWindows()如需把方案进一步产品化模型托管、数据集管理、在线部署官方文档建议结合 Ultralytics Platform方案总览可参见 solutions/index.md上手安装流程参见 quickstart.md。2. 相比传统检测方案有什么优势文档从方案收益角度归纳为四点显著缩短等待时间高效组织队列、降低顾客排队时长、提升运营效率用队列数据分析优化人力配置、降低成本、实时告警队列过长即时通知以便快速干预、易于扩展同一套方案可复制到零售、机场、医疗等不同环境。从实现层面看这些优势的基础是检测 跟踪 区域判定的一体化封装模型缺省即为yolo26n.pt无需单独搭建跟踪器verboseTrue时每帧还会输出处理耗时与类别计数日志便于量化性能。3. QueueManager 能应对不同形态的队列吗可以。机场、零售、医院等场景的差异主要体现在区域形状与业务参数上而不需要改代码。例如文档中机场值机场景的写法queue_region_airport [(50, 600), (1200, 600), (1200, 550), (50, 550)] queue_airport solutions.QueueManager( modelyolo26n.pt, regionqueue_region_airport, line_width3, )从源码角度可补充说明区域点数不同只会影响几何类型多边形 vs 直线≥3 点即构成可用于队列计数的多边形因此四边形、五边形甚至更贴合现场的多边形点列均可直接传入配合conf、classes、tracker等参数即可适配不同密度与布局。4. 单帧无目标时会发生什么不会崩溃。当视频读取出错时 Python 示例通过if not success: break主动跳出当某一帧跟踪不到任何目标时extract_tracks 会把boxes/clss/track_ids/confs清空counts保持为 0程序继续处理后续帧保证长时间运行的稳定性。同时注意区域外的目标不会被计数但会正常显示检测框这类目标不计入queue_count只计入total_tracks。小结本文基于 docs/en/guides/queue-management.md 及其配套源码完整梳理了 Ultralytics 队列管理方案的落地路径先用 CLIyolo solutions queue或 Pythonsolutions.QueueManager快速跑通再通过model/region/line_width/verbose、跟踪参数tracker/conf/iou/classes/device与可视化参数show/show_conf/show_labels做精细化调优最后结合逐帧区域包含判定的内部机制理解数据的真实含义。掌握这些内容后你可以在多种排队场景中独立搭建并调优一套实时、可量化的队列监控系统。【免费下载链接】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),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻