一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于海量地理位置信息的索引库建立及检索方法与流程

2021-12-08 01:03:00 来源:中国专利 TAG:


1.本发明涉及图像处理领域,尤其涉及基于海量地理位置信息的索引库建立及检索方法。


背景技术:

2.基于内容的图像检索任务(cbir)是计算机视觉领域一项由来已久的研究课题。在当今图像检索的领域中,主要关注于实例级的图像检索任务。在这个任务中,给定一张物体/场景/建筑类型的待查询图片,查询出包含拍摄自不同角度、光照或有遮挡的,含有相同物体/场景/建筑的图片。
3.为了获得高的图像检索性能,需要两种图像表示方法:全局特征和局部特征。如今,大多数依赖于这两种特性的系统都需要使用不同的模型分别提取每种特性。这是不可取的,因为它可能导致高内存使用率和增加延迟,例如,如果两个模型都需要使用专用和有限的硬件(如gpu)运行。此外,在许多情况下,对两者执行类似类型的计算,导致冗余处理和不必要的复杂性。
4.此外,在街景图像的位置识别中,图像数量居多,常规的检索方法效率过慢,导致无法在街景图像中达到实际应用效果。


技术实现要素:

5.本发明主要目的在于提供一种检索速率高,可在用户能够接受的时间内得到推荐结果的基于海量地理位置信息的索引库建立及检索方法。
6.本发明所采用的技术方案是:
7.提供一种基于海量地理位置信息的索引库建立方法,其特征在于,包括以下步骤:
8.将包含地理位置信息的样本图片进行特征提取,得到样本数据,该样本数据包括特征信息和相应的地理位置信息;
9.建立索引库,将样本数据添加到索引库中,具体为:若索引库中没有数据,则将插入的样本数据作为第一个分组的第一条数据,且作为该分组的根节点;当索引库内若只有一个分组,后续数据直接插入到第一个分组内,当第一个分组超过若干条时,将与根节点特征信息相似度最低的样本数据建立新的分组,并作为新建分组的根节点;重复此过程,直到成功建立n个分组,n≥10;
10.当索引库内超过n个分组时,待插入的样本数据与索引库中所有分组中的根节点进行特征信息比较,并按照相似度从高到低的次序选出n个分组作为待插入的分组,计算待插入的样本数据、n个分组中的样本数据与所在分组内根节点的特征信息相似度,相似度最低的样本数据重新当做新的待插入的样本数据插入其余n

