APP下载

基于渐变上下文特征的交通灯识别方法*

2018-09-27李子康徐桂芝郭苗苗

传感器与微系统 2018年10期
关键词:交通灯信号灯步长

李子康, 徐桂芝, 郭苗苗

(河北工业大学 电气工程学院 电气工程及其自动化系,天津 300131)

0 引 言

智能交通系统[1](intelligent transportation system,ITS)背景下基于机器视觉的交通信号灯检测识别技术对于智能汽车的安全驾驶至关重要。交通信号灯通常设在道路交叉口处,复杂背景环境给信号灯准确识别带来了很大的困难。

传统的交通信号灯的检测算法思路大多是选择合适的色彩空间[2,3]对图像进行分割,并对其二值图像进行连通域标记,通过设定阈值对其进行筛选滤波获取交通灯灯区,然后通过模板匹配[3~5]、支持向量机(support vector machine,SVM)[6]和Adaboost[7]等方法对目标区域进行识别。随着对交通信号识别算法的不断深入研究,使尺度不变特征转换(scale-invariant feature transform,SIFT)[8]算法、SSD(single shot multibox detector)[9]算法以及Faster-RCNN[10]算法的交通信号灯识别等都取得了较高的准确率与召回率,但以上方法对较远处(像素较少)、易混淆的交通信号灯仍然难以区分。SSD算法基于使用缩放变体模板来提取不同尺寸的图像特征,小目标的特征很容易被缩放变体模板忽略,因此召回率较低;Faster RCNN通过感兴趣的区域(region of interest,ROI)池提取不同尺寸下的特征进行识别检测,虽然可处理尺寸变化问题,但未解决目标的上下文语境问题,因此准确率稍有不足。

本文将上下文特征引入交通信号灯识别领域,结合CNN算法[13]的优点,提出一种渐变特征的识别算法,经实验证实,本文算法较传统算法与单纯的CNN算法,有较高的召回率与准确率。

1 交通灯识别模型

1.1 卷积神经网络模型构建

本文针对交通信号灯识别设计了一种CNN网络结构,如图1所示。

图1 CNN模型结构

该CNN网络以32×32像素大小的三通道图像为输入,共有9层,其中卷积层与池化层交替连接共有7层,最后2个隐含层为全连接层。针对输入的32像素×32像素的三通道图像,以图2中的结构对图像交替进行特征提取与下采样操作,可以得到25维度的特征;在全连接层对特征进行线性回归;由Softmax分类器得到分类结果。CNN网络的具体参数设置如表1所示。

表1 CNN模型的具体参数

该CNN网络卷积层中卷积核个数先增加后减小,呈现金字塔结构,可以更好地保留有效信息;通过对特征池化,使得网络结构对微小的平移和形变具有好的鲁棒性;全连接层采用了Dropout机制,以一定概率随机使网络的某些隐含层权重停止更新,防止CNN网络因训练集较小出现过拟合现象。

1.2 预训练

为使CNN模型具有更好的特征提取能力,本文借鉴迁移学习思想,使用cifar10数据集对CNN模型训练至损失(loss)收敛,如图2所示,训练中只保存卷积层所有参数。

图2 预训练损失

1.3 交通信号灯数据训练

为使CNN模型具有区分车尾灯的能力,本文将交通信号灯连同其背景,作为原始图像。针对同一交通信号灯,分别裁剪出32×32,64×64,128×128大小的3种图像作为训练集。

将交通信号灯分为直行绿灯、左拐绿灯、直行黄灯、左拐黄灯、直行红灯、左拐红灯,共6类40 681张图像。设批处理(batch)为128,学习率从0.001渐变至0.000 01,卷积层取预训练后的模型参数,全连接层以最大似然估计初始化,Dropout设为0.75,更新卷积层及全链接层参数,直至loss收敛。如图3所示。

图3 数据loss

2 渐变特征检测

为提升检测的性能,引入上下文特征并结合CNN优点,提出一种引入渐变特征的检测算法。在整副图像中随机选取一个点P,以点P为中心,以一定步长,按方形扩散,逐一检测每一次扩散后的图像,若经过3次扩散均识别为同一交通信号灯,则认为点P所处区域为该交通信号灯。算法详细描述为:

输入:CNN模型,检测阈值d

输出:T,交通信号灯类别

初始化:已检测区域列表D为空

重复随机产生点P(x,y)

如果:P不属于D,那么Ai=R(P,step×i)

如果:任意i∈(1,3),CNN(Ai)>d

那么:将区域Ai存入D

返回信号灯识别类型T

直到 所有区域均被标记

3 实验与结果分析

3.1 数据集

为了验证本文方法的有效性,以计算机视觉与机器人研究实验室在美国圣地亚哥采集的LISA交通信号灯数据集[8]作为测试数据,由固定在测试车顶的Bumblebee XB3型摄像机拍摄,图像包含圆形和箭头形的红、绿、黄共6类交通灯以及负样本。采集频率为16帧/s,图像分辨率为1 280像素×960像素。该数据集包含两个白天与夜晚的图像视频序列,25 913帧图像,视频长23'10″,地面实况(ground truth)包含交通信号灯注释64 137个。

3.2 步长阈值实验

在每一步扩散中,将扩散后的图像等比缩放至步长×步长(step×step)大小进行处理。若step过大,容易得到过多的冗余信息;若step过小,容易将交通信号灯切分,使重要特征不完整,也会影响性能。设计5组不同的step值,使用实验数据集,计算其对应的召回率,如图4所示。可以看出,当step分别为16,32,48时具有较高的召回率,且当step=32 时的召回率最高。由于需要以图像中一随机点P为中心进行3次方形扩散(每次扩散的步长为step×i,(i=1,2,3)),因此选取step为16。

图4 不同步长下的召回率

3.3 对比分析

在step=16时,选取了包含汽车尾灯的数据进行测试实验,如图5所示。

图5 step=16下的测试实验结果

对于汽车尾灯,在扩散前,CNN识别其为红灯直行,随着扩散次数增加,其概率逐渐降低,准确地避免对汽车尾灯的误检。在LISA测试数据集上对算法进行测试,白天与夜晚分开实验,并同其他方法进行准确率—召回率(P-R)比较,结果如图6所示。

图6 P-R曲线对比数据

4 结束语

本文以交通灯识别的任务特点为出发点,针对其他方法的不足而提出应对措施,虽能有效提升召回率与准确率,但也存在诸多可改进的地方,如:按步长扩散时,可以通过当前状态值,计算出下一次扩散需要的步长,同时针对不同步长设定不同阈值,进而检测,为进一步研究内容。

猜你喜欢

交通灯信号灯步长
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
基于单片机的交通灯模糊控制器研究
交通信号灯
信号灯为什么选这三个颜色?
为什么交通灯是红黄蓝三种颜色?
一直飘红的交通灯
基于单片机的LED模拟交通灯设计
安装在路面的交通信号灯
基于动态步长的无人机三维实时航迹规划
基于逐维改进的自适应步长布谷鸟搜索算法