基于OpenCV的车位实时检测系统分析

时间:2023-09-17 17:08:01 来源:网友投稿

马 宁

(苏州大学,江苏 苏州 215100)

自改革开放以来,我国国民经济不断提高,公民可支配收入也不断提高,对普通家庭来说,汽车不再是遥不可及的奢侈品。越来越多的家庭购买了一辆汽车,条件好的家庭甚至更多。据调查,2003年,我国私家车拥有量不足600万辆;
2014年超过1亿辆;
2019年底,突破2亿辆,达到2.07亿辆。汽车的普及固然给民众生活带来了方便,也带来了堵车、停车难、环境污染等问题。

当下许多小区、商场、景区都修建了停车场,大部分停车场都使用了自动化停车系统,但费用较高,受环境限制多,难以满足露天停车场的需求,且仍需要人工辅助管理;
而一些资金不充裕、车位不充裕或者因环境限制不能安装自动化停车系统的停车场也需要及时统计车位信息,方便游客停车。

另一方面,过去十年,我国私家车数量翻了一倍,停车场建设节奏却相对落后。据国家发改委估计:当前缺口已升至8000万个左右。加强停车场建设迫在眉睫,而另一方面,停车场建设费用过高,导致很多中小企业无力承担,其余社会资本也持观望态度,不愿加强投资。“不算利息,静态收回建设成本需30多年。”[1]其中自动化停车系统虽然不是最贵的部分,但若能减少开支,也将减少大量成本,加速停车场建设。

因此针对以上需求,开发一种价格低廉、智能、受环境限制小、方便管理的车位实时监测系统迫在眉睫。

2.1 Python3简介

Python3是一种广泛使用的解释性语言,它提供了高效的高级函数功能以及简单强大的面向对象功能。python语言逻辑清晰,代码简洁,对中文有较好的支持,且内置了多种常用数据类型,拥有大量功能强大的第三方库,如Numpy、Pandas、OpenCV、Django等等。经过几代的更新与迭代,Python功能越来越完善。在2021年10月,语言流行指数排行榜Tiobe将Python加冕为最受欢迎的编程语言,是20年来首次将其置于Java、C等老牌编程语言之上,可见其火热程度。本文使用解释器版本为Python3.7,IDE为Pycharm2021。

2.2 OpenCV简介

OpenCV是一个基于Apache2.0发行的机器视觉和机器学习开源库,它具有良好的兼容性,可以运行在Linux、Windows、Android和Mac OS等多个操作系统上。它整体由C语言和C++语言构成,同时提供了Python、Ruby、MATLAB等编程语言的拓展接口,能够使用多种语言完成开发工作,其内置了大量图像处理和计算机视觉领域的通用算法,可以实现物体识别、人脸识别、动作识别、运动跟踪等多种功能,是图像处理、机器视觉领域重要的软件库[2-3]。

本文使用OpenCV版本为4.5.3.56。

2.3 CNN简介

人类的视觉系统在大脑可视皮层是分级处理的,大脑的处理视觉信息的工作过程是一个不断迭代、不断抽象的过程。首先从瞳孔摄入的原始图像开始,再由大脑皮层某些细胞发现物体的边缘和方向;
然后由大脑判定眼前物体的大致形状,进行抽象化;
接着大脑进一步进行判定物体的属类;
最后通过分析出的信息,得出结论。

CNN网络全称卷积神经网络,是受人类视觉神经系统启发而开发出的深度学习模式。它可分为卷积层、池化层和全连接层,其中卷积层用来提取图像中的局部特征;
池化层用来大幅降低参数量级;
全连接层用来输出结果。卷积神经网络能够较好地处理像素和音视频等有稳定的效果且对数据没有额外的特征工程要求的数据信息,是深度学习的经典算法,被广泛应用于计算机视觉、自然语言处理等领域。

3.1 流程

