基于YOLOv3 的夜间防眩目LED 车灯*
2020-03-12王源宇曾翊晨李飞扬
王源宇,曾翊晨,李飞扬,阎 辰,张 顺
(1.武汉理工大学 信息工程学院通信工程,湖北 武汉430070;2.武汉理工大学 信息工程学院电子科学与技术,湖北 武汉430070)
中国《道路交通安全法》第48 条已经明确规定远光灯、近光灯的操作使用要求,但根据对路面交通状况实际观察发现,仍有不少驾驶员在汽车行驶过程中没有切换远光灯、近光灯的习惯。在会车时,远光灯强烈的灯光会对驾驶员造成眩目,极易造成交通事故[1-2]。目前,国内外解决夜间会车眩目问题大多采用偏振光防眩目技术[3]和液晶变光装置[4]等。偏振光防眩目技术是在汽车的挡风玻璃以及前照灯灯罩玻璃上安装偏振片,两车会车时车灯光线经前照灯灯罩玻璃和对向挡风玻璃的透射率几乎为0,而偏振片透光率不理想,单片透光率仅有36%左右,且成本及精度要求高,难以实现市场化生产[5]。液晶变光装置是利用光传感器把强光信号转变成电信号,使位于驾驶员眼睛和前挡风玻璃之间的液晶板变色,这样驾驶员感觉不到强光的刺眼,但是该装置对各种路况的适用性差,容易造成视觉疲劳[6]。由于夜间道路情况复杂,以上方法均不能有效解决防眩目的问题。因此,研发一款智能夜间防眩目车灯十分必要。
YOLO(You Only Look Once)[7]算法属于one-stagedetection 方法,首先需要产生大量可能包含待检测物体的先验框,然后用分类器判断每个先验框对应的边界框里是否包含待检测物体,以及物体所述类别的概论或者置信度,同时,需要后处理修正边界框,最后基于一些准则过滤掉置信度不高和重叠度较高的边界框,进而得到检测结果。这种基于先产生候选区再检测的方法虽然有较高的检测准确率,但运行速度较慢。YOLOv2 可以很好地权衡速度和精度,在不需要较快运行速度时,它可以把精度提高;在不需较高准确度时,它可以提升运行速递。而经过YOLOv3 的改进,算法在拥有较快运行速度的同时有较高的准确率,这更适用于夜间复杂环境下行驶时对于检测速度和精度的要求。因此,本文采用YOLOv3 算法作为核心处理算法。
本文设计的夜间防眩目LED 车灯通过摄像头采集前方车辆行人信息,PC 机采用YOLOv3 算法处理后,由飞思卡尔单片机将控制信号传至LED 车灯,从而实现自动调节远近光灯,增加了行驶的安全性,同时,类比市面上的其他产品,此产品具有可编程性,可以根据实际情况进行后续优化升级,为未来的无人驾驶做准备。
1 硬件设计
本系统主要由摄像头、PC 机、控制模块及LED 车灯构成,其硬件组成如图1 所示。其中,控制模块为飞思卡尔单片机MC9S12P128,单片机通过串口通信接受PC 机传递的信号,单片机内部的程序对信号正确处理,控制车灯的远近光灯切换。LED 车灯内部有5 颗灯珠,当汽车使用近光灯时,开启其中3 颗灯珠;当汽车使用远光灯时,开启全部5 颗灯珠。控制模块控制车灯内部5 颗灯珠的开关状态,实现远近光灯的切换。
整体工作流程如下:摄像头采集驾驶车辆前的路况信息后,将图像信息传递给PC 机,PC 机对摄像头传送过来的图像信息用YOLOv3 算法进行处理,将检测到的车辆和行人信息传送到飞思卡尔单片机,再由单片机发送控制指令来控制车灯远近光灯的亮灭。
2 YOLOv3 算法训练与测试
2.1 YOLOv3 算法
YOLOv3 在YOLO 系列算法的基础上进行了一些改进,包括多尺度预测(类FPN)、基础分类网络(类ResNet 残差块结构)和更好的特征提取网络(Darknet-53)等,很好地改善了YOLO 系列算法对小物体检测效果较差的问题。
由于夜间道路环境较为复杂,对于目标检测的实时性要求较高,同时,为了保证准确性,本文采用YOLOv3 算法对夜间车辆和行人进行检测。
YOLOv3 整体网络结构如图2 所示。其中,DBL 为网络的基本组件,即卷积层+归一化层+激活层;resn 为残差网络Resnet,n 代表数字,表示有n 个残差块;concat 为张量拼接,即连接darknet 中间层与后面的某一层的上采样。
图2 YOLOv3 整体网络结构
2.2 特征提取网络
YOLOv3使用基于残差神经网络改进的Darknet-53网络作为特征提取器,整个网络中没有池化层和全连接层,采用大量的3×3 和1×1 卷积层,共有53 个卷积层。YOLOv3 采用416×416 的图像输入到前向传播过程中,通过改变卷积核的步长来实现张量的尺寸变换。不同于YOLOv2 采用的Darknet-19 网络结构,Darknet-53 引入Resnet 的残差块结构,如图3 所示。
图3 Resnet 残差块结构
其相应的公式定义如下:
式(1)中:xt+1和xt分别为第t 个残差块的输出与输入向量;Ft(xt)为转换函数,对应于由堆叠层组成的残差分支。
这样组成的残差网络有效解决了随着网络层数的加深而产生的梯度爆炸问题,使得Darknet-53 提取的特征效果更好,更好地提升了分类和检测的准确度。
2.3 类FPN 多尺度预测
YOLOv3 借鉴了FPN(feature pyramid networks)的思想,在3 种不同的尺度上进行预测,分别为13×13、26×26、52×52,每种尺度预测3 个box,anchor 的设计方式仍然使用聚类,得到9 个聚类中心,将其按照大小均分给3 个尺度。对于输入为416×416 的图像,按照特征图的尺度大小划分为S×S 个等大的网格,本文对应预测车辆和行人2 个类别,则最终得到的张量大小为S×S×[3×(4+1)+2],其中,包括目标边框的4 个坐标值以及置信度得分(tx,ty,tw,th,confidence)。这种方式将不同分辨率的特征图融合之后单独输出,对应图2 中的Y1、Y2、Y3 热图,可以精确针对不同尺寸的目标进行分别检测,极大地提升了YOLOv3 在小目标检测方面的性能。
2.4 YOLOv3 类别预测
YOLOv3 不使用Softmax 对每个框进行分类,主要原因为Softmax 使得每个框分配一个类别,即得分最高的类别,而实际中的一个目标或一张图片基本上不会只有一个类别,例如对于Open Images 数据集,目标可能有重叠的类别标签,因此Softmax 不适用于多标签分类,且Softmax 可被独立的多个logistic 分类器替代,准确率也不会下降。
所以,YOLOv3 使用了多个独立的逻辑回归分类器进行分类,逻辑回归层(logistic)主要使用sigmoid 函数,每个分类器使用简单的二分类对目标边框中出现的物体进行判断,即实现了多标签分类。
2.5 损失函数
YOLO 系列算法均是端到端的训练过程,预测框的坐标、大小、种类、置信度等信息的预测由4 部分的损失函数组成,其公式为:
3 软件设计
防眩目系统软件设计如图4 所示。
图4 软件流程图
在夜间行驶时,驾驶员自动选择远近光灯状态,同时,开启防眩目系统,系统进入初始化。进入程序后,首先由摄像头采集前方道路信息直到采集完成,然后将图像信息送入目标检测模块,此模块由YOLOv3 算法进行目标检测,如果未检测到车辆及行人信息,则继续进行数据采集;如果检测到车辆及行人信息,则立即判断车灯开启状态。如果同时开启远近光灯时,转入车灯控制模块,关闭远光灯,只开启近光灯;如果只开启近光灯,则保持近光灯开启状态,最后回到主控制模块,循环进行该算法流程。
4 实验过程及结果分析
4.1 实验配置与数据
本文算法使用tensorflow 框架,实验的软硬件配置如表1 所示。
表1 实验配置
本实验图像由载有OV7725摄像头模块的车辆在夜间拍摄得到,包括高速公路、城市道路等150 000 万张图片,精选6 000 张清晰图片,使用labelImg 软件对上述图片进行标注,只设置车辆、行人以及背景三个类别,最后从中随机选取4 200 张图片作为训练集,1 800 张图片作为测试集。
使用上述数据集,对目标检测模型进行训练与测试,相比于目前存在的数据集,本数据集更适合于夜间对车辆及行人的检测。
实验过程中,设置初始学习率为0.000 1,迭代次数为1 000,耗时约14 h。
4.2 实验结果及分析
将测试集输入到训练好的模型中,得到车辆与行人识别率的结果,其中车辆检测的mAP 为97.31%,行人检测的mAP 为91.67%。可以看出本文训练的YOLOv3 算法能够准确检测出夜间车辆和行人。同时,将检测到的信息处理之后发出的车灯控制信号,可以准确地切换远近光灯。实际场景如图5 所示。
图5 实际场景图
5 结论
本文将YOLOv3 网络应用于汽车防眩目领域,通过训练自制的夜间数据集,对车辆前方的道路信息做出判断,实现对车辆远近光灯的自适应切换,以解决夜间车辆行驶过程中滥用远光灯的现象。
实验结果表明,对于本文提出的方法,输入一张图像直接预测出目标信息耗时0.04 s,整体mAP 达到94.49%,能够保证控制车灯的准确性和实时性。