一种基于深度学习的卡口图像车辆快速检索方法及系统转让专利

申请号 : CN201710755293.8

文献号 : CN107679078B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王辉田玉兰陈涛李建元温晓岳

申请人 : 银江股份有限公司

摘要 :

本发明涉及一种基于深度学习的卡口图像车辆快速检索方法及系统,本发明采用深度神经网络来提取车辆特征信息,基于inception_resnet_v2网络对车辆特征进行提取,其中实现了网络权值共享,有效避免了大量重复计算,其损失函数采用三元组样本训练,直接产生128维向量,在检索图片阶段,本发明采用了对特征聚类的方式对特征建立索引,提升查询速度。本发明可以加快图像特征的提取速度,以及快速的实时响应的同时,能够有效稽查追捕假牌、套牌车这部分违法车辆。

权利要求 :

1.一种基于深度学习的卡口图像车辆快速检索方法,其特征在于,包括如下步骤:(1)基于深度神经网络模型建立图片特征提取网络模型,利用训练样本集训练获得训练完成的特征提取网络模型;其中,特征提取网络模型的训练过程包括:(1.1)对卡口图片进行人工标注目标区域坐标信息,利用深度学习训练目标识别网络后获取卡口图片中的车辆区域;

(1.2)将每张卡口图片的车辆区域按照车牌进行分类后制作得到车辆训练样本集,并对车辆训练样本集进行优化;

(1.3)采用inception_resnet_v2作为特征提取网络模型提取车辆训练样本集特征,计算三元组损失函数并利用三元组损失函数进行优化训练特征提取网络模型;

(2)基于参考图片集,利用训练完成的特征提取网络模型提取车辆特征向量;

(3)通过K-Means聚类对提取到的车辆特征向量进行反复聚类,以聚类生成的质心建立K叉树索引;

(4)通过训练完成的特征提取网络模型提取待检测图片的特征向量,利用K叉树索引查询检索与待检测图片相似的图片,并输出相似的参考图片集图片。

2.根据权利要求1所述的一种基于深度学习的卡口图像车辆快速检索方法,其特征在于:所述的对训练样本集进行优化包括三种变换优化方式:噪声变换、颜色变换和仿射变换。

3.根据权利要求1所述的一种基于深度学习的卡口图像车辆快速检索方法,其特征在于:所述的步骤(1.3)的步骤如下:(1.3.1)采用inception_resnet_v2提取车辆训练集特征;

(1.3.2)计算三元组损失函数,具体如下:

筛选三元组样本集:每个三元组数据集包括三个样本,分别为目标样本anchor,正样本pos,负样本neg,其中,anchor和pos为同一类,anchor和neg为不同类,筛选原则为挑选与目标样本相差大的同类样本和与目标样本相差小的不同类样本的组合,学习过程为使得三元组anchor和pos的距离小于anchor和neg的距离,其中,距离均使用余弦距离,如下所示:cosineap+α<cosinean

其中, 表示目标样本, 表示正样本, 表示负样本,目标cosineap表示目标样本和正样本之间的余弦距离,cosinean表示目标样本和负样本之间的余弦距离,α为正数,保证正样本与目标样本之间的距离要小于负样本与目标样本之间的距离的一个常数;

在每批中选择三元组样本进行训练,首先计算每批的网络输出,然后保证每批中每辆车有若干张样本图片,并随机加入若干反例;生成三元组样本时找到所有anchor-pos对,并通过计算样本输出编码的欧式距离,针对每个anchor-pos对找出其对应的neg样本,利用所得样本对计算三元组损失;

目标函数为三元组损失函数,如下所示:

其中, 分别表示样本经过网络的输出编码;(1.3.3)反复迭代循

环训练网络直至损失值不再减小,并将训练完成后的网络模型保存。

4.根据权利要求1所述的一种基于深度学习的卡口图像车辆快速检索方法,其特征在于:所述步骤(3)具体步骤如下:(3.1)随机选择K个质心点,其中K是预设的;

