这个项目使用YOLO进行车辆检测,使用SORT(简单在线实时跟踪器)进行车辆跟踪。该项目实现了以下任务:
- 车辆计数
- 车道分割
- 车道变更检测
- 速度估计
- 将所有这些详细信息转储到CSV文件中
-
车辆计数是指在道路上安装相应设备,通过对车辆通过的检测来获取车辆数量的统计信息。这种技术广泛应用于交通管理、城市规划、智能交通系统等领域。车辆计数可以帮助交通管理部门更好地了解交通流量变化情况,并根据数据采取相应的交通管理措施。
-
车道分割是指在道路上设置标线或固定隔离物,将车行道分为不同的车道,以便车辆有序行驶。车道分割可以提高交通安全性,减少事故率,并有助于缓解拥堵。同时,车道分割还可以为智能交通系统提供数据支持,如车道占用监测和车辆类型识别等。
-
车道变更检测是指通过车载摄像头、雷达或其他传感器设备等技术,实现对车辆行驶过程中车道变更情况的检测。车道变更检测可以提高驾驶员的行驶安全性和舒适度,避免发生事故,同时也可为智能交通系统提供数据支持,如实时路况分析和交通拥堵预测等。
-
速度估计是指通过车辆行驶过程中的运动学参数(如加速度、角度等),结合数据处理算法,实现对车辆速度的估计。速度估计可应用于交通管理、智能交通系统、驾驶员辅助系统等领域,如路段速度监测、交通拥堵预测、自适应巡航控制等。
请注意,视频中有4个位置和对应的代码(4个IF语句),您可以删除其中3个,并根据需要编辑第一个。
运行项目:
安装所需依赖项,请运行:
$ cd code/
$ pip3 install -r requirements.txt
通过以下方式下载yolo权重文件:
$ bash download_weights
确保根据您的视频更改检测和车道分割行,微调YOLO模型的阈值和置信度
运行
$ Python3 main.py -input /path/to/video/file.avi -output /path/for/output/video/file.avi -yolo /path/to/YOLO/directory/
速度检测:
这是一个有趣的项目,主要是由于摄像头抖动(可能是由于风或其他原因!)。这种摄像头抖动会导致框架闪烁。这意味着我们不能使用传统的像素距离到公里/小时的映射,因为随着每个帧的闪烁,边界框的中心点也会任意地闪烁。因此,我尝试了这种新方法:两条线之间的速度。
两个线之间的速度(SBTL)
该方法做出了一些假设,如下所示:
-
我们知道正在记录/流传视频的道路的速限。
-
至少有一辆车以限速行驶。
-->我们在垂直于车辆行驶方向的帧上绘制两条线,然后找到任何汽车穿过这两条线所需的最短时间(此车将以限速行驶)。一旦我们找到任何车通过这两条线所需的最短时间,我们使用简单的速度=距离/时间公式计算其余车辆的速度。[我知道这不完美,但肯定比像素映射方法更精确]