自动驾驶目标检测项目实战(一)—基于深度学习框架yolov的交通标志检测
创始人
2024-05-28 17:18:31
0

自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测

目前目标检测算法有很多,流行的就有faster-rnn和yolov,本文使用了几年前的yolov3框架进行训练,效果还是很好,当然也可以使用更高版本的Yolov进行实战。本代码使用的是keras框架,pytorch的yolov如何对数据集进行训练,可以参考我之前的文章:
工业缺陷检测项目实战(二)——基于深度学习框架yolov5的钢铁表面缺陷检测

跑工程的原理步骤都是一样的,都可以学习。

数据集准备

使用gtsrb交通标志数据集,下载链接:
https://www.kaggle.com/datasets/meowmeowmeowmeowmeow/gtsrb-german-traffic-sign
https://aistudio.baidu.com/aistudio/datasetdetail/97069
以上两个链接都可以下载,文件夹里面是这样:
在这里插入图片描述
Meta没什么用,主要是Test和Train,Test作为验证集使用。

基础代码准备

本工程基于开源代码进行修改:
https://github.com/miemie2013/Keras-DIOU-YOLOv3

环境

tensorflow==1.15.1
keras==2.3.1

其他看着来,缺什么pip install什么。

使用步骤

1.将数据集放在工程文件夹
在这里插入图片描述
2.生成train和test的txt文件
我这里写了一个csv转txt的代码:
在这里插入图片描述
代码如下:

import numpy as np
import pickle
import re
import os
from PIL import Image# Create raw data pickle file
data_raw = {}
class_list = []
box_coords_list = []
image_file_list = []with open('GTSRB/Test.csv', 'r') as f:next(f) # skip header linefor line in f:  # 遍历每一行line = line[:-1]  # 去掉换行符fields = line.split(',')image_file = fields[7]class_list.append(int(fields[6]))image_file_list.append(image_file)# Find box coordinates for all signs in this imagebox_coords = np.array([int(x) for x in fields[2:6]])box_coords_list.append(box_coords)# 写入txt内容
with open("GTSRB/val.txt", 'w+', encoding='utf-8') as f:for i in range(len(box_coords_list)):box_coord = ""box_coord += str(box_coords_list[i][0]) + ','box_coord += str(box_coords_list[i][1]) + ','box_coord += str(box_coords_list[i][2]) + ','box_coord += str(box_coords_list[i][3])d = image_file_list[i] + ' ' + box_coord + ',' + str(class_list[i])f.write(d + '\n')

路径根据自己的去修改即可。生成的txt放在annotation文件夹下。
在这里插入图片描述
txt文件格式如下:

xxx/xxx.jpg 18.19,6.32,424.13,421.83,20 323.86,2.65,640.0,421.94,20 
xxx/xxx.jpg 48,240,195,371,11 8,12,352,498,14
# image_path x_min, y_min, x_max, y_max, class_id  x_min, y_min ,..., class_id 
# make sure that x_max < width and y_max < height

3.生成标签的类别txt文件
在data文件夹下,生成txt的文件来表示类名:
在这里插入图片描述
比如这里有43个类,则我们可以先用数字字符表示,等检测完再转回对于的类名:
在这里插入图片描述
一行表示一个类名,注意此处类名不能有空格,比如以下是错误的例子:
在这里插入图片描述
每一行都存在空格,这样在计算mAP的时候会报错。

数据已准备完毕。

4.修改文件路径
主要是修改train.py文件里面的这三个路径:
在这里插入图片描述
5.训练
运行

python train.py

在这里插入图片描述

6.注意
引用github源码大佬的话:

(1)本仓库有pattern=0、pattern=1、pattern=2这3种训练模式。 0-从头训练,1-读取model_body继续训练(包括解冻,但需要先运行1_lambda2model.py脚本取得model_body),2-读取coco预训练模型训练 你只需要修改pattern的值即可指定训练模式。 然后在这3种模式的if-else分支下,你再指定批大小batch_size、学习率lr等超参数。

(2)如果你决定从头训练一个模型(即pattern=0),而且你的显卡显存比较小,比如说只有6G。 又或者说你想训练一个小模型,因为你的数据集比较小。 那么你可以设置initial_filters为一个比较小的值,比如说8。 initial_filters会影响到后面的卷积层的卷积核个数(除了最后面3个卷积层的卷积核个数不受影响)。 yolov3的initial_filters默认是32,你调小initial_filters会使得模型变小,运算量减少,适合在小数据集上训练。

7.训练完之后,可以得到以下h5文件:
在这里插入图片描述
运行

python 1_lambda2model.py

将训练模型中yolov3的所有部分提取出来。我这里得到aaaa_bgr.h5
在这里插入图片描述
8.mAP评估
运行evaluate_kr.py对keras模型(1_lambda2model.py提取出来的模型)评估,跑完这个脚本后需要再跑mAP/main.py进行mAP的计算。计算完之后会保持结果图:
在这里插入图片描述
在这里插入图片描述

9.测试
在images/test里面放置要检测的图片:
在这里插入图片描述
运行

python demo_kr.py

比如识别:
在这里插入图片描述
识别结果:
在这里插入图片描述
在这里插入图片描述

另外,我添加了绘制acc和loss的曲线图,也对过滤了识别分数地的框。

需要整体代码的可私信我

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...