基于特征融合级联网络的交通标识牌检测算法

2022-06-24 10:02李学伟
计算机应用与软件 2022年4期
关键词:卷积尺度交通

魏 威 李学伟

(北京联合大学北京市信息服务工程重点实验室 北京 100101) (北京联合大学机器人学院 北京 100101)

0 引 言

近年来,随着人工智能技术的不断发展与完善,基于深度学习的目标检测算法在智能驾驶、视频索引等领域得到了广泛的应用。智能驾驶车辆在行驶过程中精准检测并识别道路场景中的车辆、交通标识牌、信号灯等是十分重要的。城市道路中的交通标识包含了丰富的导航信息,能够指示、警示驾驶员的驾驶行为。精准地检测并识别交通标识对提高道路驾驶安全有十分重要的意义,是智能驾驶的重要组成部分。此外,交通标识检测还可以应用在自适应的车辆巡航等辅助驾驶系统中。

传统的检测算法一般是基于机器视觉的方法,根据交通标识具有严格的形状以及颜色等特点来提取特征信息,然后通过分类器进行分类识别。Cao等[1]使用HSV颜色空间进行阈值分割,然后根据形状特征检测交通标识。Gabriel等[2]利用颜色信息建立统计模板检测交通路口处的交通标识。Chen等[3]通过对自适应增强和支持向量回归技术的研究,提出了一种基于交通标志颜色、形状和空间信息的显著性方法。何思远等[4]先对图像进行灰度化、腐蚀、膨胀等处理后,再使用区域一致的显著性方法检测电力线路相位交通标识。这些传统的交通标识检测算法结构复杂,需要人为地提取特征信息,人为提取特征信息存在一定的主观性和单一性,传统算法具有计算复杂、实用性差等缺点。

随着深度学习技术的不断发展与完善,基于深度学习的检测算法结构更加简单高效,超越了传统的检测算法成为当前主流。常见的基于深度学习目标检测算法包括R-CNN系列[5-7]、YOLO系列[8-10]、SPP-net[11]、SSD[12]等。Song等[13]提出了优化CNN网络的交通标识检测方法,通过增加特征图维数和下采样的方式增强小目标的特征。裴伟等[14]使用引入了特征融合机制的SSD算法检测航拍图像中的小目标。Zhang等[15]使用YOLOv2算法检测并识别中国道路场景中的交通标识牌。陈江昀[16]使用超像素过分割方法处理图像,然后提取分割区域的特征并进行区域合并的方式来检测小目标。Chen等[17]改进了Lenet-5网络的激活函数和网络结构,并采用基于交叉熵的梯度下降算法对检测误差进行了优化,有效地防止了深度学习检测网络过度拟合,同时也提高了交通标识的检测效率。Arcos-García等[18]通过大量实验分析了Faster R-CNN、SSD、YOLOv2等算法在交通标识检测上的效果。孟琭等[19]结合SSD算法、语义分割技术、数字识别技术来识别铁轨路牌。Peng等[20]使用经典的目标检测算法Faster R-CNN检测并识别交通标识。Faster R-CNN、SSD、YOLOv2等算法只使用网络中最深层的特征图来检测目标,最深层的特征图中包含的小目标轮廓、纹理等特征信息较少,不利于小目标的检测,为了能够准确检测小目标还需要设计更加有效的深度学习检测模型。交通标识普遍尺度较小、部分类别的交通标识特征相似,FPN网络[21]在检测这些交通标识时会存在误检、漏检的情况。改进的SSD[14]、YOLOv3算法在小目标检测上速度快,但是检测精确度还是不够好,与FPN网络相同在检测尺寸很小、特征相似的交通标识时会产生误检、漏检的现象。

根据以上分析,本文提出一种基于特征融合级联网络的算法来检测交通标识牌。算法在Faster R-CNN框架的基础上,首先对低分辨率的高层特征图进行两倍的上采样,然后将两倍上采样后的特征图与高分辨率的低层特征图进行融合,这样就能够同时利用低层特征图中丰富的特征信息与高层特征图中丰富的语义信息来检测交通标识。我们使用ResNet50[22]网络作为算法的特征提取网络,并将锚尺寸大小定为32×32、64×64、128×128的三种尺度,提升尺度小的交通标识检测准确率。为了能够解决尺度小、特征相似的交通标识误检问题,算法在特征融合网络后级联了一个改进的GoogLeNet网络进行交通标识的精准分类。算法将特征融合网络检测到的交通标识去除背景并放大后送入改进的GoogLeNet网络进行精准分类,最终把检测的结果信息返回原图并输出。将改进的算法与现在主流的目标检测算法在Tsinghua-Tencent 100k(TT100k)交通标识数据集[23]上对比实验,结果表明本文算法对标识牌检测的精准率更高、检测效果更好。2018年,我们使用该算法参加了由国家自然科学基金委员会主办的“中国智能车未来挑战赛”——离线测试,在该比赛的交通信号检测项目中取得了全国第一名的成绩。

