车载环境下基于卷积神经网络的车型识别方法与流程

文档序号:16088756发布日期:2018-11-27 22:45阅读:421来源:国知局

本发明涉及基于计算机视觉领域的目标分类方法,主要是基于caffe深度框架和卷积神经网络改进的车型识别方法。



背景技术:

深度学习和卷积神经网络(CNN)近年来在公共安全领域取得了令人咂舌的成就。在公安系统中,与汽车相关的任务占所有计算机视觉任务的很大一部分。目前车牌识别已经被广泛用于交通安全系统中,车型识别也已经成为计算机视觉领域中日益流行的任务。2013年,Krause等人发布了车型识别的数据集(斯坦福汽车数据集)。并且在计算机视觉领域中进行了各种研究工作以进行车辆识别。与其他通用对象(如人脸识别和ImageNet分类)的识别或分类相比,车型识别代表了典型的具有挑战性的细粒度识别任务。由于车辆之间存在的视觉差异非常微小,因此类别内的变化非常小。此外,车的不同形态,观察的不同视点和外观使得自动系统(甚至人眼)难以区分车的子类,例如不同品牌的不同型号的车。

目前,已经有很多用于车型的细粒度识别方法,并且在斯坦福汽车数据集上具有相当好的性能。例如,文献1(Xiao Liu, Tian Xia, Jiang Wang, and Yuanqing Lin. 2016. Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition. CoRR abs/1603.06765 (2016).)中的FCAN能达到89.1%的准确率,文献2(Tsung-Yu Lin, Aruni Roy Chowdhury, and Subhransu Maji. 2015. Bilinear CNN Models for Fine-Grained Visual Recognition. In 2015 IEEE International Conference on Computer Vision, ICCV 2015, Santiago, Chile, December 7-13, 2015. 1449–1457.)中的BCNN能达到91.3%的准确度等。然而,他们都只关注如何定位有差别的区域并将细微的视觉差异表示出来。与其他精细物体不同,车辆具有独特的树形结构:品牌,型号和年份。虽然已有大量关于分层多标签学习的工作研究,但他们使用传统的基本CNN模型,而不是应用细粒度的方法。但是为了提高车型识别的准确性和鲁棒性,分层分类的方法非常值得研究。



技术实现要素:

本发明提出了一种新的可以学习分层多标签的深度神经网络框架,其中主要包括两点创新:1)提出了一种新的神经网络框架,即语义紧凑双线性池化,将文献3(Yang Gao, Oscar Beijbom, Ning Zhang, and Trevor Darrell. 2016. Compact Bilinear Pooling. In 2016 IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2016, Las Vegas, NV, USA, June 27-30, 2016. 317–326.)中的紧凑双线性池化(CBP)方法与车辆的语义结构相结合,如图2所示。原始BCNN中的CNN分支A和分支B扩展成了三个代表品牌,型号和年份的分支;2)本发明设计了一个可以充分利用先验知识的损失函数,使得品牌分支的结果可以指导型号分支的预测。

发明的技术方案为:

(1)细粒度识别

如上所述,细粒度分类研究的两个主要任务是如何定位有差别的区域并对细微的视觉差异进行表示。为了解决这些问题,近年来提出了很多方法。基本上,以前的模型可以分为两类:1)基于监督学习的分类模型(在本发明中称为S模型)和2)基于无监督学习的分类模型(在本发明中称为U模型)。

S模型通过应用额外人为标注的边界框和部分注释(例如车灯,车标和汽车内饰)来解决问题。2014年,张等人。提出了基于部分的R-CNN,它可以训练三种检测模型:第一种用于检测汽车精细的部分,第二种用于检测车头,第三种用于检测车身。在基于部分的R-CNN之后,S.Branson等人提出了姿态归一化CNN,该算法对图像的局部区域进行姿态对齐操作,并根据不同层次的图像区域提取不同层次的特征。2016年,有学者使用FCN提出Mask-CNN来定位有差别的部分并选择有用的卷积描述符来减少来自背景的噪声影响。显然,上述方法一般不能普遍适用于各种情况,因为他们的工作高度依赖于大量的标注。出于这个原因,U模型自然会成为主流。两级关注模型在任务中应用视觉注意力,并使用簇滤波器从感兴趣的区域中实现部分的定位。很多研究工作都将注意力机制使用到已有的方法中。FCAN使用基于强化学习的全卷积注意定位网络,它使用注意力机制同时定位多个部分。文献4(Jianlong Fu, Heliang Zheng, and Tao Mei. 2017. Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-Grained Image Recognition. In 2017 IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2017, Honolulu, HI, USA, July 21-26, 2017. 4476–4484.)中的RA-CNN共同递归地学习准确的区域注意和基于区域的特征表示。RA-CNN使用感兴趣注意力子网络以递归的方式从粗到细产生区域关注。同样,文献5(Heliang Zheng, Jianlong Fu, Tao Mei, and Jiebo Luo. 2017. Learning Multi-attention Convolutional Neural Network for FineGrained Image Recognition. In IEEE International Conference on Computer Vision, ICCV 2017, Venice, Italy, October 22-29, 2017. 5219–5227.)中的MA-CNN也使用了相同的注意力机制,但MA-CNN使用由三个子网组成的管道:卷积网络,通道分组网络和分类网络。尽管使用了注意力机制,双线性结构更吸引了研究者,其主要思路是将两个CNN分支应用为两个特征提取器,并在每个有区别的部分使用外部结构将其输出相乘。然后,它在池化操作之后获得图像描述符。然而,由于原始双线性池化的高维问题,有学者在不牺牲精度的前提下使用张量素描投影和随机麦克劳林投影来大幅度降低维度。在本发明中,紧凑双线性池化方法被用作我们基本的细粒度技术。

