使用 Ultralytics YOLO26 进行 TrackZone
什么是 TrackZone?
TrackZone 专门用于监控画面中特定区域内的对象,而不是监控整个画面。它基于 Ultralytics YOLO26 构建,专门集成了视频和实时摄像机馈送中针对特定区域的对象检测和跟踪功能。YOLO26 先进的算法和 深度学习 技术使其成为实时用例的理想选择,能在人群监控和安防等应用中提供精确、高效的对象跟踪。
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
区域对象跟踪 (TrackZone) 的优势
- 目标分析: 在特定区域内跟踪对象可以获得更具针对性的见解,从而能够精确地监控和分析感兴趣的区域,例如入口点或限制区域。
- 提高效率: 通过将跟踪范围缩小到定义的区域,TrackZone 减少了计算开销,确保了更快的处理速度和最佳性能。
- 增强安全性: 区域跟踪通过监控关键区域改善了安防状况,有助于及早发现异常活动或安全漏洞。
- 可扩展的解决方案: 能够聚焦于特定区域的特性使 TrackZone 能够适应各种场景,从零售空间到工业环境,确保了无缝集成和可扩展性。
现实世界应用
| 农业 | 交通运输 |
|---|---|
| 使用 Ultralytics YOLO26 进行田间植物跟踪 | 使用 Ultralytics YOLO26 进行道路车辆跟踪 |
使用 Ultralytics YOLO 进行 TrackZone
# Run a trackzone example
yolo solutions trackzone show=True
# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True
# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"TrackZone 依赖 region 列表来确定要监控画面的哪一部分。定义多边形以匹配你关心的物理区域(如门、大门等),并在配置时保持 show=True 开启,这样你就可以验证覆盖层是否与视频画面对齐。
TrackZone 参数
下表列出了 TrackZone 的参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
region | list | '[(20, 400), (1260, 400)]' | 定义计数区域的点列表。 |
TrackZone 解决方案包含对 track 参数的支持:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 指定使用的跟踪算法,例如 bytetrack.yaml 或 botsort.yaml。 |
conf | float | 0.1 | 设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能会包含误报。 |
iou | float | 0.7 | 设置过滤重叠检测的 Intersection over Union (IoU) 阈值。 |
classes | list | None | 按类别索引过滤结果。例如,classes=[0, 2, 3] 将仅跟踪指定的类别。 |
verbose | bool | True | 控制跟踪结果的显示,提供跟踪对象的视觉输出。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0 或 0)。允许用户选择 CPU、特定的 GPU 或其他计算设备来执行模型。 |
此外,还提供以下可视化选项:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
show | bool | False | 如果设为 True,则在一个窗口中显示标注后的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。 |
line_width | int or None | None | 指定边界框的线宽。如果为 None,线宽将根据图像大小自动调整。提供视觉自定义以提高清晰度。 |
show_conf | bool | True | 在标签旁边显示每个检测结果的置信度分数。让你可以洞察模型对每个检测的确定性。 |
show_labels | bool | True | 在可视化输出中显示每个检测结果的标签。提供对检测对象的即时了解。 |
常见问题 (FAQ)
如何使用 Ultralytics YOLO26 跟踪视频画面中特定区域或区域内的对象?
使用 Ultralytics YOLO26 跟踪视频画面中定义区域或范围内的对象非常简单。只需使用下方提供的命令即可启动跟踪。这种方法确保了高效的分析和准确的结果,非常适合安防、人群管理或任何需要区域跟踪的场景。
yolo solutions trackzone source="path/to/video.mp4" show=True如何使用 Python 和 Ultralytics YOLO26 来使用 TrackZone?
只需几行代码,你就可以设置特定区域的对象跟踪,从而轻松将其集成到你的项目中。
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.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="yolo26n.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
results = trackzone(im0)
video_writer.write(results.plot_im)
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)]
# Initialize trackzone
trackzone = solutions.TrackZone(
show=True, # display the output
region=region_points, # pass region points
)