1 特征融合级联网络

算法使用ResNet50网络作为特征提取网络,ResNet50网络的残差模块可以有效减轻深度网络梯度爆炸和梯度消失的问题。算法在Faster R-CNN检测框架基础上加入了特征融合模块,将特征提取网络提取到的特征信息进行融合,同时利用低层特征图中丰富的特征信息与高层特征图中丰富的语义信息来检测交通标识。将锚尺寸大小定为32×32、64×64、128×128的三种尺度,提升尺度小的交通标识检测的准确率。为了解决交通标识误分类问题,算法在特征提取网络后级联了一个改进的GoogLeNet网络。将特征融合网络检测到的目标去除背景并放大后送入改进的GoogLeNet网络进行分类,最终把结果信息返回并输出。算法在GoogLeNet网络中的Inception模块上增加三个3×3卷积操作和相应的降采样层,以提取更多的潜在特征。图1为提出的检测算法的框架结构。

图1 特征融合级联网络模型结构

1.1 检测框架基本结构

算法使用Faster R-CNN作为基本框架,Faster R-CNN目标检测算法由卷积层、RPN网络层、ROI层、全连接层组成。Faster R-CNN算法先使用卷积层对输入的图像进行特征提取,生成并得到特征图;接着将特征图送入RPN网络中生成目标建议区域;再是ROI层通过遍历的方式,将建议区域在特征图上生成映射,并生成固定大小的目标候选区域特征图;大小固定的目标候选区域特征图在经过全连接层的全连接后,分类器会对目标进行具体分类,并通过目标在特征图中的位置信息获取目标的精确位置。图2是以ResNet50为骨架网络的Faster R-CNN基本结构。

图2 Faster R-CNN结构

不同的特征提取网络会影响最终的目标检测效果,算法选取ResNet50网络作为特征提取网络。ResNet50网络在前馈网络的结构上,增加了跳跃连接来跨过一些层的连接。每有一个这样跳跃连接就产生一个残差模块,ResNet50网络通过残差学习的方式解决了深度网络退化的问题。图3为ResNet50网络中的残差单元结构。

图3 ResNet50网络中残差结构

1.2 特征融合

输入的图片在卷积层中提取特征时会经过五个卷积块(分别记为Conv1至Conv5)。由于图片在经过每个卷积块时分辨率会减小,从而该卷积块提取到的特征图中目标特征信息就会减少,容易造成小目标的特征信息缺失,不利于交通标识牌的检测。在特征提取网络中,浅层特征图中包含了小目标丰富的颜色、形状等特征信息,但是包含的语义信息很少;而深层特征图包含了小目标丰富的语义信息,但包含的特征信息很少。现在主流的深度学习目标检测方法,大多只使用了最深层的特征图来检测目标,所以对小目标检测的精准度不高。为了能够更精准地检测交通标识,算法将各个卷积块提取到的特征图进行特征信息融合。

多层特征图的信息融合方法是把语义强的高层特征图进行上采样,与卷积后的低层特征图中对应的元素相加,于是高层特征图包含了低层特征图中目标的特征信息。这样就能够同时利用高层低分辨率特征图的语义信息和低层高分辨率特征图中目标的特征信息来检测交通标识。将输入的图像在经过卷积块Conv1卷积后的输出记为C1(C2、C3、C4、C5同理)。特征信息融合的具体操作过程是:首先使用一个1×1的卷积块对C5卷积,获取低分辨率的特征图P5;再将P5经过两倍的上采样与经过1×1卷积后的C4对应元素相加;最后将两层元素相加后的结果经过一个3×3卷积块的卷积后得到P4(P2、P3同理)。最后一步中3×3的卷积操作是为了消除低分辨率的特征图在上采样过程中产生的混叠效应。由于庞大的内存占用,这里不将C1放入到特征金字塔中。图4为特征融合模块结构。

图4 特征融合模块

1.3 区域建议网络

