本公司拥有专业技术与崇高服务为你制作真人打牌
15158545999

当前位置

主页 > 产品中心 >

行业新闻

发布时间: 2020-09-08 00:15

  交通标志识别实际上包括交通标志的检测和识别两个过程,检测是在图像中寻找到感兴趣目标并定位,识别是对感兴趣目标进行分类。现在R-CNN系列、YOLO、SSD能够很好的将检测和分类两个过程融合到一起,并且在PASCAL VOC等数据集上取得了很好的效果,但对像交通标志这种小目标的检测效果并不好。就交通标志检测而言,如果在Faster RCNN的anchor中,将scale调小一点,ratio调下再做训练,是可以很好的检测到图像中尺寸较小的交通标志;也可以训练级联CNN,将目标检测问题转化为分类问题。传统的检测方法中,可以人工设计特征来检测感兴趣目标,例如可以利用交通标志的颜色和形状等信息来检测并定位到交通标志;然后对检测到的标志进行识别或分类,判断它是哪种交通标志。

  我们暂时先不考虑检测问题,先做分类实验。利用卷积神经网络来试试交通标志识别的效果如何。

  The German Traffic Sign Recognition Benchmark是IJCNN 2011举办的一个图像分类挑战赛,其提供了GTSRB数据集,共包含了43类交通标志,训练样本39209张,测试样本12630张。提供的样本图像中包含了标志区域及其周围10%的区域(这是为采用边缘方法者所考虑),样本图像尺寸范围为15x15到250x250,当然它不一定是正方形。

  该挑战赛的冠军是IDSIA团队所采用的Multi-column Deep Neural Network即多列深度神经网络的方法来进行交通标志识别,最后在43类交通标志的识别准确率达到了99.46%,超过了人类表现的98.84%。该方法采用了25个具有完全相同网络结构的DNN(实际上是总共9层的卷积神经网络)Paper地址

  这25个DNN分别对应了五种输入数据,包括原图像以及原图经过四种不同的预处理后得到的图像共五种;然后每种都采用五个不同的随机网络初始值来训练,得到网络结构和参数相同但训练得到的网络权重不同的DNN模型。

  测试时将每张图像做四种预处理得到共五张输入图像,再将每张图象都送入到其对应的五种网络初始值不同的DNN中,然后将求得的共25个分数做平均得到最后的识别结果。

  其DNN结构实际上是在三个卷积层后面跟上两个全连接层做分类,输入图像固定尺寸为48x48。GTSRB数据集下载地址如下,分别下载训练集和测试集。数据集下载地址

  下载得到的GTSRB数据集的格式是ppm格式,需要转换成jpg格式。注解标签存放在csv文件中,包括了位置标签(包围标志的最小矩形框位置)和类别标签,通过位置标签进行裁剪并缩放到固定尺寸,固定尺寸大小48x48,下图为裁剪缩放后测试集的部分图像,有的标志人眼都很难分辨,若将其进行直方图均衡等预处理则可能会更容易识别。IDSIA团队采用的多列DNN方法所达到的99.46%的超过人眼的识别水平确实很高。

  接下来我们来做交通标志的识别实验,暂时先不考虑多列问题。这里提供项目下载地址

  如果你对数据集的制作不感兴趣,可以跳过后面的制作过程,项目中提供已经转换好的可以直接作为caffe输入,解压‘GTSRB数据集’文件夹,包含了tran_lmdb文件夹、val_lmdb文件夹和mean.binaryproto文件,将上述三个文件放在data\gtsrb文件夹下

  由于GTSRB提供的下载数据集格式是ppm格式,需要转化成jpg格式,数据集中的图像是带有周围背景的,需要根据提供的csv文件裁剪出感兴趣区域即最小包围框,然后缩放到固定尺寸(这一步也可以在用caffe转换成lmdb格式时来归一化尺寸)。可以用下图所示的matlab脚本实现之,包括如何读取csv中图像标签信息、转换PPM文件为jpg格式,三种图像预处理(后面会提到),以及生成train.txt、val.txt。

  这里也提供转化后的图片数据集以及制作好的类别标注文本,下载链接,解压得到‘GTSRB数据集’文件夹,将其放在data\gtsrb目录下。需要注意的是,如果是在windows下使用caffe,train.txt中的’/’要替换成反斜杠’\’。

  这样就准备好了训练和测试数据集以及对应的train.txt、val.txt。

  因为博主的前期预处理在windows下进行的,所以只介绍windows系统下转化成lmdb文件。首先在caffe-master/data/gtsrb目录下新建了一个create_gtsrb.txt,打开后加入以下代码,其中包括了转化训练集、测试集(直接将测试集作为验证集,在验证模型好坏的同时得到测试效果)、生成均值向量文件三个过程,关闭保存,修改后缀名为.bat得到create_gtsrb.bat文件,直接双击执行就可以了。完成后会发现data/gtsrb文件夹下多出了tran_lmdb文件夹、val_lmdb文件夹和mean.binaryproto文件。

  下图给出了部分识别出错的标志图像,可以发现,部分图像中标志人眼很好识别但算法识别出错,说明网络在极端情况还有提升空间,还有一些倾斜严重、图像质量太差、最小包围框不够准确等情况。

  (1)对数据集进行数据增广,例如部分交通标志具有水平镜像或垂直镜像的不变性,还可以对训练样本图像随机旋转一个较小的角度来应对真实场景下图像中的标志倾斜问题(上图中就有因标志倾斜而出现识别出错),训练耗时增加而测试时耗时不变,泛化能力提高。

  (2)采用多列深度网络的思路,对原始数据集进行多种预处理得到多个数据集,对每个数据集采用同样的网络结构进行训练,在测试时对测试图像进行多种预处理,分别送入到各自的卷积神经网络中,最后将输出结果取平均。

  博主首先对数据进行了增广,对具有水平镜像或垂直镜像的不变性的标志进行了镜像,对所有标志额外进行了随机旋转某个小角度,单列DNN的测试结果提高到96.79%。

  然后采用了原数据集和经过三种预处理(图像调整、直方图均衡、自适应直方图均衡)共四种数据源,每种采用两个不同初始化的DNN网络构成了的8列DNN,对8列DNN求平均的结果作为输出,最后将准确率提高到了97.88%(也牺牲了速度),12630张测试图像中有268张识别出错,相比于人类表现还有一段距离。

  其中在做图像预处理时,对彩色图像进行对比度拉伸、直方图均衡化和自适应直方图均衡化,实际上先将RGB空间转换到Lab颜色空间,其中L为图像亮度,取值范围0~100,表示从纯黑到纯白,然后对亮度通道L进行对比度拉伸、直方图均衡化和自适应直方图均衡化,然后再转回到RGB空间。

  另外也曾尝试在网络中加入Relu层、Norm层和dropout层但效果均不理想,大家也可以试试改改网络参数来刷准确率。

  数据集、数据集格式转换、修改配置文件、训练LISA数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 YOLOv3基于深度学习,可以实时地进行端到端的目标检测,以速度快见长。本课程将手把手地教大家使用YOLOv3实现

  的多目标检测。本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入学习和探究。 除本课程《YOLOv3目标检测实战:

  》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:训练自己的数据集》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 另一门课程《YOLOv3目标检测实战:训练自己的数据集》主要是介绍如何训练自己标注的数据集。而本课程的区别主要在于学习对已标注数据集的格式转换,即把LISA数据集从csv格式转换成YOLOv3所需要的PASCAL VOC格式和YOLO格式。本课程提供数据集格式转换的Python代码。 请大家关注以上课程,并选择学习。 下图是使用YOLOv3进行

  数据集,共包含900张1360×800像素的图像,被分为三类;(2)BDD100K:该数据集共包含10万个视频,每个视频大约长40秒,分辨率为720P,帧率为30 fps,还附有手机记录的GPS信息,以显示大概的驾驶轨迹;(3)CTSDB:由长沙理工大学制作完成,共包含图像15734张,标注数据分为三大类:指示标志、禁止标志、警告......