1个分组;若待插入样本数据在n个分组中找不到可插入的分组,则建立新的分组,并作为新建分组的根节点;重复此过程,直到索引库建立完毕。
11.接上述技术方案,通过计算样本数据与根节点特征信息的残差计算相似度。
12.接上述技术方案,n=10。
13.接上述技术方案,与根节点最相似的样本数据存在分组的第二行;最不相似的样本数据存放于分组的最后一行,作为负根节点。
14.接上述技术方案,通过卷积神经网络提取样本图片的特征信息,该卷积神经网络的最后一个卷积层作为特征层用来捕获待处理样本图片的街景图像特征,且最后一个卷积层连接广义平均池化层;样本图片经过广义平均池化层池化后得到特征图,该特征图再输入到全连接层进行降维,得到包含样本图片特征信息的样本数据。
15.本发明还提供一种基于海量地理位置信息的检索方法,包括以下步骤:
16.提取待查询街景图像的特征,得到查询特征;
17.将查询特征与索引库中的所有根节点进行相似度计算,按照相似度高低的顺序将分组进行排序,取前m1个分组作为检索结果的分组,计算m1个分组中所有样本数据与待查询特征的相似度,按照相似度高低的顺序排列,取到前r1条特征数据作为检索结果,r1≥50。
18.接上述技术方案,若索引库中与根节点最相似的样本数据存在分组的第二行,最不相似的样本数据存放于分组的最后一行且作为负根节点,则将查询特征与索引库中的所有负根节点进行相似度计算,按照相似度高低的顺序将分组进行排序,取前m2个分组作为检索结果的分组,计算m2个分组中所有样本数据与待查询特征的相似度,按照相似度高低的顺序排列,取到前r2条特征数据作为检索结果,r2≥50,将前r1条特征数据和前r2条特征数据进行去重,去重后的结果最为最终检索结果。
19.接上述技术方案,根据检索结果中对应的地理位置信息进行位置分组。
20.接上述技术方案,位置分组具体包括以下步骤:
21.检索筛选得到的r条结果的第一条作为第一个分组的基准点,计算其余检索结果点与基准点的距离是否小于或等于阈值,若是,则加入该基准点所在组;若否,将其加入一个临时组,并与临时组的第一条进行比较,若距离小于等于阈值则加入该临时组,若否,则再新建临时组;
22.将剩余的检索结果点与已有的分组进行遍历计算距离,若存在小于阈值的情况,将此点纳入到该分组之中,直至r个检索结果点均分组完成。
23.本发明还一种计算机存储介质,其可被处理器执行,其内存储有计算机程序,该计算机程序用于执行上述技术方案所述的基于海量地理位置信息的索引库建立方法,或上述技术方案所述的检索方法。
24.本发明产生的有益效果是:本发明将街景图像集进行特征提取并存放在特征库对特征库通过聚类的方法分组并以树的结构建立索引库,并在索引库中加入图像对应的相关地理位置等文本信息,作为街景图像的属性,完成索引库的建立。检索过程中,提取查询图像的特征与索引库中的根节点进行匹配,筛选出前n个相似根节点,获取对应的子结点集,再次进行特征匹配,筛选出最为相似的r个结果,对其进行分组推荐后,获取对应的文本信息,作为检索结果。实验结果表明,此方法有效提高了海量数据库中的匹配检索速度,能够正确的展示街景位置识别与推荐的结果。
附图说明
25.下面将结合附图及实施例对本发明作进一步说明,附图中:
26.图1是本发明实施例基于海量地理位置信息的索引库建立及检索方法的总流程图;
27.图2是本发明实施例提取特征示意图;
28.图3为本发明实施例(group

1)
k
函数示意图。
具体实施方式
29.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
30.如图1所示,本发明基于海量地理位置信息的索引建立方法,主要是将街景图像库中的所有图像使用相同的方法提取出图像的特征,再将已经提取的特征数据插入到索引库中,插入完成后,索引库可在查询过程中使用。检索方法依照索引库的数据结构来进行检索,得到r条检索结果,再对检索结果进行推荐计算,使得检索结果按照地理位置信息重排序,使得检索结果更加符合用户的期望。
31.本发明实施例基于海量地理位置信息的索引建立方法主要包括以下步骤:
32.(1)提取图像的特征数据
33.如图2所示,本发明通过对卷积神经网络的使用方法进行微调,将最后一个卷积层作为特征层用来捕获图像中的轮廓、建筑样式等特征信息,从而获取更加适合街景图像的特征图。即仅使用卷积神经网络中的卷积层,后续结构不再使用。
34.经卷积步骤处理后的特征信息图x维度为c*h*w,其中,c为特征图的通道个数,当图像的尺寸为h*w时,设x
c
为对应的特征图,其中c∈(1,2,3,......c},则卷积神经网络的输出维度为c,尺寸为h*w的二维特征图。
35.得到特征图后,将特征信息图输入到广义平均池化层进行池化计算,其目的是进一步提取图像的有效特征,并对特征进行第一次降维。
36.在广义平均池化层中,计算方法为:
[0037][0038]
其中,p
c
是一个可调节的参数,广义平均池化层中的p
c
是一个可训练的参数,同样也可以手动设置。
[0039]
经过池化层后,得到的输出特征向量为f,对于f表示可如公式2所示。
[0040]
f=[f1,f2,f3,......,f
c
]
t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0041]
得到输出的特征向量f后,将其输入到全连接层中,进行第二次降维。得到图像最终的特征。
[0042]
(2)建立索引库
[0043]
在此之前,需要对一些概念进行说明。
[0044]
1.经过图像特征提取后,每一条特征的维度均为1*2048维度,在建立索引库的过程中,规定每个分组中最多存放一定数量的特征(本发明实施例以100条特征为例),即每个
分组最高维度为100*2048。同时,规定在特征数据插入到索引库中时,依照残差筛选出n个待插入的分组(本发明实施例以n=10为例),若不足10个,按照分组数量进行插入操作。
[0045]
2.根节点:每个分组内的第一条特征。
[0046]
3.残差:本发明实施例所采用的相似度衡量指标,具体计算方法在下文中。残差越小,相似度越高。
[0047]
4.目标残差:待插入索引库的特征数据与根节点的残差。
[0048]
5.组内残差:根节点所在分组中,根节点与组内其他数据的残差。
[0049]
6.在地理位置信息中,每一张图像包含以下属性:提取得到的图像特征、经度、纬度、所在的街道名等,在本发明中,着重使用到图像特征、经纬度。
[0050]
7.索引库建立的过程,是一个从0到1的过程,在这个过程中,输入的每一条数据都是第一步中提取得到的图像特征。须知,每一个分组的第一条特征为本发明所定义的根节点,即分组的基准的图像特征。须知,每一个分组的第一条特征为本发明所定义的根节点,即分组的基准点,也是在查询过程中的基准点。须知,每一个分组的第一条特征为本发明所定义的根节点,即分组的基准点
[0051]
建库开始,此时索引库中为空,输入的第一条数据为第一个分组的根节点。接下来的99条数据均直接插入第一个分组内(此时输入的99条特征数据可能存在与根节点残差度较大,但当特征数量增加到一定数量时,若特征与第一个分组的根节点相似度高,那么将会插入到本分组中,将最不相似的特征向量剔除,进行重新插入)。
[0052]
当第一个分组的数量达到100之后,第101条数据将不能直接插入分组内,而需要计算目标残差与组内残差,每输入的两条特征的残差计算方法为:
[0053][0054]
其中,(a1,a2,a3,...,a
2048
)为第一条特征(维度为1*2048)的数据,(b1,b2,b3,...,b
2048
)为第二条特征(维度为1*2048)的数据。similar为两条特征的残差,残差越小,相似度越高。
[0055]
通过根节点与分组内所有特征分别计算相似度后,组内残差共100个,若存在一个组内残差大于目标残差,则将第101条数据插入到第一个分组中,同时将组内残差最大对应的特征数据剔除,重新进行插入操作。此时根据特征数据与索引库中根节点的残差判断特征数据是否插入到原数组中,若是,将直接存储到新数组中,此方法是为了避免循环插入同一个数组,避免了资源浪费;若不是,则进行组内残差与目标残差的比较。但索引库中只有一个分组,故直接将特征数据作为第二个分组的根节点,以“.npy”格式存储到索引库中。
[0056]
当索引库分组超过10个时,待插入的数据将会与索引库中所有根节点进行残差计算,并按照相似度从高到低的次序选出10个分组作为待插入的分组,依次计算目标残差与组内残差。
[0057]
同样地,与相似度最高的分组计算目标残差与组内残差,若目标残差小于组内残差,将进行插入、更新分组操作,同时组内残差最大的特征数据重新插入其余9个分组。此操作完成后,直接读取下一条特征数据,进行插入操作。若在10个待插入的分组中,均未出现目标残差小于组内残差的情况(且每个分组均有100条数据),则将此条数据保存到新数组,并作为新的数组的根节点,且更新索引库。即若选出了10个分组,在待插入分组时,有两个情况:该分组未满100条,不需计算,直接插入,结束本次插入;该分组满100条,进行残差计
算,比较组内残差与目标残差,若能插入则插入,且将最不相似的数据取出,重新插入;不能则比较下一个分组。
[0058]
索引库建立完毕之后,此时索引库中每个分组最高规模为100*2048维。在建立特征索引库的同时,每一条图像特征所对应的经纬度等相关信息同样也会以相同的数据结构、相同分组的位置进行保存,做到特征数据与文本信息数据同步。
[0059]
在本发明中,索引库分组较少时,以上述逻辑进行建库,虽此时每个分组中的数据可能彼此相似度并不高,但是建库是一个动态的过程,将会逐渐将分组中与根节点不相似的节点逐渐剔除并重新插入。
[0060]
通过此过程,索引库中的数据将会越来越多,同时也能够保证每个分组内的数据相互之间的相似度越来越高。同时,在这个过程中,程序的计算量虽有一定的增加,但增加的幅度很小,对于计算机来说基本不会存在负担,在计算机本地磁盘进行操作时,每一条特征数据插入的速度约为0.03秒,故建立索引库是一个可行的、高效的方法。
[0061]
在特征索引库中,可以将此索引库理解为一个森林,每一个分组均为森林中的一棵树,且每一棵树的最高规模为100叉树。当索引库建立完毕之后,文本信息树同样建立完毕,此时可进行查询操作。
[0062]
特别地,在每个分组中,按照相似度的高低排列,即在每个分组中,与根节点最相似的特征数据存在分组第二行,最不相似的特征数据存放于分组最后一行。为了检索精度,同样可将每一个分组的最后一条特征作为一个根节点,此时可将此根节点称之为负根节点。在这样的结构定义中,每个分组含有2个根节点。
[0063]
本发明实施例的检索方法主要包括以下步骤:
[0064]
在检索过程中,需要对图像进行预处理,为了能够更好地提取有效特征,需要将图像进行缩放或放大,保证图像与数据库中的图像大小一致,在本发明中,街景图像的分辨率为512*256。对图像预处理后,使用相同的方法提取图像的特征,将得到1*2048维的特征向量,称之为查询特征。
[0065]
首先,将查询特征与索引库中的所有根节点进行残差计算,按照相似度高低的顺序将分组进行排序,取前m个分组作为检索结果的分组(本发明实施例优选“200”,是一个经验值,可通过速度需要来控制分组数量大小),通过树的数据结构,取得200个根节点对应的子节点集,即200*100条特征数据。与此2万条特征数据进行残差计算,按照相似度高低的顺序排列,取到前r条特征数据作为检索结果(本发明以选择前100条为例)。在实际计算中,拥有gpu的计算机设备中,检索过程总耗时约2秒,能够达到用户的使用需求。
[0066]
进一步地,若在索引库的每个分组中,按照相似度的高低排列,即在每个分组中,与根节点最相似的特征数据存放在分组第二行,最不相似的特征数据存放于分组最后一行。为了检索精度,同样可将每一个分组的最后一条特征作为一个根节点,此时可将此根节点称之为负根节点。在这样的结构定义中,每个分组含有2个根节点。若索引库内共2000万条数据,而经过索引库筛选后,最终计算数量可缩小至2万,大大减小了计算数量,提高了算法效率。在检索过程中,若通过正根节点筛选出r个子节点集,通过负根节点筛选出r个子节点集,将2r个子节点集进行去重,最终计算范围最多也只有2r*m,以r=200,m=100为例,则计算范围一共40000条,相对于总数据库的2000万,仍然很小。同时,通过负根节点,可以使得检索精度更高,因为这个过程中,能够将相对于正根节点并不是非常相似的特征数据纳
入考虑范围之中,保证了正确结果的筛选力度。
[0067]
检索完成后进行结果推荐:
[0068]
输入的数据为检索筛选得到的100条结果,输出为调整顺序后的分组推荐结果,数量仍为100条。
[0069]
首先,需要对结果进行分组,分组的依据是图像之间所对应的真实地理位置相距是否达到d一定的阈值(本发明实施例中选取20米),若小于,则分为同一组,若大于,则增加一个分组。
[0070]
以检索筛选得到的100条结果的第一条作为第一个分组的基准,计算该结果点与基准点的距离是否小于或等于20米,若是,则加入该基准点所在组。若不是,将其加入一个临时组,并与临时组的第一条进行比较,若距离小于等于20m,则加入该临时组,若否,则再新建临时组。将剩余的点与已有的分组进行遍历计算距离,若存在小于20米的情况,将此点纳入到该分组之中,直至100个点均分组完成。
[0071]
为了能够更好的排序,引入一个概念:贡献度,每一个分组的贡献度为该组内的残差属性计算得到,其计算方法为:
[0072]
contribution=mindif 0.001*(meandif*(group

1)
k
)
ꢀꢀ
(1)
[0073]
其中,contribution为贡献度,mindif为该分组中基准点的残差,meaddif为该分组中除基准点外的平均残差group为分组的个数,k为指数函数的次方值,在本发明中k取0.95。
[0074]
最后,按照贡献度对分组进行排序,展示到结果中,可将正确结果更好的展示到检索结果靠前的位置。
[0075]
街景图像中存在大量重复的元素,例如车辆、树木、马路、行人等,而这些元素都是属于干扰元素,而建筑物是一个地理位置中不会移动的元素,所以类似于建筑物的属性元素才能为图像检索提供区分力度,从而检索到最相近的地理位置。
[0076]
传统的特征提取方法中,不能满足街景检索的需要,但广义平均池化层的计算方法中,由于参数是可以变化的,不仅仅依赖于图像数据本身的大小(传统的最大池化、平均池化仅依赖于图像数据本身的大小,广义平均池化层提供了一个动态的加权处理),所以能够更好地提取到街景图像的特征,提供了区分力度。同时,在此方法中,图像的提取特征过程速度很快,能够在检索过程中减少特征提取消耗的时间,保证了检索效率。
[0077]
在检索过程中,本发明优选实施例通过正根节点筛选出200个子节点集,通过负根节点筛选出200个子节点集,将400个子节点集进行去重,最终计算范围最多也只有40000条,相对于总数据库的2000万,仍然很小。同时,通过负根节点,可以使得检索精度更高,因为这个过程中,能够将相对于正根节点并不是非常相似的特征数据纳入考虑范围之中,保证了正确结果的筛选力度。
[0078]
在推荐过程中,给出(group

1)
k
函数,当k,group取不同的值时,二者对函数的影响。
[0079]
在图3中,纵坐标为k值,横坐标为group的数量,可看出分组数量越大,k的取值对函数影响越小,如此便可避免某些结果点组因为点过多而导致的贡献度计算结果较大。经过多次测试,本算法将k值固定为0.95。
[0080]
具体测试中,出现了结果点组内只有单个点的现象,此时该组的贡献度就为组内
唯一点的残差值。在后续结果点组的排序当中,单个点组计算的贡献度和多个点组的贡献度之间会有些许偏差。这是由于采用不同计算式所导致的。经过多组数据测试,并对结果进行分析,采取在上述指数函数前添加乘以0.0001的方式,降低计算多个点组贡献度时除基准点外其他点的残差权重,较好的消除了该误差。
[0081]
对检索结果推荐有两个好处:第一,对一定范围内的图片分到一个组内,对整个组进行一次合并操作,同时根据这个组的数量对该组进行加权处理,加权的基本思想是,若正确结果排序靠前,那么让这个结果在分组之后能够仍然靠前;若正确结果排序靠后,根据分组之后,能让包含正确结果的这个组向前移动,使排序相对靠前。在经过加权处理之后,能够对检索的结果进行合并,使得结果更加聚集,正确结果更加显眼。第二,进行分组之后,一个组只在界面上标出一个点,那么对于界面来说,也能显得更加整洁。
[0082]
该方法可在win10环境下基于python运行,所使用的主要库为numpy。
[0083]
本发明实施例基于海量地理位置信息的索引建立与检索系统,包括:
[0084]
提取特征模块,将街景图像库中的图像提取特征,作为加工数据。
[0085]
建库模块,读取加工数据,按照本发明的算法逻辑建立索引库。
[0086]
查询模块,根据索引库的数据结构,按照本发明的算法进行检索。
[0087]
推荐模块,根据检索得到的结果,引入贡献度概念,对检索结果进行排序。
[0088]
上述实施例的系统主要用于实现基于海量地理位置信息的索引建立与结果推荐方法实施例,各个模块的功能参见上文方法实施例,在此不一一赘述。
[0089]
本技术还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于被处理器执行时实现方法实施例的基于海量地理位置信息的索引库建立方法以及检索方法。
[0090]
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献