RPN网络能够同时预测每个位置中对象的概率信息和边界信息。建立一个RPN网络需要额外增加两个卷积层,一个卷积层用来编码每个卷积图位置,将其转换成特征向量;另一个在卷积图的位置上输出目标概率和回归n个区域建议框参数化坐标。RPN网络使用的特征信息是由特征提取网络提供的,解决了使用选择性搜索速度慢的问题。RPN的具体操作是使用一个窗口在特征图上进行平移,将平移产生的向量送到平行的全连接分类层和全连接位置回归层,获取目标的分类信息和位置信息。图5为RPN网络结构,在每个滑动窗口的中心对应k个锚。窗口在移动到每个位置时会得到预测的候选区域和位置回归层坐标信息,并通过分类层获取候选区域是检测目标的概率。针对大部分交通标识牌尺寸小的情况,算法中锚尺寸大小定为32×32、64×64、128×128的三种尺度,并且每个尺度都有长宽比为1 ∶2、1 ∶1和2 ∶1的三种比例,即整个特征金字塔共有九种锚。

图5 RPN网络结构

1.4 目标精准分类

一般交通标识在原图像中的尺寸很小特征不明显,在经过多次卷积操作后尺寸会持续减小,特征信息更加不明显。此外在城市道路中存在大量与交通标识特征相似的宣传标语和广告牌,这些都会严重影响交通标识的准确分类。准确地分类交通标识需要将图片充分放大,放大后的图像中目标特征信息更为明显,能够有效地解决误分类的问题。但是在深度学习算法中,直接将图片放大后经常会造成图片太大无法计算的问题。算法先使用深度网络检测出交通标识在图像中的位置,然后根据位置信息得到去除背景后的交通标识,再将交通标识放大后送到级联的分类网络中进行精准分类,就可以有效地解决这个问题。

算法使用GoogLeNet网络作为交通标识的精准分类网络,GoogLeNet网络中包含了一系列的Inception模块。Inception模块在一定程度上解决了深度网络容易过拟合、梯度消失的问题。Inception模块根本方法是将全连接以及卷积都转化为稀疏连接,这样产生的数据是稠密数据,既增加了神经网络表现能力,又能保证计算资源的使用效率。Inception模块先使用一个1×1卷积降低通道聚合信息后再计算,更高效地利用了计算资源。GoogLeNet采取全局均值池化,解决了传统CNN网络中最后的全连接层参数过于复杂造成泛化能力差的问题。为了能够提取更多的交通标识潜在特征信息,本文算法在Inception模块中增加三个3×3卷积操作和相应的降采样。图6为算法中改进后的Inception结构。

图6 Inception模块结构

2 实验结果与分析

本文算法的实验环境平台:操作系统为Ubuntu 16.04,显卡型号为NVIDIA-TITANxp,计算机内存为16 GB,开发框架为Caffe。为了验证算法的性能,该算法在TT100k交通标识数据集[23]上进行测试验证。TT100k是由清华大学和腾讯联合发表的交通标识数据集,其中共有10万幅图像(包括3万幅有交通标识的图像和7万幅没有交通标识的图像),包含了221种类别的交通标识牌。图像的分辨率为2 048×2 048像素,交通标识牌的大小从15×15到128×128像素不等,数据集划分为训练集和测试集。TT100k数据集以城市道路作为采集场景,在我国的5个城市取景(包括不同时间段的市中心和郊区)。

本文选取了FPN[21]、YOLOv3[10]和Faster R-CNN[7]三种算法与本文算法在TT100K上进行对比实验。FPN网络是特征融合网络的代表性算法,它能够兼顾不同尺度的目标,对多尺度的目标及小目标有较好的检测性能。YOLOv3是在较小尺度目标检测方面有较好效果的算法,在多尺度目标检测上也有一定的效果。Faster R-CNN是常用的目标检测算法,应用在各种类型的目标检测上。因此选取以上三种深度学习的目标检测算法与本文算法进行对比实验。

2.1 定量分析

为了能够科学地评价检测性能,本文使用平均精确度均值(mean Average Precision,mAP)来衡量,这是目标检测领域常用指标。在二元检测中会有下面四种情况:原本为正样本检测为正例,记为TP;原本为正样本检测为负样本,记为FN;原为负样本检测为正样本,记为FP;原为负样本检测为负样本,记为TN。精确率(Precision,记为P)用来表示检测为正例的样本中有多少真正是正样本的比例,召回率(Recall,记为R)是指在所有正样本中被检测为正例的比例。它们的计算方法分别为:

(1)

(2)

以精确率和召回率分别为纵、横轴坐标做曲线,曲线所围起来的面积就是平均精确度(Average Precision,AP)。在交通标识检测中,每类都可以根据上述方法求出AP值,AP值越高则该类交通标识检测效果就越好。mAP是所有类别的交通标识检测的AP值的平均值,mAP值越高,表示交通标识的整体检测效果越好。

