跳至内容

使用 TrackZoneUltralytics YOLO11

什么是 TrackZone?

TrackZone 专门监控框架指定区域内的物体,而不是整个框架。它基于 Ultralytics YOLO11的基础上,它专门在视频和实时摄像机馈送的区域内集成了物体检测和跟踪功能。YOLO11TrackZone 的先进算法和深度学习技术使其成为实时用例的完美选择,可在人群监控和监视等应用中提供精确、高效的物体跟踪。

区域物体跟踪(TrackZone)的优势

  • 有针对性的分析:跟踪特定区域内的物体可以获得更有针对性的见解,从而对入口点或禁区等感兴趣的区域进行精确监控和分析。
  • 提高效率:TrackZone 通过将跟踪范围缩小到定义的区域,减少了计算开销,确保了更快的处理速度和最佳性能。
  • 增强安全性:分区跟踪通过监控关键区域来改进监控,有助于及早发现异常活动或安全漏洞。
  • 可扩展的解决方案:专注于特定区域的能力使 TrackZone 能够适应从零售空间到工业环境的各种场景,确保无缝集成和可扩展性。

真实世界的应用

农业 交通运输
在野外使用Ultralytics YOLO11 使用道路车辆跟踪系统Ultralytics YOLO11
在野外使用Ultralytics YOLO11 使用道路车辆跟踪系统Ultralytics YOLO11

TrackZone 使用YOLO11 示例

# 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)]
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",  # You can use any model that Ultralytics support, i.e. YOLOv9, YOLOv10
    # line_width=2,  # Adjust the line width for bounding boxes and text display
    # classes=[0, 2],  # If you want to count specific classes i.e. person and car with COCO pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = trackzone.trackzone(im0)
    video_writer.write(im0)

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

论据 TrackZone

下面的表格显示了 TrackZone 争论:

名称 类型 默认值 说明
model str None Ultralytics YOLO 模型文件的路径
region list [(150, 150), (1130, 150), (1130, 570), (150, 570)] 定义对象跟踪区域的点列表。
line_width int 2 边界框的线条粗细
show bool False 用于控制是否显示视频流的标志。

论据 model.track

论据 类型 默认值 说明
source str None 指定图片或视频的源目录。支持文件路径和 URL。
persist bool False 可在帧间持续跟踪对象,在视频序列中保持 ID。
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 控制跟踪结果的显示,提供被跟踪物体的可视化输出。

常见问题

如何使用Ultralytics YOLO11 跟踪视频帧中特定区域或区域内的物体?

使用Ultralytics YOLO11 可以直接跟踪视频帧中指定区域或区域内的物体。只需使用下面提供的命令即可启动跟踪。这种方法可确保高效的分析和准确的结果,非常适合监控、人群管理或任何需要区域跟踪的应用。

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

如何通过Ultralytics YOLO11 在Python 中使用 TrackZone?

只需几行代码,您就可以在特定区域设置对象跟踪,从而轻松将其集成到您的项目中。

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",
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = trackzone.trackzone(im0)
    video_writer.write(im0)

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

如何使用Ultralytics TrackZone 配置视频处理区域点?

使用Ultralytics TrackZone 配置视频处理区域点既简单又可定制。您可以通过Python 脚本直接定义和调整区域,从而精确控制要监控的区域。

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Init TrackZone (Object Tracking in Zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # Display the output
    region=region_points,  # Pass region points
)
📅创建于 8 天前 ✏️已更新 8 天前

评论