(3.2)采用余弦相似度计算每个特征向量到K个质心点的距离,将其指派到距离最近的质心,形成K个类别簇;其中余弦相似度计算公式如下所示:其中,Xi代表特征X中的第i个值,Yi代表特征Y中的第i个值;

(3.3)计算每个簇的中心点,并将其作为新的质心;

(3.4)循环执行步骤(3.2)与(3.3),直到所有簇心的余弦相似度和小于II;其中,簇心余弦相似度计算公式如下:(3.5)判断每个簇最底部子簇的特征总数是否不大于N个,若否,则对特征总数大于N个的簇执行步骤(3.1)到步骤(3,4),直到每个簇最底部子簇的的特征总数不大于N;否则结束聚类过程,以聚类生成的质心建立K叉树索引。

5.根据权利要求4所述的一种基于深度学习的卡口图像车辆快速检索方法,其特征在于:所述以聚类生成的质心建立K叉树索引的方法为:将第一层的聚类结果得到的K个质点作为K叉树第一层的K个节点,然后把聚类得到的特征分类放在对应的节点下,若第一层节点I下的特征个数大于N时,则将该节点I下的特征进行聚类,取得聚类得到的质点作为节点I下的K叉树第二层的节点;重复操作直到所有最底端节点下的特征个数均不大于N。

6.根据权利要求1所述的一种基于深度学习的卡口图像车辆快速检索方法,其特征在于:所述步骤(4)利用K叉树索引查询检索并输出相似图片的方法如下:(i)将提取到的车辆特征向量与K叉树索引第一层的K个节点比较,找出离该特征最近的特征节点;

(ii)若该节点下存在子树,则在子树上找出离该特征最近的特征节点,重复执行该步骤直到该节点下没有子树;

(iii)将该特征与节点下聚类的所有特征进行余弦相似度计算,并按距离从小到大对特征进行排序;

(iv)根据排序得到的特征顺序输出特征所对应的卡口相似图片,输出的图片张数为十张。

7.一种应用如权利要求1所述方法的卡口图像车辆快速检索系统,其特征在于包括:图片获取模块、特征提取模块、图片索引模块、图片上传模块;所述的图片获取模块、特征提取模块、图片索引模块、图片上传模块依次连接。

8.根据权利要求7所述的卡口图像车辆快速检索系统,其特征在于:所述图片索引模块将特征提取模块提取到的特征基于K-Means聚类生成的质心建立K叉树索引来构建特征索引,按照建立的索引检索出相似图片。

9.根据权利要求7所述的卡口图像车辆快速检索系统,其特征在于:所述的特征提取模块采用GoogleNet的inception_resnet_v2网络模型,该网络模型包括:6个卷积子模块层,1个均值池化层,1个droupout层,1个全连接层,其中卷积子模块层为若干个不同的卷积层和池化层组成的子模块。

说明书 :

一种基于深度学习的卡口图像车辆快速检索方法及系统

技术领域

[0001] 本发明涉及智慧交通领域,尤其涉及一种基于深度学习的卡口图像车辆快速检索方法及系统。

背景技术

