董伊明
摘 要:本文利用Spark分布式计算框架,提出了一种基于分布式卷积神经网络的车型识别算法。该算法通过改进卷积核参数和丢弃相似特征图来优化网络,通过改进分布式梯度下降来减少master和slave同步通信量,从而提高了收敛速度和性能。试验结果表明,该算法可有效提高车型分类的速度和精度。
关键词:车型识别;卷积神经网络;分布式梯度下降;Spark
中图分类号:TP391.41;TP183 文献标识码:A 文章编号:1003-5168(2019)20-0028-04
Research on Vehicle Identification Algorithm Based on
Distributed Convolution Neural Network
DONG Yiming
(Nursing College of Zhengzhou University,Zhengzhou Henan 450001)
Abstract: This paper proposed a vehicle identification algorithm based on distributed convolution neural network by using Spark distributed computing framework. The algorithm optimizes the network by improving the convolution kernel parameters and discarding similar feature maps, and reduces the master and slave synchronous traffic by improving the distributed gradient descent, thereby improving the convergence speed and performance. The test results show that the algorithm can effectively improve the speed and accuracy of vehicle classification.
Keywords: vehicle recognition;convolution neural network;distributed gradient descent;Spark
随着我国交通基础设施的不断完善,政府对公路建设的投入不断加大,道路上汽车的流量也越来越大,但同时也带来了乱闯红灯、交通阻塞、超速、交通事故等一系列问题[1]。视频监控系统作为交通监管的一种重要手段,已被广泛应用于现代交通的各个领域。随着图像数据量的急剧增加,如何对大规模的数据集进行高精度的识别成为研究热点。
近年来,卷积神经网络成功应用于图像分类中,很多分类应用都转移到卷积神经网络上进行处理。对于车型的识别问题,传统的图像特征提取方式是采用PCA+SIFT[2]、SIFT[3]等,但是这些方法的缺点是人工干预太多,无法自动提取特征。而卷积神经网络通过自主学习获取特征,对平移、缩放等仿射形变具有良好的抵抗能力,有效克服车辆外观多变带来的困难。卷积神经网络的训练是非常耗时的,尤其是迭代的部分,当数据规模扩大时,在单台机器上处理就会带来频繁的IO读取而浪费大量时间。由于Spark平台是基于内存运算进行分布式计算,利于迭代,也可以进行海量数据的高效处理,在迭代和交互式方面超过了Hadoop,并且Spark支持多语言编程,易于使用,因此本文基于Spark和卷积神经网络,对汽车图像识别问题进行研究。
1 相关研究
1.1 卷积神经网络
一个卷积神经网络通过卷积层提取低级的特征,再通过采样层组合成更抽象的特征,形成图像的特征描述,最终通过激活函数对图像进行识别与分类。
对于车型识别问题,传统的CNN虽然有良好的识别效果,但其隐藏层过多的网络节点增加了训练的复杂度。为了减少节点的冗余,本文提出了一种改进的神经网络,即分布式卷积神经网络(Distribution Convolution Neural Network,Dis-CNN)算法,该算法从前向传播和反向传播两个角度来改进。在前向传播过程中,先对卷积核参数的初始化进行改进,再对每层卷积后的特征图进行处理,冗余的特征图被丢弃,达到减少网络节点来提高训练速度和精度的目的。在反向传播的分布式梯度下降过程中,通过减少集群主从节点的通信量来进行改进,加快分布式梯度下降的计算。
1.2 Spark平台及分布式梯度下降
Spark是Apache顶级项目里面的大数据计算引擎,与MapReduce相比,Spark具备DAG执行引擎以及基于内存的多轮迭代计算等优势。在面向分布式集群系统的随机梯度下降研究工作中,Keith Hall[4]等人利用MapReduce并行编程模型实现了随机梯度下降算法的并行化,这种分布式算法在一定程度上取得了加速的效果,但仍有很多的不足之处,因为MapReduce是基于大量的IO来实现Map和Reduce阶段的数据传输的,这样频繁的换入换出操作对于迭代而言无疑会浪费很多的时间。基于MapReduce的随机梯度下降首先将训练数据随机均分为若干份,是基于数据并行来实现的,对数据划分后再去启动同等数量的Map任务,每个Map任务针对各自的训练数据计算梯度。
2 改进的CNN算法
2.1 基于random与K-means的特征图去冗余方法
对CNN的改进一般从改进网络的结构和改进网络参数入手。Krizhevsky等人[5]对网络结构进行了改进,Fu等人[6]在训练过程中优化了网络参数,He等人[7]改进了激励函数。在对传統的卷积神经网络进行深入的分析后,人们对它在一般图像分类中的优势进行了归纳总结并加以利用。
一幅图的特征数目是有限的,过多的特征图会使特征之间存在冗余,这不仅增加了训练参数的数量,也会降低网络的泛化能力和检测的准确率。因此,人们要计算每个特征图之间的差异性,优化网络节点个数。卷积阶段,对于卷积后得到的隐藏层特征图,分别计算它们之间的相似度,定义一个相似度参数[H],[H]值越小说明这两个隐藏层特征图越相似。前向传播中卷积层计算公式如下:
式中,[xlj]为第[l]层的第[j]个特征图;[Mj]为输入的特征图;[klij]为第[l]层的第[j]个卷积核;[blj]为第[l]层的第[j]个偏置;[f(x)]为激励函数。所谓卷积其实就是要卷积的区域和卷积核的点乘和,加上偏置之后的激活输出。
改进的前向传播过程如下:确定图像分割区域及块数;确定8个初始簇中心块点;使用K-means方法學习卷积核参数;重复上述步骤直到求出所有卷积层的卷积核参数。
2.2 分布式梯度下降中master-slaves通信冲突缓解策略
卷积神经网络需要大量迭代来完成训练。相比于Hadoop框架,Spark平台由于基于内存这一特性非常适合做迭代计算。本文主要改进了分布式梯度下降中master与slave的通信冲突。
常见的分布式随机梯度下降算法可以分为数据并行和模型并行两大类。对文献[8]方法进行研究后,笔者获得启发,因此使用数据并行方法。其中,master负责模型参数的存储与更新,slave负责训练子集的存储和梯度的计算。经典数据并行的随机梯度下降算法是在master和slave之间互相同步通信实现的,但这势必会有很多同步通信延迟。大量的同步操作使算法无法实现真正的并行化。为了减少master和slave之间的同步通信数据量,人们可以根据阈值划分小组,并以小组为单位合并slave端的通信数据。反向传播即是前向传播的逆过程,由第[l]+[l]层计算第[l]层相应的参数。计算过程涉及卷积层与池化层的权重求导操作。假设使用的损失函数为:
式中,[tnk]为第[n]个样本对应得标签的第[k]维度;[ynk]为经过网络计算后对应第[n]个样本的第[k]个预测输出值。
在求反向传播梯度误差之前,每个slave开启一个监听进程。该监听进程负责收集其他slave节点传过来的梯度误差,求和后发给master节点。根据式(2)求出的误差与自定义阈值[b]进行对比,之后分组。如果[EN< b]则说明识别精度高,分配权重为0.55,否则权重为0.45。因为在分布式计算中,并不是所有结果都会起到关键作用,所以可对结果有相应的权重区别。该进程如果是第一个计算出传播误差结果的进程,则作为该组leader,收集该组其他slave发过来的梯度计算结果。组长slave进程收集本组其他slave发来的结果并进行汇总,而后再汇报给master。这样带来的好处是master不用再与每一个slave进行通信,仅仅与两个slave小组长通信,master和slave通信延迟会减少,相应的计算结果会更加准确。具体流程如图1所示。
3 试验结果及分析
在对图像进行分类时,PCA+SIFT、SIFT、CNN的类别分类效果不理想,有必要进行改进,因此本文设计了卷积神经网络,使其在单机上和分布式上运行。为了证明该算法的有效性及在分布式上运算的优势,笔者进行了试验对比。
3.1 数据集及预处理
为了训练数据的可靠性,本试验采用的数据集来自网上的通用汽车图像数据库Bit Vehicle Dataset,并从中挑选不同类别车型的图像数据,共分为轿车、运动型多用途汽车、公共汽车、卡车和小型货车 5类车型,每类分别取4 072、1 392、883、822、476张图像。
为了减少运算量,在图像数据进行改进的卷积神经网络训练前,对图像做了预处理。在原始图像中将汽车部分提取出来,并且把数据归一化到像素为100×100的数据集。对于预处理后的数据集进行遍历,分别把第[i]张图像像素数据转换到一个向量上,转换格式为[Vi](label,data);将[Vi]作为一行数据写入data文件。其中,label是一个元组(a1,a2,a3,a4,a5,a6),参数取值为0或者1,1代表车型。将data文件上传到HDFS上。通过Spark从HDFS读取文件,对文件进行Map操作使之可以进行并行化操作,格式转换为(label,Matrix)。
3.2 算法精确度对比
本试验对PCA+SIFT算法、SIFT算法、CNN算法和改进的Dis-CNN算法进行对比,并记录试验结果。本文通过试验寻得的最优卷积神经网络结构共7层,其中第一层为输入层;第二层和第四层为卷积层,使用大小为5×5的滤波器,个数分别是8和10;第三层和第五层为池化层;第六层为全连接层,采用softmax函数;第七层为输出层。试验结果如表1所示,人们可以发现,改进后的Dis-CNN对这8类图像分类数据的识别精度有了明显的提高。虽然SIFT、PCA+SIFT、CNN对图像的识别是依次升高的,但是识别精度还有提升的空间,通过改进后的Dis-CNN进行验证,精确度有了明显的增加,从而证明了该改进算法的有效性。
3.3 Dis-CNN参数初始化策略对召回率的影响
在对卷积核参数初始化时,部分参数使用了random,剩下的使用了K-means,结合了两者的优点。为了证明改进的有效性,本文设计了试验,与使用random和K-means初始化卷积核参数的CNN进行了对比,结果如表2所示。表中的迭代次数为召回率最高时的数据。由此可以看出,使用本文改进的参数初始化方式Dis-CNN时,召回率最高,迭代次数最少。
3.4 master-slave分类阈值对Dis-CNN训练精度的影响
由于本文的切入点是对相似的特征图进行丢弃,然后根据slave分类减少master与slave的通信量,所以还需要分析不同的阈值对Dis-CNN算法的影响。每一个特征图的相似度阈值可以对应不同的slave分类阈值,从而得到不同的召回率。通过大量的试验,本文选出了几个较优的阈值。从试验结果可以看出,召回率并不是随着阈值的增大而增大的。当两个阈值都为0时,其降级为普通CNN算法,效果不佳。由此可见,本文提出的算法较好。
3.5 算法的加速比
改进的Dis-CNN算法对车型分类有较高的精确度和召回率,但该算法使用了分布式技术进行设计,所以应该考虑其并行性。通常,人們利用算法的加速比衡量算法的并行性能,它表示同一任务单节点运行时间与多节点运行时间的比率。通过试验可知,当数据量相同时,随着节点数的增加,加速比有明显的上升趋势,可见算法在处理大规模数据时并行性能较好。
4 结语
本文结合了卷积神经网络和Spark平台的优点,提出了一个分布式卷积神经网络的算法,并将其引入车型识别中,取得了理想的效果。其间指出了传统卷积神经网络算法的缺点,并对参数初始化和隐藏层进行了改进,减少了训练的复杂度。在卷积神经网络分布式梯度下降的过程中,针对master和slave大量同步通信造成的延迟大等问题,笔者提出分布式梯度下降优化方法,减少了梯度传播过程中master和slave的同步通信量。通过试验对比,改进的卷积神经网络算法对大规模汽车图像的识别精度高、泛化能力强,并且有很好的并行性。
参考文献:
[1]La H M,Im R S,Du J H.Development of a Small-scale Research Platform for Intelligent Transportation Systems[J].Intelligent Transportation Systems,IEEE Transactionson,2012(4):1753-1762.
[2]Ge F X,Shi Y,Sun B,et al.Sparse Representation Based Classification by Using PCA-SIFT Descriptors[C]//4th IEEE International Conference on Information Science and Technology.2014.
[3]华莉琴,许维,王拓,等.采用改进的尺度不变特征转换及多视角模型对车型识别[J].西安交通大学学报,2013(4):92-99.
[4]Hall K B,Gilpin S,Mann G.MapReduce/Bigtable for Distributed Optimization[C]//LCCC:Nips 2010 Workshop on Learning on Cores,Clusters and Clouds(LCCC).2010.
[5]Krizhevsky A,Sutskever I,Hinton G E.Imagenet Classification with Deep Convo1utional Neural Networks[J].Advances in Neural Information Processing Systems(NIPS),2012(6):1097-1105.
[6]Fu M,Xu P,Li X,et a1.Fast Crowd Density Estimation with Convolutional Neural Networks[J].Engineering Applications of Artificial Intelligence,2015(43):81-88.
[7]He K,Zhang X,Ren S,et a1.Delving Deep into Rectifiers:Surpassing Human-level Performance on Imagenet Classification[J].Computer Vision and Pattern Recognition(CVPR),2015(1):1026-1034.
[8]Noel C,Osindero S.Dogwild!-Distributed Hogwild for CPU & GPU[C].//NIPS Workshop on Distributed Machine Learning and Matrix Computations.2014.