一种有效的基于卷积神经网络的车辆检索算法
2018-06-05张春玉黄知红
张春玉 黄知红
摘 要:车辆检索是基于图像的相似搜索的子任务,在电子商务和智能安防领域有着重要的实际应用价值。文章提出了一种有效的基于卷积神经网络车辆检索的算法。利用YOLOV2检测算法提取图片中的车辆位置减少背景对车辆检索造成的影响。提出了改变训练集中车辆的颜色进行数据增强,缓解训练数据集较少的问题。基于微调的ResNet50网络提取车辆的特征用来进行相似匹配。在香港大学车辆数据集上的实验结果表明文中提出的算法取得了不错的检索效果。
关键词:车辆检索;以图搜图;卷积神经网络;深度学习;电子商务
中图分类号:TP311.5 文献标志码:A 文章编号:2095-2945(2018)13-0006-04
Abstract: Vehicle retrieval is a sub-task of similar search based on image, which has important practical application value in the field of e-business and intelligent security. This paper presents an effective vehicle retrieval algorithm based on convolution neural network. YOLOV2 detection algorithm is used to extract the vehicle position in the image to reduce the impact of background on the vehicle retrieval. The problem of changing the color of vehicle in training concentration to enhance the data is put forward to alleviate the problem of less training data set. The ResNet50 network based on fine tuning is used to extract vehicle features for similar matching. The experimental results on the vehicle data set of the University of Hong Kong show that the proposed algorithm has achieved good retrieval results.
Keywords: vehicle retrieval; graph searching via graph; convolutional neural network; deep learning; e-business
引言
隨着国家经济的发展和家庭总收入的不断增加,汽车作为一种舒适的交通工具已经成为了一个必备的消费需求。另外随着互联网技术的进步,电子商务取得了长足的发展。汽车电商平台的出现为消费者购买汽车提供了一个方便的渠道。现有的大部分汽车电商平台只提供根据关键字进行指定车款信息的检索,这样就造成了一个潜在的问题,当平台用户不知道车的具体品牌或者车款时,就很难根据关键字在平台上找到想要购买的车辆信息。本文讨论基于图片的同款车检索算法解决车辆商品检索问题,对电商平台的发展具有重要的发展意义。
图像检索是计算机视觉的一个研究领域,通过匹配两幅图像特征间的相似度进行相似检索。传统的图像检索方法大部分基于类似于SIFT[1]的局部描述子和BOW[2]算法来构建图像的特征来进行相似检索,该种架构已经在一些特定的领域取得了非常好的应用。但是由于局部特征的表征能力有限,该种算法并不能用来检索同款车辆。
深度学习算法以其强大的特征表示能力,在计算机视觉的很多领域都取得了很好的应用,例如目标检测、语音识别、人脸识别、字符识别等。近年来也有很多基于深度学习相似图像检索的研究,并且在某些任务上也取得了不俗成绩。本文采用深度学习算法来处理相似车款检索的问题。值得一提的是,虽然基于深度学习的图像相似检索方面的研究很多,但是在基于图片的同款车检索这个问题上的研究却相对较少。一方面是由于该问题并没有受到大部分人的重视,另一方面是大规模数据集的缺少。针对这些问题,本文的贡献点可以归结为两点:
(1)提出了一种验证有效的基于深度学习的同款车检索算法。
(2)提出了一种新的基于车辆颜色转变的数据增强的方法。
1 车辆检索算法
本文提出的算法架构可以归纳为前期、中期和后期三个不同的阶段。前期阶段包括基于YOLOV2的车辆检测网络和基于ResNet50[4]的车款识别网络的训练。中期阶段主要是对检索库中的图片进行特征提取。后期阶段是根据输入图片的特征进行检索库中的特征匹配。
1.1 网络训练
图1中给出了检测算法的网络结构。图中I表示输入图片,Label(x,y,w,h,class)表示图片中矩形框的位置和矩形框中目标的类别,其中x,y是矩形中心点,w,h是矩形框的宽和高。class表示目标的类别,由于本文只是检测车辆因此只有一个类别class=0。另外在训练时候为了能够方便收敛,x,y,w,h都相对于原始图片做了归一化处理。Loss用来表示训练过程中的计算得到的loss值。YOLOV2算法loss的计算主要包括三个部分,框的位置,是否包含目标,目标所属的类别。由于在车辆检测任务中目标类别的个数为1。因此本文修改了loss的计算方式。公式(1)中给出了loss计算的数学表达式:
1表示矩形框的loss占的权重,本文设置为5。?姿2表示包含目标的置信度的权重,本文设置为1,?姿3表示不包含目标的置信度的权重,本文设置为0.5。另外只有在区域包含目标的时候才会计算矩形框的loss值。
本文采用ResNet50网络作为车款识别的基础网络。网络训练采用迁移学习的方式,首先在ImageNet百万数据集上进行训练,然后在车款分类数据集上进行微调训练。在数据预处理方面,提出了通过改变训练集车辆图片的颜色来扩充训练数据集。图2中给出了车身颜色修改的效果图。上面一行是输入图片,下面一行是经过改变车身颜色的效果图。车身颜色改变的方法采用了开源代码[5]。微调训练的方式比较简单,只需要修改ResNet50输出层的神经元的个数,在训练时加载预训练好的模型即可。
1.2 特征提取
本文通过可视化ResNet50不同层的特征以及结合在测试集上的检索效果,最终选择提取Layer_512_2_conv2层的特征作为车辆的特征信息。图3中给出了特征提取的流程。I表示检测到的车辆图片,送入训练好的网络做一次前向传播,然后提取layer_512_2_conv层的特征。由于该层为卷积层,因此最后做一次max pooling 操作得到一个512维的向量f,该向量就是图像I的特征。因此假设检索库中图片数量为N。对于每一张图片Ni,首先做一次车辆检测(假设一张图片只包含一辆车),然后送入网络提取特征得到向量fi,最终可以得到一个N*512维的矩阵X,该矩阵就是建好的特征库。
1.3 特征检索
为了保证检索的精度和速度,本文采用近邻匹配计算特征之间的距离。本文采用欧式距离作为度量方式。因此首先對提取到的特征库中的特征进行归一化。另外为了提高检索的速度和降低内存的开销,本文采用PCA算法进行特征降维。
2 实验和分析
本文选用Caffe作为特征提取的深度学习框架,Darknet作为车辆检测的依赖库。硬件环境为三块GeForce GTX 1080ti显卡、英特尔E5处理器、128G内存的台式电脑。操作系统为Ubuntu14.04。
2.1 数据集
本文数据集主要包含三块:车辆检测数据集、车款识别数据集、车辆检索数据集。车辆检测数据集通过人工标注的方式收集。车款识别数据集基于香港大学车辆数据集中的监控数据集:包含281个车款类别共44483张车辆图片。车辆检索测试集包括车款识别测试集以及收集的50000张干扰监控数据集。从281个类别中每个类别抽取1张图片作为测试集,剩下的和干扰数据一起作为检索库。表1中给出了数据集的使用情况。
2.2 网络训练
检测算法选用基于darknet19网络结构的YOLOV2检测算法。从darknet官方网站下载训练网络所需要的网络定义cfg和保存权值的weights文件。修改cfg文件中的最后一层卷积层的输出为30=5*(1+1+4),修改region层的classes=1,同时基于YOLOV2文中提到的改进kmeans算法根据标注的训练数据集的labels标签生成anchor点的坐标。设置检测网络最大迭代次数为200000次,设置初始学习率为0.0001学习率下降策略为steps。由于darknet19是全卷积网络结构因此在训练过程中采用多尺度训练的方式。输入图片的尺寸为352、384、416、448。最终在测试集上设置IOU=0.8、thresh=0.8、nms=0.4得到的不同输入尺寸的检测效果如表2。表2的第一行给出了YOLO_V2算法在COCO数据集上训练的模型在本文测试集上的效果。从测试集上的结果可以看出,本文训练的车辆检测算法在测试集上的检测精度要明显好于前者。
车款识别原始训练集一共包含38863张数据,直接基于这些数据进行训练容易造成过拟合。因此采用旋转、添加高斯噪声、水平翻转、车身颜色改变来进行数据增强。车身颜色改变对于黑夜中的车辆效果非常的差。所以在利用车身颜色改变进行数据增强之前,先根据输入图片的平均亮度来过滤掉夜晚的车辆图片。设置平均亮度值低于50的为夜晚图片,从训练集中过滤掉14843张图片。 通过观察过滤后的数据集,发现车身颜色大部分为白色、黑色、红色。训练一个车身颜色识别的网络模型,把训练集中的每个类别中包含的白色、黑色、红色图片提取出来。依托训练的车身颜色分类模型一共提出11569张图片,其中红色1165张,白色3372张,黑色7032张。接下来采用基于开源代码训练的图3中展示的颜色转换模型进行数据增强。表3中给出了最终数据增强后的训练集组成。
从caffe的开源社区Model Zoo中下载预训练好的ResNet50网络模型。修改输出层网络的神经元个数为281类,设置初始学习率base_lr=0.001,学习方式lr_policy="multistep",momentum=0.96、weight_decay=0.0002。分别利用没有加入颜色增强和加入颜色增强的数据集进行网络的训练。前者由于数据集较少,训练80000次就开始出现欠拟合的情况,训练集上已经达到了99.9%的精度,但是测试集上的精度在95%左右徘徊。当加入颜色改变数据集之后该情况得到了明显的缓解,训练100000次测试集上的准确度到了97%。表4中在测试集上的检索效果对比也说明了,加入颜色改变增强的有效性。
2.3 检索时间和效果分析
检索的时间开销和准确度是衡量算法好坏的两个重要标准。本部分将围绕这两个指标对本文算法的性能进行详细的分析。
表4中给出了不同检索算法在本文测试集上的检索精度。TopN表示前N张结果中正确结果所占的比例。实验结果表明基于SIFT[1]暴力匹配的方式和基于BOW[2]的方式检索效果都比较差,这和图1中特征匹配可视化的结果相一致。直接基于AlexNet网络在ImageNet数据集上训练的通用特征进行车辆检索的效果也不够理想。这也说明了在特定任务上进行迁移训练的重要性。Our_one表示直接采用没有加入颜色增强数据进行训练的模型的检索效果,Our_two是加入颜色增强数据的检索效果。后者要比前者平均高约4个百分点,这也说明通过改变颜色增强能够大幅度提高检索的效果。Our_three是采用PCA进行降维,特征维度降到256维的检索效果,可以发现检索效果不但没有下降还略微有上升。特征降维,可以提高检索的速度同时减少内存的开销。Our_four算法是加入本文车辆检测算法,提取测试集上的车辆图片进行检索效果。由于香港大学数据集中的测试图片已经不包含太多的背景信息,因此通过该方式在测试集上的效果只是略有提升。但是在实际应用场景中,该种方式能够极大的提高检索的效果。
图4中给出了部分车辆图片的检索效果。左边第一列为输入的检索图片,其它列为检索出来的Top5结果。用红色外边框包围的图片表示检索出错的结果。夜间图片由于光线较差,图片的亮度较低因此检索的精度会下降。但是从检索效果可以看出,輸入夜晚的图片也有一定的概率检索出正确的白天的图片,反之亦然。例如第二行的第三张和第7行的第三张。
本文算法的时间开销主要包含三个部分。车辆检测和特征提取和近邻匹配。检测算法在1080ti的显卡上当输入图片大小为416*416的时间为0.011s。特征提取的时间开销为一张图片0.02s。特征匹配的时间开销根据检索库的大小和特征维度的不同,所需要的时间开销也不一样。表5给出了不同量级检索库上512维的特征维度,特征匹配的时间开销。根据表5给出的时间统计,本文算法在百万级的图像检索库中依然能够达到秒级以内的检索响应的速度。
3 结束语
本文介绍了一种基于卷积神经网络进行车辆检索的算法,并且提出了一种新的数据增强的方法。实验证明算法能够取得不错的效果。然而,算法依然存在不足之处。例如对于夜晚图片光线较差的情况检索效果就不够理想。希望在以后的研究中能够改进这部分的问题。
参考文献:
[1]Huang J, Feris R, Chen Q, et al. Cross-Domain Image Retrieval with a Dual Attribute-Aware Ranking Network[J]. 2015:1062-1070..
[2]Lin K, Yang H F, Liu K H, et al. Rapid Clothing Retrieval via Deep Learning of Binary Codes and Hierarchical Search[J]. 2015:499-502.
[3]Redmon J, Farhadi A. YOLO9000: Better, Faster, Stronger[J]. 2016.
[4]He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[J]. 2015:770-778.
[5]https://github.com/Armour/Automatic-Image-Colorization.
[6]Jegou H, Douze M, Schmid C. Hamming Embedding and Weak Geometric Consistency for Large Scale Image Search[M]// Computer Vision - ECCV 2008. OAI, 2008:304-317.
[7]Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks[J]. Advances in Neural Information Processing Systems, 2012, 25(2):2012.
[8]Yang L, Luo P, Chen C L, et al. A large-scale car dataset for fine-grained categorization and verification[J]. 2015:3973-3981.
[9]Lowe D G. Distinctive Image Features from Scale-Invariant Keypoints[J]. International Journal of Computer Vision, 2004, 60(60):91-110.