系统设计流程大致可分为预处理,车位划分,CNN模型构建与训练,车位识别等阶段。预处理阶段将对信息进行处理,只保留其中的有效信息;
车位划分阶段将车位提取出来,分别保存作为样本;
模型训练阶段将训练二分类模型识别停车位上是否有车;
最后对视频的实时监测,并标记空位、统计数量,实时显示。

3.2 预处理

首先导入所需的停车场监控视频,该视频下载自网络,采用该视频的理由是光线充足,样本量大,交通环境相对不复杂,利于设计和训练。视频的本质是一组连续的图像,当图像变化超过24帧/s以上时,根据人眼的视觉暂留原理,会在大脑中产生的连续的画面。因此对于视频的处理的本质就是对图像的处理。又因为视频拍摄机位固定不动,所以对整个视频的车位划分可以简化到对单帧图像的车位划分,大大提升了效率[4-5]。

为了方便后期处理,首先要进行背景过滤,目的是过滤掉图像中无关的背景信息,方便后续的识别,方法是定义掩模,设置最大阈值和最小阈值,将阈值区间外的信息转化为零值信息。

第二步要进行二值化处理,将图像转化为灰度图。这是因为灰度图只保留了亮度信息,省略了大量无关信息,有效降低了后期运算量。

第三步进行Canny边缘检测,该方法分为四个步骤:高斯滤波、计算梯度值和梯度方向、过滤非最大值、双阈值检测法。它可以有效确定真实的和潜在的边缘,能够较好地检测出大部分所需边界[6]。

因为停车场的边界不规则,外部的楼顶、道路信息不属于停车场范围,需要过滤掉,所以第四步需要沿停车场路径设置8个节点,用来框选停车场的图像,使用零点信息图像覆盖掉不需要的部分,仅保留停车场区域。至此预处理阶段的工作就完成了。见图1、图2。

图1 原始图像

图2 预处理结果

3.3 车位划分

通过观察可以发现,停车场车位由横竖不同的直线构成,可以通过检测这些直线,进一步划分区域。方法是使用霍夫变换,霍夫变换是一种广泛应用在计算机视觉的一种特征检测算法,用来找出图形中的某些特征,霍夫变换通过给定的要辨别的形状的种类,接着在参数空间中通过投票机制来决定物体的形状,并过滤掉间隔过大或过小的物体,来获取到较为准确的结果。图像中某些裂痕或其他线段可能会被误认为车位线,而车位线基本呈竖直或水平方向,可以通过计算线段斜率来进一步剔除不合规的线段,提高准确率。

接着对停车位进行区域划分,通过观察可以发现,停车场的车位可分为17列,可以将相近横坐标的车位线分类到同一集合,再按纵坐标将各个集合中的车位线从下到上进行排序,并通过哈希算法判断是否出现重复的线段,若出现则将其剔除。这样做的目的是后续处理时,对整个停车场的处理可以看做对17个区域的单独处理,更方便模型训练和数量统计。

但是此时算法获得的车位线集合仍然不够理想,这是因为部分车辆遮挡线段,造成霍夫变换识别不准确。为了解决这一问题,需要将各个车位线集合的横线长度统一取其众数,并将所有线段的起始横坐标点设为各个车位线集合的最左值,接着将单个车位线集合中所有的竖线合并成同一条竖线。这样划分的车位就更加准确和统一。

可以看到划分的结果基本符合预期,接着将获得的车位坐标信息写入pickle文件,用以保存。最后按划分好的车位线集合裁切车位,由于图像像素值过小,所以在保存前需要将其进行放大操作,最后保存到测试集文件夹中,用作下一步的模型训练与测试中。见下页图3。

图3 车位划分结果

3.4 CNN网络训练

获得车位图像后将其按照70%、30%的比例划分为训练集、测试集,再将其按照有无车辆占据车位分别划分为占据集和非占据集,用于后续模型训练。

