基于YOLOv4的交通标志和道路病害识别

这周用yolov4干了两件事情,一个是训练tt100k交通标志数据集并测试,一个是用tt100k的图片标注出井盖,然后训练测试。

 

1. 训练tt100k交通标志数据集并测试

所用的机器:64G RAM; i7-10代;Nvidia GeForce 2080 super 8G

环境:CUDA 10.2 ; cudnn-8.0.2 ; python 3.7; openCV 3.4 ; yolov4

 

训练了两天左右,maxbatch设置为90000,训练到45000左右的时候意外断电,最高mpa为74%。

基于YOLOv4的交通标志和道路病害识别

下图为博主用Nvidia Titan 11G 训练完成之后的结果

基于YOLOv4的交通标志和道路病害识别

下面图片是我用训练完(一半)的模型测试的结果

基于YOLOv4的交通标志和道路病害识别

基于YOLOv4的交通标志和道路病害识别

下图为tt100k数据集分类 可以对比上图 发现有些图标还是会识别错误

基于YOLOv4的交通标志和道路病害识别

 

2. 用tt100k的图片标注出井盖,训练并测试

我从tt100k训练集中选取了含有井盖的200张图片进行标注和训练

训练结果如下

基于YOLOv4的交通标志和道路病害识别

 

基于YOLOv4的交通标志和道路病害识别

这里的训练使用迁移学习,所以使用的是yolov4在coco数据集上的预训练权重文件。

证明新加入物体进行识别,不需要改动核心代码,只需要提供数据集和标注,修改配置文件即可。

地面裂缝理论上也可以识别,但是由于其形状特殊可能识别效果不好,这个可以以后有了大量数据集之后进行调参,寻找最优效果。

 

总结:

yolov4可以在win10下部署成功,linux还没有试过,问题应该不大。

tt100k交通标志数据集种类太少,方形标志几乎没有,有文字的路牌也没有包含其中,之后加入识别有文字的应该需要改动核心代码

识别地面裂缝,目前没有足够训练集,无法评估识别效果,由于其形状种类太多,需要的数据集量应该会很庞大,可能会需要修改网络结构

使用Nvidia GeForce 2080super 8G 训练效果一般,因为显存不够大我将subdivision参数由8改为16,也将网络分辨率调低608*608->544*544 才能够进行正常训练。