APP下载

结合FPN的改进YOLOv3车辆实时检测算法

2020-05-31刚,韩

关键词:网络结构残差车辆

李 刚,韩 超

(安徽工程大学 电气工程学院,安徽 芜湖 241000)

随着经济和社会的发展,家用轿车和公共交通工具数量与日俱增,给交通道路的运输带来不小的压力,特别是枢纽路口和繁忙路段拥堵现象频发。因此,如何改善和疏解现有的拥堵问题是近些年大家共同关心的问题,而智能交通系统(ITS)的出现给解决交通拥堵问题带来福音。因此车辆检测在ITS系统数据前端采集的过程中显得尤为重要,其所采集到的数据的全面性和有效性为智能交通控制、疏解交通拥堵问题与交通违法证据抓拍提供了数据保障。其广阔的应用前景和潜在的研究价值吸引了国内外众多研究学者重点探究。

当前,许多传统的方法已经被采用,例如:GPS[1]和无线传感器[2]等方法的使用。然而,越来越多的研究学者发现传统的检测手段具有难以克服外界干扰的局限性,如天气的变化、遮挡、以及车速改变带来的检测效果差等问题。因此研究者们开始关注基于视频图像的车辆检测的算法和技术[3]。相较于传统方法,基于视频图像的车辆检测技术能够提供更全面、更细微的信息。对于外界干扰的变化有着更加稳定的检测效果。文献[4]中,Hedi Harzallah等人介绍的一种滑动窗口遍历待检测图像的检测手段,通过提取覆盖区域的HOG[5]特征,将其输入SVM分类器1。该分类器将对图像中的非目标区域进行剔除进而把目标区域很好的保留下来。然后将保留区域的HOG特征和SIFT特征输入SVM分类器2。最后由分类器2对目标车辆进行检测和候选验证。然而滑动窗口是对整个图像遍历,并且需要设定不同的尺度,因此其在区域选择策略上针对性有所不足,产生冗余窗口较多,对后续特性提取和分类影响较为明显。文献[6]中,Bautista C M等人提出基于卷积神经网络[7](CNN)的车辆检测的方法,通过滑动窗口寻找候选区域,但是遍历图像时容易出现窗口间隔较小和窗口尺度倍数过小等问题,以致检测实时性降低。针对滑动窗口实时性较差问题,研究者提出基于感兴趣区域(Region of Interesting)的区域提名法。文献[8]中,FanQ在生成候选区域、特征提取、候选验证等阶段均应用了Faster R-CNN[9]。该方法较于滑动窗口,车辆检测速度虽得到一定程度提升,仍远不能满足交通监控的实时性需求。2015年,一种全新端到端(End-to-End)的检测算法被提出,即Redmon J提出的YOLO[10]检测算法。相较于其它检测技术,YOLO算法模糊了候选区域、特征提取、候选验证三个阶段的区别,直接快速地完成检测任务。新的问题是YOLO算法具有较好的实时性,但准确率与召回率均不高。因此研究人员通过分析和改进设计出了新的网络结构YOLOv2、YOLOv3,采用分批规范化、高分辨率预训练网络以及多种分辨率图片训练等方法,相比YOLO模型框架检测性能与速度显著提高,是目前最先进的目标检测算法之一。通过分析YOLOv3特征提取网络,发现其依靠残差结构加深网络层数,通过加深网络层提取更加丰富的特征。对比YOLOv1和YOLOv2,其特征提取网络一定程度上提高检测精度,但是对于小目标车辆的检测和受遮挡较为严重的车辆目标仍存在漏检、错检的问题,原因是其残差块的结构较为简单,对于特征的提取不够丰富。基于此选用FPN网络结构特征,在YOLOv3检测算法基础上提出结合FPN改进后的YOLOv3网络模型结构,重新构造金字塔模块替换原来的残差模块,网络层将得到更丰富的语义特征(即目标信息),有效增强了网络中小目标车辆的语义信息。并进行nuscenes数据集和自建数据集训练和验证,以期在小目标车辆检测精度和召回率方面得到改善,有效缓解小目标车辆漏检错检等问题。

1 提出方法

