Ultralytics YOLO27:
Get Started

使用 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 Solution 跟踪对象并绘制路径的位置。
line_widthint2解决方案绘制的框、关键点和计数的线条粗细。
verboseboolTrue启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。

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

参数类型默认值说明
trackerstr'tracktrack.yaml'指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。
conffloat0.25设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。
ioufloat0.7设置用于筛除重叠检测结果的交并比 (IoU) 阈值。
classeslistNone按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。
devicestrNone指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。
imgszint or tuple640目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。
max_detint300跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。
quantizeint or strNone推理精度:对于非 CPU 上运行的 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/unset (FP32) 进行选择;其他格式使用其模型文件和运行时所选的精度。此参数替代已弃用的 half 参数。

此外,还支持以下一些可视化参数:

参数类型默认值说明
showboolFalse如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。
show_confboolTrue在每个检测结果的标签旁显示置信度分数,帮助了解模型对该检测结果的确信程度。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。

VisionEye 的工作原理#

VisionEye 会在画面中设定一个固定观察点,并从该点向检测到的对象绘制线条,从而模拟人类视觉从单一视角聚焦多个对象的方式。该解决方案使用对象跟踪在各帧中持续识别对象,并以可视化方式呈现观察者(观察点)与场景中对象之间的空间关系。

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

  1. 从输入图像中提取跟踪信息(边界框、类别和跟踪 ID)
  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"
    
    # 视频写入器
    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 以速度快、准确度高且易于集成而闻名,是对象映射和跟踪的首选方案之一。主要优势包括:

    1. 先进性能:实时对象检测准确度高。
    2. 灵活性:在同一流水线中支持检测、跟踪和距离计算。
    3. 社区与支持:提供详尽的文档和活跃的 GitHub 社区,方便排查问题和改进功能。
    4. 易于使用:直观的 API 简化了复杂任务,让你能够快速部署和迭代。

    如需详细了解应用和优势,请参阅 Ultralytics YOLO26 文档。

  • Ultralytics YOLO26 可以与 Comet 和 ClearML 等各种机器学习工具无缝集成,提升实验跟踪、协作和可复现性。请参阅将 YOLO26 与 Comet 集成和将 YOLO26 与 ClearML 集成的详细指南,开始使用。

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

评论