跳转至内容

使用 Ultralytics YOLO26 进行速度估计 🚀

什么是速度估计?

速度估计是在给定上下文中计算物体移动速率的过程,常用于 计算机视觉 应用。使用 Ultralytics YOLO26,您现在可以结合距离和时间数据,通过 物体 track 来计算物体速度,这对于交通监控和安防等任务至关重要。速度估计的准确性直接影响各种应用的效率和可靠性,使其成为智能系统和实时决策过程发展中的关键组成部分。



观看: 使用 Ultralytics YOLO26 进行速度估计

查看我们的博客

有关速度估计的更深入见解,请查阅我们的博客文章:Ultralytics YOLO 在计算机视觉项目中进行速度估计

速度估计的优势

  • 高效的交通控制: 准确的速度估计有助于管理交通流量,提高安全性并减少道路拥堵。
  • 精确的自主导航: 在像自动驾驶汽车这样的自主系统中,可靠的速度估计可确保安全准确的车辆导航。
  • 增强的监控安全性: 监控分析中的速度估计有助于识别异常行为或潜在威胁,从而提高安全措施的有效性。

实际应用

运输运输
使用 Ultralytics YOLO26 进行道路速度估计使用 Ultralytics YOLO26 进行桥梁速度估计
使用 Ultralytics YOLO26 进行道路速度估计使用 Ultralytics YOLO26 进行桥梁速度估计
速度是一个估计值

速度将是一个估计值,可能不完全准确。此外,估计值可能因相机规格和相关因素而异。

使用 Ultralytics YOLO 进行速度估计

# Run a speed example
yolo solutions speed show=True

# Pass a source video
yolo solutions speed source="path/to/video.mp4"

# Adjust meter per pixel value based on camera configuration
yolo solutions speed meter_per_pixel=0.05
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("speed_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
    show=True,  # display the output
    model="yolo26n.pt",  # path to the YOLO26 model file.
    fps=fps,  # adjust speed based on frame per second
    # max_speed=120,  # cap speed to a max value (km/h) to avoid outliers
    # max_hist=5,  # minimum frames object tracked before computing speed
    # meter_per_pixel=0.05,  # highly depends on the camera configuration
    # classes=[0, 2],  # estimate speed of specific classes.
    # line_width=2,  # adjust the line width for bounding boxes
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = speedestimator(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

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

SpeedEstimator 参数

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

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
fpsfloat30.0用于速度计算的每秒帧数。
max_histint5每个对象用于速度/方向计算的最大历史 track 点数。
meter_per_pixelfloat0.05用于将像素距离转换为真实世界单位的比例因子。
max_speedint120视觉叠加中的最大速度限制(用于警报)。

字段 SpeedEstimator 解决方案允许使用 track 参数:

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

此外,还支持以下可视化选项:

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

常见问题

如何使用 Ultralytics YOLO26 估计物体速度?

使用 Ultralytics YOLO26 估计物体速度涉及结合 物体 detect 和 track 技术。首先,您需要使用 YOLO26 模型 detect 每一帧中的物体。然后,跨帧 track 这些物体以计算它们随时间的移动。最后,利用物体在帧间移动的距离和帧率来估计其速度。

示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
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("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize SpeedEstimator
speedestimator = solutions.SpeedEstimator(
    model="yolo26n.pt",
    show=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = speedestimator(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

有关更多详细信息,请参阅我们的官方博客文章

在交通管理中使用 Ultralytics YOLO26 进行速度估计有哪些优势?

使用 Ultralytics YOLO26 进行速度估算在交通管理中具有显著优势:

  • 增强型安全性: 准确估计车辆速度以检测超速并提高道路安全。
  • 实时监控:得益于 YOLO26 的实时目标检测能力,可有效监控交通流量和拥堵情况。
  • 可扩展性:在各种硬件设置上部署模型,从边缘设备到服务器,确保为大规模实施提供灵活且可扩展的解决方案。

有关更多应用,请参阅速度估计的优势

YOLO26 可以与其他 AI 框架集成吗,例如 TensorFlowPyTorch

是的,YOLO26 可以与 TensorFlow 和 PyTorch 等其他 AI 框架集成。Ultralytics 支持将 YOLO26 模型导出为多种格式,例如 ONNXTensorRTCoreML,确保与其他机器学习框架的平稳互操作性。

要将 YOLO26 模型导出为 ONNX 格式:

yolo export model=yolo26n.pt format=onnx

在我们的导出指南中了解有关导出模型的更多信息。

使用 Ultralytics YOLO26 进行速度估计的准确性如何?

使用 Ultralytics YOLO26 进行速度估算的准确性取决于多个因素,包括目标跟踪的质量、视频的分辨率和帧率以及环境变量。虽然速度估算器提供可靠的估算,但由于帧处理速度和目标遮挡的差异,它可能无法达到 100% 的准确性。

注意:在可能的情况下,始终考虑误差范围并使用地面实况数据验证估计值。

有关更多提高准确性的技巧,请查看 参数 SpeedEstimator 部分.



📅 创建于 2 年前 ✏️ 更新于 7 天前
glenn-jocherRizwanMunawarMatthewNoyceRizwanMunawaraaurelions@gmail.comleonnilUltralyticsAssistantIvorZhu331Burhan-QAyushExel

评论