分析YOLOv3的特征提取网络可以发现其依靠残差结构加深了网络层数,通过更深的网络层来提取更加丰富的特征。虽然相比于v1和v2新的特征提取网络对于精度的提高有一定的帮助,但是对于小目标的检测仍存在漏检的问题。通过分析YOLOv3的网络结构,可以发现其残差块的结构较为简单,对于小目标车辆特征的提取还是不够丰富。故采用FPN网络的结构特征,重新构造了金字塔模块替换原来的残差模块,新设计的双金字塔模块如图1所示。

图1 双金字塔模型的网络结构

图2 结合FPN改进后的YOLO-V3网络结构

在一个双金字塔模块内同时包含有大小特征图,在金字塔的上层放置的是大特征图,大特征图能够更好体现目标的区域信息。之后通过步长为2的卷积层将特征图的大小缩小,并获得一定深度的网络,这时的网络层相较于之前会具有更丰富的语义特征即目标信息。最后使用反卷积网络将特征图放大,并与之前的网络进行融合。在模块的尾端,接入1x1的卷积层,对提取到的信息进行整合,整合之后输入下一个金字塔模块。对于修改后的网络结构如图2所示。

1.1 YOLOv3介绍

YOLOv3的网络模型结构主要由75个卷基层构成,用作来分析物体特征。由于没有使用全连接层,其网络可以对应任意大小的输入图像。此外,值得注意的是YOLOv3并没有选择加入池化层,取而代之的是将卷基层的stride设为2来达到下采样的效果。因为YOLOv3采用了残差网络结构,形成更深的网络层次,以及进行的是多尺度检测,提升了mAP及小物体检测效果。如果采用COCOmAP50做评估指标,YOLOv3的表现相当惊人,在精确度相当的情况下,其速度是其它模型的3、4倍。而在训练过程中对于输入的每幅图像,YOLOv3首先会预测三个不同大小的3D-tensor,对应着三个不同scale。设计这三个scale的目的就是为了能够检测出不同大小的物体。以13×13的tensor为例,对于这个scale,原始输入图像会被分成分割成13×13的网格单元,每个网格单元对应着3D-tensor中的1×1×255这样一个长条形voxel。255这个数字来源于(3×(4+1+80)),其中的数字代表bounding-box的坐标,物体识别度(objectness score),以及相对应的每个class的confidence。其次,如果训练集中某一个ground-truth对应的bounding-box中心恰好落在了输入图像的某一个grid-cell中,那么此grid-cell就负责预测该物体的bounding-box,为原图中标记的边框。这个grid-cell所对应的objectness-score就被赋予1,其余的grid-cell则为0。此外,每个grid-cell还被赋予3个不同大小的prior-box。在学习的过程中,这个grid-cell通过训练会逐渐学会如何选择哪个大小的prior-box,以及对这个prior-box进行微调。最后grid-cell将按照特定规则只选取与ground-truth-bounding-box的交并比最高的那个prior-box。分析检测流程的整个环节可以看出,YOLOv3算法直接省去了基于候选区域寻找目标这一步骤,采用回归的思想即可对目标进行位置与类别的判断。也正是由于YOLOv3算法将汽车的检测转化为一个回归问题,才使得检测速度大大提升,从而使得该算法能够轻易满足实时检测的要求。

1.2 训练过程

本文在训练中摒弃了之前的softmax,而是直接用逻辑回归对每个类别进行独立二分类判定,用交叉熵计算损失。并且使用独立的逻辑回归来代替softmax,可以适配具有重叠标签的数据集。对于1维Anchor Box置信度,同样也是使用逻辑回归作为激活函数,用交叉熵作为损失函数。此外,其四维位置数值tx,t0,tw,th,经过如下公式进行解码,可得到预测框的中心坐标(w,h)。其中σ(tx),σ(t0)是基于矩形框中心点左上角格点坐标的偏移量;σ是激活函数,这里使用sigmoid函数;pw,ph是先验框的宽、高。通过以上描述,可计算出实际预测框的宽高(bw,bh)分别如公式(1)(2)(3)(4)。

bx=σ(tx)+cx

(1)

b0=σ(t0)+cx

(2)

bw=pwetw

(3)

bh=pheth

(4)

(5)

1.3 评价方法

为了比较正确地评价本文提出的检测模型的效果[12],在此先作True Vehicle、True N-Vehicle、False Vehicle、False N-Vehicle 4种定义。①True Vehicle:目标为汽车,且被系统正确成功地检测出来;②TrueN-Vehicle:目标非汽车种类,且系统未将其错误检测为汽车;③False Vehicle:目标非汽车种类,但被系统错误地检测成了汽车(误检);④False N-Vehicle:目标为汽车,但系统没有将其检测为汽车(漏检)。在此基础上选用三个指标来衡量本文算法性能的质量:

(1)精确度(Precision),精确度指的是被正确检测出的汽车占检测出的汽车的比例,其计算表达式为此:

(6)

(2)召回率(Recall),召回率指的是被正确检测出的汽车占验证集中所有汽车的比例,其计算表达式为:

(7)

(3)边界框对应的置信度(Confidence),置信度指的是一种用来判断边框是否包含物体及物体的位置是否准确的指标,通过图像交并比(IOU)来计算。其计算表达式如下:

(8)

2 实验结果与分析

2.1实验平台

实验中主要硬件配置如下:深度学习软件学习框架,Tensorflow;处理器,Intel(R)Core(R)i7-8700;显卡,NVIDIA GeForce RTX 2080Ti;内存,8GB;程序设计语言,phython语言。

2.2 实验结果与分析

本文的实验数据来源于nuscenes数据集和自建数据集。自建数据集取景具体位置为安徽省芜湖市北京中路安徽工程大学西门天桥上方,并仿照交通摄像头拍摄角度拍摄得到,按照车流疏密程度分别拍取了简单样本和困难样本。最后从nuscenes数据集选取2000幅样本图片用来实验验证,其中训练集1600幅,测试集400幅。自建数据集500幅,其中训练集400幅,测试集100幅。为了确定优化后算法的性能提升,将其分别与Faster-Rcnn和YOLOv3算法进行比较。关于nuscenes数据集检测效果对比如图a、a(1)、a(2)、a(3),不难发现Faster-Rcnn和YOLOv3算法出现了尾部小车辆的漏检现象,相比之下本文算法较好的解决了漏检问题。关于自建数据集(简单样本)检测效果图对比如图b、b(1)、b(2)、b(3),本文算法成功将远处细小车辆检测出来。对于自建数据集(困难样本)不同算法检测效果对比如图c、c(1)、c(2)、c(3),发现在车流量较大、光线较暗情况下进行检测,本文算法对于远处密集车辆仍有着很好的检测效果。

a 数据集原图a(1) Faster-Rcnn检测效果a(2) YOLOv3检测效果faster-1a(3) 本文算法检测效果b 自建简单样本原图b(1) Faster-Rcnn检测效果YOLO-1YOLO-NEW-1b(2) YOLOv3检测效果b(3) 本文算法检测效果c 自建困难样本原图fasterYOLOYOLO-Newc(1) Faster-Rcnn检测效果c(2) YOLOv3检测效果c(3) 本文算法检测效果

nuscenes数据集对比对比结果如下表1所示,自建数据集对比结果如下表2所示。

表1 实验结果

表2 实验结果

为了更好的验证本文算法的可行性和优越性,本文选取了目前检测效果较好的Faster-Rcnn算法和YOLOv3算法分别进行了对比,由表1和表2的结果对比可以发现,本文提出的方法在综合性能上有着不错的提升,其中在检测精度上较原有YOLO算法提升了5个百分点,此外召回率也从原有的83%提升至89%,并且在自建数据集上也得到了良好的检测精度和召回率。速度方面虽然相比原有YOLOv3算法略为慢些,但在实际检测过程中影响不明显,完全能够达到实时性检测的要求。

结语

本文提出的结合FPN的改进YOLOv3车辆实时检测算法,通过借鉴FPN网络的结构特征,将原有YOLOv3网络结构中的残差模块剔除重新构造并且替换成了新设计的双金字塔模块。经过训练和验证可知,该方法在满足实时检测速度要求的同时,提高了车辆目标检测的准确率与召回率,尤其对于小目标车辆的检测效果明显。这对于无人驾驶系统和智能交通系统的研究具有一定的应用价值。但对于存在严重遮挡和过远距离车辆的检测效果尚未达到最佳,解决这个问题将是未来的一个重要研究方向。

猜你喜欢

网络结构残差车辆
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
快递网络结构研究进展
基于残差学习的自适应无人机目标跟踪算法
基于深度卷积的残差三生网络研究与应用
基于AutoML的保护区物种识别①
车辆
冬天路滑 远离车辆
基于时效网络的空间信息网络结构脆弱性分析方法研究
基于互信息的贝叶斯网络结构学习