[0002] 智能交通领域中智能交通监控是当前非常重要的一个发展方向,目前我国已在城市道路上部署了大规模数量的电子警察和卡口系统。这些系统能够实时捕获车辆高清图片,并且识别分析出车牌号码,以及一部分车型信息(如车辆大小,颜色等)。但目前使用的卡口监控系统,车牌号码识别仍有10%左右的误识别、漏识别率。更重要的是,对于套牌车或故意遮掩拍照的违法车将无法进行识别。因此,通过车牌号码之外的车辆特征信息作为一个新的识别条件,从而在现有的交通监控系统找出这部分违法车辆。另一方面,一个城市的所存储的卡口图片往往数量在亿级以上,即使将图片成功转化成为特征向量,要快速精确的查询搜索相关特征依然是一大难点。这在现今的在现代交通监控和管理中有非常重要的研究意义和应用前景。
[0003] 申请号为201611129798.5的《基于传统算法和深度学习算法级联的车辆检测方法及系统》,其利用CNN算法进行车辆特征提取,采用8层的CNN,包括一个input层,2个conv层,2个pool层,2个fc层和一个droupout层来训练分类网络,最后的fc层用来提取车辆特征来进行检索。
[0004] 申请号为201610711333.4的《基于大数据的车辆检索方法及装置》,其通过检测各个目标车辆之间的位置关系对各个车辆的检测标志进行融合,来进行车辆的检测,用车辆的标志的形状,颜色等来进行检索。
[0005] 申请号为201610119765.6的《一种卡口车辆检索方法及其系统》,同样利用深度学习的方法来对卡口车辆图片进行特征提取,网络模型为传统的利用分类模型来训练,选取其中某层的特征来作为车辆的特征表达,之后进行相似度对比来进行检索。
[0006] 目前的车辆检索方法中,一类是利用传统的机器学习提取不同特征向量进行识别,二是利用深度学习神经网络进行特征提取,通常传统的机器学习算法不及深度学习准确度高;目前的方法大多是利用分类模型训练网络后提取特征层进行识别,这样车辆的特征向量一般较大,由于需要将车辆特征一个个同数据库中所有车辆特征比对,大城市交通系统储存的卡口图片往往有上亿级的图片数量,这种检索方式显然无法满足实际情况,另外神经网络的层数越深,其识别正确率一般也越高,然而其训练也比较困难。

发明内容

