基于深度可分离卷积的交通标志识别算法
2020-01-15杨晋生杨雁南李天骄
杨晋生,杨雁南,李天骄
(天津大学 微电子学院,天津030072)
1 引 言
随着信息时代的到来,在科学研究、互联网应用、电子商务、自由驾驶等诸多应用领域对于人工智能的需求日益迫切[1]。在这种情况下,基于机器学习和人工智能的研究必将成为今后计算机和通信技术发展中最重要的一部分[2]。
交通标志是现代公路交通环境中最重要的组成部分,随着社会的进步,路面交通变得多样化、立体化,交通标志也因此变得多种多样。自动驾驶作为时下最热门的内容,包括路面感知、路径规划、决策等技术。其中,作为车辆行驶的指挥者,交通标志的识别是自动驾驶和车辆辅助驾驶技术中最核心的技术之一。受天气状况、光照变化和硬件设施的限制,在车辆行驶过程中所捕获到的图像常常受到图像模糊、路标褪色、背景掩盖等问题的影响,如何快速准确地识别交通标志成为了当前研究的一个重要方向。
目前对于交通标志的识别主要可分为传统图像处理方法和基于卷积神经网络两个大的研究方向。采用传统图像处理方法进行目标识别多采用经典的基于HOG-SVM[3]的方法进行目标识别。卷积神经网络(Convolutional Neural Networks,CNN)的出现为目标识别提供了一种全新的处理方法。采用深度学习进行目标识别大致分为两类:基于候选区域目标检测器的网络如AlexNet[4]、R-CNN[5]、Fast R-CNN[6]、Faster R-CNN[7]、R-FCN[8]、FPN[9]等;基于端到端的不需要提供候选区域的网络如SSD[10]、YOLO[11]等。基于候选区域目标检测采用选择性搜索算法进行评估相邻图像间的相似度,将相似度高的合并,进而选出合适的子图进行特征提取。基于候选区域目标检测的算法具有较高的精度,但同时由于其庞大的计算量,其检测速度并不能满足交通标志识别所需要的时效性。如Ren等人提出的Faster R-CNN,其在VOC2012[12]数据集上的检测速度只有5 f/s。由于基于候选区域的检测算法普遍存在运算速度慢、训练复杂的特点,YOLO创造性地提出了将物体定位和物体分类合二为一的算法,大大提高了对物体识别速度的要求,使识别速度提升到了45 f/s,满足了对检测实效性的要求。但同时YOLO系列算法也存在识别精度较差的缺陷,在对COCO数据集中20类物体的检测中仅获得平均精度(mAP)63%的结果,其在小目标检测上更有着明显的缺陷。尽管如此,其在检测速度上的优势,使其在移动端部署有着得天独厚的优势。
近年来,在保证检测速度的同时提升检测精度已经成为了当下目标检测算法中最热门的研究领域。SSD综合了检测精度最高的Faster-RCNN和检测速度最快的YOLO的优势,在识别精度和速度上进行了平衡。2017年,Redmon[13]在YOLO的基础上进行了优化形成了YOLOv2,全新的YOLOv2在VOC2017数据集上获得了76.8 mAP,优于使用ResNet的SSD和Faster-RCNN,2018年Redmon在YOLOv2的基础上引入了多尺度预测产生了YOLOv3,对小目标的检测进行了优化,同时基于YOLOv3也设计了更简化的版本YOLOv3-tiny,有利于其在移动端上的应用。
本文所做的贡献有:
(1)针对YOLv3-tiny检测精度低的问题,采用深度可分离卷积(Depthwise Separable Convolution[14])搭建主干网络,相较于普通的卷积运算,大量减少计算量,从而在相同的计算量条件下搭建更多层次的网络,提取更高层次的语义特征。
(2)优化深度可分离卷积计算模块,采用swish[15]函数的简化版本h-swish做为激活函数,在保证激活函数计算量小的同时保留更多的特征,减少因网络层数增加而造成的随机梯度消失,进而提高检测的精度。
(3)在YOLOv3-tiny的多尺度特征融合网络基础上,增加8倍下采样融合,构建更多尺度的特征融合网络,提高对小目标的检测精度。
2 目标检测原理
2.1 YOLO目标检测原理
YOLO(You Only Look Once)是目前最先进的端对端目标检测的算法之一。YOLO将多目标检测转换成一个回归问题,去除了以往结构中提取待检测区域(Proposal)的步骤,通过一次回归运算完成目标位置、目标种类及其目标置信度的工作。通过调整网络最终输出种类的数量控制最后输出的检测矢量大小,进而实现对多类物体的检测。
YOLOv3作为目前YOLO系列最新的一代算法,是在吸取了Faster R-CNN采用预测Anchor box偏移值代替直接预测目标框中心位置坐标值、借鉴Resnet加入残差模块、增加FPN[16](Feature pyramid networks)等方法后提出的最新的网络结构。YOLOv3网络由骨干的Darknet-53网络和基于FPN的多尺度融合的检测网络构成。通过在13×13、26×26、52×52三种不同尺度的YOLO层上进行预测,极大的改善了对不同尺度大小问题和被遮挡物体的效果。在针对多目标检测问题上,使用Logistic分类器取代了Softmax分类器,采用多尺度随机训练来增强网络的鲁棒性。
(1)
YOLO系列从YOLOv2开始使用Anchor box的思想进行预测框的迭代逼近,对预测框的逼近算法进行了更新,每一个预测框返回值参数为(bx,by,bw,bh),其具体计算方式如公式(2)所示:
(2)
YOLOv3的损失函数如公式(3)所示:
(3)
YOLOv3-Tiny作为YOLOv3的简化版本,在牺牲了一部分检测精度的情况下将检测速度的优势进一步发挥。YOLOv3-Tiny的主干网络由7层的类Darknet-19网络构成,输出13×13和26×26两种不同尺度的特征进行检测特征回归,预测出多个预测框和其相应的置信度得分,通过使用非极大抑制(Non-maximum suppression,NMS)算法剔除掉低置信度的预测结果,保留高置信度的预测框输出。
2.2 深度可分离网络
对于传统的卷积计算,在进行卷积运算时需要同时将对应图像区域中的所有通道进行考虑。深度可分离卷积提出了一种将图像的对应区域和通道分开进行处理,先考虑区域特征,然后再考虑通道特征,将传统的卷积运算分解成Depthwise 和Pointwise两个过程。
对于传统的卷积运算,有N×H×W×C的输入与k个n×n的卷积核进行卷积运算,在pad=1和stride=1的情况下输出为N×H×W×k。
对于深度可分离卷积,在Depthwise过程中,将输入的N×H×W×C划分成C组,对于每一组做n×n的卷积运算,收集卷积运算中的每个channel的空间特征。
图2 Depthwise卷积过程Fig.2 Depthwise convolution process
在Pointwise过程中,对Depthwise中的结果进行k个1×1的卷积运算,收集每个point上的特征,也就是卷积运算中的位置特征,经过Pointwise和Depthwise两个步骤,最终输出的结果也是N×H×W×k。
图3 Pointwise卷积过程Fig.3 Pointwise convolution process
对于N×H×W×C和k×n×n的卷积运算,普通的卷积运算运算量为H×W×C×k×n×n,对于深度可分离卷积运算,在Depthwise阶段计算量为H×W×C×n×n;在Pointwise阶段计算量为H×W×C×k,总的计算量为H×W×C×(k+n×n)。
相较于普通的卷积计算,其计算量压缩P如公式(4)所示:
(4)
3 改进的网络模型
3.1 优化的深度可分离卷积的特征提取主体网络
为了实现对交通标志的动态识别,解决现在YOLOv3-tiny等YOLO系列轻型网络检测精度低的问题,采用可分离深度卷积重新构建了特征提取网络,代替YOLOv3-tiny中的类Darknet-19网络,提取更高层次的图像特征信息。
相较于普通的卷积运算模块,基础的深度可分离卷积模块如图4所示。
图4 标准卷积与深度可分离卷积模块Fig.4 Standard convolution and depth separable convolution module
与普通的卷积模块相似,深度可分离卷积模块在Depthwise和Pointwise层后增加BN层和激活函数层。但是采用ReLU作为激活函数,因为其对负值取0的特性,会丢失掉部分的特征信息的问题,所以在Depthwise Conv模块后选择Leaky ReLU代替ReLU作为激活函数。同时在1×1的Conv层中,选择使用h-swish函数来代替Relu作为激活函数,来减少由于网络层数增加造成的网络梯度消失的影响。
h-swish函数是swish激活函数的简化版,swish的计算方法如公式(5)所示:
(5)
其中:β是个常数或可训练的参数。swish 具备无上界有下界、平滑、非单调的特性。
相较于ReLU激活函数及其衍生激活函数,在深层网络中,swish激活函数可以很好的提高神经网络的准确性。h-swish函数的计算方式如公式(6)所示:
(6)
两种激活函数图像对比如图5所示。相较于swish函数需要计算Sigmoid从而计算时间长的特点,在图像上h-swish函数在保持swish激活函数具备无上界有下界、平滑、非单调的特点外,其函数只由ReLU函数构成外,极大的减少了swish函数的运算时间,实现了精度和运算速度上的兼容。
图5 h-swish函数与swish函数对比图Fig.5 Comparison of h-swish function and swish function
优化后的基础深度可分离卷积模块结构如下图6所示。
图6 优化的深度可分离卷积模块Fig.6 Optimized deep separable convolution module
3.2 优化的多尺度融合网络
采用优化后的深度可分离卷积模块搭建主体网络提取图像特征。对于实时的交通路标检测,其重点是对于中远距离交通路标的检测,也就是对图像中中小目标的检测,为了提高对中远距离交通标志的检测,给予驾驶员足够的反应时间。为减少中小尺度的目标语义损失、更好的提取中小目标的特征,同时避免高分辨率特征提取增加较大的计算量。在网络设置中减少对32倍下采样的特征提取层设置,在8倍下采样和16倍下采样设置更多层次网络进行的特征提取。特征提取主体网络结构如表1所示。
表1 特征提取主体网络Tab.1 Feature extraction subject network
续 表
YOLOv3-tiny采用16倍下采样和32倍下采样的两个尺度的特征融合,这意味着当输入的检测目标小于16 pixel×16 pixel时,就丧失了对该目标的检测能力。为提高网络对小目标的检测精度,提高对目标位置信息的判断,使得网络获得更多小目标的特征信息。在YOLOv3-tiny的基础上增加对网络8倍下采样的尺度融合,将原本16倍下采样融合后的输出结果进行上采样,与主体网络中输出的8倍下采样结果进行融合,建立8倍下采样的融合特征检测层,收集8 pixel×8 pixel尺度的特征,提高对小目标的检测和位置信息判断。
网络结构示意图如图7所示。
图7 网络结构示意图Fig.7 Schematic diagram of the network structure
4 结果分析
本文采用中国交通标志检测数据集(CCTSDB[17])作为实验数据集,实验使用Ubuntu 16.04 操作系统、Darknet深度学习框架、CUDA9.0进行加速,硬件配置为:CPU Intel Core i7-9750H、GPU Nvidia GTX 1080。本次实验中,我们将从网络计算量大小、模型检测速度、检测准确度和召回率等多个指标与将本文算法与目前最主流的轻型网络YOLOv3-tiny、YOLOv2-tiny以及YOLO系列的最新版本YOLOv3进行对比。
4.1 数据集
中国交通标志检测数据集(CCTSDB)是在原中国中国交通标志数据集(CTSD)数据集的基础上扩充得到的。数据集包含15 734张由摄像机拍摄而成的现实路况图片。数据集由正样本和负样本构成,正样本中包含一个或多个交通标志,负样本不包含交通标志,所有图像横纵尺寸均大于416 pixel。数据集采用PASCAL VOC格式进行标注,标注数据依据交通标志的作用分为警告标志(Warining)指示标志(Mandatory)、禁止标志(Prohibitory)3类。本次训练选取前2 000张为验证集,剩余图片作为训练集对数据集中标注的3类交通标志进行检测,训练集与验证集比例约为7∶1。
4.2 训练参数设置
本次实验训练阶段初始学习率为 0.001,衰减系数为0.000 5,在训练迭代次数为40 000次和 45 000次时,分别将学习率降低为0.000 1和 0.000 01。使损失函数进一步收敛,在训练阶段利用增加对比度、调整曝光量和旋转图像方法对训练集中图像进行扩充。
从YOLOv2开始引入anchor box的思想,YOLO系列中设置的初始anchor box是作者使用K-means聚类方法在COCO数据集上聚类的结果,对本次训练所检测的交通标志并不适用,因此需要重新设置anchor box。在本次实验中使用平均重叠度(Avg IOU)这一指标作为初始anchor box的聚类指标,其计算公式如公式(7)所示:
(7)
其中:B表示 ground truth 中标注好的目标框位置。C表示设置anchor的中心,nk表示第k个anchor box样本的个数,n表示样本的总个数,k表示anchor box的个数,IIOU(B,C)表示簇的中心框和聚类框的交并比。
对本文中数据进行Avg IOU聚类,综合网络结构和Avg IOU后,选择k=6,设置6个初始anchor box,各个anchor对应长宽分别为:(7,9),(14,18),(23,30),(26,41),(41,62),(74,106)。
本文算法模型及各对比算法模型的损失函数下降图如图8所示。
图8 损失函数下降图Fig.8 Loss function decline graph
由损失函数曲线可以看出,对比4种算法,YOLOv3-tiny收敛最快,在40 000次迭代后趋于稳定,但损失函数下降波动相较本文算法波动较大,本文算法损失函数由于采用深度可分离卷积搭建特征提取网络,因此收敛速度较普通卷积相比较慢在70 000次左右损失函数趋于平稳,但由于增加了更多层次的特征提取网络和三尺度的特征融合,训练平稳后的损失函数更小,精度更高。YOLOv3作为大型网络,其下降趋势平稳且波动最小,但由于YOLOv3网络层数多且训练参数复杂,因此迭代收敛速度较慢,在80 000次迭代后才趋于平稳,但训练平稳后损失函数最小,精度也最高。YOLOv2-tiny虽然网络结构最简单,训练速度快,但其收敛最慢,在100 000次训练之后才趋于稳定,且稳定后的收敛函数数值最大,精度最低。
4.3 实验结果与分析
为进一步验证本模型能有效的降低了卷积运算中的计算量和参数数量,本文采用浮点数计算量BFLOPs(Billion Floating Point Operations)对传统的卷积模型和本文所提出的基于深度可分离卷积的计算量分析。在本文中52×52,26×26,13×13三个尺度上的基于传统卷积和基于深度可分离卷积的运算次数对比如表2所示。
表2 浮点数计算量对比表Tab.2 Comparison of floating point calculation amount
由此可见,对于3个尺度上的计算,相较于传统的卷积运算,基于深度可分离卷积的运算模块均有效的减少了运算的计算量。
为进一步评价本算法效果,类别检测平均精准度(Average Precision,AP)、平均精度(Mean Average Precision,mAP)、每秒帧数(Frames Per Second,fps)作为评价标准,将本文网络结构与YOLOv3-tiny、YOLOv2-tiny和YOLOv3进行对比。
平均精准度及平均精度计算方式如公式(8)所示:
(8)
其中:APc采用VOC2007[18]的计算方式进行计算,将召回率曲线中划分共11个等距点(0,0.1,0.2,…,0.9,1)后,求其最大精度的平均值可获得平均精度AP,即各类物体的平均准确率。N为网络中物体类别的数量,mAP为各类物体AP的平均数。
本文使用法每秒处理的图像数量f/s作为评价网络检测速度的指标。
将本文算法与YOLOv3-tiny、YOLOv2-tiny、YOLOv3的结果进行对比,所有算法均采用上文设置的anchor box,将其在2000张验证集上检测,其各项性能对比如表3所示。
从表3可以看出,本文提出的算法在验证集上获得mAP为97.54%、Warining类准确率98.57%、Mandatory类准确率96.03%、Prohibitory类准确率98.17%、检测速度为201.5 f/s,相较于YOLOv3-tiny分别提高了14.01%,9.74%,12.43%、19.86%,相较于YOLOv2-tiny分别提高了39.15%,30.62%,36.99%,49.84%,检测速度指标上3种算法基本持平,均稳定在200 f/s以上。其主要原因是本文方法和YOLOv3-tiny均采用特征图像金字塔搭建多尺度特征融合,将多个尺度的特征融合进行检测,因此在检测精度上较YOLOv2-tiny有了较大提升。本文算法较YOLOv3-tiny使用优化后的深度可分离卷积搭建了27层特征提取网络,较YOLOv3-tiny原本的7层的特征提取网络有了明显的提升,同时加入了8倍的下采样,便于采集中小型目标的特征,使用h-swish函数作为激活函数有利于保留更多的特征信息,提高了检测精度。本文算法作为轻型网络,在mAP值较YOLOv3上较YOLOv3这样的大型网络下降了1.33%,但在检测速度上提高了167.7 f/s。同时相较YOLOv3在检测过程中参数多、泛化能力弱的缺点有了长足的进步。
表3 不同算法性能对比表Tab.3 Performance comparison of different algorithms
续 表
图9 各种算法的检测效果图Fig.9 Detection effect chart of various algorithms
图9为本文算法与YOLOv3、YOLOv3-tiny、YOLOv2-tiny对交通标志的检测效果对比图。其中图(a)、(b)、(c)、(d)中,本文算法、YOLOv3、和YOLOv3-tiny均可有效对交通标志进行检测,但YOLOv2因为没有采用多尺度检测,所以检测精度最差,对部分交通标志没有办法进行识别。图(e)、(f)、(g)、(h)中,面对交通标志褪色的现象,本文算法、YOLOv3均可正确识别交通标志,但YOLOv3-tiny因为只有两个层次的检测,没有进行小目标的融合,因此没有办法很好地识别交通标志,YOLOv2-tiny除了没有办法识别交通标志外还出现了明显的预测位置偏移。图(h)、(i)、(j)、(k)中当面对天气变暗的条件下,本文算法、YOLOv3和YOLOv3-tiny均能准确识别交通标志,YOLOv2-tiny并不能准确检测。
5 结 论
本文根据目前针对交通标志识别的算法难以兼顾检测速度和检测精度的问题,提出了一种基于深度可分离卷积的轻量级交通标志识别网络。分析了目标识别算法的发展过程,对YOLO系列算法和深度可分离卷积思想进行了介绍。使用深度可分离卷积搭建了特征提取网络代替YOLOv3-tiny的特征提取网络,同时为更好地识别中小目标,增加了8倍下采样的尺度融合,在搭建网络过程中使用h-swish激活函数代替ReLU激活函数,保留了更多的特征信息。实验结果表明,本文提出的算法相较于YOLOv3-tiny有了较大的提升,交通标志的识别平均精度由83.53%提高到了97.54%,检测速度达到了201.5 f/s,同时相较YOLO系列网络具有更好的泛化能力,有效满足了自动驾驶中对于交通标志检测准确性和时效性的需求。