您的位置:首页 > 其它

交通标志识别

2018-01-26 13:41 239 查看

下载数据集

1. 下载比利时的交通标志数据集,网址:http://btsd.ethz.ch/shareddata/

2. 下载数据集BelgiumTSC_Training和测试集BelgiumTSC_Testing。在那个网页上有很多数据集,你只需要下载在BelgiumTS for Classification (cropped images)目录下的两个文件就行:



3. 解压训练和测试文件,目录为:

   traffic-sign\datasets\BelgiumTSC_Training\Training

  traffic-sign\datasets\BelgiumTSC_Testing\Testing

  这2个文件夹下面都有62个子文件夹,编号从00000到00061,子文件夹的名字标识了里面图像的标签。





4. 数据集中的图片都是以.ppm格式来存的。这个格式现在已经非常少见了,很多工具都不支持它。这意味着,我们不能随意的打开某个文件夹,查看某张图。幸运的是Scikit Image library支持这个格式。



导入数据

根据文件路径获得图像-标签列表



对图像进行预处理



1. 先将图像进行缩放为28*28大小;

2. 再将彩色图转为灰度图;

3. 最后,随机选取图像显示,结果如下;



4. 修改随机显示图像,代码为:



修改后的图像为:



显示每组标签的第一幅图像





   运行,获得标签和图像总数,如下:



  热力图显示效果图如下:



灰度图显示效果如下:



显示特定标签内的图像





我们的数据看起来将所有的限速标志都归为了同一个类,不管标志上面的数字是多少。在刚开始的时候充分理解数据集是必要的,它可以在我们对输出预测的时候减少很多不必要的麻烦。

查看标签26内的图像,代码修改为:



运行效果为:



可以依次修改代码,看每个标签内的图像,例如修改为42,代码为:



运行后的42标签内的图像为:



打印原始图像信息

获得图像的宽、高、通道数、图像的最大、最小灰度值等数据,代码如下:



运行结果如下:



打印预处理后的图像信息



运行结果如下:



打印出来的最小值和最大值现在却是在0到1.0之间,并不是像我们上面看到的0-255。那是因为resize函数自动为我们进行了归一化,将数据归一化到0.0-1.0范围很常见,因此我们保持这样既可。但要记住,如果之后想要把图像转换到0-255的正常范围,记得乘上255这个值。

训练神经网络





运行结果





评估神经网络

b6d7

随机选择几张图来判断分类的准确性



运行结果



随机选择10个图像,预测正确的有6个,错误的有4个,准确率为60%。

测试模型

用测试集数据对训练好的模型进行测试,计算准确率,BelgiumTS提供的验证数据集Testing就是用来干这个事的。



运行结果

输入测试模型文件名,执行后的准确率如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: