基于深度学习的车位智能检测方法 下载: 1578次
1 引言
近年来,随着城市规模的扩大,城市中车辆数量也呈爆炸式增长,但是停车场的数量和停车位智能化水平发展与之不相称。当车主不能及时找到停车位时,汽车会处于低速巡游状态或者反复启停状态,产生大量的尾气排放并造成交通拥堵。此矛盾不能简单地通过增建车位的方法去解决。因此,为了减轻车主寻找空车位的难处,提升停车场内停车位的智能化管理水平显得尤为重要。智能停车场管理系统的核心功能是实现车位引导和车位检测,国内外停车场使用的车位检测技术主要分为基于传感器和基于图像2种。第一种技术需要大量的传感器单元覆盖整个停车场,一个传感器一次仅能检测一个停车位且易受环境干扰,铺设繁琐,成本高;第二种技术由于摄像头覆盖范围广,仅需要几个摄像头,有时甚至一个就可以实现整个停车场车位的检测,并且在许多情况下,出于安全监控的目的,监控设施已安装在许多停车场中,因此面向视频监控的车位识别系统不仅能达到安全监控的目的,还能使视频监控增值,实现车位引导的功能。这种检测技术目前在国内应用不多,但随着物联网技术的普及与发展,越来越多的停车场将使用监控视频来实现车位检测。
国际上,2007年,True[1]提出了静态图像中的空置停车位检测方法,该方法采用汽车特征点检测和颜色直方图分类组合方式进行车位检测,实现了个别车位的估算检测,但无法满足智能停车场的车位检测要求。2008年,Bong等[2]提出了一种停车场占用信息系统,该系统使用灰度值作为阈值以检测区分车位占用或空位,同时也使用了Sobel边缘检测,如果边缘像素的百分比超过总像素的5%,则视车位已被占用,该方法最大的缺点是室外停车场中识别效果较差。2009年,Ichihashi等[3]提出了一种新型摄像机系统(ParkLotD),该系统采用基于模糊C均值聚类分类器和粒子群优化调整超参数,提高了室内车位检测效果,实现了室外空车位检测的实用性。2013年,Almeida等[4]基于文献[ 5]提出基于纹理特征描述符的车位检测方法,该方法所用的描述符包括局部二进制模式和局部相位量化。2015年,Shaaban等[6]提出了利用摄像机获取的灰度图像进行车位检测的方法,成功识别了在不同场景和天气条件下的空置和占用停车位。该方法测试了两种算法,第一种算法基于图像直方图的最大值,第二种算法基于图像直方图的带宽。其优点是该检测系统的算法简单,配置简单,不需要高质量的图像,可使用较便宜的摄像机或现有的监控摄像机代替特殊摄像机,从而节省了大量成本;缺点是若空置停车位出现一个或多个人时,图像检测就会出现问题。2018年,Karakaya等[7]提出了一种使用深度学习检测停车位占用率的方法,该方法通过在嵌入式系统上运行循环神经网络来对停车场图像进行处理,进而简单地收集停车场可用性信息,但该方法没能在车位分布识别和各车位空车位检测信息具体的输出方面做更多的研究。
国内,2008年,蒋大林等[8]提出基于视频图像的多特征车位检测算法,实现了停车位检测。该方法通过比较视频图像中被监控的车位内有无车辆的几何形状特点和纹理特征来进行空车位占用情况的判断,优点是在复杂背景和不同环境条件下,识别效果好,运算速度快,缺点是没能验证检测多个车位的情况。2014年,叶卿等[9]提出了借助辅助识别图案的计算机视觉车位检测方法,实现了停车位检测。该方法利用停车位上绘制的特定辅助识别图案作为检测目标,该图案在大部分光照、阴影的影响下具备图案特征不变性,然后采用图像识别算法,逐行扫描各个像素,利用模式匹配判断停车位状态。其优点是只储存车位区域的多边形,存储小,在地下停车场等光照环境比较恶劣的条件下具有良好的应用前景;缺点是对于大型的露天停车场,停车位多使得布置辅助识别图案工作量大,且图案位于地面容易被人、积水、积雪等障碍物遮挡,使得实际应用中车位检测会出错。2015年,丁元舟等[10]提出利用车位范围内差影的均值和车位区域内边缘点数两种判据的车位检测方法,实现了车位的检测,该方法的不足之处在于车位检测时受外界环境影响较大,例如停车位出现人或其他物体时就会出现识别错误的问题。2018年,安旭骁等[11]提出一种将深度学习应用于停车场空车位检测中,实现车位检测的方法。该方法利用卷积神经网络在图像分类中的优势,对空车位和已占用车位的图片数据集进行识别模型的训练,达到对空车位与已占用车位的识别分类。其优点是相对于传统的神经网络计算量小,正确率高,对摄像头的配置要求不高,经济性好;缺点是由于不同停车场的空车位图片信息不同,针对不同的停车场需采集不同的图像集进行网络的训练,训练量相对较大,除此之外,不同的停车场必须要对视频帧图手动设置掩码,通过边缘检测切割成单个车位图,智能性较低,适用性不强。
自2012年ImageNet举办的图像分类竞赛中深度学习系统赢得冠军后,深度学习开始受到学术界广泛的关注。物体识别的难度比图像分类更高,在ImageNet数据集上,深度学习不仅实现了图像分类,也实现了物体识别。图像分类只需判断图片中包含哪一种物体,但进行物体识别时,还要给出所包含物体的具体位置,且一张图片中可能出现多个需要识别的物体[12]。本文利用深度学习在目标识别方面的优越性,通过深度学习训练的目标识别网络模型对优化提取的监控摄像图像数据进行识别,结合数据分层法、Timsort算法以及空车位概率判别模型,实现停车场车位分布的智能识别、车位智能编号和空车位信息的输出。
2 理论基础
深度学习训练的目标识别网络模型中,目标检测结构有Faster R-CNN(Region-Convolutional Neural Networks)[13]、R-FCN(Region-based Fully Convolution Network)[14]、SSD(Single Shot Multibox Detector)[15]等,这些结构需要一个主干网络来提取特征,如VGG16(Visual Geometry Group 16)[16-17]、ResNet(Residual Neural Network)[18]、InceptionV1[19]、InceptionV3[20-21]、Inception Resnet[22]、MobileNet[23]等。TensorFlow通过计算图的形式表述计算的深度学习框架,所有的计算都会转化为计算图上的节点,其目标检测API(Application Programming Interface)项目提供了多种经COCO数据库训练的网络结构(
表 1. COCO训练的部分模型
Table 1. COCO-trained partial models
|
2.1 SDD检测框架
SDD检测框架是由Liu等[15]提出的一种快速高效的检测方法,基于前馈神经网络得出的预测框集合和检测类别的概率值,通过非极大值抑制得到最终检测结果。根据文献[ 24],其他目标检测结构(包括Faster-RCNN、R-FCN等)虽然结构精度高,但耗时比较长,而SDD检测框架在处理大目标时明显比其他结构快,只是在处理小目标时检测效果比较差。由于检测目标为车辆,且考虑车位判别的实时性,选用SSD作为检测框架。
2.2 MobileNet模型
MobileNet模型是由Howard等[23]提出的一种小尺寸的移动优先性视觉模型,采用深度可分离卷积神经网络并引入宽度因子
假设
作用于网络通道数的宽度因子的取值是0~1,作用于输入的特征图的分辨率因子的取值是0~1,引入这两者后的计算总量为:
表 2. MobileNet模型与通用模型的对比
Table 2. Comparison between MobileNet and popular models
|
综上所述,针对停车场车位识别的大目标、实时性等特点,选择使用TensorFlow中SDD_MobileNet目标检测API,下载SDD_Mobilenet_V1_COCO预训练模型。
3 基于视频流的车位识别系统整体概述
视频流的车位识别系统的关键在于通过深度学习训练目标识别模型,应用时通过编程调用识别模型对目标进行识别,再利用识别的数据分析判断出停车位的分布和车位空缺状况。
详细识别流程设计如
4 基于监控视频流数据的车辆图像优化间隔提取
视频信号是视觉信息的一个主要源头,它由按序列排列的图像组成,即帧,当通过监控视频流进行车位识别时需要摄像头捕获实时图像,为了处理视频序列,OpenCV提供了一个非常简单的接口VideoCapture,它既可以读取监控摄像头的数据,也可以读取视频文件,本研究采用视频文件进行分析。在提取监控视频中的图像并对停车位进行识别时,并不是每一帧的图像都是有效数据,比如车主从进入车内至驶离停车位这段时间,停车位的占用没发生变化。经统计,若车主上车后便发动汽车驶离,所需平均时长为15 s,视频流为30 frame/s,则这15 s就会产生450张停车位占用信息一致的帧图像,这时就需选择合适的时间间隔提取帧图像,减少计算机的处理量。在进行空车位判断时,也需要一定的时间,尤其是判断车位较多的空车位的时间会相对较长。因此,根据停车场空车位判断时间和车辆发动至驶离的时间确定提取视频流帧图像的时间间隔。
根据车辆进入停车场的实际时间情况进行图像的优化间隔提取,假设每个空车位的判断时间为
5 模拟分析
所提设计在Windows10(64位)操作系统上安装或下载Anaconda3(默认安装Python3.6版本)、TensorFlow1.9及Models扩展模块等相关文件,并对相关环境变量进行了设置,以此搭建了计算架构。为了达到预期效果,先以车辆模型对停车场的空车位进行模拟,实现其智能识别、编号及空车位判断的编程准备。
5.1 车辆模型的数据集制作
对于机器学习,训练的数据集应是标注好物体位置的文件。首先对车辆模型进行拍照,将得到的320张车辆模型图像作为数据集,为了在模拟过程中识别不受光线的影响,拍摄中选取了不同光线的环境。所用车辆模型部分图像如
图 2. 车辆模型部分图像。(a)侧视角;(b)俯视角
Fig. 2. Partial images of car models. (a) Side view; (b) top view
5.2 车辆模型的目标检测模型训练
根据自建数据集的特点,调整预训练模型所对应的配置文件中的参数,包括种类数、批次规模、初始学习速率及相关数据读取路径。停车场车位识别过程中,重点不在于车型的变化,为此将目标识别的种类归为车类(car)。每次迭代开始,先选取一部分数据并通过算法获取预测结果,这部分数据的量即为批次规模。结合自建数据集规模及电脑配置,先选取初始训练的批次规模,后期根据损失函数值变化情况及识别效果进行调整。使用标准的梯度下降算法来训练模型,学习率随时间以指数形式衰减。TensorFlow_Slim是TensorFlow中定义、训练和评估复杂模型的轻量级库。在模型训练中,TensorFlow_Slim提供了简单却非常强大的训练模型工具集,执行训练文件开始训练,在训练过程中损失函数的返回值为每次迭代产生的目标函数值,即交叉熵损失和所有权重衰减项的和,是衡量预测模型预测期望结果的指标。
为了更好地管理、调试和优化神经网络的训练过程,TensorFlow提供了可视化工具TensorBoard,该工具可以监控训练过程,通过读取训练过程记录的数据文件,对训练过程进行可视化,进而方便理解、调试和优化训练。在TensorBoard的SCALARS面板中,总损失值变化情况的可视化如
批次规模越小,每个批次中的随机性越大,权值更新越频繁,短时间内越容易不收敛;批次规模越大,越能表征全体数据的特征,收敛越快;但批次规模太大时,随机性不足,容易陷入局部最优,且每次迭代运算时间长,占用内存大。为了提高识别效果,在考虑时间效率和训练效果的情况下,经综合评判,确定批次规模为24并继续训练,最终得到如
执行测试脚本以评估验证集的准确性,IMAGES面板中部分验证评估识别效果如
TensorBoard中的DISTRIBUTIONS面板绘制训练过程中学习参数变化的分布图,HISTOGRAMS面板绘制这些学习参数变化的直方图。训练过程中记录的参数较多,如训练时深度可分离卷积核的某层在进行BN处理时学习参数
图 4. 训练模型对汽车模型的识别效果。(a)部分验证评估识别;(b)(c)测试目标识别模型;(d)筛选识别的结果
Fig. 4. Recognition effects of training models on car models. (a) Identification of partial verification assessments; (b)(c) test object recognition model; (d) results by filtering and recognition
图 5. 对深度可分离卷积核某层进行BN处理时β的分布图
Fig. 5. Distribution of β in BN processing of one layer in depthwise separable convolution kernel
训练结束后,执行API提供的脚本文件并传入相关训练文件,包括预训练模型和训练过程中定期保存的记录文件,导出目标检测模型,生成可调用的目标检测模型。
5.3 模拟车位视频流的读取
本次模拟停车场视频中平均每个空车位判断时间
准备,为方便验证,车辆发动至驶离的所需时间
5.4 停车场车位的识别、编号和空车位判断
1) 停车场车位分布识别
所训练的目标检测模型会识别对象框的类别和坐标(包括最小
表 3. 图像中车辆模型的对象框信息
Table 3. Information related to car model object boxes in images
|
2) 停车场车位排序编号
在车位识别信息输出管理过程中,直观的车位位置信息便于用户读取,这使得按一定次序编号显得尤为重要。为了实现车位的有序编号,所提方法融合了数据分层法和Timsort算法。
在复杂的停车场识别车位信息时,车位编号排序需考虑两个维度,即纵向和横向。实际停车场的车位一般都是整齐的,以各车位的
表 4. 车位信息的Timsort算法排序编号结果
Table 4. Sorting and numbering results of parking space information by Timsort algorithm
|
为直观地观察编号结果,将
图 7. 车位数据排序编号后的可视化。(a)数据分层法处理前;(b)数据分层法处理后
Fig. 7. Visualization after sorting and numbering of parking space data. (a) Before using data layering method; (b) after using data layering method
表 5. Timsort算法结合数据分层法的排序编号结果
Table 5. Sorting and numbering results by Timsort algorithm combined with data layering method
|
将
3) 停车场空车位判断
根据目标检测得到对象已知坐标的矩形区域这一特点,便可以将空车位的判断视为车位被车辆覆盖的判断。
车位被车辆覆盖的判断情况主要是依据对大量的事件统计结果来获取某些确定性问题。利用间接蒙特卡罗的思想构造出空车位概率判别模型来判断空车位,主要思想如
图 10. 空车位概率判断模型。(a)空车位判断示意图;(b)流程
Fig. 10. Probability discriminant model for empty parking spaces. (a) Schematic for discriminating empty parking space; (b) flow chart
如
常规的采用Canny算子检测边缘来实现车位检测的方法,虽然也能实现车位检测,但该算法受环境影响较大。如
文献[ 9]提出的借助辅助识别图案的计算机视觉车位检测方法,在停车位上绘制特定的辅助识别图案,由于图案紧贴地面,受外界影响大,因此对空车位检测影响较大。相比文献[ 11]利用改进的卷积神经网络实现不同环境单个空车位的检测而言,所设计的利用深度学习实现空车位的检测方案,训练目标识别模型时只需输入车辆图像数据集进行训练,通过车辆识别不仅实现了停车场车位分布的数据录入,并融合相关算法对停车场车位数据进行排序编号,而且结合所设计的空车位概率判别模型实现了多个车位的判断并输出具体车位空缺信息,智能性更好。
图 12. 利用Canny算子对不同环境下车辆的边缘检测。(a)对图4(a)的边缘检测结果;(b)对图6的边缘检测结果
Fig. 12. Edge detection of cars in different environments by Canny operator. (a) Edge detection result of Fig. 4(a); (b) edge detection result of Fig. 6
6 实例分析
6.1 低视角车位识别
对于地下停车场等监控摄像头安装高度受限的地方,监控摄像头安装位置相对较低,视角相对较低,车位覆盖范围小,称之为低视角车位识别。
为了验证模拟分析,训练出检测误差小的车辆目标检测模型,以增加模型对不同车辆的识别效果,本实验先设计Python爬虫程序,将爬取22883张车型不同的车辆图片以及用摄像机在停车场采集的图片作为数据集,其中83%的图片作为训练集,15%的图片作为测试集,2%的图片作为验证集,训练批次为15,经过25000次迭代训练,总损失值变化情况如
图 13. 实例验证中模型训练及验证。(a)总损失值的变化情况;(b)经25000次迭代训练后的识别效果
Fig. 13. Model training and verification in case verification. (a) Change in total loss value; (b) recognition effect after iterative training for 25000 times
根据模拟分析的车位识别流程及车位识别Python程序,通过调用实际车辆训练的目标检测模型,输入停车场视频流,对车位进行识别、编号、空车位的判断及车位信息输出。
当车位全被占用时,输出识别结果:车位已满。车位发生的变化如
图 14. 停车位识别。(a)满车位帧图像;(b)车位识别数据的可视化
Fig. 14. Parking space recognition. (a) Frame image of full parking space; (b) visualization of identification data for parking spaces
图 15. 某时间点空车位的检测。(a)停车场的车位占用情况;(b)识别车辆对车位的覆盖情况;(c)车位检测结果输出
Fig. 15. Detection of empty parking spaces at some time point. (a) Parking space occupancy; (b) recognized car coverage of parking spaces; (c) output of parking space detection results
6.2 高视角车位识别
在地面停车场车位识别中,监控摄像头安装高度足够高,监控摄像范围足够广,可充分利用摄像头大范围地进行车位识别与管理,降低车位识别成本。
高视角车位识别中的图像基本都是车辆的俯视图,而在低视角车辆目标检测模型训练时考虑到的此类数据集相对较少,使用原有的目标检测模型时,识别效果较差,为此在实际地面停车场收集到了1187张车辆高视角图像,在原有车辆目标检测模型的基础上进行数据补充训练。刚开始总损失值略微增大,训练迭代60047次前后,总损失值在1.7左右波动,趋于平缓,达到较好的识别效果。结合视频流,将车位满位时的车辆识别数据作为停车场车位分布数据,并对其进行编号。车位实际分布与所识别的车位数据可视化如
以满车位时识别的车辆区域作为停车位区域参考,对视频流进行间隔读取后,识别停车场车辆。
图 16. 停车位识别。(a)满车位帧图像;(b)车位识别数据的可视化
Fig. 16. Parking space identification. (a) Frame image of full parking space; (b) visualization of identification data for parking spaces
图 17. 某时间点空车位检测。(a)车位占用情况;(b)识别车辆对车位的覆盖情况;(c)车位检测结果输出
Fig. 17. Detection of empty parking spaces at some time point. (a) Parking space occupancy; (b) recognized car coverage of parking spaces; (c) output of parking space detection results
7 结论
利用深度学习在目标识别方面的优越性,将其应用于停车场监控视频中空车位的检测。与其他基于监控视频的车位检测相比,该检测方法不仅能准确检测空车位,训练目标识别模型时相对于传统的神经网络计算量少,而且智能程度高,结合编程实现停车场车位分布的识别、智能排序编号、空车位判断及空车位信息的输出。所设计的车位识别系统适用范围广,在不同场景下都有较好的车辆检测效果,在智能停车位检测方面具有良好的应用前景。
[1] TrueN. Vacant parking space detection in static images[D]. San Diego: University of California, 2007: 17.
[2] Bong D B L, Ting K C, Lai K C. Integrated approach in the design of car park occupancy information system (COINS)[J]. IAENG International Journal of Computer Science, 2008, 35: 1.
[3] IchihashiH, NotsuA, HondaK, et al. Vacant parking space detector for outdoor parking lot by using surveillance camera and FCM classifier[C]. 2009 IEEE International Conference on Fuzzy Systems, 2009: 127- 134.
[4] AlmeidaP, Oliveira LS, SilvaE, et al. Parking space detection using textural descriptors[C]. 2013 IEEE International Conference on Systems, Man, and Cybernetics, 2013: 3603- 3608.
[6] Shaaban K, Tounsi H. Parking space detection system using video images[J]. Transportation Research Record: Journal of the Transportation Research Board, 2015, 2537: 137-147.
[7] KarakayaM, Akıncı FC. Parking space occupancy detection using deep learning methods[C]. 2018 26th Signal Processing and Communications Applications Conference (SIU), 2018: 1- 4.
[8] 蒋大林, 邓红丽, 平彧, 等. 基于视频图像的多特征车位检测算法[J]. 北京工业大学学报, 2008, 34(2): 137-140.
[9] 叶卿, 徐建闽, 林培群. 基于计算机视觉的停车位车辆存在性检测方法[J]. 交通信息与安全, 2014, 32(6): 39-43.
[10] 丁元舟, 罗小巧, 杨明红, 等. 停车场远程视频监控系统的设计与开发[J]. 电子测量技术, 2015, 38(3): 35-38, 42.
[11] 安旭骁, 邓洪敏, 史兴宇. 基于迷你卷积神经网络的停车场空车位检测方法[J]. 计算机应用, 2018, 38(4): 935-938.
[12] 郑泽宇, 顾思宇. TensorFlow: 实战Google深度学习框架[M]. 北京: 电子工业出版社, 2017: 10- 13.
Zheng ZY, Gu SY. TensorFlow: combat Google deep learning framework[M]. Beijing: Electronics Industry Press, 2017: 10- 13.
[14] DaiJ, LiY, HeK, et al. R-FCN: Object detection via region-based fully convolutional networks[C]. 30th Conference in Neural Information Processing Systems ( NIPS 2016), 2016.
[15] LiuW, AnguelovD, ErhanD, et al.SSD: single shot multibox detector[M]. Liu W, Anguelov D, Erhan D, et al. eds. Computer Vision-ECCV 2016. Cham: Springer International Publishing, 2016: 21- 37.
[16] SimonyanK, ZissermanA. Very deep convolutional networks for large-scale image recognition[C]. IEEE Conference on Computer Vision and Pattern Recognition ( CVPR), 2014.
[17] 赵恒, 安维胜. 结合深度学习的图像显著目标检测[J]. 激光与光电子学进展, 2018, 55(12): 121003.
[18] He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition[C]. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016: 770- 778.
[19] SzegedyC, LiuW, Jia YQ, et al. Going deeper with convolutions[C]. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015: 1- 9.
[20] IoffeS, SzegedyC. Batch normalization: Accelerating deep network training by reducing internal covariate shift[C]. IEEE Conference on Learning, 2015.
[21] SzegedyC, VanhouckeV, IoffeS, et al. Rethinking the inception architecture for computer vision[C]. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016: 2818- 2826.
[22] SzegedyC, IoffeS, VanhouckeV, et al. Inception-v4, inception-resnet and the impact of residual connections on learning[C]. Proceedings of the Third-First AAAI Conference on Artificial Intelligence (AAAI-17), 2017: 4278- 4284.
[23] Howard AG, ZhuM, ChenB, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[C]. IEEE Conference on Computer Vision and Pattern Recognition ( CVPR), 2017.
[24] HuangJ, RathodV, SunC, et al. Speed/Accuracy trade-offs for modern convolutional object detectors[C]. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017: 3296- 3297.
[25] IoffeS, SzegedyC. Batch normalization: Accelerating deep network training by reducing internal covariate shift[C]. Proceedings of the 32nd International Conference on Machine Learning, 2015, 37: 448- 456.
Article Outline
徐乐先, 陈西江, 班亚, 黄丹. 基于深度学习的车位智能检测方法[J]. 中国激光, 2019, 46(4): 0404013. Lexian Xu, Xijiang Chen, Ya Ban, Dan Huang. Method for Intelligent Detection of Parking Spaces Based on Deep Learning[J]. Chinese Journal of Lasers, 2019, 46(4): 0404013.