跳至内容

使用Ultralytics YOLO11 🚀 进行速度估计

什么是速度估算?

速度估算是在给定环境下计算物体运动速度的过程,通常用于计算机视觉应用中。使用 Ultralytics YOLO11现在,您可以使用物体跟踪以及距离和时间数据来计算物体的速度,这对交通和监控等任务至关重要。速度估计的准确性直接影响到各种应用的效率和可靠性,使其成为推动智能系统和实时决策过程的关键组成部分。



观看: 速度估算使用Ultralytics YOLO11

查看我们的博客

要深入了解速度估算,请查看我们的博文:Ultralytics YOLO11 用于计算机视觉项目中的速度估算

速度估算的优势?

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

真实世界的应用

交通运输 交通运输
道路速度估算Ultralytics YOLO11 桥梁速度估算Ultralytics YOLO11
道路速度估算Ultralytics YOLO11 桥梁速度估算Ultralytics YOLO11

使用YOLO11 进行速度估算示例

# Run a speed example
yolo solutions speed show=True

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

# Pass region coordinates
yolo solutions speed region=[(20, 400), (1080, 400), (1080, 360), (20, 360)]
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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
video_writer = cv2.VideoWriter("speed_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Define speed region points
speed_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)]

speed = solutions.SpeedEstimator(
    show=True,  # Display the output
    model="yolo11n-pose.pt",  # Path to the YOLO11 model file.
    region=speed_region,  # Pass region points
    # classes=[0, 2],  # If you want to estimate speed of specific classes.
    # line_width=2,  # Adjust the line width for bounding boxes and text display
)

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

    if success:
        out = speed.estimate_speed(im0)
        video_writer.write(im0)
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
        continue

    print("Video frame is empty or video processing has been successfully completed.")
    break

cap.release()
cv2.destroyAllWindows()
速度估计

速度为估计值,可能不完全准确。此外,估计值可能因GPU 速度而异。

论据 SpeedEstimator

名称 类型 默认值 说明
model str None Ultralytics YOLO 模型文件的路径
region list [(20, 400), (1260, 400)] 定义计数区域的点列表。
line_width int 2 边界框的线条粗细
show bool False 用于控制是否显示视频流的标志。

论据 model.track

论据 类型 默认值 说明
source str None 指定图片或视频的源目录。支持文件路径和 URL。
persist bool False 可在帧间持续跟踪对象,在视频序列中保持 ID。
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 控制跟踪结果的显示,提供被跟踪物体的可视化输出。

常见问题

如何使用Ultralytics YOLO11 估算物体速度?

使用Ultralytics YOLO11 估算物体速度需要结合物体检测和跟踪技术。首先,需要使用YOLO11 模型检测每帧中的物体。然后,跨帧跟踪这些物体,计算它们在一段时间内的移动情况。最后,利用物体在帧间移动的距离和帧频来估算其速度。

例如

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.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
speed_obj = solutions.SpeedEstimator(
    region=[(0, 360), (1280, 360)],
    model="yolo11n.pt",
    show=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    im0 = speed_obj.estimate_speed(im0)
    video_writer.write(im0)

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

更多详情,请参阅我们的官方博文

在交通管理中使用Ultralytics YOLO11 进行速度估算有什么好处?

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

  • 增强安全性:准确估算车速,检测超速行驶,提高道路安全性。
  • 实时监控:利用YOLO11 的实时目标检测功能,有效监控交通流量和拥堵情况。
  • 可扩展性:在从边缘设备到服务器的各种硬件设置上部署模型,确保为大规模实施提供灵活、可扩展的解决方案。

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

YOLO11 能否与其他人工智能框架集成,如 TensorFlowPyTorch?

是的,YOLO11 可与其他人工智能框架集成,如TensorFlow 和PyTorch 。Ultralytics 支持将YOLO11 模型导出为各种格式,如ONNX 、TensorRT 和CoreML ,确保与其他 ML 框架顺利互操作。

将YOLO11 模型导出为ONNX 格式:

yolo export --weights yolo11n.pt --include onnx

有关导出模型的更多信息,请参阅我们的导出指南

使用Ultralytics YOLO11 估算速度的准确性如何?

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

注意:一定要考虑误差范围,并尽可能用地面实况数据验证估算结果。

有关提高精度的更多提示,请查看 论据 SpeedEstimator 部分.

为什么选择Ultralytics YOLO11 而不是其他对象检测模型(如TensorFlow Object Detection API)?

Ultralytics YOLO11 与其他对象检测模型(如TensorFlow Object Detection API)相比,它具有多项优势:

  • 实时性能:YOLO11 针对实时检测进行了优化,速度快、精度高。
  • 易于使用:YOLO11 设计有用户友好界面,简化了模型培训和部署。
  • 多功能性:支持多种任务,包括物体检测、分割和姿态估计。
  • 社区和支持:YOLO11 有一个活跃的社区和大量的文档支持,确保开发人员获得所需的资源。

有关YOLO11 优点的更多信息,请访问我们的详细型号页面

📅 Created 11 months ago ✏️ Updated 17 days ago

评论