基于四叉树集群的近邻搜索方法、装置、设备及存储介质

文档序号:33005747发布日期:2023-01-18 03:50阅读:35来源:国知局
基于四叉树集群的近邻搜索方法、装置、设备及存储介质

1.本发明涉及数据算法技术领域,具体涉及一种基于四叉树集群的近邻搜索方法以及应用于该算法的装置,还涉及一种实现上述方法的计算机设备以及存储介质。


背景技术:

2.k最近邻(k-nearest neighbor,knn)分类算法,是一个理论上比较成熟的方法,其思路为:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。针对knn问题或者k近邻问题:给定一个数据集以及一个点,从数据集中找到距离给定点最近的k个数据,其在图像分类、信息获取、模式识别等方面有广泛的应用价值。
3.四叉树的原理:四叉树索引的基本思想是将地理空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去,直至树的层次达到一定深度或者满足某种要求后停止分割。空间实体只能存储在叶子节点中,中间节点以及根节点不能存储空间实体信息。四叉树的结构比较简单,并且当空间数据对象分布比较均匀时,具有比较高的空间数据插入和查询效率。
4.然而,针对在指定的平面区域内为一个特定的点查找距离最近的k个点的问题,现有knn算法在搜索近邻点的处理环节中,缺乏一种利用四叉树对指定区域进行结点的划分的算法,在有效搜索范围方面欠缺考虑,导致时间复杂度高,查询效率低。


技术实现要素:

