跳至内容

使用Ultralytics YOLO 🚀 对不同区域的物体进行计数

什么是区域对象计数?

在有 Ultralytics YOLO11是指利用先进的计算机视觉技术精确确定指定区域内的物体数量。这种方法对于优化流程、增强安全性和提高各种应用的效率都很有价值。



观看: 使用Ultralytics YOLO11 |Ultralytics 解决方案在不同区域对物体进行计数 🚀

区域对象计数的优势?

  • 精确和准确:利用先进的计算机视觉技术在区域内进行物体计数,可确保计数的精确性和准确性,最大限度地减少人工计数经常出现的误差。
  • 提高效率:自动对象计数可提高运行效率,提供实时结果并简化不同应用的流程。
  • 多样性和应用:区域物体计数的多功能性使其适用于从制造和监控到交通监控等各个领域,从而使其具有广泛的实用性和有效性。

真实世界的应用

零售 市场街道
不同地区使用的人口统计方法Ultralytics YOLO11 不同地区的人群计数Ultralytics YOLO11
不同地区使用的人口统计方法Ultralytics YOLO11 不同地区的人群计数Ultralytics YOLO11

使用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="yolo11n.pt",  # model for counting in regions i.e yolo11s.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 争论:

论据 类型 默认值 说明
model str None Ultralytics YOLO 模型文件的路径。
region list [(20, 400), (1260, 400)] 定义计数区域的点列表。

"(《世界人权宣言》) RegionCounter 该解决方案可使用对象跟踪参数:

论据 类型 默认值 说明
tracker str 'botsort.yaml' 指定要使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml.
conf float 0.3 设置检测的置信度阈值;数值越低,跟踪的物体越多,但可能会出现误报。
iou float 0.5 设置交叉重叠 (IoU) 阈值,用于过滤重叠检测。
classes list None 按类别索引筛选结果。例如 classes=[0, 2, 3] 只跟踪指定的类别。
verbose bool True 控制跟踪结果的显示,提供被跟踪物体的可视化输出。
device str None 指定用于推理的设备(例如:......)、 cpu, cuda:00).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。

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

论据 类型 默认值 说明
show bool False 如果 True在一个窗口中显示注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。
line_width None or int None 指定边界框的线宽。如果 None根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。

常见问题

什么是使用Ultralytics YOLO11 对指定区域进行对象计数?

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

如何使用Ultralytics YOLO11 运行基于区域的对象计数脚本?

请按照以下步骤在Ultralytics YOLO11 中运行对象计数:

  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 YOLO11 进行区域对象计数?

使用Ultralytics YOLO11 对区域内的物体进行计数有几个优点:

  1. 实时处理: YOLO11 的结构可实现快速推理,因此非常适合需要即时计算结果的应用。
  2. 灵活的区域定义:该解决方案允许您将多个自定义区域定义为多边形、矩形或直线,以满足您的特定监控需求。
  3. 多类支持:同时计算同一区域内的不同对象类型,提供全面的分析。
  4. 集成功能:通过Ultralytics Python API 或命令行界面与现有系统轻松集成。

在 "优势"部分探索更深层次的优势。

物体计数在区域中有哪些实际应用?

使用Ultralytics YOLO11 进行物体计数可应用于现实世界的众多场景:

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

在 "真实世界应用"部分和TrackZone解决方案中探索更多示例,了解更多基于区域的监控功能。

📅创建于 1 年前 ✏️已更新 5 天前

评论