跳转至内容

使用 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 参数:

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

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

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

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

参数类型默认值描述
showboolFalse可视化参数: True,则在窗口中显示带注释的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。
line_widthNone or intNone指定边界框的线条宽度。 如果 None,则线条宽度会根据图像大小自动调整。 提供视觉自定义以提高清晰度。
show_confboolTrue在标签旁边显示每个检测的置信度分数。 可以深入了解模型对每次检测的确定性。
show_labelsboolTrue在可视化输出中显示每个检测的标签。 能够立即理解检测到的对象。

常见问题

什么是使用 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 年前 ✏️已更新 8 天前
glenn-jocherRizwanMunawarleonnilBurhan-Q

评论