5.本发明提供一种基于四叉树集群的近邻搜索方法、装置、设备及存储介质,用以解决目前存在的时间复杂度高、查询效率低、执行效率低等各种问题。
6.第一方面,本发明提供的一种基于四叉树集群的近邻搜索方法,该方法包括:
7.在确认指定区域的长宽比大于预设值后,将指定区域按短边的长度以1:1长宽比进行切割,得到多个子区域;
8.分别在多个子区域上并行建立各自的四叉树模型;
9.对建立好的多棵四叉树模型分别并行建立各自的邻居表,并根据不同四叉树模型之间的空间位置关系建立各邻居表之间的联系;
10.根据给定点的空间位置,确定该给定点对应的四叉树,并确定该给定点所属四叉树中的叶子结点;
11.基于相互关联的多个邻居表的结点区域确定有效的搜索范围;
12.根据确定好的有效搜索范围,并行计算该范围内所有点与给定点的距离,按照距离排序找到距离给定点最近的k个近邻点。
13.根据本发明提供的一种基于四叉树集群的近邻搜索方法,在进行区域切割时,将指定区域按短边的长度以1:1长宽比切割原有区域,当切割到最后一个区域时,若剩余区域不满足长宽比1:1比例,则通过扩展空间的方式补足为一个长宽比1:1比例的区域,以此确
保每个区域都满足长宽比1:1的比例。
14.根据本发明提供的一种基于四叉树集群的近邻搜索方法,所述分别在多个子区域上并行建立各自的四叉树模型,包括:使用四叉树方式逐层划分空间区域,先将初始空间区域划分为四个子区域,若子区域中点的数量大于预先设定好的阈值,则将该子区域进一步划分为四个更小的子区域,直至每个子区域中点的数量都不超过预先设定好的阈值,以确保每个叶子结点区域中点的分布密度相对均匀。
15.根据本发明提供的一种基于四叉树集群的近邻搜索方法,在完成四叉树模型的建立后,每个长宽比1:1的子区域均得到与之对应的四叉树。
16.根据本发明提供的一种基于四叉树集群的近邻搜索方法,所述对建立好的多棵四叉树模型分别并行建立各自的邻居表,包括:根据已有四叉树模型所划分的结点区域,根据空间位置找到每一个结点直接相邻的所有邻居结点;为每棵四叉树并行构建一张包括所有结点的邻居表,用于查找近邻点时快速确定有效搜索范围。
17.根据本发明提供的一种基于四叉树集群的近邻搜索方法,所述确定该给定点所属四叉树中的叶子结点,包括:若给定点处于两个子区域的边界上,则该给定点属于序号较小的那棵四叉树中的对应结点区域;若该叶子结点中点的个数》k值,则将其作为查询邻居表的结点;若该叶子结点中点的个数《k值,则将其父结点作为查询邻居表的结点。
18.根据本发明提供的一种基于四叉树集群的近邻搜索方法,所述确定有效的搜索范围包括:
19.根据查询邻居表的结点到所属的邻居表中进行查询,查找与该结点直接相邻的邻居结点,将这些结点作为初步的第一搜索范围;
20.然后,基于给定点到查询邻居表的结点区域边界的最远距离作为搜索半径,基于第一搜索范围内的结点到邻居表中进行查询,查找与这些结点直接相邻的邻居结点,将处于或部分处于搜索半径内的结点作为更精确的第二搜索范围,基于第一搜索范围和第二搜索范围,从而确定有效搜索范围。
21.第二方面,本发明还提供一种基于四叉树集群的近邻搜索装置,包括:
22.区域分割单元,用于在确认指定区域的长宽比大于预设值后,将指定区域按短边的长度以1:1长宽比进行切割,得到多个子区域;
23.四叉树模型建立单元,用于分别在多个子区域上并行建立各自的四叉树模型;
24.邻居表单元,用于对建立好的多棵四叉树模型分别并行建立各自的邻居表,并根据不同四叉树模型之间的空间位置关系建立各邻居表之间的联系;
25.结点区域单元,用于根据给定点的空间位置,确定该给定点对应的四叉树,并确定该给定点所属四叉树中的叶子结点;
26.搜索范围单元,基于相互关联的多个邻居表的结点区域确定有效的搜索范围;
27.近邻点单元,用于根据确定好的有效搜索范围,并行计算该范围内所有点与给定点的距离,按照距离排序找到距离给定点最近的k个近邻点。
28.由此可见,本发明将指定区域按短边的长度以1:1长宽比进行切割,使得每个子区域的长宽比满足1:1,可以突破给定搜索空间的区域限制,并借助有关联的多个邻居表确定有效搜索范围,可以根据点的空间分布密度合理划分搜索空间,从而可以根据不同算法筛选出有效搜索范围,以提高查询效率,从而解决目前存在的时间复杂度高、查询效率低、执
行效率低等各种问题;然后,通过预处理建立的邻居表和计算搜索半径,根据搜索半径确定的范围可进一步精确搜索范围,从而提高搜索效率。
29.因此,本发明可降低knn搜索的时间复杂度,且实际搜索效率受指定区域大小和点的密度等因素的影响较小,适合在gpu上大规模并行执行,执行效率高,并行性高。
30.第三方面,本发明还提供一种电子设备,包括:
31.存储器,存储有计算机可执行指令;
32.处理器,配置为运行所述计算机可执行指令,
33.其中,所述计算机可执行指令被所述处理器运行时实现上述任一种的基于四叉树集群的近邻搜索方法的步骤。
34.第四方面,本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述任一种的基于四叉树集群的近邻搜索方法的步骤。
35.由此可见,本发明提供了一种基于四叉树集群的近邻搜索方法的电子设备以及存储介质,其包括:一个或多个存储器,一个或多个处理器。存储器用于存储程序代码和程序运行过程中产生的中间数据、模型输出结果的储存和模型及模型参数的储存;处理器用于代码运行所占用的处理器资源和训练模型时占用的多个处理器资源。
36.下面结合附图和具体实施方式对本发明作进一步详细说明。
附图说明
37.图1是本发明一种基于四叉树集群的近邻搜索方法实施例的流程图。
38.图2是本发明一种基于四叉树集群的近邻搜索方法实施例中关于在多个子区域上并行建立各自的四叉树模型的示意图。
39.图3是本发明一种基于四叉树集群的近邻搜索方法实施例中关于各个四叉树对应的邻居表的示意图。
40.图4是本发明一种基于四叉树集群的近邻搜索方法实施例中关于按照搜索半径确定搜索范围的示意图。
41.图5是本发明一种基于四叉树集群的近邻搜索装置实施例的原理图。
具体实施方式
42.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.参见图1,一种基于四叉树集群的近邻搜索方法,包括以下步骤:
44.步骤s1,在确认指定区域的长宽比大于预设值后,将指定区域按短边的长度以1:1长宽比进行切割,得到多个子区域。
45.步骤s2,分别在多个子区域上并行建立各自的四叉树模型。
46.步骤s3,对建立好的多棵四叉树模型分别并行建立各自的邻居表,并根据不同四叉树模型之间的空间位置关系建立各邻居表之间的联系。
47.步骤s4,根据给定点的空间位置,确定该给定点对应的四叉树,并确定该给定点所属四叉树中的叶子结点。
48.步骤s5,基于相互关联的多个邻居表的结点区域确定有效的搜索范围。
49.步骤s6,根据确定好的有效搜索范围,并行计算该范围内所有点与给定点的距离,按照距离排序找到距离给定点最近的k个近邻点。
50.在进行区域切割时,将指定区域按短边的长度以1:1长宽比切割原有区域,当切割到最后一个区域时,若剩余区域不满足长宽比1:1比例,则通过扩展空间的方式补足为一个长宽比1:1比例的区域,以此确保每个区域都满足长宽比1:1的比例。在得到多个长宽比为1:1的正方形子区域后,在查询邻居结点确定搜索范围时更方便,可以根据搜索半径和正方形的边长来确定需要进行搜索的邻居结点。
51.在上述步骤s2中,所述分别在多个子区域上并行建立各自的四叉树模型,包括:使用四叉树方式逐层划分空间区域,先将初始空间区域划分为四个子区域,若子区域中点的数量大于预先设定好的阈值,则将该子区域进一步划分为四个更小的子区域,直至每个子区域中点的数量都不超过预先设定好的阈值,以确保每个叶子结点区域中点的分布密度相对均匀。
52.在完成四叉树模型的建立后,每个长宽比1:1的子区域均得到与之对应的四叉树。
53.在上述步骤s3中,所述对建立好的多棵四叉树模型分别并行建立各自的邻居表,包括:根据已有四叉树模型所划分的结点区域,根据空间位置找到每一个结点直接相邻的所有邻居结点;为每棵四叉树并行构建一张包括所有结点的邻居表,用于查找近邻点时快速确定有效搜索范围。
54.其中,本实施例的建树方法涉及多棵四叉树,多棵四叉树并行建树,且多棵四叉树之间存在空间位置关联;相应地,每棵树都有独立的邻居表,本实施例的每棵四叉树对应邻居表中,每棵树的根结点处需要存储相邻四叉树的根结点作为邻居。
55.在上述步骤s4中,所述确定该给定点所属四叉树中的叶子结点,包括:若给定点处于两个子区域的边界上,则该给定点属于序号较小的那棵四叉树中的对应结点区域;若该叶子结点中点的个数》k值,则将其作为查询邻居表的结点;若该叶子结点中点的个数《k值,则将其父结点作为查询邻居表的结点。
56.在上述步骤s5中,所述确定有效的搜索范围包括:
57.根据查询邻居表的结点到所属的邻居表中进行查询,查找与该结点直接相邻的邻居结点,将这些结点作为初步的第一搜索范围;
58.然后,基于给定点到查询邻居表的结点区域边界的最远距离作为搜索半径,基于第一搜索范围内的结点到邻居表中进行查询,查找与这些结点直接相邻的邻居结点,将处于或部分处于搜索半径内的结点作为更精确的第二搜索范围,基于第一搜索范围和第二搜索范围,从而确定有效搜索范围。
59.具体的,本实施例首先将指定区域按短边的长度以1:1长宽比切割原有区域,当切割到最后一个区域时,若剩余区域不满足长宽比1:1比例,则通过扩展空间的方式补足为一个长宽比1:1比例的区域,以此确保每个区域都满足长宽比1:1的比例。
60.接着,分别在每个子区域上并行建立各自的四叉树模型:设定每个结点区域中点的数量不超过某个阈值,多个子区域并行构建四叉树,将空间区域逐层划分为四个子区域,
如果子区域中点的数量大于阈值则进一步划分为四个更小的子区域,直到每个子区域中点的数量都不超过阈值。在建树过程中,存储子区域的边界坐标、包含的所有点的存储位置和数量等信息,从而将指定区域中的所有点相应地划分到四叉树的叶子结点对应的区域中,确保一个个结点区域中点的分布密度相对均匀,如图1所示。在建树完成后,每个长宽比1:1的子区域都得到一棵四叉树。
61.然后,并行为已建立的多棵四叉树分别建立各自的邻居表:根据已有四叉树所划分的结点区域,根据空间位置找到每一个结点直接相邻的所有邻居结点,既包含同一棵四叉树上的邻居结点,还要找到相邻四叉树上空间相邻的结点,为每棵四叉树并行构建一张包括所有结点的邻居表,用于查找近邻点时快速确定有效搜索范围。各个四叉树的邻居表如图2所示。
62.然后,确定给定点所在四叉树中的叶子结点:根据给定点的空间位置,确定给定点属于哪个子区域,根据约定条件,给定点只属于一棵四叉树,即序号较小的那棵。继而,进一步确定其所属四叉树中的叶子结点,即确定其所在叶子结点区域。在大多数情况下,给定点只属于一个子区域,对应一棵四叉树中的叶子结点区域。但如果给定点处于两个子区域的边界上,则规定其属于序号较小那棵四叉树中的对应结点区域。如果该叶子结点中点的个数》k值,则将其作为查询邻居表的结点;如果该叶子结点中点的个数《k值,则将其父结点作为查询邻居表的结点。
63.接着,初步确定搜索范围:根据上一步确定的用于查询邻居表的的结点到每棵四叉树对应的邻居表中进行查询,查找与该结点直接相邻的邻居结点,将这些结点作为初步的搜索范围。
64.然后,确定搜索范围:为进一步精确查找近邻点的搜索范围,基于给定点到查询邻居表的结点区域边界的最远距离作为搜索半径,将搜索半径内的结点区域作为更精确的搜索范围,从初步搜索范围中去掉不需要搜索的区域,以及新增给定点到所在叶子结点直接邻居的邻居结点作为有效搜索范围,如图3所示。
65.最后,计算距离找出k个近邻:基于搜索范围,采用多个线程并行计算该范围内所有点与给定点的距离,从而按距离排序找到距离给定点最近的k个点。
66.进一步的,对于四叉树结点阀值的说明:四叉树结点阀值是四叉树数据结构中很重要的一个参数,它表示了一个四叉树叶子结点中最多可以存储的二维数据点数量。在传统的四叉树建树过程中,当一个新的数据点插入一个其所包含数据点到达四叉树结点阀值的四叉树叶子结点时,这个四叉树叶子结点就会被分裂,产生四个孩子叶子结点,其原来包含的数据点也会分别转存在其孩子叶子结点内。从另外一个角度来说,任何一个四叉树非叶子结点,其子孙叶子结点所包含的数据点总数必定大于四叉树结点阀值。
67.在面向gpu的四叉树中,其结点阀值的设置与相关的应用有关。例如,当四叉树用于knn问题时,四叉树结点阀值要求比k大(建议设置阈值大于4倍k值),因为这样可以保证当按照搜索半径确定搜索范围时,范围内至少包含了一个非叶子结点,从而确保了范围内包含了大于k个数据点,可以从中取k个最近邻。
68.进一步的,对于指定区域满足长宽比大于的说明,包括:当使用基于四叉树邻居表来进行knn搜索时,为了算法的可行性,需要限制仅从查询邻居表的结点的前两环同级邻居内搜索k个近邻。
69.在实际应用中,在指定区域为给定点(图中小三角)找k个最近邻。
70.(1)由于指定区域长宽比大于需先将指定区域切分,得到5个满足长宽比为1:1的子区域;
71.(2)对5个子区域并行建立各自的四叉树,如图2所示;
72.(3)并行为5个四叉树建立各自的邻居表,包含了所有结点空间上相邻的所有邻居结点,除了同一棵四叉树中的邻居结点外,还考虑到了相邻四叉树中的邻居结点,如图3所示;
73.(4)确定给定点(图中小三角)的位置属于子区域5,即在四叉树5中结点3对应区域;
74.(5)查四叉树5的邻居表可得,结点3的直接邻居结点为:四叉树5中的结点4、1、2,四叉树4中的结点1、4;
75.(6)基于搜索半径进一步精确搜索范围:新增结点:树4中结点2、3(即直接邻居结点的邻居);如图4所示。最后确定的搜索范围为:四叉树5中的结点4、1、2,四叉树4中的结点1、4、2、3;
76.(7)并行计算搜索范围中所有点(小圆点)与给定点(小三角)的距离,找到距离给定点最短的k个近邻。
77.由此可见,本发明将指定区域按短边的长度以1:1长宽比进行切割,使得每个子区域的长宽比满足1:1,可以突破给定搜索空间的区域限制,并借助有关联的多个邻居表确定有效搜索范围,可以根据点的空间分布密度合理划分搜索空间,从而可以根据不同算法筛选出有效搜索范围,以提高查询效率,从而解决目前存在的时间复杂度高、查询效率低、执行效率低等各种问题;然后,通过预处理建立的邻居表和计算搜索半径,根据搜索半径确定的范围可进一步精确搜索范围,从而提高搜索效率。
78.一种基于四叉树集群的近邻搜索装置实施例
79.如图5所示,本实施例提供一种基于四叉树集群的近邻搜索装置,包括:
80.区域分割单元10,用于在确认指定区域的长宽比大于预设值后,将指定区域按短边的长度以1:1长宽比进行切割,得到多个子区域;
81.四叉树模型建立单元20,用于分别在多个子区域上并行建立各自的四叉树模型;
82.邻居表单元30,用于对建立好的多棵四叉树模型分别并行建立各自的邻居表,并根据不同四叉树模型之间的空间位置关系建立各邻居表之间的联系;
83.结点区域单元40,根据给定点的空间位置,确定该给定点对应的四叉树,并确定该给定点所属四叉树中的叶子结点;
84.搜索范围单元50,基于相互关联的多个邻居表的结点区域确定有效的搜索范围;
85.近邻点单元60,用于根据确定好的有效搜索范围,并行计算该范围内所有点与给定点的距离,按照距离排序找到距离给定点最近的k个近邻点。
86.在区域分割单元10中,在进行区域切割时,将指定区域按短边的长度以1:1长宽比切割原有区域,当切割到最后一个区域时,若剩余区域不满足长宽比1:1比例,则通过扩展空间的方式补足为一个长宽比1:1比例的区域,以此确保每个区域都满足长宽比1:1的比例。在得到多个长宽比为1:1的正方形子区域后,在查询邻居结点确定搜索范围时更方便,可以根据搜索半径和正方形的边长来确定需要进行搜索的邻居结点。
only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
98.此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
99.由此可见,本发明提供了一种基于四叉树集群的近邻搜索方法的电子设备以及存储介质,其包括:一个或多个存储器,一个或多个处理器。存储器用于存储程序代码和程序运行过程中产生的中间数据、模型输出结果的储存和模型及模型参数的储存;处理器用于代码运行所占用的处理器资源和训练模型时占用的多个处理器资源。
100.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
101.上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1