基于人脸卷积神经网络和随机kd‑树森林的图像检索方法与流程

文档序号:12733902阅读:309来源:国知局
基于人脸卷积神经网络和随机kd‑树森林的图像检索方法与流程
本发明涉及计算机应用在海量人脸图片检索的
技术领域
,尤其涉及一种基于人脸卷积神经网络和随机kd-树森林的图像检索方法。
背景技术
:基于卷积神经网络的特征提取方法已经得到了实践上的检验,特别是vgg和googlenet在2014年imagenet竞赛中名列前茅。基于卷积神经网络模型提取的特征具有旋转不变性,鲁棒性较强。由于基于卷积神经网络提取的特征一般维度都比较高,如果是一个海量的人脸图片特征库,那么如果要进行线性扫描,那么效率会很低,所以需要一种可以快速访问特定图片的方法。所以基于内容的图像检索技术(CBIR)应运而生。CBIR的一个方向是基于树的索引方法,其中比较典型的是kd-树。kd-树的优点是可以找到比较精确的结果,但是有一个很大的缺点,就是在高维的情况下效果很差,所以需要进行改进使其可以适应高维的情况。而在高维情况下表现较差的原因是在一定的树的深度限制下,kd-树考虑到的维度有限,而且部分维度可能多次被考虑到。所以可以引入随机因素,使得kd-树尽可能考虑到更多的维度,以适应高维的情况。技术实现要素:为了克服现有技术存在的缺点与不足,本发明提供一种基于人脸卷积神经网络和随机kd-树森林的图像检索方法,本发明相对于原始的kd-树算法更能适应高维情况,而且非常适用于分布式环境,由于每棵kd-树都可以独立进行查找,最后将结果再合并,非常符合map-reduce编程模型。为解决上述技术问题,本发明提供如下技术方案:一种基于人脸卷积神经网络和随机kd-树森林的图像检索方法,包括如下步骤:S1、采集人脸图片数据集;S2、对人脸图片数据集采用卷积神经网络模型方法进行训练;训练后得到一个卷积神经网络模型;S3、对原始人脸图片数据集采用已训练的卷积神经网络模型提取特征向量,得到特征向量集合;S4、根据生成的特征向量及其对应的图片标号,构造随机kd-树森林索引;S5、对于每一张需要检索的图片,采用已训练的卷积神经网络模型进行特征提取,得到特征向量;S6、根据已构造的随机kd-树森林索引,进行图片特征向量的查找,得到Top-N结果,即前N个最接近的特征向量及其对应的图片标号。进一步地,所述步骤S2具体为:在人脸图片数据集,对每一张人脸图片缩放成固定大小,然后根据每张人脸的身份训练一个卷积神经网络模型。采用上述技术方案后,本发明至少具有如下有益效果:1、本发明采用卷积神经网络模型,对人脸图片提取的特征具有平移、旋转和缩放不变性等优点;2、本发明采用CBIR技术,加快了查找图片的速度;3、本发明使用了随机kd-树森林,克服了原始kd-树不适应高维情的缺点;4、本发明中多棵随机kd-树是一个并行结构,能够适应分布式环境,与map-reduce编程模型能够进行较方便的结合。附图说明图1是本发明基于人脸卷积神经网络和随机kd-树森林的图像检索方法的步骤流程图;图2是本发明方法的训练一个卷积神经网络模型用于特征提取示意图;图3是图2训练好的卷积神经网络模型,然后去掉输出层之后,取最后一层作为特征提取的结果示意图;图4是本发明方法单棵随机kd-树训练的过程;图5是本发明方法随机kd-树森林的结构示意图;图6是本发明方法的具体实施例的整体过程示意图。具体实施方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。如图1所示,本发明提供一种基于人脸卷积神经网络和随机kd-树森林的图像检索方法,包括训练卷积神经网络模型进行特征提取,构造一个随机kd-树森林作为索引:对原始人脸数据集进行分类训练得到一个卷积神经网络模型,然后依据此模型对原始人脸数据集进行特征提取,形成人脸特征集,然后根据这个人脸特征集构造一个随机kd-树森林作为索引;当输入一张人脸图片,首先通过卷积神经网络进行特征提取得到特征向量,然后根据这个特征向量和随机kd-树森林索引进行查找,最后将随机kd-树森林中的每棵kd-树的Top-N结果进行合并再选出最终的Top-N结果。本发明方法相对于原始的kd-树算法更能适应高维情况,而且该方法很适用于分布式环境,因为每棵kd-树都可以独立进行查找,最后将结果再合并,很符合map-reduce编程模型。实施例具体实施方式分成两部分,一个是离线部分,另外一个是在线部分。离线部分主要是训练特征提取模型和构建随机kd-树森林索引。而在线部分则是正常的使用流程。如图6所示,首先是离线部分。首先是根据人脸图片数据集训练一个卷积神经网络模型,这里的人脸图片数据集有50万张,一共1万人,平均每人有50张图片。为了方便后续的训练和特征提取,首先将这50万张图片缩放至维度为96*96*3。然后开始训练M1模型,如图2所示。其中卷积神经网络模型M1的具体参数如下表实施:层名称参数输出大小Conv17*7,16,stride2,padding348*48Conv23*3,32,stride2,padding124*24Conv33*3,32,stride1,padding124*24Conv43*3,64,stride2,padding112*12Avgpool3*3Fc11000Fc24096Fc310000其中Fc3为最终的输出层,即对应于数据集中的1万个人。训练好M1模型之后,需要将其改造成M2以适用于特征提取,如图3所示。其中M2的具体参数如下表所示:层名称参数输出大小Conv17*7,16,stride2,padding348*48Conv23*3,32,stride2,padding124*24Conv33*3,32,stride1,padding124*24Conv43*3,64,stride2,padding112*12Avgpool3*3Fc11000Fc24096可以看到,M2只是在M1的基础上去掉了最后一层。得到M2之后,首先要对原始的50万张人脸数据集重新做特征提取,得到每张人脸图片对应的一个4096维的特征向量,如下表所示:图片序号特征向量P1[f1,f2,f3,...,f4096]P2[f1,f2,f3,...,f4096]......Pn[f1,f2,f3,...,f4096]......P500000[f1,f2,f3,...,f4096]得到每张人脸对应的特征向量之后,就可以开始构造随机kd-树森林索引了。即可以开始进行图6所示离线部分的step3了。由于随机kd-树森林是由多棵随机kd-树组成的,所以这里详述一下单棵随机kd-树的构造,如图4所示:(1)首先在4096个维度中随机选取64个维度,然后在这64个维度中找出方差最大的维度作为切分维度,然后取其中位数作为切分依据,此时原始数据集被一分为2,此时树的深度加1。(2)然后对于这切分好的两份数据,做同样的操作,使原始数据一分为4。同样树的深度加1。(3)重复以上操作,直到树的深度为13。之所以为13是因为平均每人有50张照片,所以当树的深度为13时,每份数据大约有50张图片的特征向量。通过以上步骤可以构建单棵随机kd-树,然后重复以上步骤70次可以构建70棵随机kd-树,组成一个随机kd-树森林,如图5所示。以上是离线部分,接下来是在线部分。如图6所示,首先输入一张人脸图片,然后将其缩放至96*96*3大小,然后通过卷积神经网络模型M2得到其特征向量,然后在离线部分构造好的随机kd-树森林对其进行查找,每棵树得到一个小的特征集,然后计算这些小特征集中的特征与输入人脸的特征向量的距离,最后综合起来取距离最短的作为最终结果。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1