[0007] 本发明为克服上述的不足之处,目的在于提供一种基于深度学习的卡口图像车辆快速检索方法及系统,本发明采用深度神经网络来提取车辆特征信息,基于inception_resnet_v2网络对车辆特征进行提取,在其中实现了网络权值共享,有效避免了大量重复计算,其损失函数采用三元组样本训练,直接产生128维向量,在检索图片阶段,本发明采用了对特征聚类的方式对特征建立索引,提升查询速度;本发明可以加快图像特征的提取速度,以及快速的实时响应的同时,能够有效稽查追捕假牌、套牌车这部分违法车辆。
[0008] 本发明是通过以下技术方案达到上述目的:一种基于深度学习的卡口图像车辆快速检索方法,包括如下步骤:
[0009] (1)基于深度神经网络模型建立图片特征提取网络模型,利用训练样本集训练获得训练完成的特征提取网络模型;
[0010] (2)基于参考图片集,利用训练完成的特征提取网络模型提取车辆特征向量;
[0011] (3)通过K-Means聚类对提取到的车辆特征向量进行反复聚类,以聚类生成的质心建立K叉树索引;
[0012] (4)通过训练完成的特征提取网络模型提取待检测图片的特征向量,利用K叉树索引查询检索与待检测图片相似的图片,并输出相似的参考图片集图片。
[0013] 作为优选,所述特征提取网络模型的训练过程包括:
[0014] (1.1)对卡口图片进行人工标注目标区域坐标信息,利用深度学习训练目标识别网络后获取卡口图片中的车辆区域;
[0015] (1.2)将每张卡口图片的车辆区域按照车牌进行分类后制作得到车辆训练样本集,并对车辆训练样本集进行优化;
[0016] (1.3)采用inception_resnet_v2作为特征提取网络模型提取车辆训练样本集特征,计算三元组损失函数并利用三元组损失函数进行优化训练特征提取网络模型。
[0017] 作为优选,所述的对训练样本集进行优化包括三种变换优化方式:噪声变换、颜色变换和仿射变换。
[0018] 作为优选,所述的步骤(1.3)的步骤如下:
[0019] (1.3.1)采用inception_resnet_v2提取车辆训练集特征;
[0020] (1.3.2)计算三元组损失函数,具体如下:
[0021] 筛选三元组样本集:每个三元组数据集包括三个样本,分别为目标样本anchor,正样本pos,负样本neg,其中,anchor和pos为同一类,anchor和neg为不同类,筛选原则为挑选与目标样本相差大的同类样本和与目标样本相差小的不同类样本的组合,学习过程为使得三元组anchor和pos的距离小于anchor和neg的距离,其中,距离均使用余弦距离,如下所示:
[0022]
[0023]
[0024] cosineap+α<cosinean
[0025] 其中, 表示目标样本, 表示正样本, 表示负样本,目标cosineap表示目标样本和正样本之间的余弦距离,cosinean表示目标样本和负样本之间的余弦距离,α为正数,保证正样本与目标样本之间的距离要小于负样本与目标样本之间的距离的一个常数;
[0026] 在每批中选择三元组样本进行训练,首先计算每批的网络输出,然后保证每批中每辆车有若干张样本图片,并随机加入若干反例;生成三元组样本时找到所有anchor-pos对,并通过计算样本输出编码的欧式距离,针对每个anchor-pos对找出其对应的neg样本,利用所得样本对计算三元组损失;
[0027] 目标函数为三元组损失函数,如下所示:
[0028]
[0029] 其中, 分别表示样本经过网络的输出编码;(1.3.3)反复迭代循环训练网络直至损失值不再减小,并将训练完成后的网络模型保存。
[0030] 作为优选,所述步骤(3)具体步骤如下:
[0031] (3.1)随机选择K个质心点,其中K是预设的;
[0032] (3.2)采用余弦相似度计算每个特征向量到K个质心点的距离,将其指派到距离最近的质心,形成K个类别簇;其中余弦相似度计算公式如下所示:
[0033]
[0034] 其中,Xi代表特征X中的第i个值,Yi代表特征Y中的第i个值;
[0035] (3.3)计算每个簇的中心点,并将其作为新的质心;
[0036] (3.4)循环执行步骤(3.3)与(3.4),直到所有簇心的余弦相似度和小于II;其中,簇心余弦相似度计算公式如下:
[0037]
[0038] (3.5)判断每个簇最底部子簇的特征总数是否不大于N个,若否,则对特征总数大于N个的簇执行步骤(3.1)到步骤(3.4),直到每个簇最底部子簇的的特征总数不大于N;否则结束聚类过程,以聚类生成的质心建立K叉树索引。
[0039] 作为优选,所述以聚类生成的质心建立K叉树索引的方法为:将第一层的聚类结果得到的K个质点作为K叉树第一层的K个节点,然后把聚类得到的特征分类放在对应的节点下,若第一层节点I下的特征个数大于N时,则将该节点I下的特征进行聚类,取得聚类得到的质点作为节点I下的K叉树第二层的节点。重复操作直到所有最底端节点下的特征个数均不大于N。
[0040] 作为优选,所述步骤(4)利用K叉树索引查询检索并输出相似图片的方法如下:
[0041] (i)将提取到的车辆特征向量与K叉树索引第一层的K个节点比较,找出离该特征最近的特征节点;
[0042] (ii)若该节点下存在子树,则在子树上找出离该特征最近的特征节点,重复执行该步骤直到该节点下没有子树;
[0043] (iii)将该特征与节点下聚类的所有特征进行余弦相似度计算,并按距离从小到大对特征进行排序;
[0044] (iv)根据排序得到的特征顺序输出特征所对应的卡口相似图片,输出的图片张数优选为十张。
[0045] 一种基于深度学习的卡口图像车辆快速检索系统,包括:图片获取模块、特征提取模块、图片索引模块、图片上传模块;所述的图片获取模块、特征提取模块、图片索引模块、图片上传模块依次连接。
[0046] 作为优选,所述图片索引模块将特征提取模块提取到的特征基于K-Means聚类生成的质心建立K叉树索引来构建特征索引,按照建立的索引检索出相似图片。
[0047] 作为优选,所述的特征提取模块优选采用GoogleNet的inception_resnet_v2网络模型,该网络模型包括:6个卷积子模块层,1个均值池化层,1个droupout层,1个全连接层,其中卷积子模块层为若干个不同的卷积层和池化层组成的子模块。
[0048] 本发明的有益效果在于:(1)本发明采用inception_resnet_v2作为网络模型,相较于目前用于检索的vgg等模型,本方法的精确度更高;(2)本发明采用三元组损失函数训练模型,损失为样本间的余弦距离,相比于传统的softmax损失函数训练的方法,本方法直接优化样本间的余弦距离,更适用于空间样本的检索训练;(3)本发明网络模型直接输出128维特征向量,相较于利用分类模型选取其中一层作为特征的特征提取方式,本方法更简单,无需降维,可直接用于检索;(4)本发明通过索引树的形式,使目标图片提取的特征不用对卡口图片库中每一个图片特征进行比较,指数倍地减少了需要比对的特征的相似度计算量,使得系统能够快速查询车辆图片,能适用于大量卡口数据的检索。

