基于深度学习的交通信号灯检测及分类方法
2018-10-21王莹丁鹏
王莹 丁鹏
摘 要:交通信号灯的在线识别是无人驾驶和辅助决策系统中的重要研究内容,文章给出了一种基于深度学习的交通信号灯识别和分类方法,该方法使用YOLO(You Only Look Once)模型,基于Microsoft COCO 数据集的预训练模型进行二次迁移学习:先使用Bosch数据集进行迁移学习,再使用自制数据集做迁移学习。测试表明该方法训练后的模型具有较高准确率和实时性。同时,文章给出了基于检测结果提取综合路况信息的策略。
关键词:深度学习;神经网络;交通信号灯
中图分类号:U665 文献标识码:B 文章编号:1671-7988(2018)17-89-03
Abstract: The online recognition of traffic lights is an important topic in unmanned and assisted decision-making systems. This paper presents a deep learning approach to traffic lights identification and classification. This method uses YOLO (You Only Look Once) model. The pre-training model of the COCO dataset is used for double-transfer learning: Bosch dataset is used for the first transfer learning, and self-made dataset is used for the secondary transfer learning. The test result shows that the model trained by this method has higher accuracy and real-time performance. Also, we presents a strategy for extracting comprehensive road condition information based on detection results.
Keywords: Deep Learning; Neural Networks; Traffic Lights
CLC NO.: U665 Document Code: B Article ID: 1671-7988(2018)17-89-03
前言
交通信号灯检测和识别是无人驾驶和辅助驾驶领域的重要研究内容,国内外许多机构及研究者针对交通灯检测和识别开展了研究。但大多研究内容都基于人工设置特征及检测方法[1-4],这些方法在较为复杂环境中检测和识别率不高,容易受到背景干扰、过爆、光晕、汽车尾灯,路灯和各种反射影响,造成误检或漏检。
交通信号灯有许多不同的数量,位置,形状,尺寸和布局,对于基于卷积神经网络的深度学习算法,这些差异是很容易的——只需收集汽车驾驶区域中交通灯类型的示例。算法可以自主学习交通信号灯特征,减少了人工干预,能较好应对复杂的交通背景,排除各种干扰,提高识别效率。本文基于卷积神经网络算法,利用二次迁移学习方法,训练出了精度较高的交通信号灯识别模型,并提出了基于检测信息的综合应用策略。
1 数据集选取
1.1 公开数据集
深度学习中数据集是决定最终模型精确度的重要因素,目前包含交通信号灯的大型图像数据集有ImageNet和COCO,针对交通信号灯的专门数据集有LISA、TLR、Bosch交通信号灯。
基于数据集分析可以看出,针对交通信号灯识别,COCO数据集具有更大数据量,基于COCO数据集的预训练模型能很好地提取物体特征,辨识出信号灯。缺点在于分类中只有交通信号灯这一大类,不能识别具体的状态。
Bosch交通信号灯[5]數据集给出了14中不同的红绿灯状态,较好的覆盖了圆形标志和箭头标志,但样本量偏小,同时存在样本不均匀的现象:例如红色直行、红色右转、绿色直行、绿色右转等带箭头的红绿灯样本量明显偏少。
1.2 自制数据集
为了克服以上数据集的缺点,我们基于无锡市滨湖区实际交通情况制作了小型数据集,图片大小为1920x1280像素,共683张,其中标注红绿灯样本数一共1527个,分布情况如表3所示。
2 目标识别框架选取
当前主要基于深度学习的目标检测算法包括基于候选区域(region proposal)的两步检测法:Faster R-CNN、Mask R-CNN,以及基于回归的一步检测法:YOLO、SSD。
权衡官网给定的计算性能和检测精度比对数据,本文选取SSD_Inception_v2、Faster_RCNN_Inception_v2和YOLO v3基于COCO数据集的预训练模型对比检测效果。
论文[6]讨论了使用不同深度学习框架时的权衡,指出SSD在识别中型和大型目标时效果较好,小目标时效果不如Faster RCNN。由于之后SSD、YOLO等算法均有改进版本,因此,本文以实际场景图为例,比对不同方法的检测效果。
从检测比对效果图看,SSD和Faster RCNN针对远处较小交通信号灯的检测均存在较明显的漏检现象,YOLO v3检测结果最好,几乎识别出了图中所有的交通信号灯。故本文采用YOLO v3框架进行训练学习。
3 模型训练方法
迁移学习的优势在于,能将已训练好的模型应用到新的模型训练中,克服新模型样本数少的问题,并且因为不需要从头开始训练整个网络,能极大提高训练收敛速度。
本文使用YOLO v3基于COCO数据的预训练模型,使用Bosch交通信号灯数据库做一次训练,然后基于自制数据集做二次训练,最终得到区分十种交通信号灯状态的模型。
最终模型在自制测试数据集上取得的96.3%的准确率,图6为测试效果。在CPU i7-7700HQ、GPU GTX1060机器上测试1080p视频,处理速度为18 FPS。
4 综合使用策略
要能根据信号灯状况提供实时策略,仅仅辨别红绿灯状态还不行,应为会存在以下情况:
路口很多红绿灯,有的并不是针对行驶方向的,属于不需要关心的状态;
正对行驶方向的也可能应为两个十字路口间隔较近,出现判出多个红绿灯的情况。
故提取正对行驶方向最近的红绿灯状态是应用中必须克服的问题。
本文提出根据红绿灯位置和提取区域大小综合判断的策略,步骤如下:
Step1.使用yolo算法提取所有红绿灯区域。
Step2.将提取目标按区域大小排序。
Step3.按正對红绿灯区域一般位于图片中上方的原则进行过滤。
Setp4.将区域大小相近的前3个红灯信息提取,空间距离较大且信息一致的视为一个。
Setp5.将提取信息按表4得出综合结论。
5 结论
本文给出了一种基于深度学习的交通信号灯识别方法,创建了一个小型红绿灯数据集,使用YOLO v3构架,提出了基于COCO数据集的二次迁移学习策略,并给出了检测结果综合使用策略。从训练模型使用效果看,该模型识别准确率较高,实时性能较好,能为无人驾驶和辅助驾驶系统提供较好的支撑。
参考文献
[1] 谷明琴,蔡自兴,黄振威,何芬芬.城市环境中箭头型交通信号灯的实时识别算法[J].中南大学学报(自然科学版),2013,44(04): 1403-1408.
[2] 武莹,张小宁,何斌.基于图像处理的交通信号灯识别方法[J].交通信息与安全, 2011, 29(3):51-54.
[3] 吴泽峰,张重阳,许明文.基于投影特征值的交通信号灯检测与识别方法[J].现代电子技术,2016,39(09):160-163.
[4] 葛俊辉.交通信号灯检测与识别算法研究[D].中南大学, 2014.
[5] Behrendt K, Novak L, Botros R. A deep learning approach to traffic lights:Detection,tracking,and classification[C] International Confer -ence on Robotics and Automation. IEEE, 2017.
[6] Huang J, Guadarrama S, Murphy K, et al. Speed/Accuracy Trade- Offs for Modern Convolutional Object Detectors[J]. 2016:3296- 3297.