表1中数据为四种检测算法在训练时的参数值。TT100k数据集中共有221种类别的目标,包括“限速”“警告”“禁止”等交通标识牌的细分类。但是其中大部分类别的交通标识数据量极少,甚至有几类交通标识的数量只有几个。这极大影响检测算法的训练和交通标识检测的准确率,本文选取了其中30类数据量较多且常见的交通标识进行实验。

表1 模型训练时参数

在Faster R-CNN算法中锚大小为128×128、256×256和512×512的三种尺度和1 ∶1、1 ∶2、2 ∶1的三种宽高比的9种锚框。FPN算法中锚大小为32×32、64×64、128×128、256×256和512×512的五种尺度和1 ∶1、1 ∶2、2 ∶1的三种宽高比的15种锚框。为了提升尺度小的交通标识检测的准确率,算法提出将锚尺寸大小定为32×32、64×64、128×128的三种尺度和1 ∶1、1 ∶2、2 ∶1的三种宽高比的锚框。并通过实验观测在相同宽高比下不同尺度的锚框对检测结果的影响,从而选出最优的锚框尺度。表2中实验数据为在TT100k数据集中不同尺度的锚框的检测结果,实验结果表明锚框尺度在32×32、64×34和128×128下效果最好,故本文算法使用该尺度的锚框。

表2 不同尺度锚框的检测结果

表3中实验数据是将本文算法与FPN、YOLOv3和Faster R-CNN算法对比实验的结果数据,以上四种算法在TT100k数据集上进行了对比实验。根据表3中的数据显示,本文算法平均精准度均值(mAP)为85.3%,而FPN的mAP为83.5%,YOLOv3的则为81.8%,Faster R-CNN的平均精准度均值为71.3%。结果显示本文算法与FPN算法相比平均精准度提高了2百分点左右,与YOLOv3算法相比平均精准度提高了3百分点左右,证明了本文算法的有效性。表4中实验数据为在TT100k交通标识数据集上,几种常见交通标识在以上四种检测算法下的平均精度(AP)值。

表3 各模型平均精准度

表4 几种常见交通标识的平均检测精度

续表4

2.2 定性分析

为了更直观地展示实验效果,将本文算法与FPN、YOLOv3和Faster R-CNN三种算法的对比实验结果可视化。场景均是选自TT100k交通标识数据集,分为强光照射场景、弱光照射场景和夜晚场景。场景中准确检出的交通标识均用正方形(□)框标出、漏检的交通标识均用正三角形(△)框标出、误检交通标识均用倒三角形(▽)框标出,使用的算法从左到右依次为:Faster R-CNN、YOLOv3、FPN和本文算法,如图7所示。

(a) 强光照射场景

(b) 弱光照射场景

(c) 夜晚场景图7 交通标识检测结果对比

在强光照射场景中:光照强烈,摄像机距交通标识的距离较远,目标数量较多,交通标识基本都很小。在弱光照射场景中:光照较弱,摄像机距交通标识的距离较近,存在少量中等尺度交通标识和数量较多的尺度小的交通标识。在夜晚场景中:光照很弱,摄像机距交通标识的距离较近,交通标识的尺度大多为中等大小。在以上三种场景中,Faster R-CNN会有较多的目标漏检;YOLOv3能够准确检测出大部分的交通标识,但是会有部分误检和漏检情况;FPN能够检测出极大部分的交通标识,会存在少量小尺度的交通标识的误检和漏检;本文算法基本能够检测全部的交通标识,极少情况下会出现误检和漏检现象。

3 结 语

本文提出一种基于深度学习级联网络的交通标识牌检测算法,将算法在TT100k交通标识数据集上测试验证,并与FPN、YOLOv3、Faster R-CNN三种算法进行对比。该算法在TT100k上平均检测精度为85.3%,与FPN算法相比提高了2百分点左右,与YOLOv3算法相比提高了3百分点左右。实验结果表明,本文提出的级联网络模型在交通标识检测上有效。2018年,我们使用该算法参加了由国家自然科学基金委员会主办的“中国智能车未来挑战赛”——离线测试,并在交通信号标识检测项目中取得了全国第一名的成绩。此外实验中发现该算法检测速度比较慢,距离交通标识的实时性检测仍有差距。如何在不降低检测精准度的条件下精简网络结构、降低运算量,将是我们未来的主要研究方向。

猜你喜欢
卷积尺度交通
基于全卷积神经网络的猪背膘厚快速准确测定
环境史衰败论叙事的正误及其评判尺度
基于FPGA的卷积神经网络加速优化方法
基于图像处理与卷积神经网络的零件识别
基于深度卷积网络与空洞卷积融合的人群计数
以长时间尺度看世界
9
图说交通
发达交通之磁悬浮列车
阅读理解三则