附图说明

[0049] 图1是本发明系统结构示意图;
[0050] 图2是本发明inception_resnet_v2网络模型的架构示意图;
[0051] 图3是本发明方法的流程示意图;
[0052] 图4是本发明实施例的人工标注图片示意图;
[0053] 图5是本发明实施例的车辆训练样本集示意图;
[0054] 图6是本发明实施例的车辆训练样本集图片变换效果示意图;
[0055] 图7是本发明的聚类流程示意图;
[0056] 图8是本发明的K叉树查询流程示意图;
[0057] 图9是本发明实施例的检索结果示意图1;
[0058] 图10是本发明实施例的检索结果示意图2。

具体实施方式

[0059] 下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
[0060] 实施例:如图1所示,一种基于深度学习的卡口图像车辆快速检索系统,包括图片获取模块、特征提取模块、图片索引模块、图片上传模块;所述的图片获取模块、特征提取模块、图片索引模块、图片上传模块依次连接。图像获取模块为网页形式,直接选择待检索图片,然后该图片被获取,利用训练好的模型提取128*1维特征向量,利用k叉树索引进行检索,返回最相似的前十张图片并显示。其中,图片获取模块和图片上传模块均使用python的flask模块,特征提取模块采用的是inception_resnet_v2模型,在此利用的为GoogleNet的Inception_resnet_v2网络,如图2所示,该网络结合了Inception和resnet的优势,包括:6个卷积子模块层,一个均值池化层,1个droupout层,1个全连接层,卷积子模块是指几个不同的卷积层和池化层组成的子模块。其作用是加深和加宽网络,能够进一步强化图片的语义特征,加强网络的表达能力。
[0061] 如图3所示,一种基于深度学习的卡口图像车辆快速检索方法,其步骤如下:
[0062] 步骤1、数据集准备:
[0063] (1.1)对卡口系统获取到的车辆图片人工标注目标区域坐标信息,利用深度学习建立特征提取网络模型,获取卡口图片车辆区域;
[0064] 在本实施例中,对卡口系统采集到的20,000张图片进行车辆边缘框位置的标注,如图4所示。如浙AXXXXX,标注出其在图片中位置。只标注主车辆(即卡口主要拍摄的车辆),用于收集同一辆车在不同卡口出现的图片来用于下一步的分类。由于训练网络输入尺寸为160×160,因此标注矩形框尽量接近正方形,防止其形变过大;标注框稍微大于车辆来提供一些边缘信息。
[0065] (1.2)将获取到的车辆区域按车牌进行分类制作车辆训练样本集,如图5所示;
[0066] (1.3)对样本集中的图片进行变换,以增加样本图片的多样性,得到变换优化后的训练样本集;其中,变换包括加噪声变换,颜色变换和仿射变换三种方式,效果如图6所示。
[0067] 步骤2、训练特征提取网络模型,利用三元组损失函数进行优化特征提取网络模型:
[0068] 本发明采用inception_resnet_v2网络提取车辆特征,损失函数并没有像传统检索方法一样利用softmax进行分类学习后抽取其中一层作为特征,而是直接对图像进行了从图像端到欧式空间的编码端的学习,可以直接利用该编码进行图像检索。该网络主要利用GoogleNet的Inception_resnet_v2网络模型,具体步骤如下:
[0069] (2.1)采用inception_resnet_v2提取车辆训练集特征,每个样本提取出的特征均为128维的向量。
[0070] (2.2)计算三元组损失函数。
[0071] 筛选三元组样本集:每个三元组数据集包括三个样本,分别为anchor(目标样本),pos(正样本),neg(负样本),其中anchor和pos为同一类,anchor和neg为不同类,挑选原则为与目标样本相差较大的同类样本和与目标样本相差较小的不同类样本的组合,学习过程是使得尽可能多的三元组anchor和pos的距离小于anchor和neg的距离,在这里距离均使用余弦距离。
[0072]
[0073]
[0074] cosineap+α<cosinean    (3)
[0075] 如上所示公式, 表示目标样本, 表示正样本, 表示负样本,目标cosineap表示目标样本和正样本之间的余弦距离,cosinean表示目标样本和负样本之间的余弦距离,α为一个正数,保证正样本与目标样本之间的距离要小于负样本与目标样本之间的距离一个常数。
[0076] 在每个batch中选择三元组样本进行训练,生成batch时,首先计算每个batch的网络输出,然后保证每个batch中每辆车有平均40张样本图片,并随机加入一些反例,生成三元组样本时,找到所有anchor-pos对,然后通过计算样本输出编码的欧式距离,针对每个anchor-pos对找出其对应的neg样本,利用这些样本对计算三元组损失。
[0077] 目标函数为:三元组损失函数
[0078]
[0079] 公式(4)中 分别表示样本经过网络的输出编码。
[0080] (2.3)反复迭代循环训练网络至损失值不再减小为止。将训练完后的网络模型保存起来。
[0081] 步骤3、利用训练完成的特征提取网络模型提取车辆特征:
[0082] 将参考图片集导入到训练完成的网络模型中,提取1×128维向量作为车辆特征信息。
[0083] 步骤4、将提取到的特征基于K-Means反复聚类,以建立K叉树索引,其流程如图7所示:
[0084] (4.1)随机选择K个质心点。
[0085] (4.2)采用余弦相似度计算每个特征量到K个质心点的距离,将其指派到距离最近的质心,形成K个类别簇。
[0086]
[0087] 余弦相似度计算如上所示。Xi代表特征X中的第i个值,Yi代表特征Y中的第i个值。
[0088] (4.3)计算每个簇的中心点作为新的质心。
[0089] (4.4)循环执行4.2,4.3步,直到所有簇心的余弦相似度和小于II时,停止循环。某簇心余弦相似度计算公式如下:
[0090]
[0091] (4.5)若属于一个簇的特征总数大于N个时,对这个簇的数据执行步骤(4.1)-(4.4)。
[0092] (4.6)重复执行步骤(4.5),直到每一个最底部的子簇内部的图片特征数都小于等于N。
[0093] 在本实施例中,在20,000个128*1维的特征中通过K-Means算法进行反复聚类,K取10,以此建立K叉树索引。
[0094] 步骤5、根据以上聚类生成的质心建立K叉树索引:
[0095] 具体来说,就是将第一层的聚类结果得到的10个质点作为第一层K叉树的10个节点,接着把聚类得到的特征分类放在对应的节点下,若第一层节点I下的特征个数大于N时,再将节点I下的特征进行聚类,取得聚类得到的质点作为节点I下的树的第二层的节点。重复这个步骤,直到所有底端节点下的特征个数都不大于N。
[0096] 步骤6、利用训练好的特征提取网络模型提取待检测图片的特征向量,维度为128*1,并利用K叉树索引检索图片是否存在相似图片,输出相似图片。其中,K叉树的查询流程图如下所示:
[0097] (6.1)将提取到的车辆特征数据与树第一层的十个节点比较。找出离该特征最近的特征节点。
[0098] (6.2)若该节点下还有子树,则找出离该特征最近的特征节点。重复该步骤。直到该节点下没有子树,执行步骤(6.3)。
[0099] (6.3)将该特征与节点下的所有特征进行余弦相似度计算,按距离从小到大对特征进行排序。
[0100] (6.4)根据排序得到的特征,输出特征所对应的卡口图片;优选输出排序前十位的特征所对应的图片,如图9、图10所示。
[0101] 以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。