基于胶囊神经网络的车型精细识别研究
2021-04-06程换新郭占广刘文翰张志浩
程换新,郭占广,程 力,刘文翰,张志浩
(1.青岛科技大学 自动化与电子工程学院,山东 青岛 266061;2.中国科学院新疆理化技术研究所,新疆 乌鲁木齐 830001)
0 引 言
近年来,由于国内汽车保有量持续增加,如何及时高效地管理道路交通成为交管部门的首要难题。与此同时,基于视频图像的车辆特征识别技术迅速发展,广泛应用于无人驾驶汽车、智能辅助驾驶系统等领域,逐渐成为图像识别与模式识别领域新的研究热点[1]。正确进行车型精细识别是智慧交通走向成熟的重要技术环节。车型种类众多,不同型号的车辆外观差异较小,拍摄的车辆图像大多处在复杂多变的环境中,障碍物遮挡、恶劣天气等因素都会对检测识别车型造成影响。因此车型精细识别技术需要具有较强的准确率和鲁棒性来满足不同影响因素下的识别任务。为提升鲁棒性和识别准确度,国内外专家学者做了大量的研究,Baek等人[2]通过使用HSV颜色空间的H和S分量的颜色直方图来生成用于SVM分类和识别的二维直方图。Kim等人[3]在HIS色彩空间中通过为每个颜色通道设置不同数量的统计间隔,改进了Baek的研究成果,该方法不仅提高了精度,而且减少了模型处理时间。Farhad Mohammad与Kazemi[4]提出利用FFT进行车辆特征的提取,Rahti[5]改进了Kazemi的研究工作,最后通过使用Contourlet变换进行车辆特征提取;Zafar[6]通过多种特征融合进行特征匹配,最终实现车辆特征识别。此外,也有学者通过SIFT、HOG、LBP等[7-8]特征提取方法来实现车辆特征识别。
近年来车辆识别对细节的要求逐渐提高,如何准确描述车辆细节特征已经成为当前车辆精细识别的研究热点[9]。Lee和Gao[10]首先进行图像二值化,然后对处理后的图像进行ROI检测。Felzenszwalb等人[11]通过对局部信息分析,建立一种可变成分模型,极大地提高了模型识别局部特征的能力。
随着深度学习在机器视觉领域得到广泛的关注和发展,通过深度学习进行物体识别和检测的方法已经成为主流,卷积神经网络(convolutional neural network,CNN)在特征提取、图像分类方面都有着巨大的优势,是目前最常用的网络[12-14],但仍有一些缺点和限制,例如卷积神经网络难以获得空间和方向的相对关系,卷积神经网络在池化层容易丢失大量信息等[15]。为了解决这些问题,Hinton教授提出了胶囊神经网络[16](capsule network,CapsNet),其在MNIST数据集中表现出了良好的手写数字识别率,获得了比卷积神经网络更好的识别结果[17]。
因此,该文提出了基于胶囊神经网络进行车型精细识别的算法,同时用更加接近实际情况的CompCars数据集评估所提算法,实验结果表明该模型能够更准确地识别车型,具有良好的鲁棒性,对智能交通自动驾驶技术具有重要的推动作用。
1 胶囊神经网络
作为深度学习的代表算法,卷积神经网络在图像识别方向上有良好的特征表象能力,卷积神经网络直接作用于彩色图像上进行特征提取。与常规的人工特征提取方法相比,卷积神经网络降低了训练参数的数量,通过池化技术有效降低了特征维度,改善了泛化性能。但是卷积神经网络仍然存在一些问题,卷积神经网络需要庞大的图片集进行训练,不能很好地应对模糊性,卷积神经网络会在池化层丢失大量的信息,从而降低空间分辨率。为此,该文提出将胶囊神经网络应用于车型精细识别方法中。
1.1 网络结构
胶囊神经网络在2017年10月份的机器学习顶级会议“神经信息处理系统大会(NIPS)”中由Hinton教授提出。胶囊神经网络是以卷积神经网络为基础发展而来。胶囊神经网络与卷积神经网络结构上有所不同,胶囊神经网络在卷积层后面加入了两个新层用来替代卷积神经网络中的采样层。其网络结构如图1所示,第一层是卷积层,第二层为基础胶囊层(PrimaryCaps),第三层为数字胶囊层(DigitCaps)。基础胶囊层与卷积层十分相似,基础胶囊层的作用是获得最低级的多维实体特征,再将这些特征进行组合。数字胶囊层的输入矢量是基础胶囊层的输出矢量。在数字胶囊层内部,每个输出矢量都通过权重矩阵输入控件映射到胶囊输出空间中。
图1 胶囊神经网络网络结构
作为胶囊神经网络的基本单元,胶囊(capsule)中包含多个神经元,通过检测和学习图像中的一些特定区域,输出一维向量,该向量代表图像中特定实体的各种属性。这些属性包含众多不同类型的实例化参数,例如速度、形变、色相等。当研究对象发生变化时,胶囊输出矢量,长度不变,矢量方向发生变化,每个胶囊都是等变的。
1.2 胶囊神经网络训练过程
胶囊神经网络采用挤压(squashing)非线性函数作为激活函数来保证输出的向量长度在0~1之间。表达式如式(1)所示:
(1)
(2)
(3)
其中,Cij为每一个底层胶囊与之相对应的高层胶囊之间的权重,由采用的动态路由算法中的softmax函数决定,表达式如式(4)所示:
(4)
下面参考文献[18]给出的算法一,是动态路由算法的具体计算过程,如图2所示。其中bij为胶囊i与胶囊j相互耦合的先验概率,bij只依赖于两个胶囊的位置与类型。
图2 胶囊神经网络路由算法运算流程
1.3 胶囊神经网络损失函数
胶囊神经网络的损失函数类似于支持向量机的损失函数,如式(5)所示:
Lk=Tkmax(0,m+-‖vk‖)2+λ(1-Tk)max(0,‖vk‖-m-)2
(5)
其中,Tk为分类指示函数(k类存在为1,不存在为0);vk为网络输出数据;m+为上界,惩罚假阳性,m-为下界,惩罚假阴性,该文选取经验值m+=0.9,m-=0.1;λ为比例系数,调整两者比重,默认初始值为0.5。
2 车型图像识别模型CapCar
该文提出一种基于胶囊神经网络的车型识别模型CapCar,该模型从车型图片中提取出车型图像数据,对其进行分类预测。CapCar模型的参数及其网络结构如表1和图3所示,CapCar网络模型共分为4个结构层,其中包含两个胶囊层和两个卷积层,与原始CapsNet相比,CapCar模型通过更深更广的网络结构,可以更加精准地进行车辆结构信息提取,有助于车型的分类识别。此外,CapCar模型中还包含一个重构部分,该重构部分包含3层全连接层,输入为车型胶囊层的胶囊值,通过重构输入图像增加模型的鲁棒性。以下分别对每一层进行详细的介绍。
网络的输入为车型图片数据,该数据来自于CompCars数据集,图像的尺寸为128×128像素。
CapCar模型的第一层和第二层均为卷积层,卷积核大小分别为9×9和3×3,通道数分别为128和256。第一个卷积层利用较大的卷积核来提取图像中的整体特征,主要包括车型的轮廓、大小等特征。第二个卷积层的卷积核相对较小,主要用于提取车型的局部特征,包括车型的形状、结构等。在车型精细识别中,这些特征起着至关重要的作用。与原始的胶囊神经网络相比,该文提出的CapCar方法增加了更多的卷积层,目的是在车辆图像中提取更抽象的高层形状特征,同时通过使用两个尺寸不同的卷积核用来提取图片中不同尺度的车型特征,从而进一步提高模型分类识别的准确率。此外,在这些卷积层中,均使用Relu激活函数对卷积运算的输出进行非线性激活。
CapCar模型网络的第三层、第四层均为胶囊层,其中第三层是主胶囊层(PrimaryCaps)以第二个卷积层输出作为输入,并通过大小为3×3的卷积核,分别对其卷积8次,获得32路胶囊特征图,其中各个胶囊的维度是8。胶囊里的每个神经元分别代表各种实例参数,胶囊的长度象征着对象存在的概率。因此,每个特征图的大小均为25×25×8,并且特征图中的所有胶囊权重共享。网络的第四层为车型胶囊层(CarCaps),由281个胶囊组成,每个胶囊大小均为1×256,分别代表281种汽车类型。
图3 CapCar网络结构示意图
表1 CapCar网络结构及其参数
CapCar模型中主胶囊层与车型胶囊层之间全连接,各权值均由动态路由算法确定。CapCar模型的输出为车型的分类识别打分,对每张车型图片,网络都会输出281种车型的预测打分值,该分值由计算车型胶囊层中胶囊的长度得到,代表其分别属于每种车型的概率,最终将概率最高的一类作为网络的识别结果。
此外,CapCar模型网络中还包括由3个全连接层组成的重构部分,该重构部分以车型胶囊层的输出作为输入,通过重构车型图片来进一步优化网络,其中三个全连接层分别包含了512、4 096和16 384个神经元。
CapCar模型中的超参数如表2所示。在初始化阶段,选择Glorot均匀分布初始化方法进行网络参数的初始化,同时偏置设为0。在网络训练的过程中,通过Adam优化器进行权重的学习和更新,其参数分别设置为0.9、0.999和10-8。除此之外,网络训练时的学习率设置为0.000 1,共迭代10 000次,批处理参数为128,即每次训练时,同时对128张图像进行训练。
表2 CapCar网络超参数汇总
3 实验与分析
3.1 实验环境
由于神经网络训练量比较大,故选择高性能GPU来进行运算提速。实验所用计算机处理器为AMD Ryzen 7-1700,显卡为GTX 1080 TITAN,内存为16 GB。操作系统为Windows10 64位,神经网络部分使用开源的Keras模块搭建,软件编程环境为python3.0。
3.2 车型识别数据集
目前CompCars数据集最大且最适用于进行车型精细识别研究,CompCars数据集如图4所示。CompCars数据集分为两部分,一部分是完全来源于网络的网络图片,一部分是完全来源于卡口监控拍摄的监控图片。其中,网络图片共包含163个汽车品牌下的1 716种汽车模型,共136 726张整车图片,监控图像共包含覆盖了夜晚、雾天和雨天等复杂环境下共281个型号的44 481张车辆图片。实验将CompCars数据集分为测试数据和训练数据两部分,两者比例为3∶7。
图4 CompCars数据集
3.3 数据集预处理
进行网络训练前,首先进行图像的灰度化处理,提高模型训练速度。实验通过加权平均值法进行图像的灰度化处理,表达式如式(6)所示:
I(x,y)=aR(x,y)+bG(x,y)+cB(x,y)
(6)
其中,R(x,y)、G(x,y)、B(x,y)分别表示图像的三种颜色分量值,a、b、c为对应分量的系数,I(x,y)为灰度图像的输出值。
CompCars数据集图片尺寸不统一。但是在CapCar模型中,网络输入节点个数是固定的,为满足网络图像的输入要求,需要将图片统一尺寸。本次实验采用裁剪和填充的方法调整图像尺寸来满足网络输入要求,该方法不改变图片的像素信息。
3.4 实验结果与分析
表3给出了该文提出的胶囊神经网络模型(CapCar)与其他模型在基准数据集CompCars下的识别准确率对比。由于在该数据集中每种车型的图片数量差异较大,其中类别数量最多的图片高达565张,而类别最少的图片数量仅为14张。因此,为减少车型类别图片数目不平衡对识别结果产生影响,采用以下两种方法进行实验结果准确性评估,两种方法的具体公式为:
(7)
(8)
其中,ti表示每个类中正确预测的样本数,ni表示每个类中的样本数,N表示类的数量。
表3 文中算法与其他算法比较
表3中,第1~3行是通过经典卷积神经网络对数据集CompCars进行分类的结果,其中GoogLeNet的识别结果最好,其Acc1达到了98.5%,Acc2达到了97.9%。第4行是文献[19]提出的车辆模型识别方法,该方法利用从后视图像汽车标志的几何形状进行识别,与其他方法相比,该方法的识别精度较低;第5行MS-CNN模型对281种车辆类型进行细粒度分类得到了较高的准确率,其中Acc1与Acc2分别达到了98.83%和98.43%。文中提出的CapCar模型与MS-CNN方法相比,Acc1更高,Acc2基本持平,说明该方法在准确率方面优于MS-CNN模型。
4 结束语
通过调整和优化胶囊神经网络的网络结构,构建出一种基于胶囊神经网络的车型精确识别模型CapCar。通过CompCars基准数据集的实验结果表明,CapCar模型能够使用更少的参数量更加有效地提取车型图像特征,表明了CapCar模型在车型精确识别中的有效性与实用性。