当前位置: 首页 > news >正文

yolov8目标检测与速度估计

我们可能都见过限速路牌。我们中的一些人甚至可能收到过通过邮寄或电子邮件发送的自动限速违规通知。人工智能(AI)交通管理系统可以利用计算机视觉技术自动标记超速违规行为。路灯和高速公路上的摄像头拍摄的实时画面可用于估算车速和加强道路安全。

在这里插入图片描述

车速估算让交通管理更轻松

据世界卫生组织(WHO)统计,每年约有119 万人因超速行驶而死于道路交通事故。此外,还有 2,000 万至 5,000 万人受到非致命伤害,其中许多人因此致残。交通安全的重要性怎么强调都不为过,尤其是当车速估算有助于预防事故、挽救生命并保持道路安全和高效时。

利用计算机视觉进行速度估算涉及[检测]视频帧中的物体,以计算它们的移动速度。YOLOv8 等算法可以识别和跟踪连续帧中的物体,如车辆。该系统使用校准过的摄像头或参考点来测量这些物体在现实世界中的移动距离。通过计算物体在两点之间移动所需的时间,系统可以利用距离-时间比计算出物体的速度。

在这里插入图片描述

除了抓超速者,集成了人工智能的速度估算系统还能收集数据,对交通进行预测。这些预测可以支持交通管理任务,如优化信号灯时间和资源分配。对交通模式和拥堵原因的洞察可用于规划新道路,以减少交通拥堵。

速度估算在其他行业的应用

速度估算的应用不仅限于监控道路。它还可用于监控运动员的表现、帮助自动驾驶汽车了解周围物体的移动速度、检测可疑行为等。在任何可以使用摄像头测量物体速度的地方,都可以使用计算机视觉进行速度估算。

以下是一些使用速度估算的例子:

  • 特斯拉自动驾驶汽车使用基于视觉的速度估计来避免碰撞。
  • 2024 年奥运会将使用计算机视觉和速度估算技术来改进田径项目的成绩分析。
  • 智能城市正在研究行人步态分析,以监测步行速度,提高城市流动性和安全性。这些系统可以提醒司机注意行人的存在,防止事故发生。
  • 动物行为监测系统利用速度估算来跟踪动物的运动,并检测动物的痛苦或生病迹象。

使用计算机视觉估算速度的好处

基于视觉的速度估算系统因其更高的准确性、成本效益和灵活性,正在取代传统的基于传感器的方法。与依赖激光雷达等昂贵传感器的系统不同,计算机视觉系统使用标准摄像头实时监控和分析速度。用于速度估算的计算机视觉解决方案可与现有交通基础设施无缝集成。此外,这些系统还可以执行许多复杂的任务,如车辆类型识别和交通模式分析,以改善整体交通流量和安全性。

自己试试速度估算YOLOv8

既然我们已经清楚地了解了速度估算及其应用,那么让我们来仔细看看如何通过代码将速度估算集成到计算机视觉项目中。我们将使用YOLOv8 模型检测移动车辆并估算其速度。

本示例使用了一段从互联网上下载的汽车行驶在道路上的视频。您可以使用相同的视频或任何相关视频。YOLOv8 模型可识别每辆车的中心点,并根据该中心点穿过视频帧中水平线的速度计算其速度。

在这里插入图片描述

图 3.输入道路上的汽车视频

在我们开始之前,需要注意的是,在这种情况下,距离计算是基于欧氏距离的近似计算。相机校准没有考虑在内,因此速度估计可能不完全准确。此外,估算的速度可能会因GPU的速度而异。

**步骤 1:**首先安装Ultralytics 软件包。打开命令提示符或终端,运行下图所示命令。

**步骤 2:**接下来,我们将导入所需的库。OpenCV 库将帮助我们处理视频。


import cv2
from ultralytics import YOLO, solutions

**步骤 3:**然后,我们可以加载YOLOv8 模型,并检索该模型可以检测到的类的名称。


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

