Ultralytics YOLOv8 在计算机视觉项目中的速度估算应用
了解如何在计算机视觉项目中使用 Ultralytics YOLOv8 模型进行速度估算。通过一个简单的代码示例亲自试试。
Abirami Vina5 分钟阅读
我们大概都见过限速标志。有些人甚至可能通过邮寄或电子邮件收到过自动发送的超速违规通知。得益于计算机视觉,人工智能(AI)交通管理系统可以自动标记超速违规行为。街灯和高速公路摄像头拍摄的实时视频可用于估算速度并提升道路安全。
速度估算的应用并不局限于高速公路安全,还可用于体育、自动驾驶汽车及各种其他领域。本文将介绍如何在计算机视觉项目中使用 Ultralytics YOLOv8 模型进行速度估算。我们还会逐步讲解一个代码示例,让你亲自试试看。
速度估计让交通管理更轻松#
根据世界卫生组织 (WHO) 的数据,每年约有116 万人死于道路交通事故,超速是主要致因之一。此外,还有 2,000 万至 5,000 万人遭受非致命伤害,其中许多人因此残疾。交通安全的重要性不容低估,尤其是当速度估计有助于预防事故、挽救生命,并让道路保持安全、高效时。
利用计算机视觉进行速度估算,需要在视频帧中检测和跟踪物体,以计算物体的移动速度。Ultralytics YOLOv8 等模型可以识别并跟踪连续帧中的车辆等物体。系统通过经过标定的摄像头或参考点测量物体移动的距离,以估算现实世界中的距离。系统会计算物体在两点之间移动所需的时间,并根据距离与时间的比值算出速度。

图 1. 使用 Ultralytics YOLOv8 模型进行速度估算。
除了抓拍超速车辆,集成 AI 的速度估计系统还可以收集数据并预测交通状况。这些预测可以支持交通管理任务,例如优化信号灯时长和资源分配。交通模式和拥堵原因方面的洞察,可用于规划新道路以缓解交通拥堵。
速度估计在其他行业中的应用#
速度估计的应用不局限于道路监控。它还可用于监测运动员表现、帮助自动驾驶车辆了解周围移动对象的速度、检测可疑行为等。只要能用摄像头测量对象速度,就可以使用计算机视觉进行速度估计。
以下是速度估计的一些应用示例:
- 特斯拉的自动驾驶汽车使用基于视觉的速度估计来避免碰撞。
- 智慧城市正在研究行人步态分析,以监测行走速度并提升城市出行效率和安全性。这些系统可以提醒驾驶员注意行人,并预防事故。
- 动物行为监测系统使用速度估计跟踪动物的移动,并检测动物是否出现痛苦或患病的迹象。

图 2。速度估计可以测量一个人的步行速度。
使用计算机视觉进行速度估计的优势#
基于视觉的速度估算系统正逐渐取代传统的传感器方法,因为这类系统精度更高、成本效益更好,也更灵活。与依赖 LiDAR 等昂贵传感器的系统不同,计算机视觉使用标准摄像头实时监测和分析速度。速度估算计算机视觉解决方案可以与现有交通基础设施集成。此外,这些系统还可以执行车辆类型识别和交通模式分析等多种复杂任务,从而改善整体交通流量和安全性。
亲自试试:使用 Ultralytics YOLOv8 进行速度估计#
现在我们已经清楚了解了速度估计及其应用,接下来通过代码看看如何将速度估计集成到你的计算机视觉项目中。我们将使用 Ultralytics YOLOv8 模型检测移动的车辆并估算其速度。
本示例使用的是从互联网下载的一段道路车辆视频。你可以使用同一段视频,也可以使用任何相关视频。Ultralytics YOLOv8 模型会检测并跟踪每辆车,速度估算器则根据视频帧率和米/像素比例尺,将每辆被跟踪车辆在多帧中的移动距离换算成速度。
开始之前需要说明,在本例中,距离计算只是近似值,依据的是欧几里得像素距离乘以估算的米/像素值。计算中未考虑摄像头标定,因此速度估算可能不完全准确。
步骤 1:首先安装 Ultralytics 软件包。打开命令提示符或终端,然后运行下方所示的命令。
pip install ultralytics查看我们的 Ultralytics 安装指南,了解安装流程的分步说明和最佳实践。如果你在安装 YOLOv8 所需的软件包时遇到问题,我们的常见问题指南提供了解决方案和实用建议。
步骤 2:接下来,导入所需的库。OpenCV 库将帮助我们处理视频。
import cv2
from ultralytics import solutions步骤 3:在这一步中,我们将使用 OpenCV 的 VideoCapture 模块打开输入视频文件,并提取视频的宽度、高度和每秒帧数 (fps)。
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))步骤 4:在这里,我们将初始化视频写入器,以保存速度估算的最终结果。输出视频文件将保存为“speed_estimation.avi”。
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))步骤 5:现在,我们可以使用 Ultralytics YOLOv8 模型和视频帧率初始化速度估算对象。meter_per_pixel 值用于设置场景的现实世界比例,因此你可以根据摄像头设置进行调整。
speed_obj = solutions.SpeedEstimator(
model="yolov8n.pt",
fps=fps,
meter_per_pixel=0.05,
show=True,
)查看所有我们支持的模型,了解哪款模型最适合你的项目。
步骤 6:脚本的核心部分会逐帧处理视频。我们读取每一帧,速度估算器会检测和跟踪物体、估算物体速度并返回标注后的帧,然后将这些帧写入输出视频。
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = speed_obj(im0)
video_writer.write(results.plot_im)步骤 7:最后,我们释放视频捕获和写入器对象,并关闭所有 OpenCV 窗口。
cap.release()
video_writer.release()
cv2.destroyAllWindows()步骤 8:保存脚本。如果你在终端或命令提示符中操作,请使用以下命令运行脚本:
python your_script_name.py基于视觉的速度估计面临的挑战#
还需要了解使用计算机视觉进行速度估算时面临的挑战。雨、雾、雪等恶劣天气会遮挡道路视线,给系统带来问题。同样,其他车辆或物体造成的遮挡,也会让系统难以准确跟踪目标车辆并估算其速度。造成阴影或阳光眩光的光线条件不佳,也会进一步增加速度估算的难度。
另一个挑战是计算能力。要实时估算速度,我们必须处理来自高质量交通摄像头的大量视觉数据。你的解决方案可能需要昂贵的硬件来处理这些数据,并确保一切快速运行、不会延迟。
此外,还存在隐私问题。这些系统收集的数据可能包含个人车辆的详细信息,例如品牌、型号和车牌信息,而收集这些信息时可能并未征得当事人同意。一些现代高清摄像头甚至可以拍到车内人员的图像。此类数据收集可能引发严重的伦理和法律问题,必须极其谨慎地处理。
加速迈向未来#
使用 Ultralytics YOLOv8 模型进行速度估算,可为许多用途提供灵活高效的解决方案。尽管在复杂条件下的准确性和隐私保护等方面仍面临挑战,但它的优势十分显著。与传统方法相比,基于计算机视觉的速度估算成本更低、适应性更强、精度也更高。它适用于交通运输、体育、监控和自动驾驶汽车等多个领域。凭借这些优势和应用前景,它很可能成为未来智能系统的重要组成部分。
对 AI 感兴趣?欢迎加入我们的社区!访问我们的 GitHub 仓库,了解我们如何利用 AI 为医疗保健和农业等多个行业打造创新解决方案。和我们一起协作、创新、学习!
作者
评论
提出问题、分享你的结果,或帮助其他人。










