本项目为我的本科毕业设计,做的很粗糙很多功能也没实现。开源的目的大家互相交流学习,欢迎朋友们在其基础上加以改进。希望不要down下去直接作为大作业或比赛作品,这对提升自己的水平无益。
-
摄像头视频播放功能:应用系统可以进行实时视频流的选择与播放。用户在进入客户端之后可以在下拉框中选择摄像头,系统检测到之后会通过系统定时器播放摄像头采集到的画面。
-
目标检测与多目标跟踪功能:在系统播放视频后,用户可以点击“开始检测按钮”,这时目标检测与跟踪模块会对每个视频帧进行检测,实时输出视频帧中的检测框与车辆的行驶轨迹。目标检测与多目标跟踪功能是车辆行为识别的基础。
-
车流量统计功能:在用户开启目标检测后,可以选择车流量统计功能。这时用户只需使用鼠标在视频中绘制一条线段,系统检测到用户在视频中绘制车流量检测线后即自动开启车流量统计功能,并将统计信息实时显示在信息栏中。
-
车辆违停检测:在用户开启目标检测之后,可以选择车辆违停检测功能。用户点击车辆违停检测按钮,这时系统就会检测整个视频帧中是否存在车辆静止不动。若检测到车辆静止不动,这时会将该车辆信息显示在信息栏中。
-
车辆逆行检测:在用户开启目标检测后,可以选择车辆逆行检测功能。用户点击车辆逆行检测按钮,这时系统会提醒用户绘制一条基准行驶方向。在用户绘制基准行驶方向之后,系统会对视频中的所有车辆进行行驶方向检测。若车辆出现逆行,系统会将车辆信息显示在系统信息栏中。
-
信息栏控制功能:在用户开始任何一个车辆行为识别功能后,可以选择信息栏控制功能。信息栏是系统检测车辆行为的信息输出界面,具有时效性与时间累积性。信息栏包含三个功能:车流量重新统计、清空车辆违停记录和清空车辆逆行记录。
车辆跟踪模块是系统的基本模块,负责车辆的检测识别与跟踪。
如图,在用户选择“目标检测”之后,车辆跟踪模块会源源不断的输出车辆行驶轨迹队列。用户可以选择车辆行为识别模块对应的模块进行车辆行为识别,该模块共有:车流量统计、车辆违停检测与车辆违停统计三个功能。车流量统计采用掩膜计数法,车辆违停检测采用基于方向分解的连续帧间位移法,车辆逆行检测采用直线向量拟合法。当各功能完成检测后会将检测结果显示在前端的信息栏中。
-
状态指示栏:状态指示栏用于状态提示。其分为:“请选择视频进行分析”,用户刚打开系统时,系统不会播放任何视频,这时状态栏提示用户选择一个摄像头视频进行播放分析;“请开启目标检测与跟踪网络”,提示用户对当前视频开启目标检测,只有开启目标检测才可以对车辆行为进行分析;“已开启目标检测与跟踪网络”,提示用户当前视频检测良好,状态正常;“视频已停止播放”,在用户点击停止检测时,系统会停止当前视频的播放与检测,同时状态栏显示此信息提示用户停止播放成功。
-
视频播放窗口:该窗口用于视频帧的显示,同时用于视频与用户交互。在用户点击目标检测后,视频播放窗口会检测用户鼠标的点击情况。用户可以播放窗口绘制一条直线,此时该窗口会显示一条紫色线段,该线段为车流量计数线,系统自动开启车流量计数功能。在用户点击车辆逆行检测后,须在该窗口绘制标准的车辆行驶方向用于车辆逆行检测。
-
下拉列表:下拉列表为该系统第一个功能区。第一个下拉列表负责系统摄像头的选择,每当用户选择一个摄像头,该系统就会对该摄像头对应的视频进行检测。第二个下拉列表负责信息栏的重制,其功能有:清空车流量与清空车辆违停统计。
-
功能选择区:该区域有四个按钮,负责四个功能。左边两个为车辆跟踪模块系列按钮,右边两个为车辆行为识别系列按钮,点击按钮执行相应的功能。
-
信息栏:信息栏负责车辆行为识别的信息显示,由上到下分别为:车流量统计、车辆违停检测与车辆逆行检测。
注,使用本项目时,请将yolov5文件夹设置为root文件
# 因为GitHub有文件大小限制,故本项目未上传yolov5权重文件与视频文件,在此对文件组织结构进行说明。
YOLO_DEEPSORT/
-video/
--train / # 保存检测后的结果文件,一般不用
---*.mp4
--test/ # 保存摄像头视频 *.mp4
---*.mp4
-yolov5/
--runs/
---detect/
---train/
----BiFPN/ # 保存YOLOv5-BiFPN模型结构训练情况
-----*.pt
----yolov5s/ # 保存YOLOv5模型训练情况
-----*.pt