(2)分层学习

传统CNN分类模型通常设计为以前N个预测为输出的softmax层。他们大多数是连续的,少数是平行的,但只是为了减少梯度消失,如GoogLeNet。然而,对我们来说,区分不同类别的困难程度是不同的。有些类别可能比其他类别更难预测,如果我们将CNN分类模型用扁平结构进行训练,则这种类别并不平衡。除此之外,较低层次的CNN模型相较于较高层次的CNN模型产生的特征更少。所以很自然地,一些论文提出了分层的CNN模型,如HD-CNN。HD-CNN的主要贡献是证明CNN模型的分层属性可以与分层标签结构相结合。HD-CNN模型使用与CNN模型较低层次相对应的共享粗类别分类器来区分简单类别,并使用实际上是CNN模型较高层次的精细类别分类器来区分复杂的类别。此外,B-CNN完成了端到端的训练,而不是像HD-CNN这样两个阶段训练的过程。更值得庆幸的是,B-CNN的整体结构和修改损失权重分布的BT策略为本发明提供了很好的指导。

虽然HD-CNN和B-CNN都采用分层学习,但它们只是利用CNN模型不同层次的层次特征,而不是标签之间的语义连接。有些工作试图找出这个问题,文献6(Jia Deng, Alexander C. Berg, and Fei-Fei Li. 2011. Hierarchical semantic indexing for large scale image retrieval. In The 24th IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2011, Colorado Springs, CO, USA, 20-25 June 2011.785–792.)中的方法旨在通过使用根据已知结构构建的预定义比较函数来解决该问题。文献7(Xiaofan Zhang, Feng Zhou, Yuanqing Lin, and Shaoting Zhang. 2016. Embedding Label Structures for Fine-Grained Feature Representation. In 2016 IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2016, Las Vegas, NV, USA, June 27-30, 2016. 1114–1123.)中的方法将三重损失函数推广到可应用于训练阶段的四元组约束。

(3)语义紧凑双线性池化

本发明中的语义紧凑双线性池化框架将CBP方法和车辆的语义结构组合在一起。用标签树表示车辆的分层标签结构。在标签树中,粗略等级是品牌(例如奥迪),更精细的等级是型号(例如奥迪A8),最细的等级是年份(例如奥迪A8 2011)。

本发明将原始BCNN的CNN分支B扩展为三个分支,像传统CNN模型一样提取特征;将CNN分支A扩展为三个分支,其主要任务是定位有差别的区域。以品牌分支和型号分支之间的对应关系为例,我们将品牌-A(表示分支A的品牌分支)和品牌-B(表示分支B的品牌分支)的输出相乘,产生品牌分支的双线性向量。之后的softmax损失层起到损失函数的作用,除了这个softmax损失层,双线性向量后还接了一个softmax层和argmax层的组合。型号分支类似于品牌分支,但使用规避损失函数,其输入是两个分支的两个argmax层的输出。最后,将softmax损失和规避损失组合成最终的损失。

由于CBP方法在细粒度任务中取得了很好的性能,而且不同分支具有不同的损失函数将加强两个分支中参数的迭代,所以可以充分利用CBP方法和使用语义CBP结构的标签树结构识别车型。

(4)规避损失函数

传统的softmax损失函数和梯度的定义如式(1)和式(2)所示:

式(1)

式(2)

其中s表示softmax损失函数,I是批处理的数量,y是第i个图像的标签。是指第i个图像的交叉熵损失。

为了充分利用车辆的语义信息,本发明设计了一种新的神经网络损失来充分利用先验知识。本发明所使用的规避损失函数和它的梯度定义如式(3)和式(4)所示:

式(3)

式(4)

其中c表示规避损失函数。根据下面介绍的决策机制,等于0或1。

显然,式(1)和式(2)中的元素在整数范围内是连续的。相比之下,式(3)和式(4)中具有离散元素,因为本发明将每批中的某些图像的损失设为零。为了决定哪些图像的损失将被忽略,本发明基于两个层次的标签之间的相互依赖性来构建标签矩阵。

此外,本发明设计了一个基于标签矩阵的匹配函数来决定是否保留该图像。也就是说,如果这个图像的模型预测与相应的品牌标签的相互依赖不匹配,本发明将不会计算这个图像的损失。通过这种方式,本发明的目标是充分利用先验知识,使得品牌分支的结果可以指导模型分支的预测。