本次模型训练使用VGG16网络,VGGNet是牛津大学和谷歌DeepMind于2014年合作研发的神经网络,由13层卷积层+3层全连接层而组成。卷积层是卷积神经网络的核心,卷积过程本质是基于一个小矩阵,也就是卷积核,在图像的每层像素矩阵上不断按步长扫描过去,扫到的数值与卷积核对应位置的数相乘,然后相加求和,全部扫完就会生成一个新的矩阵。卷积核相当于一个过滤器,用于提取图像特征,卷积核一般有3*3和5*5大小,通常使用是3*3大小的,训练效果更好。全连接层指的是第n-1层和第n层的各个节点之间都有连接,即第n层的节点的激活函数输入是第n-1层所有节点的加权,用来把前边提取到的特征综合起来。在整个卷积神经网络中起到“分类器”的作用。

由于数据集规模较小,为了得到较好的模型,第三步进行数据增强操作。数据增强按照使用方法可分为线上增强和线下增强,其中线下增强适用于规模较小的数据集,能够有效增加其的大小。增强的倍数取决于转换图片的个数,比如对所有图片进行旋转操作,将使数据集增加一倍。常用的数据增强有两种,有监督和无监督,常用的是有监督数据增强型,它是基于现有的数据集,通过分析数据的完备性,采用一定的规则对现有数据进行扩充。有监督数据增强又可以细分为单样本数据增强和多样本数据增强,在实际应用中,单样本数据增强使用更多。

最后将训练集的数据导入模型,进行训练。所有程序运行完成后得到的测试集的准确率达91.4%,准确率基本符合预期。后续可以将VCC16改为ResNet50,以进一步提高准确率,但ResNet50的训练速度相较VCC16较慢,从效率角度考虑,最终选择了VCC16。最后将训练好的模型保存,用于下一步操作。

3.5 基于视频的车位检测

首先导入视频,将视频逐帧提取,并对逐帧画面用已经训练好的模型进行测试。并对每帧的车辆数据进行统计,在视频左上角显示车位总数和剩余空位。此时视频较为卡顿,可以在后续优化中使用多线程或多GPU进行处理,提高速度。见图4。

图4 车位检测结果

程序会对视频进行实时处理和检测,视频中未被占据的车位都被标记为绿色,被占据的车位没有任何标记,通过对绿色矩形的计数,在左上角实时显示车位总数和剩余车位。此时视频某些时段对某些区域出现了误标记,比如将停车场的引导线区域被标记为空停车位,或者将帐篷标记为占用车位。可以通过修改CNN模型进一步改善。其余区域的检测和统计基本符合预期,当车辆离开车位,视频中便以绿色进行标记,同时空位加一;
当车辆进入车位,视频的绿色标记便消失,同时空位减一。实现了对停车位信息的处理和检测。

通过对OpenCV和卷积神经网络实现了对停车场车位的占用情况进行了实时监测和统计,可以部署到较为开阔的停车场,方便管理。此外,该系统还可以进一步优化,以提高速度,适应更复杂的场景,从而为停车场管理提供更加有效、及时的数据。

猜你喜欢车位停车场卷积基于3D-Winograd的快速卷积算法设计及FPGA实现北京航空航天大学学报(2021年9期)2021-11-02为了车位我选择了环保出行汽车画刊(2020年5期)2020-10-20我自己找到一个祝您健康·文摘版(2020年3期)2020-04-09从滤波器理解卷积电子制作(2019年11期)2019-07-04停车场寻车管理系统电子制作(2018年9期)2018-08-04基于傅里叶域卷积表示的目标跟踪算法北京航空航天大学学报(2018年1期)2018-04-20一个车位,只停一辆?现代家长(2018年11期)2018-01-05PLC在地下停车场排水系统的应用电子制作(2016年15期)2017-01-15“8·12”后,何以为家中国石油石化(2015年17期)2015-06-01一种基于卷积神经网络的性别识别方法电视技术(2014年19期)2014-03-11

推荐访问:车位 实时 系统分析

版权所有:天海范文网 2010-2024 未经授权禁止复制或建立镜像[天海范文网]所有资源完全免费共享

Powered by 天海范文网 © All Rights Reserved.。鲁ICP备10209932号