计算机视觉领域中,目标检测一直是工业应用中比较热门且成熟的应用领域,它涉及场景中目标分类和目标定位的结合,比如人脸识别、车牌识别及行人检测等.因为近年来硬件计算能力变得越来越强,所以在卷积神经网络基础上进行深度学习的研究也得到了不断发展,特别是在机器视觉方面已有不错的成果.刘文生等提出了SSD(单镜头多箱检测器)算法,采用回归方法进行检测,并将定位和分类集成到一个网络中.SSD算法基于VGG-16网络结构,将VGG-16中的全连接层替换为卷积层[1],然后将各个卷积层分别输出到各自的特征映射,作为特征图预测的输入,最后生成一个多尺度的特征映射进行回归.而YOLO算法是将目标检测转换成一个回归问题,使检测速度得到了极大的提升,不过仍存在一些不足,即检测小目标所得的结果无法达到较高精度[2].通过各路学者不断的努力,YOLO算法得以一次次升级,现在已经升级为YOLOv3,它采用K-means聚类的方法在数据集中得出其边界框最佳的初始位置.为了提高小目标的检测精度,算法采用了多尺度融合[3],但上述算法的速度还达不到实时效果.对于无人驾驶问题,在提高检测精度的同时,也需要提高实时性能,为了平衡速度与精度两者之间的利弊,本文中改进了YOLOv3网络,使其更适合在硬件上运行.
将自动驾驶应用到实际中,既要提高计算能力,又要考虑实物的成本以及大小等问题,若要满足这些需求,则需使用高性能并具有GPU的多核平台.本文使用了NVIDIA公司开发的嵌入式视觉计算系统Jetson TX1,TX1以256核Maxwell架构GPU为主,在性能上十分节能高效并且外观小巧[4].以Jetson TX1作为核心开发板,将前置摄像头采集到的图像信息输入到TX1中,再通过目标检测算法,检测、识别多种目标,并将读取的信息存储至数据库,同时通过显示屏显示,系统硬件原理框图如图1所示.目前,应用在TX1上的图像检测计算的帧速率虽然很可观,但对于实际应用来说,还有一定差距,因此本文选用最新的YOLOv3算法在此平台上进行改进、提速.
图1 系统硬件原理框图
Fig.1 Block diagram of system hardware principle
基于端到端YOLO系列算法的步骤为:首先输入图像并提取网络特征,得到一定大小的特征图(比如13×13),然后将输入图像划分成13×13个单元格,接着进行边界框预测.某个目标的中心坐标落在哪个单元格中,则由该单元格来预测该目标,每个单元格都会预测固定数量的边界框(YOLOv1中是2个,YOLOv2中是5个,YOLOv3中是3个),这几个边界框中只有最大的边界框才会被选定用来预测该目标[5].
相较于前两代YOLO,第三代YOLOv3有了很大进步,各方面都复杂得多,而且无论是在速度方面还是结果的精度方面,对比其他深度学习算法(SSD、R-FCN等),YOLOv3的优势都是最明显的[6].YOLOv3首先对边界框预测,采用K-means聚类的方式对Anchor Box进行初始化,得到多个Anchor Box的尺寸、位置信息[7],其次,采用多标签分类,该操作是通过logistic分类器来实现的,取代了以往的softmax分类,这是YOLOv3的一大亮点,解决了重叠类别标签检测不出的问题.另外,类别预测中的损失函数采用二元交叉熵,特别针对小目标检测,还采用了多尺度融合进行特征提取,采用Darknet-53特征提取网络,包括53个卷积层和残差结构.YOLOv3虽然改进了YOLO一直以来不擅长检测小物体的缺点,并一直保证着高检测速度,但平均准确率(mAP)并不高.
2.2.1 激活函数的改进
YOLOv3中所采用的损失函数主要由激活函数sigmoid和二元交叉熵组成,其中输入的连续实值经过sigmoid函数激活后,输出值都会在0~1范围内,但在深度神经网络中梯度反向传递时,要对sigmoid求导,求导后两边趋向于0,也就意味着很大几率会出现梯度消失的现象,甚至还有几率发生梯度爆炸,而且sigmoid所输出数据都大于0,那么收敛速度会受到相应的影响[8].本文结合sigmoid函数和ReLU函数存在的问题,将激活函数改进为
(1)
式中,参数α、β为可调整参数,神经网络更新α的方式为
(2)
式中,μ、ε分别为激活函数通过反向传播进行训练得到的动量和学习率.本文采用αi=0.25作为初始值,β则控制着负值部分在何时饱和,最终通过不断测试对比,选取β=0.5[9].改进后的激活函数其总体输出接近0均值,这样下一层的神经元得到0均值作为输入,能够提升收敛速度,还解决了梯度消失以及ReLU函数中的Dead ReLU问题.加入参数α、β后,可以避免引起某些神经元可能永远不会被激活,导致相应的参数永远不能被更新的情况.
2.2.2 采用多级特征金字塔网络
YOLOv3中采用的多尺度融合(FPN)是通过自上而下的方式融合深层和浅层的特征来构造特征金字塔.虽然采用FPN后,大幅度提升了小物体的检测能力,但对于一些大、中物体检测能力偏弱,这是因为金字塔中的每个特征图(用于检测特定大小范围内的对象)主要或甚至仅通过骨干网络单层构建,即主要或仅包含单层信息.图像中所包含的各个目标大小不一,所以应当根据相应的特征分别进行检测,目标可大致分为简单目标与复杂目标两种,对于前者仅仅是浅层特征便可检测到,其所包含语义信息不多,可优势在于目标位置准确;对于后者,则需要较深层的特征,其语义信息相对更多,可不足在于目标位置较模糊[10].而多级特征金字塔网络最后可以提取同一尺度在不同层内的特征,解决了FPN方法的局限性.
本文的多级特征金字塔网络(MLFPN)结构如图2所示,结构保留YOLOv3中的DarkNet-53并作为主要特征提取网络.将MLFPN嵌入到DarkNet-53网络后,首先将DarkNet-53网络提取的3个层次特征(大小分别为13×13、26×26、52×52)通过特征融合模块(FFM)融合,将融合后的特征图(大小为52×52)作为基本特征,再依次由多个U形模块(TUM)和FFM对基本特征进行处理,这样所提取的特征代表性会更强.其中TUM用来产生多个不同尺度的特征图,且不同TUM内解码器层的深度基本一致,每个TUM由5个跨步卷积(编码器)和5个上采样组成,最终将输出6种尺度的特征,本文输出大小依次为52×52、26×26、13×13、7×7、3×3、1×1的特征图.每一级的输出可表示为
(3)
式中:X为融合多层特征后的基本特征;为第l个TUM中具有第i个尺度的特征;L为TUM的数量(本文实验中L=8);Tl为经过第l个TUM模块处理函数;F为FFM融合处理函数.FFM用来将基础特征和上一个TUM输出特征中最大特征图进行融合,最后由SFAM(特征聚合模块)聚合TUM产生多个特征图,从而得到最终的特征金字塔,相同尺度的特征可以进行直接拼接.YOLOv3融合MLFPN后进一步加深了网络层,并且在原有YOLOv3的三个尺度融合的基础上增加为6个尺度,使最终特征金字塔中的语义信息更为丰富,模型对多尺度目标的检测也更加准确.
图2 MLFPN结构图
Fig.2 MLFPN structure diagram
本文的实验环境如表1所示,本文所用的数据集是公开的目标检测标注对比数据集PASCAL VOC 2012.为了确定现有算法是否具备更高的性能,本文所建模型不管是在训练时还是在测试时,都是通过开放数据集而实现.Pascal VOC 2007数据集共包含20个类别,11 540幅图像,27 450个被标注的目标.设置召回率阈值等于0.5,最大边框检测数量是20个.
表1 实验环境
Tab.1 Experimental environment
硬件环境软件环境深度学习框架编程语言Jetson TX1Ubuntu16.04TensorFlow1.12.0Python3.5
本文分别用改进的YOLOv3网络和Faster-rcnn、YOLOv3算法来检测目标,通过数据集的样本验证训练模型的检测效果,最终检测结果如图3所示.由图3可知,改进后的YOLOv3准确率超过80%,并且其检测效果相比另两种算法有较大的提升.
本文选取数据集中几张图片的检测结果进行对比,对比结果如图4所示.由图4中标出的准确率和识别框数以及表2中各类别mAP对比可证明,无论是普通背景单目标图像、多目标图像,还是有遮挡目标图像,改进的YOLOv3算法都展现了比YOLOv3更好的检测能力,可以更为精准地检测目标,降低了漏检率.
图3 检测方法对比
Fig.3 Comparison of detection methods
图4 YOLOv3和改进的YOLOv3检测结果图
Fig.4 Detection results of YOLOv3 before and after improvement
表2 各类别mAP对比表
Tab.2 Comparison of different mAP %
类别YOLOv3改进的YOLOv3飞机2782牛3880车6687人5489
将改进的YOLOv3算法应用到TX1开发板中的检测结果如图5所示.静态图像检测结果如图5中a、b、c、d所示;导入一段视频后,动态视频检测结果截图如图5e、f、g、h所示.根据对比图可以看出,改进后的算法可以将较远的小目标和重叠的目标识别出来,漏检率明显降低.其中图5e、f和图5g、h分别为视频中截取的第13帧和32帧,由图5以及表3(对视频进行目标检测的速度及mAP对比表)可以看出,改进的YOLOv3相较于YOLOv3的mAP增长了1.47倍,且检测速度提高了1.13倍.
文中将YOLOv3中的特征金字塔、激活函数改进后,利用嵌入式GPU平台在Jetson TX1上实现目标检测,借助CUDA编程进行并行算法,从而实现目标检测,改进的YOLOv3可以更高速地提取精确结果.由于GPU硬件技术近年来不断获得发展,并且随着研究进一步深入,将深度学习算法应用到具有实时处理能力的、带有强大高性能运算能力的GPU设备中已经成为可能,届时整个目标检测与跟踪过程可以更加高效、准确的实现.
图5 TX1上的实验结果图
Fig.5 Experimental results on TX1
表3 实验结果
Tab.3 Experimental results
算法模型速度/(幅·s-1)mAP/%YOLOv319.833.0改进的YOLOv322.448.4
[1]李华清.基于SSD的航拍图像小目标快速检测算法研究 [D].西安:西安电子科技大学,2018:2-13.
(LI Hua-qing.The research on fast detection algorithm for small targets of aerial images based on SSD [D].Xi’an:Xidian University,2018:2-13.)
[2]李彦冬,郝宗波,雷航.卷积神经网络研究综述 [J].计算机应用,2016,36(9):2508-2515.
(LI Yan-dong,HAO Zong-bo,LEI Hang.A survey of convolution neural networks [J].Journal of Computer Applications,2016,36(9):2508-2515.)
[3]卢宏涛,张秦川.深度卷积神经网络在计算机视觉中的应用研究综述 [J].数据采集与处理,2016,31(1):1-17.
(LU Hong-tao,ZHANG Qin-chuan.Review on the application of deep convolution neural network in computer vision [J].Journal of Data Acquisition and Processing,2016,31(1):1-17.)
[4]刘宇.基于卷积神经网络的道路目标检测算法研究与实现 [D].武汉:武汉大学,2018:20-23.
(LIU Yu.Research and implementation of road object detection algorithm based on convolutional neural network [D].Wuhan:Wuhan University,2018:20-23.)
[5]Redmon J,Divvala S,Girshick R,et al.You only look once:unified,real-time object detection [C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.Las Vegas,USA,2016:779-788.
[6]谭俊.一个改进的YOLOv3目标识别算法研究 [D].武汉:华中科技大学,2018:50-51.
(TAN Jun.Study on an improved YOLOv3 object identification algorithm [D].Wuhan:Huazhong University of Science and Technology,2018:50-51.)
[7]孙新胜.基于多卷积神经网络的研究与应用 [D].杭州:杭州电子科技大学,2018:10-32.
(SUN Xin-sheng.Research and application of multi-convolution neural network [D].Hangzhou:Hangzhou Dianzi University,2018:10-32.)
[8]吕铄,蔡烜,冯瑞.基于改进损失函数的YOLOv3网络 [J].计算机系统应用,2019,28(2):1-7.
(LÜ Shuo,CAI Xuan,FENG Rui.YOLOv3 network based on improved loss function [J].Computer Systems and Applications,2019,28(2):1-7.)
[9]张志佳,吴天舒,刘云鹏,等.基于连续非对称卷积结构的手写体数字识别 [J].沈阳工业大学学报,2018,40(5):518-523.
(ZHANG Zhi-jia,WU Tian-shu,LIU Yun-peng,et al.Handwritten numeral recognition based on continuous asymmetric convolution structure [J].Journal of Shenyang University of Technology,2018,40(5):518-523.)
[10]李靓,贺柏根,霍家道.FPN在遥感图像检测中的应用 [J].指挥控制与仿真,2019,41(2):130-136.
(LI Liang,HE Bai-gen,HUO Jia-dao.Application of FPN in remote sensing image [J].Command Control and Simulation,2019,41(2):130-136.)