(一)准备数据集
选取两个典型的交通标志数据集(德国交通标志数据集GTSRB
与比利时交通标志数据集)
选取两个数据集原因
1.便于后续对测试结果的对比,以及准确率差别的分析
2.二者图片格式相似,同样的程序二者兼容,无需重新编写代码
3.二者都分为训练集和测试集,同时都有存贮着ROI特征区域信息的.csv文件,对图片处理过程相同
4.二者标签数量以及各个标签下的图片数量不同,便于对比
(二)图片处理&数据集修改完善(imagedeal.py)
1.数据库详细介绍:两个数据库的图片存储格式都为.ppm格式,每个类别文件夹(分类标签)下面除相应的交通标志外,还存有一个.scv文件,此文件用Excel可以打开,存储了该文件夹下的所有图片信息,包括图片名、长、宽、ROI特征区域的坐标(X1,Y1,X2,Y2)以及分类标签号,后面将根据csv文件中存贮的信息对图像进行处理。
2.载入模型之前,对图片进行处理。
用imagedeal.py程序对图片进行ROI区域提取,图片大小统一为 32*32,并将图片格式转化为JPG。
(三)图片预处理(Trafficsign_Main.py)
搭建步骤:
1.导入相关库
2.定义相关参数
3.导入训练图片
4.将图片分为测试集与训练集(注:模型训练与测试来自同一Dataset,按照比例将该Dataset分为测试集与训练集)
5.读取.csv文件
6.显示所有标签中的一些样本图片(N个标签*5张)
7.用直方图显示每个标签中所含样本数目
8.对输入的图片进行预处理
(1)BGR转换为灰度图
(2)直方图均衡化
(3)图像增广
9.显示预处理后的部分图片样本
(四)搭建卷积神经网络模型(Trafficsign_Main.py)
模型逐层参数如下(运行程序获得):
(五)模型训练(Trafficsign_Main.py)
第一轮测试:
第二轮测试:
第五轮测试:
最后一轮测试:
(六)绘制loss曲线与accuracy曲线(Trafficsign_Main.py)
(七)模型测试、实时测试(TrafficSign_Test)
1.导入相关库
2.设置摄像头参数、激活摄像头
3.读入之前训练保存的模型
4.定义图片处理函数
(1)BGR转换为灰度图
(2)直方图均衡化
(3)图像归一化
5.定义标签与图片描述相对应的函数
6.while True中依次执行:
(1)读取图片
(2)图片处理
(3)图片标签预测
(4)显示预测结果
(5)关闭摄像头