使用 Ultralytics YOLO11 的 VisionEye 视图对象映射 🚀
什么是 VisionEye Object Mapping?
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.yaml 或 botsort.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:0 或 0 )。允许用户在 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 类中的 方法执行几个关键操作:
- 从输入图像中提取轨迹(边界框、类别和掩码)
- 创建一个注释器以绘制边界框和标签
- 对于每个检测到的对象,绘制一个框标签并从视觉点创建一个视觉线
- 返回带有跟踪统计信息的带注释图像
这种方法对于需要空间感知和对象关系可视化的应用(如监控系统、自主导航和交互式装置)特别有用。
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 以其速度、准确性和易于集成而闻名,使其成为对象映射和跟踪的首选。主要优势包括:
- 最先进的性能:在实时对象检测中提供高精度。
- 灵活性: 支持各种任务,例如检测、跟踪和距离计算。
- 社区与支持 (Community and Support): 丰富的文档和活跃的 GitHub 社区,用于问题排查和功能增强。
- 易于使用:直观的 API 简化了复杂任务,从而可以快速部署和迭代。
有关应用和优势的更多信息,请查看 Ultralytics YOLO11 文档。
如何将 VisionEye 与其他 机器学习 工具(如 Comet 或 ClearML)集成?
Ultralytics YOLO11 可以与各种机器学习工具(如 Comet 和 ClearML)无缝集成,从而增强实验跟踪、协作和可重复性。请按照关于如何将 YOLOv5 与 Comet 结合使用以及将 YOLO11 与 ClearML 集成的详细指南开始使用。
如需进一步探索和集成示例,请查看我们的Ultralytics 集成指南。