基于迁移学习的车辆目标识别

文摘   2024-11-11 21:20   江苏  
作者:李慧,王艳娥
来源:《计算机系统应用》期刊
编辑:陈萍萍的公主@一点人工一点智能
原文:https://www.c-s-a.org.cn/html/2024/11/9667.html

摘要:为提高车辆识别的准确率及识别的实时性能,本文提出了一种基于迁移学习的车辆识别方法。该方法通过卷积神经网络和支持向量机结合并做进一步优化,提高车辆识别的准确率,并减少模型训练时间和提高模型的鲁棒性。
该方法首先使用卷积神经网络在CIFAR-10数据集上训练好网络;然后结合残差优化的思想,使用更深的预训练网络结构提取细粒度特征;在模型网络的参数迁移过程中,只迁移预训练的卷积层参数,并添加全连接层在车辆数据集上进行微调; 最后将提取的特征直接放入支持向量机中进行分类。
通过详细的模型实验与结果分析,本方法能够最终达到的最高识别正确率为97.56%,单张图片识别时间260 ms,识别时间和正确率均得到了较好的优化。
引言
交通安全越来越受人们的关注,车辆识别有助于辅助人们在驾驶过程中预知追尾碰撞等事故,是安全辅助驾驶系统和智能交通的基础组成部分。本文重点关注于对图像中大中型车辆的识别,包括汽车、货车、公共汽车等,为了能够更好地应用于实际,图片均由实景拍摄,且背景趋于多样化,大多以街道为主。
车辆识别技术的发展主要分为2个阶段: 浅层学习阶段和深层学习阶段[1]。浅层学习阶段重点关注于如何提取特征以及选用适合目标任务和提取特征的分类器, 最终的识别性能较大程度上由提取特征的优劣所决定。 
浅层模型主要有强化学习方法、高斯混合模型、逻辑回归、支持向量机(support vector machine, SVM)等。常见的深度模型主要有卷积神经网络, 基于区域的卷积神经网络(R-CNN)以及其改进方法Faster R-CNN用于车辆的定位及识别。
在物体的识别任务方面,研究者们提出使用CNN网络与SVM相结合的方式。Darmatasia等人[2]和 Shima等人[3]使用LeNet-5, Alex-Net结构作为特征提取器, 使用非Softmax层的全连接层的特征作为输出, 放入SVM进行分类, 实现手写字符的分类及手写字符与其他目标图像的混合分类, 达到了良好的效果。 
Sun等人[4]和Xie等人[5]采用区域优化卷积网络RCNN或其优化方法Faster-RCNN, 使用选择性搜索或区域建议网络(PRN)生成相应的建议区域, 再根据其中卷积网络所提取的特征进行分类和边框回归, 其分类效果要优于其他方法, 但该方法的算法复杂性高, 实时性仍是一个需要解决的问题。
Espinosa等人[6]使用预训练的CNN提取特征, 放入SVM后完成了对汽车, 摩托车及复杂背景的分类。CNN+SVM方法在控制错分率的同时控制其经验风险,能够有效地避免过拟合等问题。陆金辉等人[7]基于混合高斯隐马尔科夫模型设计城市道路车辆行为识别方法, 结合目标车辆纵向和横向速度作为特征参数, 实现城市道路车辆行为的识别。 
韩帅[8]针对不同视角下视角引起的车辆外观差异问题, 通过静态和动态两种特征单元选择方法改善多视角对再识别准确率的影响。张峻祎等人[9]针对弱光环境下难以有效、实时检测图像中的目标车辆的问题,设计了特征提取模块与特征融合模块,提高弱光环境下的车辆识别网络的检测能力。
近年来,基于深度学习模型的车辆识别方法逐渐兴起,深度学习采用端到端的学习方式,提取特征方便, 只需要归一化、图片白化等简单的预处理, 能够大量地减少人工提取特征的前置工作同时提取有效的特征; 且卷积神经网络对图片的平移和缩放等操作不敏感,对光照、图像质量等不利于识别的影响的容错能力较强; 其对多通道数据上投射出来的不同特征偏向的敏感程度能够自动重置,泛化能力较强。 
徐岩等人[10]分析了无监督学习的车辆识别的方法,总结各类方法的基本原理、优缺点以及在主流数据集上的性能结果。并针对细粒度特征提取能力弱、域泛化能力差的问题,基于双重注意力与精确特征分布匹配设计车辆重识别方法[11],提升模型对车辆细粒度信息的敏感度。 
陈凯镔等人[12]提出了一个名为双分支对抗网络的图像到图像的转换网络,充分挖掘图像源域中的标记数据来缩小跨域偏差,基于跨域双分支对抗网络实现车辆的重识别。杨秀璋等人[13]针对复杂天气环境下的汽车目标检测,基于YOLOv3提出一种自适应图像去雾的汽车识别算法,提高复杂天气中行驶的车辆的识别准确度。 
李庆等人[14]以YOLOv5作为车辆目标识别的基本模型,采用迁移学习方法获得车辆识别模型的初始参数设置,有效提高了识别模型的收敛速度。章羽等人[15]针对车辆型号之间的误检问题,基于VGG11提出一种改进的车辆类型识别算法,应用注意力机制来增加有效特征图权重提高准确率。赵晋芳等人[16]针对车辆的自动检测识别,提出一种改进SSD-MobileNetV3网络,提高车辆自动识别的精度。
迁移学习是指将源领域现有的模型、参数或算法根据目标领域的需要进行调整以应用于目标任务,其对于标注样本的数据需求量较小,且能够根据目标任务进行自调整,具有一定的自适应性。
针对卷积网络的迁移学习主要分为两类:一类是直接使用源领域模型参数提取目标领域特征,放入合适的分类器中进行分类另一类是将源领域的模型参数的一部分置于目标领域进行微调(fine-tuning)[17]。
第1类方法主要用于目标领域与源领域特征空间一致时,训练更好的分类器,当源领域与目标领域不一致时,利用模型相同部分,提取特征后训练适合目标任务的分类器进行分类,以解决目标领域标记数据过少,或是从头训练耗时过长的问题。 
另一类用于目标领域与源领域不一致时,使用源领域的模型参数作为初始参数并添加全连接层进行微调以提取目标领域的高级结构化语义特征,同时降低了模型调参的难度。
在迁移学习用于车辆识别的研究中,迁移学习将源域训练得到的模型的参数作为目标域模型的初始参数,然后将模型参数用于目标域的训练样本并进行网络微调,实现从源域到目标域的信息迁移。
吴桐等人[18]针对合成孔径雷达图像车辆目标数据集,以数据集中的3类目标数据作为源域训练样本,10类目标数据作为目标域训练样本,在提高识别精度的同时实现较快的收敛速度;何治静[19]提出一种两阶段车型识别方法,第1阶段采用经过前景提取的高质量数据集作为训练数据集,在第2阶段融合基于迁移学习得到的特征向量以及底层特征算子的特征,采用泛化能力强的支持向量机对车型识别模型进行构建。
袁功霖等人[20]在ImageNet大规模数据集和中国科学院日间航拍中规模数据集之间应用一次迁移学习,然后在日间中规模数据集与夜间航拍小规模数据集之间应用二次迁移学习,提高模型的识别能力。张泽枫[21]通过迁移学习的方法对来源于网络的图片数据库上35个车辆厂牌的图片进行分类,在近1万张整体与局部图片库上达到了88.94%的识别准确率,并在每个局部部位识别过程中达到了较高的识别准确率。 
Wang等人[22]采用预训练的VGG网络的卷积层提取特征后使用支持向量机的组合作为分类器完成了对高速公路上阻塞程度的识别,虽然识别率比单纯地使用迁移的VGG网络的识别率有一定降低,但节省了8倍左右的时间;万斌杨[23]导入ImageNet上的预训练参数,将在大数据上训练好的知识迁移到拟定的新识别任务中, 使用少量样本、少量训练时间达到良好的识别效果。
基于迁移学习的识别模型
本文要解决的识别任务要解决的问题,只需判断所采集的图片中是否有车辆,从而进行有效避让,而非追踪,多分类,细粒度识别等任务,且正样本图片大多包含一个车辆,不需要对其精确定位,更多的关注的是其识别的准确率和实时性问题。因此我们采用CNN+SVM的方法来解决车辆识别问题,并基于该结构进一步优化,使用卷积网络及其优化形式进行特征提取,并使用SVM分类来实现对车辆的识别。
相对于直接在自己的训练集上训练CNN模型以提取特征的方法,针对当前数据集在训练过程中同样的参数设置训练结果不稳定,难以抓取最优值进行优化等问题,采用迁移学习的方法,使用在CIFAR-10上训练好的网络参数,在车辆识别数据集提取特征后放入支持向量机进行训练能够期望获得更优的结果。
本文使用迁移学习的方式是基于如下几方面考虑的:
第一,SVM能从好的特性中生成决策,而CNN网络在提取特征方面比其他传统学习算法更加有效。
第二,传统CNN网络最后的分类层Softmax层可以理解为对最后一层全连接层结果的归一化,是基于经验风险最小化的,样本容量有限时易产生过拟合现象,而支持向量机是基于结构风险最小化的,能够获得更好的泛化能力。
第三,支持向量机算法最终将转化成为一个二次型寻优问题,能够在一定程度上解决在神经网络方法中无法避免的局部极值问题。
1.1 基于卷积网络的基础模型结构
本文提出两种改进方法:
1)首先针对2层卷积层提取到的图片特征的粒度过于粗糙的问题,通过增加卷积层的深度来提升提取特征的粒度,使用更深层次的预训练的网络结构结合残差优化的思想提取更加抽象的特征; 
2)在卷积和池化层用于图片各范围内局部特征的提取和融合过程中,增加线性不可分的数据的线性可分程度,浅层网络倾向于提取颜色,纹理,边缘等基础图片特征,全连接层针对图片的所有特征,通过对提取的局部特征做非线性变换和拟合来提取高级抽象特征(如位置特征)和语义特征,全连接层使得提取的特征更加拟合当前数据集。
类似于LeNet-5结构以及AlexNet结构,本文使用的卷积网络结构如图1所示,该网络结构使用了2个卷积层+2个池化层+3个全连接层和5个卷积层+2个池化层+3个全连接层的结构,同时对于卷积层激活函数输出的特征进行局部响应归一化(LRN)[18],来进一步提升模型的泛化能力。结构中使用的感受野大小为3,步长为2的最大池化,最大池化使用接受域中的最大值作为特征值,能够容忍小角度的偏转及噪声。
图1 本文的卷积网络结构
1.2 引入残差优化单元的卷积网络结构
通过实验发现,当源领域的卷积层的增加到5层之后,分类效果并未提高反而下降,这是由于当网络趋于饱和时,随着层数的增加,增加层数的误差会对整个网络造成一定的影响,因此,本文通过引入残差优化,使用全局平均池化层来代替全连接层以减少参数同时防止过拟合。
残差优化的网结构的主要组成部分是残差优化单元,本文中的残差单元包括2个卷积层不含池化层,通过设置卷积层的步长进行向下采样。先采用BN (batch normalization)层对输入的神经元作类似权值共享的归一化操作,并使用ReLU函数进行激活,之后进行卷积,重复两个类似过程后与输入的自身映射进行加和, 若两者的结构不一致,对自身映射进行向下采样和填充操作。
本文中所使用的残差优化网络结构如图2所示,在使用残差单元之前,网络使用一层卷积和池化操作,其中图中虚线连接部分需要对自身映射进行下采样和填充操作。
在使用残差网络提取特征时支持向量机放入的是最后一层卷积层提取的特征,将特征一维化。其中, 5×5、3×3是指卷积核的大小, /2是指通过该层卷积层后特征图尺寸将减半,通过卷积层降采样减小特征图尺寸,可以降低该层的时间复杂度。
1.3 基于二次迁移学习的特征提取与分类
本文使用支持向量机作为分类器,利用目标领域车辆分类数据集与CIFAR-10数据集的相似性及卷积网络提取特征的优越性,将CIFAR-10上使用卷积网络训练的模型参数迁移到当前数据集上提取图片特征,并使用支持向量机进行分类。由于直接在目标领域的车辆分类数据集上训练卷积网络的结果并不稳定,所以采用从其他数据集上迁移模型的方法。
相对于直接使用预训练网络的卷积层和前两层全连接层的参数直接提取当前数据集特征之后放入分类器的方法,本文使用两次迁移的方法。第1次迁移过程中,使用预训练网络的卷积层参数作为网络卷积层的初始参数,再添加参数随机初始化的3个全连接层进行高级语义特征的提取,具体流程如图3所示。
当训练达到最优效果时,进行第2次迁移,在第2次迁移过程中使用支持向量机替代卷积网络的Softmax层进行分类,将提取的特征放入支持向量机中,二次迁移的具体流程如图4所示。
图2 本文的残差优化网络结构
图3 本文的一次迁移过程流程示意图
图4 本文的二次迁移过程流程示意图
源领域的CIFAR-10数据集的数据和目标领域的车辆识别数据集虽然有一定的相似性,但由于车辆正样本在各个数据集中所占比例不同,以及非车辆负样本的分布不一致,同时车辆数据集的背景相对复杂等,因此,本文只迁移CIFAR-10数据集预训练网络卷积层的参数,在当前数据集上进行微调以提取当前数据集的特征,再使用这些特征训练SVM进行分类。
具体方法为:先将在源领域的CIFAR-10数据集上预训练的网络结构及参数(只取卷积和池化层)在目标领域的车辆识别数据集上进行微调,后将微调后的全连接层所提取的特征放入SVM进行分类。
模型实验与分析
本部分通过实验验证所提出方法的可行性,并对实验数据进行分析。本部分的实验所使用的硬件为:处理器: Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70 GHz、内存32 GB; 软件环境为: Python 3.7编写程序, 程序编辑器使用PyCharm, 所有的实验都是在TensorFlow框架下进行的, 操作系统为Windows 10。
2.1 实验数据集描述
本部分的实验涉及到网络参数的迁移,因此使用了两个数据集(源领域CIFAR-10数据集和目标领域车辆识别数据集)验证实验结果。CIFAR-10数据集是通用数据集,该数据集含有60000张彩色图像,图像像素为32×32,分为10个类,每类图像分布均匀,随机从车辆识别数据集的正负样本中各抽取450张图片作为测试图片。剩余图片为训练集图片,共900张测试图片和3966张训练图片。样本分布如表1所示。
表1 车辆识别数据集中的样本分布
本文实验的车辆识别数据集包括拍摄图片,网络图片以及各种公开的涉及车辆的定位识别的图片集(如Stanford Cars)。车辆正样本图片有2450张,车辆负样本有2416张,部分样本如图5所示。
2.2 实验设置描述
本文针对车辆识别的问题,提出了两种改进方法: 一是使用更深层次的预训练的网络结构结合残差优化的思想提取更加抽象的特征; 二是先将在CIFAR-10上预训练的网络结构及参数(只取卷积和池化层)在当前数据集上进行微调,后将微调后的全连接层所提取的特征放入SVM进行分类。
本部分设置了两组实验进行对比,分别比较两种改进方法的识别准确率和测试时间。由于网络结构的不同,训练过程中达到最优值所需的迭代次数也不同,只关注于网络训练到最优值的模型结构参数。
图5 部分样本示例图
本文两组实验中对源领域分别使用3种网络,依次为2层、5层的卷积网络结构(后接3层全连接层)及14层的残差网络结构(13层卷积层+全局平均池化层)进行训练,当训练结果达到稳定值后,根据改进方法对相应层数的参数进行提取。
实验将目标领域的车辆数据集图片统一设置为32×32像素,初始输入的单个图片数据矩阵为32×32×3 (分别对应R、G、B三通道),在数据预处理阶段对图片进行随机裁剪,调整亮度和对比度,并对图片进行标准化处理以提高模型的泛化性。最终将卷积网络的输入统一设置为batch_size×24×24×32 (batch_size=50)。 
实验中卷积核大小可以为5×5和3×3,由于残差网络参数量较大,我们统一采取3×3的卷积核。池化层选用最大池化层, 接受域为3×3,步长为2. 学习率均采用0.1,学习衰减率为0.8. 在普通网络卷积层后添加局部响应归一化层(LRN)以减少过拟合。
2.3 实验结果与分析
将上述3种网络训练完成后迁移的是其分类层前的模型参数,重点关注不同结构对目标数据集识别效果的影响。在二次迁移时,先迁移源数据集的卷积结构模型参数, 添加全连接层进行训练,后将目标数据集的分类器前一层的特征放入SVM中进行训练分类, SVM分类器的训练选用是TensorFlow框架下的sklearn包中的SVM。SVC函数,核函数为线性核,采用的L2正则化,惩罚因子为0.75.
本文将车辆识别数据集使用经典的模型(SVM、KNN、HMM、YOLO-v7、AlexNet、VGG11)以及最近的研究论文(文献[7]和文献[15])中的模型, 与本文的模型进行对比, 车辆识别的正确率对比如表2所示, 通过表2可知, 最优的算法是使用预训练的5层卷积网络参数, 微调后分类, 最高识别正确率为97.56%。根据表2中的数据实现的不同模型的车辆识别正确率对比图如图6所示。
表2 不同模型的车辆识别正确率对比 (%)
图6 不同模型的车辆识别正确率对比
2.4 消融实验
2.4.1 迁移学习的有效性验证
为了验证卷积层的深度对识别结果的影响,本文通过对比不同卷积层深度的车辆识别结果,通过多次实验后得出结果如表3所示。 表3中CNN后的数字代表卷积层的层数,fc表示全连接层, ft表示微调,在源领域的训练过程中,将模型参数用于目标域的训练样本并进行网络微调,实现从源域到目标域的信息迁移后,不论是5层卷积网络还是2层卷积网络,在识别准确率方面均提高了2%–3%,且识别的时间耗费没有显著提高,是可接受的。
表3 不同卷积层深度的车辆识别结果对比
2.4.2 残差优化单元的有效性验证
为验证13层残差优化单元对车辆识别结果的有效性,我们对比有残差优化单元和无残差优化单元的模型的识别效果,对比结果如表4所示,从表4中可以看出,直接使用源领域的参数进行目标领域的特征提取时,添加了残差优化单元后,识别准确率从92.11%提高到了94.56%,但由残差优化网络提高识别效果时,耗费的时间成本较大。
表4可知,将模型参数用于目标域的训练样本并进行网络微调,实现从源域到目标域的信息迁移后,识别正确率不增反减。分析原因我们认为是因为源领域与目标领域的样本分布存在差别,直接使用源领域的参数进行目标领域的特征提取,提取的特征如何进行非线性组合(全连接层)可能会有一定的差别。
表4 不同卷积层深度的车辆识别结果对比
结论
本文针对车辆识别过程中的识别准确率提升需求和识别的实时性需求,提出了一种基于迁移学习的识别方法。该识别方法通过结合卷积神经网络和支持向量机提高识别模型的鲁棒性和准确率,并有效减少了模型训练时间。
本文主要使用了两方面的改进思路: 
一是使用更深层次的预训练的网络结构结合残差优化的思想提取更加抽象的特征; 
二是先将预训练的网络结构及参数在当前数据集上进行微调,后将微调后的全连接层所提取的特征放入SVM进行分类。
针对改进方法进行实验对比,最后达到了97.56%的识别准确率,在可接受识别时间范围内提升了识别效果。
关于下一步的研究工作,我们发现被错误分类的正样本大都颜色与背景相似,负样本则多为透过图片缩放后与车辆类似的事物,因此,我们期望能够找到合适的分辨率较高的大型数据集并结合图像显著性增强的方法进行改进。

新机器视觉
一个值得关注的AI视觉技术公众号,主要涉及人工智能领域机器视觉、计算机视觉、机器学习、深度学习等前沿知识干货和资源!致力于为您提供切实可行的AI学习线路。
 最新文章