使用 Ultralytics YOLO 在不同区域进行目标计数 🚀

什么是区域目标计数?

Object counting in regions with Ultralytics YOLO26 involves precisely determining the number of objects within specified areas using advanced computer vision. This approach is valuable for optimizing processes, enhancing security, and improving efficiency in various applications.



Watch: Object Counting in Different Regions using Ultralytics YOLO26 | Ultralytics Solutions 🚀

区域目标计数的优势

  • 精度与准确性: 使用先进计算机视觉在区域内进行目标计数,可确保计数精确且准确,从而最大限度地减少通常与人工计数相关的错误。
  • 效率提升: 自动化目标计数提高了运营效率,能够提供实时结果并简化各类应用中的流程。
  • 多功能性与应用: 区域目标计数的灵活性使其适用于从制造和监控到交通管理等多个领域,体现了其广泛的用途和有效性。

现实世界应用

零售商业街
使用 Ultralytics YOLO26 在不同区域进行人数统计使用 Ultralytics YOLO26 在不同区域进行人群统计
使用 Ultralytics YOLO26 在不同区域进行人数统计使用 Ultralytics YOLO26 在不同区域进行人群统计

使用示例

使用 Ultralytics YOLO 进行区域计数
 import cv2

 from ultralytics import solutions

 cap = cv2.VideoCapture("path/to/video.mp4")
 assert cap.isOpened(), "Error reading video file"

 # Pass region as list
 # region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]

 # Pass region as dictionary
 region_points = {
     "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
     "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
 }

 # 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("region_counting.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

 # Initialize region counter object
 regioncounter = solutions.RegionCounter(
     show=True,  # display the frame
     region=region_points,  # pass region points
     model="yolo26n.pt",  # model for counting in regions, e.g., yolo26s.pt
 )

 # Process video
 while cap.isOpened():
     success, im0 = cap.read()

     if not success:
         print("Video frame is empty or processing is complete.")
         break

     results = regioncounter(im0)

     # print(results)  # access the output

     video_writer.write(results.plot_im)

 cap.release()
 video_writer.release()
 cv2.destroyAllWindows()  # destroy all opened windows
Ultralytics 示例代码

Ultralytics 区域计数模块可在我们的 示例部分 获取。你可以浏览此示例进行代码定制,并根据你的具体用例进行修改。

RegionCounter 参数

下表列出了 RegionCounter 参数:

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
regionlist'[(20, 400), (1260, 400)]'定义计数区域的点列表。

RegionCounter 解决方案支持使用以下目标跟踪参数:

参数类型默认值描述
trackerstr'botsort.yaml'指定使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml
conffloat0.1设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能会包含误报。
ioufloat0.7设置过滤重叠检测的 Intersection over Union (IoU) 阈值。
classeslistNone按类别索引过滤结果。例如,classes=[0, 2, 3] 将仅跟踪指定的类别。
verboseboolTrue控制跟踪结果的显示,提供跟踪对象的视觉输出。
devicestrNone指定推理设备(例如 cpucuda:00)。允许用户选择 CPU、特定的 GPU 或其他计算设备来执行模型。

此外,还支持以下可视化设置:

参数类型默认值描述
showboolFalse如果设为 True,则在一个窗口中显示标注后的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。
line_widthint or NoneNone指定边界框的线宽。如果为 None,线宽将根据图像大小自动调整。提供视觉自定义以提高清晰度。
show_confboolTrue在标签旁边显示每个检测结果的置信度分数。让你可以洞察模型对每个检测的确定性。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签。提供对检测对象的即时了解。

常见问题 (FAQ)

什么是使用 Ultralytics YOLO26 在指定区域内进行的目标计数?

使用 Ultralytics YOLO26 在指定区域内进行目标计数,是指利用先进的计算机视觉技术来检测并统计定义区域内的物体数量。这种精确的方法提高了制造、监控和交通管理等各种应用场景的效率和 准确性

如何使用 Ultralytics YOLO26 运行基于区域的目标计数脚本?

按照以下步骤在 Ultralytics YOLO26 中运行目标计数:

  1. 克隆 Ultralytics 仓库并导航至该目录:

    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics/examples/YOLOv8-Region-Counter
  2. 执行区域计数脚本:

    python yolov8_region_counter.py --source "path/to/video.mp4" --save-img

更多选项,请访问 使用示例 部分。

为什么我应该使用 Ultralytics YOLO26 在区域内进行目标计数?

使用 Ultralytics YOLO26 进行区域目标计数具有以下几个优势:

  1. 实时处理: YOLO26 的架构支持快速推理,非常适合需要即时计数结果的应用。
  2. 灵活的区域定义: 该解决方案允许你定义多个自定义区域(如多边形、矩形或线条),以满足你的特定监控需求。
  3. 多类别支持: 可在同一区域内同时统计不同类型的目标,从而提供全面的分析。
  4. 集成能力: 通过 Ultralytics Python API 或命令行界面即可轻松集成到现有系统中。

优势 部分探索更深入的益处。

区域目标计数有哪些实际应用场景?

使用 Ultralytics YOLO26 进行的目标计数可应用于众多现实场景:

  • 零售分析: 统计不同商店区域的顾客数量,以优化布局和人员配置。
  • 交通管理: 监控特定道路路段或交叉口的车辆流量。
  • 制造业: 跟踪在不同生产区域移动的产品。
  • 仓储作业: 统计指定仓储区域内的库存物品。
  • 公共安全: 在活动期间监控特定区域的人群密度。

实际应用 部分探索更多示例,并参考 TrackZone 解决方案以获取更多基于区域的监控功能。

评论