本发明和现有技术相比所具有的有益效果在于:

相对于现有技术来说,本发明做出了两方面的改进:第一,将CBP方法和汽车类型的层次结构结合在一起,CNN(分路A)和BCNN(分路B)相结合扩展出两条分支用于识别车型大类(品牌)和车型子类(具体型号);第二,设计了一个新的损失函数,保证型号层次的预测结果属于正确的品牌层次的预测结果。由于以上两方面的改进,本发明提高了车型识别模型的准确性和鲁棒性,具体体现在以下三个方面:

1)结合了分级标签树和双线性池化的分层车型识别CBP方法在CompCars数据集上展现出的性能表明:可以利用双线性池化方法来实现不同层次之间的语义连接,在训练过程中它们会相互加强;

2)CBP模型的学习模式与传统的CNN模型的学习模式不同,在CBP模型中,在损失权重回传之后,学习速率能大幅提升;

3)本模型将softmax损失函数推广到了规避损失函数中,旨在确保预测的优先级是汽车的品牌。实验表明,我们的方法提高了CompCars数据集上汽车类型识别的准度。

附图说明

图1为本发明中汽车语义结构的说明图;

图2为本发明所提出的的语义紧凑双线性池化卷积神经网络(SCBPCNN)的结构示意图;

图3为车辆分层标签树的结构示意图;

图4为本发明没有使用规避损失函数时的网络结构示意图;

图5为本发明使用规避损失函数时的网络结构示意图;

图6为本发明使用的两个用于测试的汽车样本以及它们的标签。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例的车型的识别方法及系统的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

(1)本发明使用的数据集

本发明的实验首先在斯坦福汽车数据集上进行。斯坦福汽车数据集包含16,185张,196种汽车图像。其中有8,144个训练图像和8,041个测试图像,每个类别大致5-5分割为训练集和测试集。在本发明的实验中,训练集和测试集的分布与官方分布相同。

本发明还在CompCars数据集上进行了实验。CompCars数据集是一个更全面的汽车数据集,其中包含两种场景的数据,分别为网络性质和监视性质的图像。网络性质数据的78,126张图像被分成三个子集,我们在实验中使用第一部分。第一部分包括431款车型,总共有30955辆整车图像。其中我们将16,016个图像作为训练集,其余的14,939个图像作为测试集。

根据正式提供的型号标签,本发明为CompCars数据集构建了一个包含74个品牌标签,431个型号标签和1343个年份标签的标签树,并为斯坦福汽车数据集构建了包含49个品牌标签和196个型号标签的标签树。

(2)实验描述

在本发明的实验中,我们构建了一个基于斯坦福汽车数据集和Compcars第一部分数据集的标签树。标签树由品牌标签,信号标签和年份标签组成,而在本发明的实验室将不使用年份标签,因为CNN模型在对年份标签的训练过程中时遇到了收敛问题。于是,我们使用原始的CBP方法来训练两个CNN模型,其中只有品牌分支或型号分支,改结果被视为本发明的基准。在获得基准之后,我们进行了CBP方法和分层标签树的第一种组合实验,但两个分支都照常使用softmax损失函数。然后,为了证明规避损失函数的实用性,我们将第二个softmax损失函数代入规避损失函数中,以充分利用先验知识,使得品牌分支的结果可以指导模型分支的预测。

在所有实验中,本发明使用了两个D网络作为局部描述符提取器,即CNN分支A和B。我们将输入图像大小设置为512x512,然后将一个图像裁剪成10个大小为448x448的图像。在训练过程中,我们选择随机梯度下降(SGD)作为我们的优化方法,动量为0.9。我们采用两个步骤来训练CBP这样的网络。首先,我们使用张量草图的方法,带符号平方根层,L2归一化层,还有完全连接层对网络的最后几层进行微调,包括紧凑双线性池化层。然后,我们再训练整个SCBP-CNN网络。本发明所有的深度模型均使用Caffe深度学习框架在两个NVIDIA TITAN Xp GPU上进行训练,本发明所有用于训练的图像都来自CompCars数据集和斯坦福汽车数据集,其中没有任何数据增强和预处理。

(3)实验结果

含有两个softmax损失函数的SCBP-CNN模型将CompCars数据集型号水平的识别准确率提高了0.3%,Stanford Cars数据集的准确率提高了0.5%。此外,具有softmax损失函数和规避损失函数的SCBP-CNN模型使CompCars数据集型号水平的识别准确率提高了1.2%,Stanford Cars数据集的准确率提高了1.1%。

为进一步解释本发明的优越性,我们列出了两个样本: Benz GL系列和BWM 7系列。当使用CBP方法时,该模型将左侧识别为奥迪A8,将右侧识别为长城M1。然而,我们的两个SCBP-CNN模型都使用品牌水平的先验知识对左侧的汽车进行了正确的预测。对于右侧的汽车,具有两个softmax损失的SCBP-CNN模型只能对它的品牌做出正确的预测。在应用规避损失函数后,该模型可以对右侧的汽车型号进行正确的预测。

综上可得,本发明确实提高了车型识别的准确率。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1