Ultralytics YOLO27:

使用 Ultralytics YOLO26 的 VisionEye 视场对象映射#

什么是 VisionEye 对象映射?#

Ultralytics YOLO26 VisionEye 能够让计算机识别并定位对象,模拟人眼的观察精度。此功能使计算机能够辨别并聚焦于特定对象,就像人眼从特定视角观察细节一样。

VisionEye object mapping with YOLO tracking

使用 YOLO26 映射对象#

VisionEye 会在帧中固定一个观察点,并从该点向每个被跟踪对象绘制射线,以便你直观了解从某个视角观察场景的效果。将 vision_point 设置为观察者的像素坐标,然后使用 Python API 或 CLI 在视频上运行该解决方案。

使用 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]"

VisionEye 参数#

下面是 VisionEye 参数表:

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
vision_pointtuple[int, int](20, 20)VisionEye 解决方案跟踪对象并绘制路径的视觉点。
line_widthint2解决方案绘制的框、关键点和计数的线条粗细。
verboseboolTrue启用解决方案逐帧记录输入形状、类别计数和处理速度的日志。跟踪调用本身始终保持静默。

你还可以在 VisionEye 解决方案中使用各种 track 参数:

参数类型默认值描述
trackerstr'botsort.yaml'指定要使用的跟踪算法。内置选项:botsort.yamlbytetrack.yamlocsort.yamldeepocsort.yamlfasttrack.yamltracktrack.yaml
conffloat0.25设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包含误报。
ioufloat0.7设置用于过滤重叠检测结果的交并比(IoU)阈值。
classeslistNone按类别索引过滤结果。例如,classes=[0, 2, 3] 仅跟踪指定类别。
devicestrNone指定推理设备(例如 cpucuda:00)。允许用户在 CPU、特定 GPU 或其他计算设备之间进行选择,以执行模型。
imgszint or tuple640目标推理图像大小:用于正方形的整数或 (height, width) 对。形状会根据模型步长进行调整。
max_detint300在跟踪前每帧保留的最大检测数,用于限制解决方案在密集场景中处理的对象数量。
quantizeint or strNone推理精度:针对 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/不设置 (FP32);其他格式则在其工件和运行时选择的精度下进行计算。它替代了已弃用的 half 标志。

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

参数类型默认值描述
showboolFalse如果为 True,则会在窗口中显示带标注的图像或视频。适用于开发或测试期间获取即时视觉反馈。
show_confboolTrue在每个检测结果旁显示其置信度分数,让你了解模型对每个检测结果的确定程度。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签,帮助你立即了解检测到的对象。

VisionEye 的工作原理#

VisionEye 会在帧中建立一个固定的视觉点,并从该点向检测到的对象绘制线条。这模拟了人类视觉从单一视角聚焦于多个对象的方式。该解决方案使用对象跟踪来保持对象在不同帧中的一致识别,从而直观呈现观察者(视觉点)与场景中对象之间的空间关系。

VisionEye 类中的 process 方法会执行以下几项关键操作:

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

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

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"
    
    # 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="yolo26n.pt",  # use any model that Ultralytics supports, e.g., yolo26s.pt
        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 YOLO26 以速度快、精度高且易于集成而闻名,是对象映射和跟踪的首选方案。主要优势包括:

    1. 先进性能:在实时对象检测中提供高精度。
    2. 灵活性:在单一流程中支持检测、跟踪和距离计算。
    3. 社区与支持:提供完善的文档和活跃的 GitHub 社区,帮助排查问题并改进功能。
    4. 易用性:直观的 API 简化复杂任务,支持快速部署和迭代。

    如需了解有关应用和优势的更多信息,请查看 Ultralytics YOLO26 文档

  • Ultralytics YOLO26 可以与 Comet 和 ClearML 等各种机器学习工具无缝集成,从而增强实验跟踪、协作和可复现性。请参阅如何将 YOLOv5 与 Comet 结合使用以及将 YOLO26 与 ClearML 集成的详细指南,开始使用。

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

评论