交通灯识别方法、交通灯识别装置及计算机可读存储介质
技术领域
本发明涉及机器学习技术领域,特别涉及一种交通灯识别方法、交通灯识别装置及计算机可读存储介质。
背景技术
随着中国城市道路拥堵程度不断加剧,商家物流的效率遇到了新的挑战,并且中国广袤的面积决定了很多快件处于现代物流的神经末梢之外,在人力成本逐渐提升的今天,如果再纯粹地依靠增加物流配送人员的数量和网点密度,在成本上并不经济,所以破解物流最后一公里,需要借助新科技的力量。
互联网公司将无人车作为下一个巨大的产业入口,但进入商用化及实用化阶段,还需不少的时间去做技术和环境的适配优化。在无人配送车的场景分析中,其中一项就是识别交通信号灯。
交通灯识别方法有很多种。一是基于图像处理的方法,依靠图像的颜色特征,设定颜色阈值或者是利用特定的颜色空间判断交通等的颜色,但该种方法鲁棒性很差,易受天气及光照的影响;二是使用传统的机器学习方法,如支持SVM(Support Vector Machine,向量机),RF(Random Forests,随机森林)等,该种方法需要预先对图像预处理,提取疑似交通灯的候选区域,再将这些候选区域作为样本进行训练,进而判断交通灯的状态,该方法准确率较低且需要预先提取候选区域导致计算量过大。
发明内容
发明人研究发现,现有技术中存在两个问题:一是无法适应多变的场景,依赖阈值判断交通灯的方法会过于敏感,鲁棒性差;二是识别精度低,无法满足无人配送车在通过交通路口所需要的安全指标。
本发明解决的一个技术问题是,如何提供更为简单高效的交通灯识别方法。
根据本发明实施例的一个方面,提供了一种交通灯识别方法,包括:基于至少一个卷积层和全局平均池化层生成卷积神经网络,全局平均池化层级联在卷积层之后;利用包含交通灯的训练图像对卷积神经网络进行训练;利用训练后的卷积神经网络对图像中的交通灯进行识别。
在一些实施例中,全局平均池化层用于对卷积层输出的包含交通灯图像的特征图进行全局平均池化处理,以输出包含交通灯图像的特征图的平均值。
在一些实施例中,全局平均池化层用于对卷积层输出的像素值大小包括14×14的3个包含交通灯图像的特征图进行全局平均池化处理。
在一些实施例中,利用包含交通灯的训练图像对卷积神经网络进行训练包括:将包含交通灯的训练图像预处理为包括640×480像素的分辨率;为预处理后的训练图像加注红灯、绿灯、无灯标签;利用预处理后的训练图像以及加注的标签对卷积神经网络进行训练,使得训练后的卷积神经网络能够识别图像中的红灯、绿灯以及无灯。
在一些实施例中,利用训练后的卷积神经网络对图像中的交通灯进行识别包括:利用相机摄像头连续采集图像;利用训练后的卷积神经网络对连续采集图像中的交通灯进行识别;若识别到连续五帧图像中存在红色交通灯然后连续五帧图像中存在绿色交通灯,则命令无人车通过交通灯所在的路口。
在一些实施例中,至少一个卷积层包括三个优化卷积层,用于减少神经网络的配置参数。
在一些实施例中,基于至少一个卷积层和全局平均池化层生成卷积神经网络包括:将VGG16神经网络的三个全连接层用三个优化卷积层和一个全局平均池化层代替,以生成卷积神经网络。
在一些实施例中,三个优化卷积层中的第一个优化卷积层包括1024个滤波器,每个滤波器包括512个滤波核,每个滤波核的大小包括14×14个像素;三个优化卷积层中的第二个优化卷积层包括1024个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素;三个优化卷积层中的第三个优化卷积层包括3个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素。
根据本发明实施例的另一个方面,提供了一种交通灯识别装置,包括:卷积神经网络生成模块,用于基于至少一个卷积层和全局平均池化层生成卷积神经网络,全局平均池化层级联在卷积层之后;卷积神经网络训练模块,用于利用包含交通灯的训练图像对卷积神经网络进行训练;交通灯识别模块,用于利用训练后的卷积神经网络对图像中的交通灯进行识别。
在一些实施例中,全局平均池化层用于对卷积层输出的包含交通灯图像的特征图进行全局平均池化处理,以输出包含交通灯图像的特征图的平均值。
在一些实施例中,全局平均池化层用于对卷积层输出的像素值大小包括14×14的3个包含交通灯图像的特征图进行全局平均池化处理。
在一些实施例中,卷积神经网络训练模块用于:将包含交通灯的训练图像预处理为包括640×480像素的分辨率;为预处理后的训练图像加注红灯、绿灯、无灯标签;利用预处理后的训练图像以及加注的标签对卷积神经网络进行训练,使得训练后的卷积神经网络能够识别图像中的红灯、绿灯以及无灯。
在一些实施例中,交通灯识别模块用于:利用相机摄像头连续采集图像;利用训练后的卷积神经网络对连续采集图像中的交通灯进行识别;若识别到连续五帧图像中存在红色交通灯然后连续五帧图像中存在绿色交通灯,则命令无人车通过交通灯所在的路口。
在一些实施例中,至少一个卷积层包括三个优化卷积层,用于减少神经网络的配置参数。
在一些实施例中,卷积神经网络生成模块用于:将VGG16神经网络的三个全连接层用三个优化卷积层和一个全局平均池化层代替,以生成卷积神经网络。
在一些实施例中,三个优化卷积层中的第一个优化卷积层包括1024个滤波器,每个滤波器包括512个滤波核,每个滤波核的大小包括14×14个像素;三个优化卷积层中的第二个优化卷积层包括1024个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素;三个优化卷积层中的第三个优化卷积层包括3个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素。
根据本发明实施例的又一个方面,提供了一种交通灯识别装置,其中,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述的交通灯识别方法。
根据本发明实施例的再一个方面,提供了一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现前述的交通灯识别方法。
本发明提供了更加简单高效的交通灯识别方法,能够更加准确的识别交通灯,并能够减少识别交通灯过程中所使用神经网络的配置参数。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明一个实施例的交通灯识别方法的流程示意图。
图2示出了本发明生成的卷积神经网络。
图3示出了本发明对卷积神经网络进行训练的一个实施例的流程示意图。
图4示出了本发明利用卷积神经网络识别交通灯的一个实施例的流程示意图。
图5示出了本发明交通灯识别装置的一个实施例的结构示意图。
图6示出了本发明交通灯识别装置的另一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
首先结合图1介绍本发明一个实施例的交通灯识别方法。
图1示出了本发明一个实施例的交通灯识别方法的流程示意图。如图1所示,本实施例的交通灯识别方法包括:
步骤S102,基于至少一个卷积层和全局平均池化层生成卷积神经网络,全局平均池化层级联在卷积层之后。
至少一个卷积层例如可以包括三个优化卷积层,用于减少神经网络的配置参数。全局平均池化层用于对卷积层输出的包含交通灯图像的特征图进行全局平均池化处理,以输出包含交通灯图像的特征图的平均值。
举例来说,VGG16神经网络中,存在三个全连接层,每个全连接层均包含4096个滤波器。图2示出了本发明生成的卷积神经网络。如图2所示,在VGG16神经网络的基础上,去掉全连接层,并用三个卷积层和一个全局平均池化层代替。三个卷积层分别为Conv6_1、Conv6_2和Conv7层,global avgpool表示全局平均池化层。其中,三个卷积层的第一个卷积层Conv6_1包括1024个滤波器,每个滤波器包括512个滤波核,每个滤波核的大小包括14×14个像素;三个卷积层的第二个卷积层Conv6_2包括1024个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素;三个卷积层的第三个卷积层Conv7包括3个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素。
本发明生成的卷积神经网络中,maxpool/2代表对卷积后的结果以2为步长进行最大值池化操作,取每个卷积核内的最大值为特征图中对应卷积核的值。全局平均池化层对第三个卷积层Conv7输出的像素值大小为14×14的3个特征图进行全局平均池化,取每个特征图的平均值作为最后的输出。
步骤S104,利用包含交通灯的训练图像对卷积神经网络进行训练。
训练图像的宽度为640像素,高度为480像素,网络输入为448*448像素。Conv1_1和Conv1_2层可以看作第一个卷积层,输出为64个特征图;Conv2_1、Conv2_2层可以看作是第二个卷积层,输出均为128个特征图;Conv3_1、Conv3_2和Conv3_层可以看作第三个卷积层,输出均为256个特征图;Conv4_1、Conv4_2和Conv4_3层可以看作第四个卷积层,输出均为512个特征图;Conv5_1、Conv5_2和Conv5_3层可以看作第五个卷积层,输出均为512个特征图;Conv6_1和Conv6_2层可以看作第六个卷积层,输出为1024个特征图;Conv7层可以看作第七个卷积层,输出为3个特征图。
步骤S106,利用训练后的卷积神经网络对图像中的交通灯进行识别。
卷积神经网络中的Softmax代表最后的分类器,能够输出最后的分类结果。
上述实施例能够简单高效的识别交通灯。即便在光照等其它环境因素引起图像多变的情况下,仍然具有较高的鲁棒性。应用到无人配送车实际场景中,能够满足无人配送车所需要的安全指标,具有较高的准确率。另一方面,由于VGG16神经网络全连接层的参数占据了整个模型参数的一大部分比例,上述实施例生成的卷积神经网络能够在不降低识别精度的前提下有效减少需要的配置参数,减少计算量。
下面结合图3介绍本发明对卷积神经网络进行训练的一个实施例。
图3示出了本发明对卷积神经网络进行训练的一个实施例的流程示意图。如图3所示,本实施例包括:
步骤S3041,采集交通灯数据集,作为包含交通灯的训练图像。
例如,使用摄像头收集多种交通灯图像,其中包括圆形、横条、竖条、向上箭头、向左箭头、向右箭头、叉形、行人、自行车和其他形状的图像共计5万张,各种样本数量均匀,
步骤S3043,将包含交通灯的训练图像预处理为640×480像素的分辨率,并为预处理后的训练图像加注红灯、绿灯、无灯标签。
步骤S3045,利用预处理后的训练图像以及加注的标签对卷积神经网络进行训练,使得训练后的卷积神经网络能够识别图像中的红灯、绿灯以及无灯。
步骤S3047,调整卷积神经网络的训练参数。
调整的训练参数例如可以包括:学习率为0.001,梯度下降方法为随机梯度下降法SGD(Stochastic Gradient Descent),最大迭代次数为300000。
步骤S3049,输出训练后的卷积神经网络。
通过上述实施例,能够训练出图1所示实施例中的卷积神经网络,该卷积神经网络具有识别交通灯具体为红灯、绿灯、无灯情况的能力。
下面结合图4介绍本发明利用卷积神经网络识别交通灯的一个实施例。
图4示出了本发明利用卷积神经网络识别交通灯的一个实施例的流程示意图。如图4所示,本实施例包括:
步骤S4061,利用相机摄像头连续采集图像。
步骤S4062,对连续采集的图像进行预处理。
步骤S4063,利用训练后的卷积神经网络对连续采集图像中的交通灯进行识别。该步骤也可以被称作网络向前计算,即输入通过网络到计算出结果的一次过程。
步骤S4064,输出网络向前计算的结果。提供识别结果用于决策控制的逻辑判断。
步骤S4065,判断是否识别到连续五帧图像中存在红色交通灯然后连续五帧图像中存在绿色交通灯。
若是,则执行步骤S4066,命令无人车通过交通灯所在的路口;若否,则执行步骤S4067,命令无人车继续等待。
通过上述实施例,无人车能够准确的识别交通灯具体为红灯、绿灯、无灯的情况,从而实现了无人车的安全运输。
下面结合图5介绍本发明一个实施例的交通灯识别装置。
图5示出了本发明一个实施例的交通灯识别装置的结构示意图。如图5所示,本实施例的交通灯识别装置50包括模块502~506。
卷积神经网络生成模块502,用于基于至少一个卷积层和全局平均池化层生成卷积神经网络,全局平均池化层级联在卷积层之后;
卷积神经网络训练模块504,用于利用包含交通灯的训练图像对卷积神经网络进行训练;
交通灯识别模块506,用于利用训练后的卷积神经网络对图像中的交通灯进行识别。
在一些实施例中,全局平均池化层用于对卷积层输出的包含交通灯图像的特征图进行全局平均池化处理,以输出包含交通灯图像的特征图的平均值。
在一些实施例中,全局平均池化层用于对卷积层输出的像素值大小包括14×14的3个包含交通灯图像的特征图进行全局平均池化处理。
在一些实施例中,至少一个卷积层包括三个优化卷积层,用于减少神经网络的配置参数。
在一些实施例中,卷积神经网络生成模块502用于:将VGG16神经网络的三个全连接层用三个优化卷积层和一个全局平均池化层代替,以生成卷积神经网络。
在一些实施例中,三个优化卷积层中的第一个优化卷积层包括1024个滤波器,每个滤波器包括512个滤波核,每个滤波核的大小包括14×14个像素;
三个优化卷积层中的第二个优化卷积层包括1024个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素;
三个优化卷积层中的第三个优化卷积层包括3个滤波器,每个滤波器包括1024个滤波核,每个滤波核的大小包括1×1个像素。
上述实施例能够简单高效的识别交通灯。即便在光照等其它环境因素引起图像多变的情况下,仍然具有较高的鲁棒性。应用到无人配送车实际场景中,能够满足无人配送车所需要的安全指标,具有较高的准确率。另一方面,由于VGG16神经网络全连接层的参数占据了整个模型参数的一大部分比例,上述实施例生成的卷积神经网络能够在不降低识别精度的前提下有效减少需要的配置参数,减少计算量。
在一些实施例中,卷积神经网络训练模块504用于:将包含交通灯的训练图像预处理为包括640×480像素的分辨率;为预处理后的训练图像加注红灯、绿灯、无灯标签;利用预处理后的训练图像以及加注的标签对卷积神经网络进行训练,使得训练后的卷积神经网络能够识别图像中的红灯、绿灯以及无灯。
通过上述实施例,能够训练出图1所示实施例中的卷积神经网络,该卷积神经网络具有识别交通灯具体为红灯、绿灯、无灯情况的能力。
在一些实施例中,交通灯识别模块506用于:利用相机摄像头连续采集图像;利用训练后的卷积神经网络对连续采集图像中的交通灯进行识别;若识别到连续五帧图像中存在红色交通灯然后连续五帧图像中存在绿色交通灯,则命令无人车通过交通灯所在的路口。
通过上述实施例,无人车能够准确的识别交通灯具体为红灯、绿灯、无灯的情况,从而实现了无人车的安全运输。
图6示出了本发明交通灯识别装置的另一个实施例的结构示意图。如图6所示,该实施例的交通灯识别装置60包括:存储器610以及耦接至该存储器610的处理器620,处理器620被配置为基于存储在存储器610中的指令,执行前述任意一个实施例中的交通灯识别方法。
其中,存储器610例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序(Boot Loader)以及其他程序等。
交通灯识别装置60还可以包括输入输出接口630、网络接口640、存储接口650等。这些接口630,640,650以及存储器610和处理器620之间例如可以通过总线650连接。其中,输入输出接口630为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口640为各种联网设备提供连接接口。存储接口650为SD卡、U盘等外置存储设备提供连接接口。
本发明还包括一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述任意一个实施例中的数据推送方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。