项目:车辆追踪计数
一.项目介绍
随着城市化进程的加快和交通工具的普及,车辆数量的快速增长给城市交通管理带来了巨大的挑战。车流量检测是交通管理的重要组成部分,它可以提供实时的交通状况信息,帮助交通管理部门制定合理的交通策略,优化交通流量,提高道路利用效率,减少交通拥堵和事故发生的可能性。
传统的车流量检测方法主要依赖于传感器设备,如地磁传感器、红外线传感器等,这些传感器需要在道路上布设,成本较高且安装维护困难。而基于计算机视觉的车流量检测系统则可以通过分析道路上的摄像头图像来实现,具有成本低、安装方便、实时性强等优势。
二.项目任务
本项目通过摄像头拍摄或视频检测图像中的行人,自行车,轿车,货车等种类的车辆,并通过各种方法追踪方法实现对目标的追踪和行驶不同方向的车辆进行计数。总体来说,任务分为两个:检测+追踪
三.项目开展
1.数据集
在群里面问,可能你们不好意思回答的话,我就将标好的数据集给你们,但是,你们必须在开始前熟练掌握标数据的方法,标数据常用的有labelimg,labelme等等,你们可以选择一个喜欢用的标注工具。
链接:标注工具
在这里,我把标好的数据集直接给你们,但是我给你们的数据集不是标准的数据集格式,换句话来说,不是直接能用来训练的数据集,你们需要将标注文件通过自己写脚本将标注数据改为你所需要的格式,常见的有coco格式,yolo格式,voc格式等等,这要看你们所运用的框架,具体你们自己查阅资料。
数据集链接 提取码:7tdw
在这里我说一下我给你们的数据集的标注文件格式,里面有一些对于某些框架是没有用的,需要做些处理。
1 | #图片中对应的数据顺序与对应含义为 |
2.数据增强(可选)
数据增强也就是通过某些手段对改变原有数据增加数据量,例如模拟光线增强,高斯模糊,椒盐噪声,HSV色调改变等等,可以自己通过之前学的OpenCV写脚本,这里我推荐一款好用的可视化数据增强软件,所支持的增强类型还是挺多的,不过需要学习一下怎么用,还是比较容易上手的。
链接:数据增强软件
3.数据划分
我给你们的数据集是总体的,但是训练需要将数据划分为训练集和验证集,才能进行训练,你们需要自行写脚本将数据划分,这里我推荐利用K折交叉验证的方法对数据进行划分,你们可以了解了解该原理。
链接:K折交叉验证原理
4.训练框架
你们可以选择任意一种框架,RCNN,Faster-RCNN,SSD和YOLO系列神经网络模型,这里不做要求。但是无论你们选择哪一种框架,你们需要找出代码的核心,也就是网络搭建的过程并指出。
当然如果你们学习算法已经足够实现搭建自己的网络的技术,你们也可以选择自己的框架,或者是通过对现有网络自己进行剪枝和量化等操作进行训练,当然这个肯定是个非常大的加分项。
5.训练过程
你们可以选择在自己电脑上进行训练,也可以在网上租用算力进行训练,可以在Windows系统上训练也可以,在Linux系统上进行训练,这个不做要求。
6.模型推理
在训练结束后,你将会得到一个最优的权重,这个也就是你选用模型对验证集推理与事实结果相差最小的一个权重,里面保存了各个参数具体的值。
模型推理也就是利用训练出的最优的这个权重,对图片进行检测后得到的结果。而推理框架具有许多种,这里我举YOLOV8为例。
1 | yolo mode=val model=yolov8n.pt # PyTorch |
模型推理可以选择训练本身的框架进行推理,也可以选择以上加速框架(tensorrt、dnn、onnxruntime、openvino、tflite、ncnn等等框架),并非是pytorch-gpu,tensorflow-gpu或者是paddlepaddle-gpu,如果选择另外一种加速框架,肯定会有加分。
7.封装成类
(1)格式与要求
封装成类的格式和要求,最少需要以下函数,这里我以python为例
1 | class Person_Vehicle_tracking_count(): |
video_detect方法具体效果如以下视频所示:
视频链接 提取码:1yxo
(2)推理系统和语言
推理系统不限于Windows,Linux(虚拟机也算),Mac,语言不限于python,C++
推理系统若使用Linux系统进行推理和若使用C++语言进行推理也会有相应的加分。
四.模型部署于开发板(可选)
训练模型最终的目的肯定是落地于实践,有开发板的同学,不限制使用的芯片框架,X86,ARM,RISC-V或者是龙芯框架,例如树莓派、香橙派、Jetson系列
五.评分细则
1.完成数据集的整理并训练出最优权重 +30
2.成功定义类和img_detect方法完成模型推理 +20
3.成功定义map_calculation方法并计算出map值 +20
4.成功定义img_count方法并计算出result值 +20
5.成功定义video_detect方法并实现实时追踪和计数功能 +30
6.观察模型准确性和视频实时推理帧率,效果优秀 +20
7.使用以上所说的一种加速框架进行模型推理 +20
8.使用Linux系统实现模型推理 +20
9.使用C++语言实现类和方法的定义 +20
10.将模型部署于开发板,并成功运行实现模型推理 +20
11.使用QT四个方法写成有的界面效果展示 +20
六.任务提交
1.线上
时间:开学前即可
提交:提交项目所有实现代码和脚本和测试视频,提交项目完成报告,不限于在完成项目中遇到的困难和解决方法、在完成项目中实现的逻辑和学习到的知识
2.线下
时间:开学后,具体时间暂定
现场进行对项目的介绍和演示,并根据现场演示情况进行打分
__END__