基于改进CNN的公交车内拥挤状态识别
2020-05-22徐明远张立恒
徐明远,崔 华,张立恒
(长安大学 信息工程学院,陕西 西安 710000)
0 引 言
随着生活水平的提高,车辆成为城市居民主要的出行手段,由此引发的道路拥堵问题困扰着许多城市。公共交通能承载城市的大量客流,缓解城市拥堵,各地都在大力提高公共交通对于居民出行的吸引力[1]。而公交公司目前缺少可靠的乘客拥挤信息识别技术,无法根据实际的客流信息实时地调整公交车的运营策略,尤其是乘车高峰期,公交车内极其拥挤,完全不能满足乘客舒适出行的要求。因此,图像处理识别技术被应用到公交车内乘客拥挤状态的识别中来。2012年Garcia-Bunster G等改正了图像的视角,通过结合线性回归模型和线行判别两个参数,使面积测算和计数达到最优映射,以此来实现公交车排队乘客计数[2]。2013年Daley W等用红外技术检测公交内的乘客状态,分析车辆和乘客的位置形状分布,解决车内乘客的计数问题[3]。2014年Mudoi D等利用背景差分法提取目标图像的相应区域,使用搭建的人工神经网络进行训练,并利用结果中目标的颜色、形状特征完成乘客拥挤识别[4]。以上识别方法都有着各自的不足之处,背景差分算法会受乘客的运动阴影、车厢的动态背景及车厢内光照变化等因素的干扰,而目标检测一般是检测公交车内乘客的头部特征,如果乘客染发或者乘客衣服与头发颜色相近,可能就会导致错误的判断。
目前,深度学习算法能够很好地解决图像识别的问题[5]。文中在国内外公交车内拥挤状态识别研究的基础上,结合对公交车内图像拥挤特征的分析和卷积神经网络(CNN)的研究,提出了一种基于改进VGG-16网络的公交车内拥挤识别方法。考虑到公交公司对乘客拥挤信息识别的实际需要,建立了公交车内拥挤图像四分类数据集,经过迁移学习的权值参数共享,对改进后的VGG-16模型进行训练测试。该方法能较好地解决以上各个识别方法的不足,识别的结果能使公交公司及时对乘客拥挤或将要拥挤的情况采取相应的措施,实现智慧调度,提高公交出行的吸引力,从根本上缓解城市交通拥堵。
1 卷积神经网络
受到生物学家研究的启发,计算机视觉科学家开创性地提出了卷积神经网络模型[6]。卷积神经网络与普通神经网络的不同之处是卷积神经网络采用卷积层和池化层作为特征抽取器[7]。卷积和池化能极大地减少模型的参数和复杂度,其基本结构如图1所示。
图1 卷积神经网络结构
1.1 卷积层
在CNN结构中,卷积操作通过权值共享的形式减少了网络中参数的数量,同时增加了网络的泛化能力,这些权重在网络中采取随机初始化的方式,在训练中可以学习为能够检测边缘、颜色、形状的滤波器[8]。卷积运算的公式为:
(1)
其中,xj和yj是第i层的输入特征映射和第j层的输出特征映射,wij是卷积滤波器的权重,*表示卷积运算,bj和facti(·)是第j层的偏置和激活函数。
1.2 池化层
池化层是将相似的特征进行组合,池化计算卷积输出的特征图中一个局部区域的值,通过池化操作减少卷积层输出的特征向量,防止过拟合,同时降低了数据表达的维度,并极大地减少模型参数数量和网络中的计算量[9]。
常见的池化方法[10]有:最大池化(max pooling)、平均池化(mean pooling)和概率池化(stochastic pooling)。最大池化:取图像某一区域特征的最大值作为该区域的特征。平均池化:取图像某一区域特征的均值作为该区域的特征。概率池化:依据概率矩阵的大小,对矩阵区域求加权平均。三种池化方式如图2所示。
图2 三种池化方式
此外还有一些池化方式。例如:重叠池化(overlapping pooling),空金字塔池化(spatial pyramid pooling)在卷积神经网络中也具有比较稳定的特征提取能力[9]。
1.3 激活函数
为了解决实际问题,网络必须能逼近任意的分类函数,因此就要引入非线性激活函数[11]。常用的激活函数包括Sigmoid函数、Tanh函数和Relu函数。公式如下:
(2)
(3)
Relu(x)=max(x,0)
(4)
Sigmoid函数和Tanh函数都能够让神经网络逼近非线性函数,解决非线性问题,但是都可能会出现梯度消失或者梯度爆炸的情况,且计算比较复杂。而Relu的优点在于计算简单,梯度稳定,也可以表现出抑制的效果,所以文中所训练测试的网络模型均使用Relu函数作为激活函数。图3为上述三种激活函数的曲线图。
图3 三种激活函数曲线
2 改进的VGG-16卷积神经网络
2.1 VGG-16网络
VGGNet在AlexNet的基础上探究了网络模型的识别性能和深度的关系,在探究过程中发现较小的卷积核和更深的网络可以明显提升模型的分类精度,使得错误识别率明显下降。VGGNet使用了3*3的卷积核并将模型的层数加深,两个3*3卷积核堆叠在一起的视野范围相当于一个5*5的卷积核的视野,而三个3*3卷积核堆叠在一起的视野范围相当于一个7*7的卷积核,在同样的视野范围内采用3*3的卷积核可以降低参数的数量[12]。与此同时更深的网络意味着会有更多的非线性变换,网络的学习能力会更强,可以学习到更多的特征。VGGNet还采用多尺度训练的方法,增加了训练时的数据量,防止过拟合的同时提升了准确率[13]。基于VGGNet网络结构的独特之处以及该网络在公开数据集上的优异表现,文中选择VGG-16网络作为解决公交车内拥挤状态识别问题的特征提取网络,网络结构如图4所示。
图4 VGG-16网络结构
2.2 改进VGG-16网络
为了满足对公交车内拥挤状态识别的准确性和计算效率要求,设计了改进的VGG-16模型,在保证准确率的同时降低模型的计算量。文中构造的公交车拥挤状态识别模型依然使用了标准VGG-16网络结构的卷积层,16个卷积层被五个池化层分隔开,输入的公交车内乘客拥挤状态图像通过16个卷积层和五个池化层的计算能提取到较为明显的特征。模型最后的全连接层模拟大脑的逻辑认知过程,对卷积池化层提取的特征进行分类,得出识别标签[14-15]。由于VGG-16模型的层数和参数是为1 000个分类类别设计的,其中的权重参数数量有65×106个,且参数较大部分分布在全连接层上,而文中要解决的问题是4种状态的分类识别,不需要那么多的权重参数去参与计算,因此,提出用2个全连接层替换原有的3个全连接层的改进方法设计第一个全连接层的神经元为4 096个,第二个全连接层即输出层的神经元个数为4个,降低模型参数个数和复杂度,以提高模型识别精度和计算效率。
图5 改进VGG-16网络结构
设计的模型如图5所示。所有卷积计算都采用3*3大小的卷积核,卷积步长固定为1,所有的池化操作都采用2*2的最大池化,池化步长固定为2,去除了一层全连接层,使得卷积神经网络可以节省大量计算和内存。模型采用Relu函数作为学习特征的激活函数,由此可以使获得的特征更明显,从而达到更好的分类识别效果。
2.3 改进VGG-16网络的迁移学习
迁移学习是希望模型从大量的数据样本中学习到比较泛化的特征,从而补充有限样本的部分特征。在实际场景中无法收集到所有的样本,如果只用这些有限的样本训练模型,就会很容易发生过拟合现象,除此之外,如果使用的网络层数较多则可能会导致前边几层的参数很难得到更新,而通过迁移学习就可以解决以上麻烦[16]。VGG-16预训练网络是通过100万幅图像的ImageNet数据库中训练而成,拥有大量已训练完成的参数和权重,特别是卷积层的权重参数已经能够对图像的曲线、边缘、轮廓特征进行较为有效的特征提取。为避免从头训练整个网络,减少网络训练时间和提高网络训练效率,可将在ImageNet上训练完成的VGG-16网络作为文中模型的预训练模型,通过微调参数迁移学习的方式,将预训练的VGG-16模型权重参数迁移到改进模型,利用预训练模型的参数优化各层的模型参数,加快模型损失值的收敛速度,提高识别精度和模型的稳定性,更好地解决公交车内拥挤状识别问题。迁移过程如图6所示。
图6 VGG迁移学习模型示意图
3 公交车内拥挤状态数据集
基于某市公交公司实际数据,文中建立了一个公交车内拥挤状况图像数据集来评估模型的性能。这些视频数据来自公交车内的前后摄像头,从前后两个角度俯瞰整个车厢,将其中比较清晰的视频选取出来,按照500帧截取一次,共获得15 194张图片。公交车内拥挤状态如果只分为拥挤和不拥挤意义不大,无法对即将乘车的乘客和公交车的调度人员产生实际的指导价值,因此根据实际需要将公交车内的拥挤情况分为state0,state1,state2和state3四种状态。其中,state0表示车内座位未坐满且车内走道大面积未占用的空车状态;state1表示走道小部分被占用,乘客中有明显空隙的宽松状态;state2表示走道大部分被占用但乘客中有少量空隙的较拥挤状态;state3表示走道大部分或完全被占用,乘客中无空隙的拥挤状态。每张图片都是由2个不同的标注员独立标注的,对于相同图片的非相同标注,需要两名标注员再进行一轮评估,才能达成最终的标签。最终,15 194张原始图像被分为四类,各类图像数量分别为4 066张,3 582张,3 414张和4 072张,各类状态如图7所示,依次为state0,state1,state2和state3。
图7 各类状态展示图
4 实验及结果
4.1 模型训练及实验结果
实验使用Ubuntu16.04系统,i7-7700k处理器,24 GB内存,采用建立好的公交车内拥挤状态四分类数据集,每一类取出500张作为测试样本,剩下的作为训练样本,将每张图片归一化到 224×224像素。网络模型训练学习率设置为0.01,批处理大小设为32,最大迭代次数为5 000次,使用caffe框架进行模型训练。
模型训练过程如图8和图9所示。
图8 标准VGG-16模型训练图
图9 改进VGG-16模型训练图
(1)两种模型训练的损失函数值都随着迭代次数的增加呈现下降趋势,且下降速度越来越慢,使用改进VGG训练时的初始损失函数值相比于VGG标准模型更小而且收敛过程中波动较小,改进的VGG-16最终收敛的损失函数值更低,基本上稳定在0.04附近,而VGG标准模型损失函数值收敛到0.1左右。
(2)两种模型的训练准确率都随着迭代次数的增加而不断上升,且上升的速度趋于平缓,最终到达一个稳定的上限,改进后的VGG模型最终的训练准确率要略高于标准模型,最终稳定在96.5%左右,且曲线波动较小,而标准模型最终稳定在95%左右,曲线波动较大,模型表现不够稳定。
4.2 实验对比分析
为进一步测试改进VGG模型的性能,选择传统的分区域融合算法以及AlexNet,GoogleNet两种深层神经网络进行对比试验。分区域融合算法是通过人工选定图像的目标区域,融合HSV颜色模型法,帧间差分法以及纹理分析法实现公交车的分区域拥挤判断,根据各区域的结果汇总得出乘客的拥挤状态信息。各方法使用事先建立好的测试集进行测试,测试集每一类有500张图片,实验结果如表1所示。
表1 文中模型与其它模型方法的识别准确率对比 %
表1对比了不同方法各类状态的识别结果,AlexNet、GoolgeNet、VGG-16Net与文中改进模型4种卷积神经网络模型的平均识别准确率均优于传统的分区域融合算法,各种方法的平均识别准确率分别为86.9%,92.5%,93.8%,95.2%,96.1%。在对存在模糊分类界限的state1和state2状态进型识别时,文中改进模型比传统的分区域融合算法分别提升了17.1%和11.3%。在卷积神经网络模型中,标准VGG-16和改进模型的特征提取都是通过3*3滤波器的层层提取,能够更加有效地提取公交车内的拥挤状态特征,识别结果要优于AlexNet和GooleNet。由于改进VGG模型减少了全连接层数量,大量降低了训练参数量,因此在识别精度上略高于标准VGG。从测试结果看,文中提出的改进VGG-16模型比其它模型方法具有更好的识别准确率,更适合解决公交车拥挤状态识别的实际问题。
5 结束语
对公交车内拥挤识别问题进行研究,在标准VGG-16网络基础上,用2个全连接层替换原有的3个全连接层,并用4标签Softmax分类器替换原有的分类器,利用迁移学习对建立好的公交车拥挤状态四分类数据集进行训练和测试。
对比其它方法,改进后的VGG模型识别精度更高,准确率达到96.1%,且比标准VGG模型收敛更快,更加稳定,能更好地解决公交车拥挤状态识别问题。下一步要对模型的卷积层和池化层的结构进行优化,提高模型对于模糊分类界限state1和state2的特征提取能力和识别精度。