OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。

原文链接:使用YOLO11实现区域内目标跟踪

计算机视觉领域正在迅速发展,尤其是随着生成式人工智能的出现,它正在推动该领域的进一步发展。当我们考虑检测物体时,通常首先想到的是物体检测。但为了获得更好的结果,应该考虑使用物体跟踪。这种方法不仅可以检测物体,还可以随着时间的推移跟踪它们,为每个物体分配唯一的 ID,以获得更准确、更全面的结果。

什么是 TrackZone?

    顾名思义,区域内跟踪对象是一种 Ultralytics解决方案,旨在关注帧内的特定区域,以优化跟踪过程。

    这种方法仅处理帧的一部分而不是分析整个帧,从而显著提高了跟踪速度。

图片

    💡您可以将Ultralytics支持的任何模型与 TrackZone 一起使用。

TrackZone 的应用

    TrackZone 可在各个行业中广泛应用,实现高效的对象跟踪:

    • 智能交通管理:它可以跟踪车辆并预测停车位或公交车站等特定区域内的交通拥堵情况,而不是监控整条道路。

    • 零售和库存管理:它可以监控特定区域(例如零售货架),以有效跟踪商品。由于零售商场摄像头通常不是专门为货架监控而安装的,因此您可以只关注所需区域,而不是分析整个画面。

    • 生产线监控:在生产线场景中,它可用于仅监控活跃的生产区域而不是整个框架,确保在最需要的地方进行精确的跟踪。

代码演示

    让我们深入研究代码!Ultralytics 在 Python 中提供 TrackZone 功能,您也可以通过 CLI 使用单行命令轻松执行它。

    对于每个解决方案,您都需要配置视频路径,并且(可选)还要配置模型文件。这同样适用于 TrackZone:只需指定视频路径,如果需要,您还可以包含模型文件路径。但是,这是可选的,因为yolo11n.pt将使用默认模型进行处理。

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.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))

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi",
                              cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init TrackZone (Object Tracking in Zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # i.e. YOLOv8, YOLOv9, YOLOv10, YOLO11
    # line_width=2,  # line width for bounding boxes and text display
    # classes=[0, 2],  # count specific classes i.e. person and car.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    im0 = trackzone.trackzone(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

    CLI(命令行界面)与 Python 类似,您可以使用 、 等参数配置 TrackZone 解决方案region。可以在参数source部分找到可用参数的完整列表。

# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone show=True source="path/to/video/file.mp4"

# Pass region coordinates
yolo solutions trackzone show=True \
region=[(150, 150), (1130, 150), (1130, 570), (150, 570)]

TrackZone 的优势

    与传统的对象跟踪模块相比,TrackZone 具有多种优势,其中最重要的优势如下所述。

    • 速度:通过仅处理帧的特定部分,与需要跟踪整个帧内对象的传统对象跟踪相比,它可以提供更快的速度。

    • 准确度:TrackZone 通过聚焦画面的裁剪和放大区域来提高准确度。这使模型能够更有效地检测和跟踪指定区域内的物体。

    • 边缘设备兼容性:TrackZone 可以在NVIDIA Jetson等低功耗边缘设备上表现良好,这使其非常适合物联网系统。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值