跳至内容

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

什么是 VisionEye Object Mapping?

Ultralytics YOLO11VisionEye 可让计算机模拟人眼的观察精度,识别并精确定位物体。这一功能使计算机能够辨别并聚焦于特定物体,就像人眼从特定视角观察细节一样。

使用 VisionEye View 物体映射功能进行物体跟踪Ultralytics YOLO11

使用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] (50, 50) 视觉将使用 VisionEye 解决方案跟踪物体并绘制路径的点。

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

论据 类型 默认值 说明
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 控制跟踪结果的显示,提供被跟踪物体的可视化输出。
device str None 指定用于推理的设备(例如:......)、 cpu, cuda:00).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。

此外,一些可视化论据也得到了支持,如下所示:

论据 类型 默认值 说明
show bool False 如果 True在一个窗口中显示注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。
line_width None or int None 指定边界框的线宽。如果 None根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。

VisionEye 的工作原理

VisionEye 的工作原理是在画面中建立一个固定的视觉点,然后从这个点到检测到的物体之间画线。这模拟了人类视觉从单一视点聚焦多个物体的方式。该解决方案利用物体跟踪功能保持各帧物体识别的一致性,从而创建观察者(视觉点)与场景中物体之间空间关系的可视化表示。

"(《世界人权宣言》) process 方法执行几个关键操作:

  1. 从输入图像中提取轨迹(边界框、类和遮罩
  2. 创建注释器以绘制边框和标签
  3. 为每个检测到的物体绘制方框标签,并从视觉点创建视觉线
  4. 返回带有追踪统计数据的注释图像

这种方法尤其适用于需要空间感知和对象关系可视化的应用,如监控系统、自主导航和互动装置。

VisionEye 的应用

VisionEye 物体映射在各行各业都有大量实际应用:

  • 安全和监控:从一个固定的摄像头位置监控多个感兴趣的对象
  • 零售分析:跟踪与商店陈列相关的顾客流动模式
  • 运动分析:从教练的角度分析球员的位置和动作
  • 自动驾驶汽车:可视化车辆如何 "观察 "环境中的物体并确定其优先顺序
  • 人机交互:根据空间关系创建更直观的界面

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

备注

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

常见问题

如何通过Ultralytics YOLO11 开始使用 VisionEye Object Mapping?

要开始在Ultralytics YOLO11 上使用 VisionEye Object Mapping,首先需要通过 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. 社区和支持:丰富的文档和活跃的 GitHub 社区,可用于故障排除和改进。
  4. 易用性:直观的应用程序接口可简化复杂的任务,实现快速部署和迭代。

有关申请和福利的更多信息,请查阅Ultralytics YOLO11 文档

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

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

如需进一步了解和了解集成示例,请查阅我们的Ultralytics 集成指南

📅创建于 1 年前 ✏️已更新 5 天前

评论