跳至内容

使用Ultralytics YOLOv8 🚀 进行速度估计

什么是速度估算?

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



观看: 速度估算使用Ultralytics YOLOv8

速度估算的优势?

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

真实世界的应用

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

使用YOLOv8 进行速度估算示例

from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2

model = YOLO("yolov8n.pt")
names = model.model.names

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_estimation.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = speed_estimation.SpeedEstimator()
speed_obj.set_args(reg_pts=line_pts,
                   names=names,
                   view_img=True)

while cap.isOpened():

    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)

    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

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

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

可选参数 set_args

名称 类型 默认值 说明
reg_pts list [(20, 400), (1260, 400)] 定义区域面积的点
names dict None 班级名称
view_img bool False 显示带有计数的帧
line_thickness int 2 增加边界框厚度
region_thickness int 5 对象计数器区域或线条的厚度
spdl_dist_thresh int 10 速度检测线的欧氏距离阈值

论据 model.track

名称 类型 默认值 说明
source im0 None 图像或视频的源目录
persist bool False 帧与帧之间的持久轨迹
tracker str botsort.yaml 跟踪方法 "bytetrack "或 "botsort
conf float 0.3 置信度阈值
iou float 0.5 借据阈值
classes list None 按类别筛选结果,即 classes=0,或 classes=[0,2,3]
verbose bool True 显示物体跟踪结果


创建于 2024-01-05,更新于 2024-05-08
作者:Burhan-Q(1)、RizwanMunawar(2)、glenn-jocher(2)、AyushExel(1)

评论