应用于嵌入式图形处理器的实时目标检测方法 下载: 1307次
1 引言
目标检测是大量高级视觉任务的必备前提,它要求算法不仅能够检验出图像中存在什么物体,还需要确定物体在图片中的位置。传统目标检测的方法一般分为三个阶段:1)在给定的图像上选择一些候选的区域;2)对这些区域进行特征提取;3)使用训练的分类器进行分类。传统目标检测存在的两个主要问题:1)基于滑动窗口的区域选择策略时间复杂度高,窗口冗余,处理时间长;2)手工设计的特征对于目标多样性的变化不具有很好的稳健性。
近几年,得益于基于深度学习的算法,尤其是基于深度卷积神经网络[1](CNN)的算法,目标检测的准确率得到大幅提升。2014年,Girshick等[2]设计了R-CNN(Regions with CNN)目标检测框架,使得目标检测的效果取得巨大突破,并开启了应用深度学习算法进行目标检测的研究热潮。最近几年,学术界涌现出一系列基于R-CNN的检测算法,如SPP-Net (Spatial Pyramid Pooling Net)[3]、Fast-RCNN[4]、Faster R-CNN[5]、R-FCN(Region-based Fully Convolutional Networks)[6]等,检测精度得到大幅度提升。此外,还出现了区别于R-CNN系列两步检测方法的端到端检测算法,如SSD(Single Shot MultiBox Detector)[7]和YOLO(You Only Look Once)[8-10]等,检测速度得到较大提升。早期的基于深度学习的目标检测算法R-CNN,首先通过区域提名的方式识别出可能存在目标的区域,将图片划分成若干可能包含目标的小图片送入CNN中,由CNN确定是哪一类物体存在于这个小区域上,从而完成检测。这种检测流程的一大缺陷是检测一幅图片要经过CNN处理数千次,完成一幅图片的检测需要2 s。后来的Fast R-CNN和Faster R-CNN对此进行改进,不再将整幅图片分成小块的图片一次次送入CNN提取特征,而是将图片整体一次性送入CNN,提取到特征图后,再对特征图做进一步处理,但这一系列算法的整体流程依旧是分为区域提取和目标分类两部分,这样做虽然确保了精度,但牺牲了速度,于是以SSD和YOLO为主要代表的端到端的目标检测算法应运而生。YOLO算法被提出以来,已经经过了3个版本的更替,在精度和速度上均获得了巨大的提升,在Titan X上检测速度可达到45 frame/s,是目前检测速度最快的目标检测算法之一。然而,目前基于CNN的目标检测模型的训练与测试均依赖如Titan X这样的台式GPU计算平台,计算资源消耗大,难以向嵌入式平台移植,因此难以适应工业界对于目标检测实时性和便携性的需求[11-12]。只有解决CNN模型的效率问题,设计轻量化网络模型,才能让CNN走出实验室,实现更广泛的应用。针对这一现状,Iandola等[13]提出SqueezeNet模型,基于fire module思想,采用1×1卷积对特征图的维数进行压缩,从而达到减少权值参数的目的;Howard等[14]提出MobileNet模型,采用深度可分离的卷积方式代替传统卷积方式,以达到减少网络权值参数的目的,并在2018年初又提出改进版MobileNet-V2[15]。
以上几种方法本质上都是针对特征提取与分类网络结构的优化,目前将它们应用于目标检测中时普遍采用的是与SSD算法结合的方式。考虑到YOLO系列算法本身速度要优于SSD算法,因此本文提出一种基于YOLO-V3的轻量型目标检测网络结构。在该网络结构中,对特征提取部分的网络层数进行适度压缩,在检测部分通过引入SP(Spatial Pooling)模块配合1×1卷积进行降维的方式,一方面使得网络能够融合不同尺度的特征,另一方面使得网络可以对不同宽高比的图片进行训练,从而提高网络的检测能力。在对车辆目标进行检测训练时,通过使用仿真图片辅助训练的方式弥补真实场景数据库样本数量的不足,进一步提升检测精度,并在嵌入式GPU平台上部署了基于所提方法训练得到的检测模型,实现了对目标的实时检测,为将基于深度学习的目标检测技术应用到智能驾驶、智能安防和智能无人机等产品中提供了一套目标检测原型系统。
2 改进的YOLO目标检测模型
2.1 网络结构
为了将神经网络技术应用于嵌入式平台实现实时的目标检测,需要设计轻量级的目标检测模型,为此,提出一种基于YOLO的目标检测网络模型改进方案,简化后的模型结构如
1) 对于特征提取部分,在Darknet-53结构的基础上对网络层数进行了压缩,以减少网络的参数,简化后的特征提取部分包括1个卷积层,4个降采样卷积层和9个resnet block。
2) 在预测目标部分,采用了与YOLO不同的结构。预测过程中使用了从不同层中提取的2个不同尺度的特征图以提高对于小目标的检测效果。通过引入SP模块,将特征图的大小统一为13 pixel×13 pixel。再通过1×1卷积对通道数进行降维处理,得到最后用于目标检测的特征向量。
2.2 SP模块
初代YOLO的模型结构中存在全连接层,因而输入图片的尺寸必须固定。为解决这个问题,YOLO-V3取消了全连接层的使用,转而使用了全局平均池化的方式,而所提方法则选择保留全连接层并加入SP模块。SP模块主要基于SPP原理,对于输入为任意大小
式中:ceiling(·)为向上取整函数;floor(·)为向下取整函数。
在对网络模型进行训练时,每隔10次迭代后就会对训练数据进行缩放,调整网络的输入尺寸,训练过程中使用的最小图像尺寸为416 pixel×416 pixel,最大图像尺寸为672 pixel×672 pixel。
2.3 训练策略
下面结合
在预测边界框的4个坐标值时,采用平方和距离误差作为损失函数。在预测某一个边界框的置信度时,如果这个预测的边界框与真实的边界框的重合部分大于一定阈值(实验中设定为0.5)且比其他所有预测的要好,那么这个置信度值就为1,否则这个预测的边界框将会被忽略。使用经典的softmax函数对每个框的内容进行目标分类预测。
3 实验
3.1 实验数据集
为测试所提网络结构的性能,对车辆目标进行目标检测实验,实验中使用的两个数据集分别是KITTI[16]和DIM[17]。KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,其中KITTI_detection子数据集用于二维图像中的目标检测,目标类别细分为car, van, truck, pedestrian, pedestrian-sitting, cyclist, tram以及misc,共8类。实验中,使用全部7481张KITTI_detection数据集图片,将其按照8…2的比例分为训练集和测试集,并将tram,truck,van和car这几类目标合并为汽车类作为待检测目标。由于KITTI数据集样本量较少,为能进一步提高检测准确率,实验中还使用了DIM数据集作为补充。DIM数据集是采集自游戏截图的仿真图片,共有105张样本图片,其中只标注了汽车类,在本实验中,共使用其中的104张图片。
3.2 评价标准
实验中使用平均准确率(
数据集中某个类别C在一张图片上的检测准确率
判断某个目标是否正确识别的标准交并比(
式中:
对于包含
由于本实验中类别数
3.3 网络模型的训练与测试实验
下面通过实验对所提网络模型进行目标检测的训练与测试,并将实验结果与另外两个网络模型(YOLO-V3 和YOLO-tiny[18])进行对比。YOLO-V3是目前最优秀的目标检测模型之一,YOLO-tiny是YOLO的作者自己提出的简化版模型。本节中所述实验的训练与测试过程均在配有NVIDIA GTX1080显卡的工作站上进行,实验中使用第3.1节提到的KITTI和DIM数据集对汽车目标进行检测。实验共分三组。第一组实验中,分别使用YOLO-V3、YOLO-tiny以及所提网络结构,在KITTI数据集上进行模型训练和测试,得到的实验结果见
表 1. 第一组实验结果
Table 1. Results of first group of experiments
|
表 2. 第二组实验结果
Table 2. Results of second group of experiments
|
表 3. 第三组实验结果
Table 3. Results of third group of experiments
|
实验结果表明,所提模型在检测准确率上与YOLO-tiny持平且召回率高于YOLO-tiny,但与YOLO-V3相比,检测准确率和召回率均有一定差距。这是由于网络结构简化以及网络参数的减少造成了精度损失。从
图 3. 第三组实验的部分检测结果对比。(a)~(e)使用YOLO-V3的结果;(f)~(j)使用所提网络结构的结果
Fig. 3. Comparison of partial detection results in third group of experiments. (a)-(e) Results by YOLO-V3; (f)-(j) results by proposed network structure
对比三组实验结果,还可以看出:第二组使用仿真数据训练的测试结果在三组实验中精度最低,这是因为仿真数据与真实场景数据的特征分布存在一定差异,直接跨数据集进行测试,难以达到良好的检测效果;但第三组实验中,使用对仿真数据进行预训练、对真实数据进行再训练的方法得到的检测效果是三组实验中效果最优的,平均准确率在YOLO-V3上达到89.29%,在所提网络模型上达到71.35%,这说明即使是存在一定的特征差异,使用仿真的数据集作为真实场景数据的补充,配合适当的训练策略,可以起到提升网络模型性能的作用,从而弥补因网络结构简化带来的检测精度的降低。这一实验结果为诸如智能驾驶和智能无人机等真实训练数据集获取成本高、难度大的应用领域提供了一种解决思路。
3.4 网络模型向嵌入式平台的移植实验
目前基于深度学习的目标检测算法多数基于台式GPU计算机进行训练和测试,这类计算平台的运算能力强,可以胜任大规模网络模型的训练,但由于体积相对庞大,即使在这类平台上达到了实时的目标检测,也难以实现工业应用。将该类算法向嵌入式平台进行移植,是实现智能车载、机载目标识别的关键。在嵌入式平台的选择上,使用NVIDIA Jetson TX1作为嵌入式GPU计算平台来搭建实时目标检测原型系统。Jeston TX1的CPU采用的是ARM Cortex-A57,GPU采用NVIDIA Maxwell架构,内含256个CUDA(Compute Unified Device Architecture)核心,非常适合嵌入式人工智能计算。
在本节实验中,针对模型的检测速度进行实验,将网络模型部署在NVIDIA Jetson TX1嵌入式计算平台上,使用分辨率为640 pixel×480 pixel、包含200 frame图像的视频对所提网络模型进行了检测速度的测试,并与其他轻量型网络模型的检测速度进行了对比,部分实验过程如
表 4. 目标检测的速度对比
Table 4. Speed comparison of target detection
|
图 4. 在嵌入式平台上的检测结果。(a) YOLO-V3;(b) YOLO-tiny;(c)所提网络结构;(d) MobileNet-V1-SSD;(e) MobileNet-V2-SSD
Fig. 4. Detection results on embedded platform. (a) YOLO-V3; (b) YOLO-tiny; (c) proposed network structure; (d) MobileNet-V1-SSD; (e) MobileNet-V2-SSD
实验结果表明,受到嵌入式平台计算能力的限制,即使是在台式GPU显卡上已经可以实现实时目标检测的方法,如YOLO-V3,在嵌入式平台上的运行速度依然很慢,检测帧率仅为2 frame/s。在对比实验中,选取了针对SSD检测模型进行速度优化的方法MobileNet-V1-SSD和MobileNet-V2-SSD进行测试,平均检测速度分别为14 frame/s和13 frame/s。YOLO-tiny是基于YOLO-V3的优化方案,相比YOLO-V3在检测速度上有了大幅度提升,达到17 frame/s。由于一般摄像机(PAL制式)的帧率为25 frame/s,因此以上的优化方案均没有达到实时检测的标准。所提模型结构在检测准确率和召回率上与YOLO-tiny持平的情况下,检测速度提升35%,达到23 frame/s,可基本实现在嵌入式平台上的实时目标检测。
4 结论
基于YOLO-V3提出了一种适用于嵌入式GPU平台的轻量化目标检测模型,在两个公开车辆检测数据集上对网络模型进行了训练,并将模型移植到嵌入式GPU计算平台上。实验证明,所提方法初步实现了嵌入式平台上的实时目标检测,为后期将基于深度学习的目标检测技术应用到智能驾驶、智能安防和智能无人机等产品中提供了一套目标检测原型系统。通过与复杂网络模型的对比实验可以看出,简化的网络结构相较于复杂的网络结构,其准确率和召回率均有所降低,说明目标检测网络运行速度的提升是以牺牲一定的检测准确率为代价的,如何进一步优化网络结构,在保证检测速度的情况下进一步提升检测准确率,将是下一步研究的重点。
[2] GirshickR, DonahueJ, DarrellT, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2014: 580- 587.
GirshickR, DonahueJ, DarrellT, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2014: 580- 587.
[4] GirshickR. Fast R-CNN[C]. IEEE International Conference on Computer Vision, 2015: 1440- 1448.
GirshickR. Fast R-CNN[C]. IEEE International Conference on Computer Vision, 2015: 1440- 1448.
[6] LiY, HeK, SunJ. R-FCN: Object detection via region-based fully convolutional networks[C]. Advances in Neural Information Processing Systems, 2016: 379- 387.
LiY, HeK, SunJ. R-FCN: Object detection via region-based fully convolutional networks[C]. Advances in Neural Information Processing Systems, 2016: 379- 387.
[7] LiuW, AnguelovD, ErhanD, et al. SSD: Single shot multibox detector[C]. European Conference on Computer Vision, 2016: 21- 37.
LiuW, AnguelovD, ErhanD, et al. SSD: Single shot multibox detector[C]. European Conference on Computer Vision, 2016: 21- 37.
[8] RedmonJ, FarhadiA. YOLO9000: Better, faster, stronger[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2017: 6517- 6525.
RedmonJ, FarhadiA. YOLO9000: Better, faster, stronger[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2017: 6517- 6525.
[10] RedmonJ, DivvalaS, GirshickR, et al. You only look once: Unified, real-time object detection[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2016: 779- 788.
RedmonJ, DivvalaS, GirshickR, et al. You only look once: Unified, real-time object detection[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2016: 779- 788.
[11] 冯小雨, 梅卫, 胡大帅. 基于改进Faster R-CNN的空中目标检测[J]. 光学学报, 2018, 38(6): 0615004.
冯小雨, 梅卫, 胡大帅. 基于改进Faster R-CNN的空中目标检测[J]. 光学学报, 2018, 38(6): 0615004.
[12] 辛鹏, 许悦雷, 唐红, 等. 全卷积网络多层特征融合的飞机快速检测[J]. 光学学报, 2018, 38(3): 0315003.
辛鹏, 许悦雷, 唐红, 等. 全卷积网络多层特征融合的飞机快速检测[J]. 光学学报, 2018, 38(3): 0315003.
[16] GeigerA, LenzP, UrtasunR. Are we ready for autonomous driving? The KITTI vision benchmark suite[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2012: 3354- 3361.
GeigerA, LenzP, UrtasunR. Are we ready for autonomous driving? The KITTI vision benchmark suite[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2012: 3354- 3361.
[17] Johnson-RobersonM, BartoC, MehtaR, et al. Driving in the Matrix: Can virtual worlds replace human-generated annotations for real world tasks?[C]. IEEE International Conference on Robotics and Automation, 2017: 746- 753.
Johnson-RobersonM, BartoC, MehtaR, et al. Driving in the Matrix: Can virtual worlds replace human-generated annotations for real world tasks?[C]. IEEE International Conference on Robotics and Automation, 2017: 746- 753.
Article Outline
王晓青, 王向军. 应用于嵌入式图形处理器的实时目标检测方法[J]. 光学学报, 2019, 39(3): 0315005. Xiaoqing Wang, Xiangjun Wang. Real-Time Target Detection Method Applied to Embedded Graphic Processing Unit[J]. Acta Optica Sinica, 2019, 39(3): 0315005.