使用 Ultralytics YOLO26 进行 VisionEye 视图对象映射#
什么是 VisionEye 对象映射?#
Ultralytics YOLO26 VisionEye 让计算机能够识别并定位对象,模拟人眼的观察精度。这项功能使计算机能够辨别并聚焦于特定对象,就像人眼从特定视角观察细节一样。
使用 YOLO26 映射对象#
VisionEye 会在画面中设定一个固定观察点,并从该点向每个跟踪对象绘制射线,让你直观了解从单一视角观察场景的效果。将 vision_point 设置为观察者的像素坐标,然后使用 Python API 或 CLI 对视频运行此解决方案。
# Monitor objects position with visioneye
yolo solutions visioneye show=True
# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"VisionEye 参数#
下面是 VisionEye 参数表:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
vision_point | tuple[int, int] | (20, 20) | 视觉系统使用 VisionEye Solution 跟踪对象并绘制路径的位置。 |
line_width | int | 2 | 解决方案绘制的框、关键点和计数的线条粗细。 |
verbose | bool | True | 启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。 |
你还可以在 VisionEye 解决方案中使用各种 track 参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。 |
iou | float | 0.7 | 设置用于筛除重叠检测结果的交并比 (IoU) 阈值。 |
classes | list | None | 按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。 |
imgsz | int or tuple | 640 | 目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。 |
max_det | int | 300 | 跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。 |
quantize | int or str | None | 推理精度:对于非 CPU 上运行的 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/unset (FP32) 进行选择;其他格式使用其模型文件和运行时所选的精度。此参数替代已弃用的 half 参数。 |
此外,还支持以下一些可视化参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
show | bool | False | 如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。 |
show_conf | bool | True | 在每个检测结果的标签旁显示置信度分数,帮助了解模型对该检测结果的确信程度。 |
show_labels | bool | True | 在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。 |
VisionEye 的工作原理#
VisionEye 会在画面中设定一个固定观察点,并从该点向检测到的对象绘制线条,从而模拟人类视觉从单一视角聚焦多个对象的方式。该解决方案使用对象跟踪在各帧中持续识别对象,并以可视化方式呈现观察者(观察点)与场景中对象之间的空间关系。
VisionEye 类中的 process 方法会执行几项关键操作:
- 从输入图像中提取跟踪信息(边界框、类别和跟踪 ID)
- 创建标注器以绘制边界框和标签
- 为每个检测到的对象绘制框标签,并从观察点绘制视觉连线
- 返回带有跟踪统计信息的标注图像
这种方法尤其适用于需要空间感知和对象关系可视化的应用,例如监控系统、自主导航和交互式装置。
VisionEye 的应用#
VisionEye 对象映射在各行各业都有许多实际应用:
- 安防与监控:从固定摄像机位置监控多个关注对象
- 零售分析:跟踪顾客相对于店内陈列的移动模式
- 体育分析:从教练视角分析运动员的位置和移动
- 自动驾驶汽车:可视化车辆如何“观察”并优先处理周围环境中的对象
- 人机交互:创建能根据空间关系做出响应、更加直观的界面
将 VisionEye 与其他 Ultralytics 解决方案(例如距离计算或速度估算)结合使用,你可以构建全面的系统,不仅能跟踪对象,还能理解对象之间的空间关系和行为。
常见问题#
要开始使用 Ultralytics YOLO26 进行 VisionEye 对象映射,你首先需要通过 pip 安装 Ultralytics YOLO 软件包。然后,你可以使用文档中提供的示例代码,通过 VisionEye 设置对象检测。下面是一个简单示例,助你入门:
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)) video_writer = cv2.VideoWriter("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # 初始化 vision eye 对象 visioneye = solutions.VisionEye( show=True, # 显示输出 model="yolo26n.pt", # 使用 Ultralytics 支持的任意模型,例如 yolo26s.pt classes=[0, 2], # 为特定类别生成 visioneye 视图 ) # 处理视频 while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or video processing has been successfully completed.") break results = visioneye(im0) print(results) # 访问输出 video_writer.write(results.plot_im) # 写入视频文件 cap.release() video_writer.release() cv2.destroyAllWindows() # 关闭所有已打开的窗口Ultralytics YOLO26 以速度快、准确度高且易于集成而闻名,是对象映射和跟踪的首选方案之一。主要优势包括:
- 先进性能:实时对象检测准确度高。
- 灵活性:在同一流水线中支持检测、跟踪和距离计算。
- 社区与支持:提供详尽的文档和活跃的 GitHub 社区,方便排查问题和改进功能。
- 易于使用:直观的 API 简化了复杂任务,让你能够快速部署和迭代。
如需详细了解应用和优势,请参阅 Ultralytics YOLO26 文档。
Ultralytics YOLO26 可以与 Comet 和 ClearML 等各种机器学习工具无缝集成,提升实验跟踪、协作和可复现性。请参阅将 YOLO26 与 Comet 集成和将 YOLO26 与 ClearML 集成的详细指南,开始使用。
如需进一步探索并查看集成示例,请参阅我们的 Ultralytics 集成指南。