李在润,宁芊,2
(1.四川大学电子信息学院,成都 610065;2.新疆师范大学物理与电子工程学院,乌鲁木齐 830054)
交通信号灯检测任务的目标是检测出图像中出现的交通灯以便识别出信号灯所表达的具体信息。随着现代交通网络的飞速发展,道路结构复杂多样,路上行驶的车辆也日益增多,交通信号灯在保证交通有序和安全进行中发挥着至关重要的作用。快速准确的检测并识别交通信号灯,不仅可以用于辅助驾驶系统,即时提醒或者干预驾驶员做出正确反应,让驾驶员更好地驾驶车辆,减少交通事故的发生,而且在未来的无人驾驶系统上更是关键的任务之一。近年来,国内外学者对于交通信号灯检测算法的研究一直在不断推进,但是目前的算法往往只关注了检测的准确性,而欠缺目标检测的实时性和高效性。在车辆驾驶中,不论是驾驶员还是无人驾驶系统,信号灯从出现在视野中到需要做出反应的时间非常短。因此,我们通过减少网络通道的方法,在保证性能的同时提高任务的效率。
针对交通信号灯检测任务的算法随着时间和技术的发展不断更新,大致可以分别3类:①基于图像处理的方法;②基于机器学习的方法;③基于深度神经网络的来检测交通信号灯的方法。
基于图像处理的方法中,颜色和形状是最常被用来做交通信号灯检测任务的。基于颜色的方法便通过分离图像的颜色空间,设定相关的阈值进行计算。交通信号灯的另一个特征是形状,基于形状的算法就是利用交通信号灯的形状特征,检测交通信号灯外围矩形框的区域和灯的圆形区域。然而,这些基于图像处理的方法,只有在相对简单的场景中能得到较好的效果,在复杂场景下往往会检测不到信号灯或者识别错误。
基于机器学习的方法,首先要找到图像中的感兴趣区域,对区域中的单个目标进行特征提取,然后利用分类器对目标进行分类。不过基于机器学习的算法往往有鲁棒性较差,适应性不足,时间复杂度高、实时性差等缺点。
近年来,基于深度学习的方法在交通信号灯检测和识别任务中取得巨大进步。深度学习方法能够同时进行特征提取和分类,从大量样本中自主学习目标的特征,这很好地解决了传统方法中鲁棒性差和适应性不足的问题。但是,目前基于深度学习的交通信号灯检测算法普遍只关注精确度的指标,而日常驾驶场景和无人自动驾驶场景中,交通信号灯检测的实时性也非常重要。
针对交通信号灯检测的实时性问题,本文提出通过减少网络的通道数并添加层级U型连接结构的方法改进TTFNet网络模型,构造出了能更高效检测交通信号灯的网络模型。实验结果表明,使用该网络结构能在牺牲少量精确的情况下大幅度地减少网络训练的开销和提高交通信号灯检测的效率。
交通信号灯检测和识别的研究早期主要是基于传统的颜色方法。吴庆国等人[1]通过对RGB图像进行归一化处理后再利用图像空间中三通道的差值分布对不同颜色的信号灯进行检测。而因为RGB空间受光照的影响较大,D.Barnes等人[2]选择了更适合识别交通信号灯的HLS颜色空间。除了基于颜色空间的方法,交通信号灯的形状特征也常常被用到检测任务中,如通过检测边界的矩形框和圆形灯来定位交通灯。CaiZ等人[3]在拉夫斯基边缘检测滤波器的边缘上添加霍夫变换,而E.Koukoumidis等人[4]改进霍夫变换来寻找实心圆,进一步优化了通过形状检测交通信号灯的算法。
随着深度学习的崛起,深度卷积神经网络在计算机视觉任务中快速发展并得到大量应用,越来越多的研究人员开始设计不同的卷积神经网络来完成交通信号灯的检测和识别。Jensen等人[5]讨论了在使用目标检测算法进行交通信号灯检测中卷积神经网络的超参数选择。Julian Muller等人[6]通过改进SSD网络,将原始的VGG网络替换成Inception网络来进行交通信号灯检测,对小目标检测有一定的效果。潘卫国等人[7]对Faster R-CNN网络进行改进,提高了在复习场景下检测交通信号灯的准确率。T.V.Janahiraman等人[8]对比了SSD MobilenetV2和Faster R-CNN这两种目标检测模型在交通灯检测中的灵活性,提出了一种稳健的检测方法。然而,上述的网络设计是针对交通信号灯检测和识别的稳健性和准确率在不断优化,需要进行大量的训练和时间代价。而现实情况中,训练时间更少,检测速率更快也是交通灯识别中一个重要的问题。
本文在TTFNet的网络模型基础上,减少网络的通道数并添加层级U型连接结构的方法,构造出了能更高效检测交通信号灯的网络模型。
CenterNet将目标检测分为中心定位和大小回归两部分。对于定位,它在CornerNet中采用高斯核来产生一个热图,使网络在物体中心附近产生更高的激活。对于回归,它定义目标中心的像素作为训练样本并直接预测对象的高度和宽度。它还预测了偏移以恢复由输出步幅引起的离散化误差。由于网络在推理过程中会在对象中心附近产生更高的激活度,因此耗时的非极大值抑制NMS可以用开销可以忽略不计的其他组件来代替。
为了消除对非极大值抑制的需求,本文采用了类似的中心定位策略。在CenterNet中不考虑高斯核中长方体的纵横比显然是次优的,于是我们进一步考虑了它。
对于尺寸回归,主流的方法是处理整个框或把子矩形中的像素框的面积作为训练样本,而我们将高斯区域的所有像素作为训练样本。另外,为了更好地利用信息,我们还对这些样本应用了由对象大小和高斯概率来计算的权重。
在中心点的正样本中,仅仅将高斯分布的峰值看成是正样本,也就是框中心的像素,其他任何像素都看成是负样本。
(1)
其中αf和βf是交叉熵的超参数。
(2)
其中s是一个固定的标量,用来扩大预测结果,便于优化。
如果一个像素不在任何子区域中,则在训练过程中将其忽略;如果一个像素在多个子区域中,则训练时将它的目标设置为面积较小的对象。
(3)
由于物体的大尺度变化,大的物体可能产生数千个样本,而小的物体可能只产生很少的样本。对所有样本的损失进行归一化后,小目标的损失几乎可以忽略不计,这将影响小目标的检测性能。因此,采用权重Wij起到了平衡的作用。假设(i,j)在第m个标注框的子区域Am中,则:
(4)
其中Gm(i,j)是在位置(i,j)的高斯概率,am是第m个框的面积。该方法能充分利用大对象所包含的更多注释信息,并保留小对象的注释信息。它还可以在目标中心附近强调这些样本,减少模糊和低质量样本的影响。
总损失:总损失L由定位损失和回归损失组成:
L=wlocLloc+wregLreg
(5)
其中wloc=1.0,wreg=5.0。
网络:我们使用ResNet18作为实验的主干,并将网络的通道数减少到1/4,如图1所示。定位网络在靠近物体中心的位置产生高的激活,而回归网络直接预测从这些位置到框四边的距离。由于物体中心对应于特征图上的局部最大值,因此可以借助2D最大池化抑制非最大值。然后使用局部最大值的位置来收集回归结果,最终得到检测结果。
图1 ResNet-18(a)和ResNet-18 1/4(b)
因为卷积神经网络的特征,深层的特征图有更大的感受野,可以看到更多的“背景信息”,适合检测大目标。而浅层的特征图感受野比较小,对小目标的检测更适合。我们的方法有效地利用了大中型目标中的标注信息,但是对于小目标却仅包含了较少的信息。为了提升小目标检测的性能,本文添加了层级连接来引入底层中高分辨率的特征。对于网络的2、3、4阶段,卷积层数设置为3、2、1,每个连接都由3×3卷积层实现,除了网络的最后一层外,每个层后面都跟着一个ReLu函数,这样就引入了网络中2、3、4阶段后的特征,层级网络结构如图2所示。
图2 层级网络结构
为了验证上述网络模型的性能,我们在巴黎LaRa公开的Traffic Lights Recognition(TLR)交通信号灯数据集上进行实验。TLR是一个交通信号灯识别的视频数据,它是由法国一所大学从C3车辆中用相机传感器Marling F-046C在真实的道路上采集的交通信号灯视频,图像分辨率为640×480。该数据集包含城市场景中交通灯识别的基本事实和基准,它有8分钟的彩色视频序列和9168个标注的交通灯实例。可以看出,城市中的交通信号灯的情况非常复杂,一个路口可能有多个类型的交通信号灯,也可能有不同路口的交通信号灯,同时,每张图里的信号灯大小也不尽相同。此外,在城市的道路场景中,还包好了各种车灯,其中包括容易与红色信号灯混淆的汽车尾灯,如图3所示。
图3 交通信号灯数据集
本文采用目标检测算法中常用的评价指标mAP(mean Average Precision)来评估性能。
在mAP指标中,精确度P(Precision)的计算公式为:
(6)
其中,TP(True Positive)是真正例,FP(False Positive)是假正例。
召回率R(Recall)的计算公式为:
(7)
其中,FN(False Negative)是假反例,即没有检测到的Ground Truth的数量。
得到精确度P和召回率R以后,采用PASCAL VOC的计算方式,将R分为11个点(0.0,0.1,0.2,…,1.0),计算每个召回率下的精确度,可以得到P-R曲线,AP(Average Precision)值就是P-R曲线下与坐标围成的面积。再将所有类别的AP求和后再取平均就得到了mAP。
除了检测准确度,目标检测算法的另一个重要评估指标是速度,只有速度快,才能够实现实时检测,这一指标在交通信号灯的检测和识别任务中更是尤为重要。我们用FPS(Frame Per Second)即每秒内可以处理的图片数量来评估目标检测的速度。
另外,为了对比网络模型的执行效能,还加入了GFLOPS(Giga Floating-point Operations Per Second)评估指标,即每秒10亿次的浮点运算数。而FLOPS的计算公式为:
FLOPS=2HW(CinK2+1)Cout
(8)
其中,H和W分别是卷积层输入特征图的长和宽,Cin是卷积层输入特征图的通道数,K是卷积核的大小,Cout是卷积层输出特征图的通道数。
然后,1GFLOPS=109FLOPS。
以下实验所使用的硬件设备为:PC端为联泰集群LT-5038A工作站,配置了一块Intel Core e5-1650(12核)处理器和一块NVIDIA GeForce 1080Ti(12GB显存)GPU。使用的系统环境为Ubuntu18.04;采用的深度学习框架为PyTorch 1.5.0。
我们使用了ResNet作为使用的主干网络。为了更好的进行训练,同时保证数据集中的所有样本都能保持原有的分辨率大小,实验中对网络的输入进行正负0.1的平移,然后再对应进行正负0.1的尺度变化。经过尺度变化后,每个样本的大小被填充到了640×480,并且没有改变图像的长宽比。对于,ResNet,初始化其学习率为1.25×10-7。另外,我们将ResNet的通道数减少为原来的1/4来降低GFLOPS。
首先,在不加入层级连接的情况下,通过将ResNet的通道数减少为原来的1/4和不减少ResNet的通道数进行对比实验。然后,在将ResNet的通道数减少为原来的1/4的基础上,加入层级连接,再进行实验,结果如表1所示。
表1 实验结果
ResNet18_0.2520.90.7374.79ResNet18_0.25Hierarchy U-net21.30.7512.50
由表1可见,将ResNet的通道数减少到原来的1/4后,检测的精确度损失了约2%,但是检测的帧数从6.9提升到了20.9,GFLOPS更是减少了71.5%。在加入层级连接后,检测的精确度不再损失,帧数为21.3,GFLOPS进一步减少到2.5。
实验结果表明,使用减少网络的通道数并添加层级连接结构的改进TTFNet,可以在不损失检测精确度的同时,明显提升检测的帧数,并且大幅减少网络训练需要的计算资源开销,对于实时检测交通信号灯具有应用价值。
通过减少ResNet的通道数,加入层级连接结构来改进TTFNet,提升了其在交通信号灯检测的实时性,也减少了网络训练所需要的计算资源。但是对于这种方法在交通信号灯的检测中,还可以继续提升检测的精确度,下一步将考虑继续改进层级连接结构来构建出对交通信号灯检测精确度更高的网络模型。