**步骤 4:**在这一步中,我们将使用 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))

**步骤 5:**在此,我们将初始化视频写入器,以保存速度估算的最终结果。输出视频文件将保存为 “speed_estimation.avi”。


video_writer = cv2.VideoWriter(
"speed_estimation.avi",
cv2.VideoWriter_fourcc(*"mp4v"),
fps, (w, h))

‍步骤**7:**接下来,我们可以定义用于速度估算的线点。对于我们的输入视频,这条线将水平放置在帧的中间。您可以根据输入视频的情况,随意调整数值,将线条放置在最合适的位置。


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

**步骤 8:**最后,我们释放视频捕获和写入对象,并关闭所有 OpenCV 窗口。


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

**步骤 10:**保存脚本。如果您在终端或命令提示符下工作,请使用以下命令运行脚本:


python your_script_name.py

如果代码执行成功,输出的视频文件将如下所示。

在这里插入图片描述

图 4.使用YOLOv8 估算速度的输出结果。

基于视觉的速度估计所面临的挑战

同样重要的是,要了解利用计算机视觉实现速度估算所面临的挑战。雨、雾或雪等不利天气条件会阻碍道路视线,从而给系统带来问题。同样,其他车辆或物体造成的遮挡也会使这些系统难以准确跟踪和估计目标车辆的速度。光照条件差会造成阴影或阳光刺眼,这也会使速度估算工作变得更加复杂。

另一个挑战与[计算能力]有关。为了实时估算车速,我们必须处理来自高质量交通摄像头的大量可视数据。您的解决方案可能需要昂贵的硬件来处理所有这些数据,并确保一切都能快速运行,不会出现延误。

此外,还有隐私问题。这些系统收集的数据可能包括个人车辆的详细信息,如品牌、型号和车牌信息,而这些信息是在未经个人同意的情况下收集的。一些现代高清摄像头甚至可以捕捉到车内人员的图像。此类数据收集可能会引发严重的伦理和法律问题,需要极其谨慎地处理。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 0603定时器的输入捕获
  • 【ENVI的监督分类功能】
  • BGP选路实验
  • Vue和Jquery的区别
  • OpenCV图像滤波(16)应用分离式滤波器函数sepFilter2D()的使用
  • ECMAScript中的对象迭代:`Object.entries()`与`Object.values()`方法解析
  • Pandas:提供了快速、灵活和表达式丰富的数据结构。
  • 微信小程序中实现自动滚动
  • C语言 | Leetcode C语言题解之第336题回文对
  • 第N4周:NLP中的文本嵌入
  • 基本排序算法
  • 编程学习笔记秘籍:开启高效学习之旅
  • iPhone 16 机模视频曝光,五种颜色各有千秋
  • Android drawable与mipmap区别
  • nginx 详解
  • Apache Spark Streaming 使用实例
  • Apache的80端口被占用以及访问时报错403
  • chrome扩展demo1-小时钟
  • echarts的各种常用效果展示
  • es6要点
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JavaScript学习总结——原型
  • Java比较器对数组,集合排序
  • python 学习笔记 - Queue Pipes,进程间通讯
  • vue脚手架vue-cli
  • XML已死 ?
  • 百度地图API标注+时间轴组件
  • 编写符合Python风格的对象
  • 成为一名优秀的Developer的书单
  • 基于axios的vue插件,让http请求更简单
  • 前端面试之闭包
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 安徽锐锋科技IDMS系统简介
  • (2022 CVPR) Unbiased Teacher v2
  • (C++)八皇后问题
  • (Git) gitignore基础使用
  • (接口自动化)Python3操作MySQL数据库
  • (算法)Game
  • (转)C#调用WebService 基础
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)Oracle存储过程编写经验和优化措施
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core WebAPI中封装Swagger配置
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net 受管制代码
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .Net中间语言BeforeFieldInit