跳转至内容

使用 Ultralytics YOLO11 的 VisionEye 视图对象映射 🚀

什么是 VisionEye Object Mapping?

Ultralytics YOLO11 VisionEye 使计算机能够识别和精确定位对象,模拟人眼的观察精度。此功能使计算机能够辨别和专注于特定对象,就像人眼从特定视点观察细节的方式一样。

使用 Ultralytics YOLO11 的带有对象跟踪的 VisionEye 视图对象映射

使用 Ultralytics YOLO 进行 VisionEye 映射

# 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]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 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("visioneye_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e, YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
    vision_point=(50, 50),  # the point, where vision will view objects and draw tracks
)

# 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 = visioneye(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

VisionEye 参数

这是一个包含以下内容的表格 VisionEye 参数:

参数 类型 默认值 描述
model str None Ultralytics YOLO 模型文件的路径。
vision_point tuple[int, int] (20, 20) 视觉将跟踪对象并使用 VisionEye 解决方案绘制路径的点。

您还可以使用各种 track 内的参数 VisionEye 解决方案:

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

此外,还支持一些可视化参数,如下所示:

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

VisionEye 的工作原理

VisionEye 的工作原理是在帧中建立一个固定的视觉点,并从该点绘制到检测到的对象。这模拟了人类视觉如何从单个视点关注多个对象。该解决方案使用对象跟踪来保持跨帧对象识别的一致性,从而创建观察者(视觉点)和场景中对象之间空间关系的可视化表示。

字段 process VisionEye 类中的 方法执行几个关键操作:

  1. 从输入图像中提取轨迹(边界框、类别和掩码)
  2. 创建一个注释器以绘制边界框和标签
  3. 对于每个检测到的对象,绘制一个框标签并从视觉点创建一个视觉线
  4. 返回带有跟踪统计信息的带注释图像

这种方法对于需要空间感知和对象关系可视化的应用(如监控系统、自主导航和交互式装置)特别有用。

VisionEye 的应用

VisionEye 对象映射在各个行业中具有许多实际应用:

  • 安全与监控:从固定的摄像机位置监控多个感兴趣的对象
  • 零售分析:跟踪客户相对于商店陈列的移动模式
  • 体育分析:从教练的角度分析球员的站位和移动
  • 自动驾驶车辆: 可视化车辆如何“看到”并优先处理其环境中的物体
  • 人机交互:创建对空间关系做出反应的更直观的界面

通过将 VisionEye 与其他 Ultralytics 解决方案(如距离计算速度估计)相结合,您可以构建全面的系统,不仅可以跟踪对象,还可以了解它们的空间关系和行为。

注意

如有任何疑问,请随时在 Ultralytics Issue Section 或下面提到的讨论区中发布您的问题。

常见问题

如何开始将 VisionEye Object Mapping 与 Ultralytics YOLO11 结合使用?

要开始将 VisionEye 对象映射与 Ultralytics YOLO11 结合使用,首先需要通过 pip 安装 Ultralytics YOLO 包。然后,您可以使用文档中提供的示例代码来设置 对象检测 与 VisionEye 的结合使用。以下是一个简单的入门示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e, YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
)

# 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 = visioneye(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

为什么我应该使用 Ultralytics YOLO11 进行对象映射和跟踪?

Ultralytics YOLO11 以其速度、准确性和易于集成而闻名,使其成为对象映射和跟踪的首选。主要优势包括:

  1. 最先进的性能:在实时对象检测中提供高精度。
  2. 灵活性: 支持各种任务,例如检测、跟踪和距离计算。
  3. 社区与支持 (Community and Support): 丰富的文档和活跃的 GitHub 社区,用于问题排查和功能增强。
  4. 易于使用:直观的 API 简化了复杂任务,从而可以快速部署和迭代。

有关应用和优势的更多信息,请查看 Ultralytics YOLO11 文档

如何将 VisionEye 与其他 机器学习 工具(如 Comet 或 ClearML)集成?

Ultralytics YOLO11 可以与各种机器学习工具(如 Comet 和 ClearML)无缝集成,从而增强实验跟踪、协作和可重复性。请按照关于如何将 YOLOv5 与 Comet 结合使用以及将 YOLO11 与 ClearML 集成的详细指南开始使用。

如需进一步探索和集成示例,请查看我们的Ultralytics 集成指南



📅 创建于 1 年前 ✏️ 更新于 4 个月前

评论