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

数据处理方法及装置与流程

2022-02-20 01:23:06 来源:中国专利 TAG:


1.本说明书涉及数据处理技术领域,特别涉及一种数据处理方法。本说明书同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质。


背景技术:

2.随着互联网技术的发展,无人驾驶技术也日渐成熟,而在无人驾驶技术中,分类模型(例如knn模型)扮演着核心算法角色;但由于knn模型需要对大量的数据进行计算处理,从而导致knn模型的处理复杂度较高,执行耗时较长。
3.因此,knn模型对处理器的计算能力和带宽提出了较高的要求,导致许多无人驾驶企业需要采用计算能力以及带宽较优的处理器,支持knn模型的执行,进一步增加了无人驾驶企业的成本。


技术实现要素:

4.有鉴于此,本说明书实施例提供了一种数据处理方法。本说明书同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
5.根据本说明书实施例的第一方面,提供了一种数据处理方法,应用于自动驾驶系统,所述系统包括数据控制模块和数据计算模块,其中,
6.所述数据控制模块获取目标对象的当前环境数据以及地图数据,并基于所述地图数据构建所述目标对象的特征索引树;
7.所述数据计算模块获取所述当前环境数据以及所述特征索引树,并基于所述当前环境数据对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,且将所述当前环境数据以及对应的叶子节点输入分类模型,获得所述当前环境数据对应的目标数据。
8.根据本说明书实施例的第二方面,提供了一种数据处理装置,应用于自动驾驶系统,包括数据控制模块和数据计算模块,其中,
9.所述数据控制模块,被配置为获取目标对象的当前环境数据以及地图数据,并基于所述地图数据构建所述目标对象的特征索引树;
10.所述数据计算模块,被配置为获取所述当前环境数据以及所述特征索引树,并基于所述当前环境数据对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,且将所述当前环境数据以及对应的叶子节点输入分类模型,获得所述当前环境数据对应的目标数据。
11.根据本说明书实施例的第三方面,提供了一种计算设备,包括:
12.存储器和处理器;
13.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述数据处理方法的步骤。
14.根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述数据处理方法的步骤。
15.本说明书提供的数据处理方法,应用于自动驾驶系统,所述系统包括数据控制模块和数据计算模块,其中,所述数据控制模块获取目标对象的当前环境数据,并将所述当前环境数据以及特征索引树发送至所述数据计算模块,其中,所述特征索引树基于所述目标对象对应的地图数据构建;所述数据计算模块基于所述当前环境数据对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,并将所述当前环境数据以及对应的叶子节点输入分类模型,获得所述当前环境数据对应的目标数据。
16.具体地,所述数据处理方法中的数据控制模块,通过构建特征索引树的方式对目标对象对应的地图数据进行预先分类,使得数据计算模块能够通过特征索引树,确定出与当前环境数据对应的叶子节点(即分类后的地图数据),实现在分类模型对当前环境数据以及对应的叶子节点进行处理的过程中,有效的降低了分类模型的处理复杂度,避免了分类模型执行耗时较长的问题。
17.并且,数据处理方法采用异构的方式,在数据控制模块中对特征索引树进行构建,并在数据计算模块中基于分类模型获得当前环境数据对应的目标数据,进一步降低了对处理器的计算能力和带宽的要求,节省了无人驾驶企业的成本。
附图说明
18.图1是本说明书一实施例提供的一种采用dsvs数据结构进行算法加速的流程示意图;
19.图2是本说明书一实施例提供的一种在基于fpga进行对构建k-d树进行算法加速过程中fpga的结构示意图;
20.图3是本说明书一实施例提供的一种数据处理方法的流程图;
21.图4是本说明书一实施例提供的一种数据处理方法对地图数据进行分割的示意图;
22.图5是本说明书一实施例提供的一种数据处理方法中特征索引树的示意图;
23.图6是本说明书一实施例提供的一种数据处理方法中执行knn模型的示意图;
24.图7是本说明书一实施例提供的一种应用于车辆自动驾驶场景下的数据处理方法的处理流程图;
25.图8是本说明书一实施例提供的一种数据处理方法中下行bd接口的示意图;
26.图9是本说明书一实施例提供的一种数据处理方法中上/下行数据接口的示意图;
27.图10是本说明书一实施例提供的一种数据处理装置的结构示意图;
28.图11是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
29.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
30.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
31.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
32.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
33.自动驾驶配送小车:是指一种自动驾驶末端物流车。
34.计算平台:即承载自动驾驶算法的平台,广义上是对车辆进行操控的软硬件系统,狭义上主要包含fpga、异构soc的板卡。
35.knn算法:k最近邻算法(knearest neighbours),简称为knn。顾名思义,所谓k最近邻,就是k个最近的邻居的意思;也就是在数据集中,认为每个样本可以用离他最距离近的k个邻居来代表。knn是最简单易懂的机器学习算法。1968年由cover(科弗)和hart(哈特)提出,knn能够应用的场景包括字符识别、文本分类、图像识别等领域。
36.ann:近似最近邻算法(approximate knn),简称为ann,即不是全局较好的knn;由于knn的数据集通常非常巨大,通常需要采用一些近似方法来降低计算量。
37.kd-tree:k-d树,是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。
38.soc:系统级芯片(system-on-a-chip),简称为soc,是一种集成电路的芯片。
39.mpsoc:自适应soc,该mpsoc可以由ps和pl两部分组成。
40.ps:处理器系统(processing system),简称为ps,是mpsoc芯片的处理器系统,可以以4个arma53(处理器)为基础,可以理解成一种芯片,主要用来构建操作系统以及对pl进行控制。
41.pl:可编程逻辑(programmable logic),简称为pl,为mpsoc芯片的可编程逻辑部分,也就是soc芯片的fpga的部分,主要用来进行算法加速
42.bd:任务描述符(block descriptor)。
43.mpi:平均接管英里数(miles per intervention),用来表征一个自动驾驶智能程度的指标。
44.fpga:可编程逻辑门阵列(field programmable gate array),简称为fpga,可以理解为一种芯片或一种高度定制化的硬件。
45.kitti数据集:一种自动驾驶场景下的计算机视觉算法评测数据集。
46.lut:一种随机存取存储器。
47.hls:高层次综合(high level synthesis),是一种代码的综合技术
48.systemverilog:一种建立在verilog语言的基础上的硬件描述和验证语言,简称为sv语言。
49.verilog:一种硬件描述语言。
50.ddr bandwidth:内存带宽。
51.bram:一种块存储。
52.performance:一种性能。
53.clk freq:时钟信号频率。
54.dma:直接存储器访问(direct memory access)。
55.i/o:输入/输出(input/output),分为io设备和io接口两个部分。
56.c-model:特指与硬化加速器对应的软件c代码。
57.apu:加速处理器(accelerated processing unit)。
58.随着无人驾驶技术的发展,许多无人驾驶企业针对末端物流已经发布了“自动驾驶配送小车”,旨在降低包裹最后公里数的配送成本,提升配送品质,通过技术手段带来服务升级。目前,许多无人驾驶企业的“自动驾驶配送小车”,正处在量产化演进的阶段,并且已经定制了自己的车辆硬件以及计算平台,努力打造全球最大的自动驾驶车队。
59.但在,“自动驾驶配送小车”的量产化演进过程中存在一些挑战,具体来说,是对knn算法的硬件加速;knn算法的本质是在已知的多维数据集中搜索出与目标点“距离”最近的点(即最相似的点),在机器学习的多个领域如数据检索、数据分类、聚类等都扮演着极其重要的角色,可以说knn算法构筑了计算机视觉(cv)的应用基础,因此knn算法也是自动驾驶领域的基础性算法。
60.而在“自动驾驶配送小车”的自动驾驶算法中,knn算法在点云定位、决策规划等功能中扮演着核心算法角色,尤其在定位算法中。但由于knn算法需要同时在大数据集中(例如定位算法的数据集为100万级别)搜索最相似点,导致计算量巨大;同时,又要保证10hz的计算性能(即100ms的延时指标),导致knn算法的执行复杂度最高、执行耗时最长,而knn算法执行性能、延时等指标也因此直接影响“自动驾驶配送小车”的整体mpi。因此对处理器的计算能力和带宽提出了非常高的要求,但是,在采用性能较优的处理器支持knn模型的执行的情况下,例如gpu处理器、xeon处理器,同时意味着高昂的成本、较高的功耗。
61.无人驾驶企业对于“自动驾驶配送小车”的目标是量产运营,由于功耗以及成本的约束,会选择采用稳定、低成本的嵌入式计算平台。而嵌入式平台有限的算力以及量产的低成本和稳定性要求都对knn算法的高效执行提出了挑战。
62.基于上述问题,一种方案采用了dsvs的数据结构对数据进行管理,简称为dsvs(双分割体素结构)方案,该方案的架构设计方面是在管理模块(ps)上执行数据管理、在计算模块(pl)上执行加速计算;参见图1,图1是本说明书一实施例提供的一种采用dsvs数据结构进行算法加速的流程示意图。
63.其中,管理模块将参考数据集以及查询数据集发送至计算模块中,该计算模块基于参考数据集以及查询数据集对双分割体素结构进行构建,并在将构建的双分割体素结构发送至管理模块的同时,对双分割体素结构进行配置。
64.管理模块在接受到双分割体素结构后,基于该双分割体素结构分别对参考数据集以及查询数据集进行排序,并将排序后的参考数据集以及查询数据集发送至计算模块。
65.计算模块将接收到的参考数据集以及查询数据集存储至数据集缓存中,计算模块基于配置后的双分割体素结构、以及存储至数据集缓存中的参考数据集以及查询数据集进
行邻域候选点搜索,通过硬件并行knn加速的方式对knn进行加速,并将knn搜索的结果发送至管理模块。
66.基于上述介绍,该方案虽然提及异构加速处理,但由于采用了高层次综合(hls)技术,导致处理效率很低,所需的计算资源更大;在实际应用中,该方案在kitti数据集中,对40万个地图点以及10000个搜索点进行处理时,大概要将近100ms(毫秒)。并且,所需的bram资源以及lut的数量较多(bram为700多个,lut为6万多个),进一步导致芯片面积过大。
67.而另一种方案则是基于fpga进行knn加速设计的方案,简称为quicknn方案,参见图2,图2是本说明书一实施例提供的一种在基于fpga进行对构建k-d树进行算法加速过程中fpga的结构示意图。其中,该方案的fpga为vcu118的开发板;参见图2,图2上部左侧为完整的fpga架构图、根据fpga架构图可知,该fpga包括构建k-d树模块、knn搜索模块、内存控制器以及外存。图2上部右侧为构建k-d树模块的架构图;图2底部为knn搜索模块的架构图。
68.具体地,该构建k-d树模块能够基于内存控制器从外存中获得搜索点,并将搜索点存储样本点缓存以及树存储中,其中样本点缓存为多个,并通过样本点控制子模块进行控制;树存储中包括多个树存储引擎;构建k-d树模块中的控制子模块在搜索点被存储至样本点缓存以及树存储中之后,通过启动点样本子模块、k-d树构建子模块、树存储以及k-d树片上缓存对构建k-d树进行加速;并将构建后的k-d树存储至桶缓存中,其中。该k-d树构建子模块能够对样本点进行融合排序;该桶缓存由桶控制子模块进行控制;将k-d树存储至桶缓存后,能够通过聚合写入子模块对桶缓存中的数据进行聚合,将聚合后的数据统一写入外存,增加外存读写效率。同时将桶缓存内的k-d树发送至knn搜索模块。
69.该knn搜索模块能够通过内存控制器从外存中获取待匹配点以及叶子节点内的搜索点(即待匹配点进入以及叶子节点内的点进入)。并通过knn搜索模块的树搜索子模块中多个树搜索引擎,对k-d树片上缓存中的数据以及待匹配点进行处理,并将处理结果发送至多个叶子节点片上缓存中进行存储,其中,多个叶子节点片上缓存包括单个叶子节点缓存以及聚合读外存;叶子节点内部点遍历排序引擎能够对叶子节点内的点、以及多个叶子节点片上缓存中存储的处理后的待匹配点进行计算,获得knn搜索结果。
70.基于上述介绍可知,该方案的具有三方面的缺点;其中,第一方面是该方案采用全逻辑加速的方案,非异构设计,导致芯片面积巨大;并且该方案是对构建k-d树进行加速,而实际应用中,构建k-d树模块单次计算耗时较大,但每间隔隔较长时间(比如1秒)才会执行1次构建。而是knn搜索每秒执行的次数较多(几千次),因此,knn搜索过程才具有较高的加速意义;该方案对于构建k-d树模块的硬件加速方案不合理。
71.第二方面是该方案对于构建k-d树模块的加速使用了逻辑单元,而非异构处理器arm单元,因此存在不灵活、效率不高的问题。
72.第三方面是该方案采用了vcu118的开发板进行设计和验证,无法用于端侧加速。
73.基于上述问题,在本说明书实施例提供的数据处理方法,通过对knn模型做性能检测(profiling)发现,knn模型的并行计算与查找所消耗的计算资源较多。而对k-d树进行构建的过程中,虽然单次耗费资源更大,但由于建树频率很低(1hz),因此对整体计算资源消耗不会产生太大影响;同时,由于建树算法的并行执行的难度较大,因此不适合对k-d树构建过程进行加速。此外,还确定出knn算法加速的瓶颈不在于计算资源(dsp),而是在于带宽不足。带宽消耗包括从外存获取k-d树、获取待匹配点、获取叶子结点数据和返回匹配结果
数据。因此,在本说明书实施例提供的数据处理方法,采用了异构加速方案,通过数据控制模块负责对k-d树进行构建,总体控制和命令下发,并通过数据计算模块执行对点云数据的并行匹配搜索与计算。
74.具体实施时,采用本说明书实施例提供的数据处理方法时芯片的性能参数,与采用上述两个方案芯片的性能参数的具体情况,如表1所示:
75.表1
[0076][0077]
其中,表1中的dsvs列为采用dsvs方案是芯片的性能参数,quicknn为采用quicknn方案时芯片的性能参数;proposed为采用本说明书提供的数据处理方法时芯片的性能参数。表1中“?”符号表示该性能参数信息没有被获取到。需要说明的是,本说明书仅以表1中的性能参数为例,对本说明书提供的数据处理方法进行进一步说明,在不同的实际应用场景下,性能参数信息也不同。
[0078]
基于上述表1可知,dsvs方案以及quicknn方案实现后所占用的芯片面积过大,部分资源如dsp和bram,是本说明书提供的数据处理方法的40倍和20倍。本说明书提供的数据处理方法首先在牺牲极少精度的前提下,通过采用ann替代knn的方式,并通过异构设计,将knn任务在ps与pl间合理划分,节省了大量的芯片资源,在芯片相同性能下,所使用的芯片面积小于上述两个方案中芯片面积的1/10,而上述两个方案的占用面积均达到本设计的10倍左右,并且没有实际端侧部署价值。
[0079]
而dsvs方案由于采用了hls方式,导致资源较大,性能较弱,无法满足实时性要求。并且dsvs方案未对系统瓶颈、带宽的特殊优化。而本说明书提供的数据处理方法在数据计算模块中设计了多个叶子结点缓存,由于相近的点云数据很可能落到相同的叶子节点中,从而省去叶子结点加载的消耗,节约了大量的帧内带宽,同时通过精细化的帧间复位逻辑,使得当前帧可以复用上一帧的片上缓存,进一步压缩了带宽需求。
[0080]
具体的,在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处
理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
[0081]
参见图3,图3示出了根据本说明书一实施例提供的一种数据处理方法的流程图,所述数据处理方法应用于自动驾驶系统,所述系统包括数据控制模块和数据计算模块,具体包括以下步骤:
[0082]
步骤302:所述数据控制模块获取目标对象的当前环境数据以及地图数据,并基于所述地图数据构建所述目标对象的特征索引树。
[0083]
在具体实施时,所述数据处理方法可以应用于自动驾驶系统,该自动驾驶系统可以为集成电路的芯片,该集成电路的芯片可以根据实际应用进行设置,本说明书实施例对此不做任何限定。例如,该集成电路的芯片包括mpsoc芯片、soc芯片、fpga芯片。
[0084]
数据控制模块可以理解为用于对数据计算模块进行控制的模块,在数据处理方法应用于mpsoc芯片的情况下,该数据控制模块可以理解为mpsoc芯片中的ps模块。
[0085]
数据计算模块可以理解为能够基于数据控制模块的指令对数据进行计算的模块,在数据处理方法应用于mpsoc芯片的情况下,该数据控制模块可以理解为mpsoc芯片中的pl模块。
[0086]
目标对象可以理解为一种移动机器人,该移动机器人可以为任意一种类型的移动机器人,该移动机器人包括但不限于轮式移动机器人、步行移动机器人(单腿式、双腿式和多腿式)、履带式移动机器人等。为了便于理解,本说明书中仅以目标对象为轮式移动机器人为例,对数据处理方法进行详细介绍。并且,数据处理方法的应用场景不同,对应的目标对象也不同;例如,数据处理方法应用于车辆自动驾驶场景下,该目标对象可以为自动驾驶配送小车、自动驾驶汽车;数据处理方法应用于智能清洁服务场景下,该目标对象可以为清洁机器人、扫地机器人等。
[0087]
在目标对象为自动驾驶配送小车的情况下,该当前环境信息可以理解为自动驾驶配送小车所处的环境的信息,例如,自动驾驶配送小车所处环境的实时点云数据;在实际应用中,该实时点云数据可以由部署在自动驾驶配送小车上的探测工具进行获取,该探测工具可以为激光雷达。
[0088]
地图数据可以理解为目标对象可移动区域的离线高清地图中的地图点云数据。
[0089]
特征索引树可以理解为基于地图点云数据构建的、便对该地图点云数据进行快速检索的树形数据结构。例如,该特征索引树可以为k-d树。
[0090]
具体地,数据控制模块能够获取到目标对象当前所处环境的当前环境数据,以及目标对象对应的地图数据,并且,数据控制模块还能够根据目标对象对应的地图数据构建目标对象的特征索引树。
[0091]
举例说明,以数据处理方法应用于车辆自动驾驶的场景为例,对数据控制模块获取当前环境数据以及地图数据,并构建特征索引树做进一步说明。目标对象可以为自动驾驶配送小车,该自动驾驶配送小车采用mpsoc芯片,该mpsoc芯片中包括数据控制模块以及数据计算模块;当前环境数据可以为实时点云数据,地图数据可以为离线高清地图中的地图点云数据;特征索引树可以为k-d树。
[0092]
数据控制模块能够从自动驾驶配送小车上部署的激光雷达中,获取到激光雷达探测到的每一帧实时点云数据中的所有点(约几千个),其中,该实时点云数据为自动驾驶配
送小车当前所处环境的实时点云数据。
[0093]
同时,数据控制模块能够获取到自动驾驶配送小车对应的离线高清地图中的地图点云数据,并根据该地图点云数据构建自动驾驶配送小车对应的k-d树。
[0094]
在本说明书实施例中,由于地图数据的数据量较大,如果采用分类模型直接对地图数据以及当前环境数据进行处理的方式,会导致分类模型的计算量过大,计算耗时较长等问题的发生,进一步提高对处理器的计算能力和带宽的要求,因此,所述数据处理方法为了减少分类模型计算量以及计算耗时,降低对处理器的计算能力和带宽的要求,选择基于获取到的地图数据构建目标对象的特征索引树的方式,以解决上述问题;而数据控制模块获取目标对象的地图数据的具体方式,如下所示。
[0095]
所述数据控制模块获取目标对象的地图数据,包括:
[0096]
所述数据控制模块基于所述目标对象的当前位置以及所述目标对象的预设移动轨迹,确定所述目标对象的地图数据。
[0097]
其中,在目标对象为自动驾驶配送小车的情况下,目标对象的当前位置可以理解为自动驾驶配送小车当前所处位置的坐标信息;对应的,预设移动轨迹可以理解为预先设定的、自动驾驶配送小车的移动路径。
[0098]
具体地,数据控制模块能够基于目标对象的当前位置以及目标对象的预设移动轨迹,确定目标对象的地图数据;
[0099]
进一步地,所述数据控制模块基于所述目标对象的当前位置以及所述目标对象的预设移动轨迹,确定所述目标对象的地图数据,包括:
[0100]
所述数据控制模块确定所述目标对象的当前位置,并基于所述当前位置从预设移动轨迹中确定所述目标对象的下一移动区域,且获取所述目标对象的下一移动区域对应的地图数据。
[0101]
其中,在目标对象为自动驾驶配送小车的情况下,下一移动区域可以理解为自动驾驶小车从当前移动区域出发、即将要移动至的下一个移动区域。
[0102]
具体地,数据控制模块能够确定出目标对象的当前位置,并基于当前位置从预设移动轨迹中确定出目标对象即将要移动至的下一个移动区域,且获取该下一个移动区域对应的地图数据。
[0103]
沿用上例,对数据控制模块获取目标对象的下一移动区域对应的地图数据做进一步说明。其中,预设移动轨迹可以为预先为自动驾驶配送小车配置的行驶路径。
[0104]
数据控制模块首先需要确定出自动驾驶配送小车的当前所处位置的坐标信息,并基于预先为自动驾驶配送小车配置的预设行驶路径,确定出自动驾驶配送小车的坐标信息对应的当前所处区域;然后,基于自动驾驶配送小车的当前所处区域确定出自动驾驶配送小车即将要行驶至的下一区域,并获得该下一个区域对应的离线高清地图中的离线点云数据。
[0105]
本说明书实施例中,数据控制模块基于目标对象的当前位置从预设移动轨迹中确定目标对象的下一移动区域,并获取目标对象的下一移动区域对应的地图数据;便于后续数据控制模块基于地图数据对特征索引树进行构建,并且,数据控制模块通过获取目标对象的下一移动区域对应的地图数据的方式,而不是直接获取目标对象的所有移动区域对应的地图数据,避免了由于地图数据的数量过多,导致构建特征索引树的耗时较长、计算量过
大的问题,进一步提高了获得目标数据的效率。
[0106]
在具体实施时,分类模型的实现有多重方法,一类是线性扫描法,即将地图数据集中的离线点云数据与实时点云数据逐一进行距离比较,也即是穷举;但该方法的缺点很明显,该线性扫描法没有利用地图数据集本身蕴含的任何结构信息,搜索效率较低;第二类是建立数据索引,然后基于数据索引进行快速匹配。因为,实际离线高清地图中的离线点云数据一般都会呈现出簇状的聚类形态,通过设计有效的索引结构可以大大加快数据检索的速度。而构建特征索引树属于第二类,因此,在本说明书实施例中,采用基于地图数据构建目标对象的特征索引树的方式,实现减少分类模型计算量以及计算耗时、降低对处理器的计算能力和带宽的要求;而数据控制模块基于地图数据构建目标对象的特征索引树的具体方式,如下所示。
[0107]
所述基于所述地图数据构建所述目标对象的特征索引树,包括:
[0108]
所述数据控制模块基于所述地图数据的坐标信息构建所述目标对象的特征索引树。
[0109]
其中,地图数据的坐标信息可以理解为地图数据携带的坐标,在地图数据为离线点云数据的情况下,该坐标信息可以为每个点云数据的坐标;在实际应用中,该坐标信息可以为一维、二维或三维坐标。
[0110]
具体的,数据控制模块在获得目标对象对应的地图数据之后,基于该地图数据的坐标信息构建目标对象的特征索引树。
[0111]
进一步地,数据控制模块基于该地图数据的坐标信息对特征索引树进行构建的具体方式如下所示。
[0112]
所述数据控制模块基于所述地图数据的坐标信息构建所述目标对象的特征索引树,包括:
[0113]
所述数据控制模块基于所述地图数据的坐标信息对所述地图数据进行分类,并基于分类后的所述地图数据构建所述目标对象的特征索引树。
[0114]
具体的,数据控制模块在接受到地图数据之后,基于所述地图数据的坐标信息对该地图数据进行分类,获得多种类型的地图数据;并基于分类后产生的每种类型的地图数据对特征索引树进行构建,从而获得目标对象对应的特征索引树。
[0115]
沿用上例,对数据控制模块基于分类后的地图数据构建目标对象的特征索引树做进一步说明。
[0116]
数据控制模块在接收到离线高清地图中的离线点云数据之后,基于该离线点云数据的特征(例如坐标信息),采用将离线点云数据进行平均分割的方式,对该离线点云数据进行分类;从而获得多种类型的离线点云数据。数据控制模块在对离线点云数据进行分类后,基于分割后的每种类型的离线点云数据对k-d树进行构建,从而获得自动驾驶配送小车对应的k-d树。
[0117]
本说明书实施例中,数据控制模块基于地图数据的坐标信息对地图数据进行分类,并基于分类后的地图数据构建目标对象的特征索引树,有效的提高了分类模型的处理速度,降低了分类模型的处理复杂度。大大加快了对目标数据的搜索效率。
[0118]
此外,数据控制模块基于地图数据的坐标信息对地图数据进行分类的方式,还可以采用通过地图数据对应的初始中位坐标信息,对地图数据进行分类,具体实现方式如下
所示。
[0119]
所述数据控制模块基于所述地图数据的坐标信息对所述地图数据进行分类,包括:
[0120]
所述数据控制模块确定所述地图数据的坐标信息中的第一目标坐标,并基于所述第一目标坐标确定所述地图数据的初始中位坐标信息;
[0121]
所述数据控制模块基于所述初始中位坐标信息对所述地图数据进行分类,获得两种类型的地图数据;
[0122]
所述数据控制模块确定每种类型的地图数据的坐标信息中的第二目标坐标,并基于所述第二目标坐标确定所述每种类型的地图数据的目标中位坐标信息,且基于所述目标中位坐标信息对所述每种类型的地图数据进行分类,直至所述每种类型的地图数据的数量等于预设数量阈值。
[0123]
其中,第一目标坐标可以理解为地图数据的坐标信息对应的坐标轴,在地图数据的坐标信息为二维坐标的情况下,该第一目标坐标可以为坐标轴x或坐标轴y;在地图数据的坐标信息为三维坐标的情况下,该第一目标坐标可以为坐标轴x、坐标轴y或坐标轴z。
[0124]
在第一目标坐标为坐标轴x的情况下,该初始中位坐标信息可以理解为所有地图数据的坐标信息中、与坐标轴x中间数最接近的地图数据的坐标信息;在实际应用中,数据控制模块确定出离线点云数据的坐标在坐标轴x上的分布范围,并计算出该范围的中位数;且确定出与该中位数最接近的离线点云数据的坐标信息,即初始中位坐标信息。
[0125]
第二目标坐标可以理解为每种类型的地图数据的坐标信息对应的坐标轴。
[0126]
在第二目标坐标为坐标轴x的情况下,目标中位坐标信息可以理解为每种类型的地图数据的坐标信息中、与坐标轴x中间数最接近的地图数据的坐标信息。
[0127]
预设数量阈值可以根据实际应用进行设置,本说明书实施例对此不做任何限定。例如该预设数量阈值可以为128个。
[0128]
具体地,数据控制模块首先确定地图数据的坐标信息中的第一目标坐标,并基于第一目标坐标确定地图数据的初始中位坐标信息;其次基于初始中位坐标信息对地图数据进行分类,获得两种类型的地图数据;
[0129]
数据控制模块在获得两种类型的地图数据之后,确定出每种类型的地图数据的坐标信息中的第二目标坐标,并基于该第二目标坐标确定每种类型的地图数据的目标中位坐标信息,且基于目标中位坐标信息对每种类型的地图数据进行分类,直至每种类型的地图数据的数量等于预设数量阈值。
[0130]
沿用上例,对数据控制模块基于目标坐标以及中位坐标信息对地图数据进行分类做进一步说明。
[0131]
参见图4,图4是本说明书一实施例提供的一种数据处理方法对地图数据进行分割的示意图。其中,离线高清地图中的离线点云数据可以通过k维空间内的n个数据点进行表示,即k维空间中数据点的集合,其中,k可以为1、2或3;n可以为任意正整数。本说明书实施例以离线点云数据为二维空间中的数据点为例,对数据处理方法进行说明;该离线点云数据的数量为6个。每个离线点云数据的坐标信息为(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)。
[0132]
数据控制模块首先可以选择二维空间中的坐标轴x为离线点云数据的坐标信息中
的第一目标坐标,并基于离线点云数据在坐标轴x上对应的坐标,确定出该6个离线点云数据的坐标轴x的中位数为6,然后选取与中位数6最接近的离线点云数据(7,2)的坐标信息,作为该离线点云数据的初始中位坐标信息。
[0133]
数据控制模块确定初始中位坐标信息(7,2)之后,将(7,2)作为切分点,并基于坐标轴x与切分点(7,2)确定一个分割线a,该分割线a通过选定的切分点(7,2)并垂直于选定的坐标轴x,通过该分割线a将离线点云数据对应的二维空间分割为两个矩形,该两个矩形即为两种类型的地图数据,其中,分割线a左侧矩形中离线点云数据的数量为4个;分割线a右侧矩形中离线点云数据的数量为2个。
[0134]
在实际应用中,当离线点云数据以三维空间中的数据点进行表示时,能够并基于坐标轴x与切分点(7,2)确定一个超平面,该超平面通过选定的切分点(7,2)并垂直于选定的坐标轴x,通过该超平面将离线点云数据对应的三维空间分割为两个区域。
[0135]
该数据控制模块将二维空间分割为两个矩形之后,针对每个矩形,可以选择坐标轴y作为每个矩形对应的第二目标坐标,并基于每个矩形在坐标轴y上对应的坐标,确定出每个矩形中的离线点云数据的坐标轴y中位数,然后选取最接近该中位数的离线点云数据的坐标信息,作为每个矩形中的离线点云数据的目标中位坐标信息。参见图4,分割线a左侧矩形中离线点云数据的目标中位坐标信息可以为(5,4);分割线a右侧矩形中离线点云数据的目标中位坐标信息可以为(9,6)。
[0136]
数据控制模块确定目标中位坐标信息之后,将该目标中位坐标信息作为切分点,并基于坐标轴y与切分点确定一个分割线,该分割线通过选定的切分点并垂直于选定的坐标轴y,通过该分割线将每个矩形再次分割为两个矩形,该两个矩形即为两种类型的地图数据。
[0137]
数据控制模块通过分割线将每个矩形再次分割为两个矩形之后,针对再次分割为两个矩形继续执行上述对于矩形的分割操作,当每个矩形内离线点云数据的数据等于预设数据阈值的情况下,完成对于离线点云数据的分类。
[0138]
本说明书实施例中,数据控制模块基于第一目标坐标确定的地图数据的初始中位坐标信息,对地图数据进行分类,并再次基于每种类型的地图数据的坐标信息中的第二目标坐标确定的目标中位坐标信息,对每种类型的地图数据进行分类,直至每种类型的地图数据的数量等于预设数量阈值。实现了精准的对地图数据进行分类,便于后续通过分类后的地图数据对特征索引树进行构建,进一步提高了获取目标数据的效率。
[0139]
进一步地,数据控制模块基于分类后的地图数据构建目标对象的特征索引树的方式,还可以采用通过地图数据对应的初始中位坐标信息、目标中位坐标信息以及每种类型的地图数据,对目标对象的特征索引树进行构建,具体实现方式如下所示。
[0140]
所述基于分类后的所述地图数据构建所述目标对象的特征索引树,包括:
[0141]
所述数据控制模块将所述地图数据的初始中位坐标信息确定为所述特征索引树的根节点,并将所述每种类型的地图数据的目标中位坐标信息确定为所述特征索引树的子节点,且将所述每种类型的地图数据确定为所述特征索引树的叶子节点;
[0142]
所述数据控制模块根据所述根节点、所述子节点以及所述叶子节点构建所述目标对象的特征索引树。
[0143]
其中,根节点可以理解为特征索引树最顶端的节点;子节点可以理解为特征索引
树中根节点下方连接的节点;叶子节点可以理解为特征索引树末端的节点。
[0144]
具体的,数据控制模块在完成对地图数据的分类之后,将地图数据的初始中位坐标信息确定为特征索引树的根节点;将每种类型的地图数据的目标中位坐标信息确定为特征索引树的子节点;将每种类型的地图数据确定为特征索引树的叶子节点;根据该根节点、该子节点以及该叶子节点对目标对象的特征索引树进行构建。
[0145]
沿用上例,对根据该根节点、该子节点以及该叶子节点对目标对象的特征索引树进行构建做进一步说明。
[0146]
参见图5,图5是本说明书一实施例提供的一种数据处理方法中特征索引树的示意图。
[0147]
数据控制模块在完成对离线高清地图中的离线点云数据进行分类之后,将离线点云数据的初始中位坐标信息(7,2)确定为k-d树的根节点,将每个矩形中离线点云数据的目标中位坐标信息(5,4)以及(9,6),确定为kd树的子节点,将满足预设数据阈值的每个矩形中的离线点云数据,确定为kd树的叶子节点,该满足预设数据阈值的每个矩形,即为坐标(2,3)、(4,7)以及(8,1)对应的矩形。
[0148]
数据控制模块在确定出k-d树对应的根节点、子节点以及叶子节点后,基于该根节点、该子节点以及该叶子节点对自动驾驶配送小车对应的k-d树进行构建。
[0149]
本说明书实施例中,数据控制模块通过确定出特征索引树对应的根节点、子节点以及叶子节点,完成对特征索引树的构建,从而实现基于特征索引树快速的获取目标对象对应的目标数据,进一步提高了获取目标数据的效率。
[0150]
并且,考虑到采用ann模型的情况下所带来的精度损失,令k-d树的每个叶子结点的大小等于预设数量阈值,进一步降低ann算法的搜索复杂度。
[0151]
进一步地,所述基于所述地图数据构建所述目标对象的特征索引树之后,还包括:
[0152]
所述数据控制模块将所述当前环境数据以及特征索引树存储至数据存储模块,并基于所述当前环境数据以及特征索引树生成数据处理指令,且将所述数据处理指令发送至所述数据计算模块。
[0153]
其中,在数据处理方法应用于mpsoc芯片的情况下,数据存储模块可以理解为与mpsoc芯片对应的内存储器。
[0154]
具体地,数据控制模块在获得目标对象的当前环境数据以及特征索引树之后,将该当前环境数据以及特征索引树存储至数据存储模块,并基于当前环境数据以及特征索引树生成数据处理指令,且将数据处理指令发送至数据计算模块。
[0155]
沿用上例,对数据控制模块将当前环境数据以及特征索引树存储至数据存储模块,并向数据计算模块发送数据处理指令做进一步说明。
[0156]
数据控制模块获取自动驾驶配送小车对应的实时点云数据,并基于离线点云数据完成k-d树的构建之后,将该实时点云数据以及k-d树存储至mpsoc芯片对应的内部存储器中;并基于该实时点云数据以及k-d树生成数据处理指令,且将该指令发送至数据计算模块。
[0157]
本说明书实施例中,该数据控制模块将当前环境数据以及特征索引树存储至数据存储模块,并将基于当前环境数据以及特征索引树生成数据处理指令发送至数据计算模块。实现数据计算模块能够基于数据处理指令从数据存储模块中获取当前环境数据以及特
征索引树,降低了数据控制模块与数据计算模块之间的带宽压力,提高了数据传输的效率。
[0158]
进一步地,所述数据计算模块基于所述当前环境数据对所述特征索引树进行检测之前,还包括:
[0159]
所述数据计算模块基于接收到的数据处理指令从所述数据存储模块中获取所述当前环境数据以及特征索引树。
[0160]
具体实施过程中,该数据计算模块能够基于数据处理指令,从该数据存储模块中获取到目标对象对应的当前环境数据以及特征索引树,降低了数据控制模块与数据计算模块之间的带宽压力,提高了数据传输的效率。
[0161]
在另一种情况下,所述基于所述当前环境数据以及特征索引树生成数据处理指令,包括:
[0162]
所述数据控制模块确定所述当前环境数据以及特征索引树在所述数据存储模块中的存储位置,并基于所述存储位置生成数据处理指令。
[0163]
具体地,所述数据控制模块在将当前环境数据以及特征索引树存储至数据存储模块之后,能够确定出当前环境数据以及特征索引树在数据存储模块中的存储位置,并基于该存储位置生成数据处理指令。
[0164]
沿用上例,对数据控制模块基于当前环境数据以及特征索引树的存储位置生成数据处理指令做进一步说明。
[0165]
数据控制模块将该实时点云数据以及k-d树存储至mpsoc芯片对应的内部存储器之后;数据控制模块能够确定出该实时点云数据以及k-d树在内部存储器中对应的存储位置,并基于该存储位置生成数据处理指令。
[0166]
本说明书实施例中,数据控制模块确定当前环境数据以及特征索引树在数据存储模块中的存储位置,并基于存储位置生成数据处理指令。便于数据计算模块能够基于当前环境数据以及特征索引树的存储位置快速且准确的在数据存储模块中获取当前环境数据以及特征索引树。
[0167]
进一步地,所述数据计算模块基于所述当前环境数据对所述特征索引树进行检测之前,还包括:
[0168]
所述数据计算模块基于接收到的数据处理指令中携带的存储位置,从所述数据存储模块中获取所述当前环境数据以及特征索引树。
[0169]
在具体实施时,数据计算模块在接受到数据处理指令之后。能够基于数据处理指令中携带的、当前环境数据以及特征索引树的存储位置,从该数据存储模块中快速且准确的获取到目标对象对应的当前环境数据以及特征索引树,进一步提高了获取目标对象对应的目标数据的效率。
[0170]
步骤304:所述数据计算模块获取所述当前环境数据以及所述特征索引树,并基于所述当前环境数据对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,且将所述当前环境数据以及对应的叶子节点输入分类模型,获得所述当前环境数据对应的目标数据。
[0171]
其中,分类模型可以理解为能够进行数据分类的模型,该分类模型包括但不限于knn模型、ann模型。
[0172]
在地图数据为离线点云数据的情况下,目标数据可以理解为与当前环境数据相似
度较高的离线点云数据。
[0173]
具体地,在数据控制模块获取目标对象对应的当前环境数据,并完成对特征索引树的构建之后,该数据计算模块能够获取到目标对象的当前环境数据以及特征索引树;并基于当前环境数据对特征索引树进行检测,从而确定出与当前环境数据对应的特征索引树的叶子节点,且将当前环境数据以及对应的叶子节点输入分类模型,从而获得当前环境数据对应的目标数据。
[0174]
沿用上例,对数据控制模块基于当前环境数据以及特征索引树获得当前环境数据对应的目标数据做进一步说明。其中,分类模型为ann模型。
[0175]
数据计算模块在获取到自动驾驶配送小车的实时点云数据以及k-d树之后,基于该实时点云数据从而k-d树中搜索到,与该实时点云数据对应的叶子节点。在确定出实时点云数据对应的叶子节点后,将该实时点云数据以及对应的叶子节点输入至ann模型中,从而获得与实时点云数据相识度较高的k个离线点云数据,其中,k可以根据实际应用进行设置,本说明书实施例对此不做任何限定。例如k=5。
[0176]
而该ann模型在具体实施时,能够从叶子节点的离线点云数据中,匹配到与实时点云数据相识度较高的离线点云数据;参见图6,图6是本说明书一实施例提供的一种数据处理方法中执行ann模型的示意图;其中,正方形和三角形都是待搜索的数据集(即叶子节点中的离线点云数据),圆点是目标点(即实时点云数据)。当想要找到离目标点最近的k个离线点云数据时,就需要把叶子节点中的每个离线点云数据与实时点云数据进行距离计算,并将计算出的距离值按从小到大的顺序排序比较。
[0177]
如果k=2,那么目标数据就是实心圆圈中的两个三角形对应的离线点云数据;如果k=3,目标数据就是实心圆圈中所有三角形以及正方形对应的离线点云数据,如果k=5,目标数据就是虚线圆圈中所有三角形以及正方形对应的离线点云数据,以此类推。
[0178]
在实际应用中,需要对ann模型进行训练,该ann模型的训练方式可以为:首先加载数据;其次,初始化ann模型的k值;然后为了得到预测结果,可以通过训练数据对ann模型进行迭代训练。其中,对ann模型进行迭代训练可以为,首先计算出测试数据与每一行训练数据之间的距离,并根据距离值将计算出的距离按升序进行排序;其次根据排序结果并获得前k行的训练数据,然后输出预测结果,并根据预测结果对ann模型进行迭代训练。
[0179]
进一步地,所述数据计算模块基于所述当前环境数据对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,包括:
[0180]
所述数据计算模块基于所述当前环境数据的坐标信息对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点。
[0181]
其中,当前环境数据的坐标信息可以理解为实时点云数据的坐标信息,该坐标信息可以为一维、二维或三维坐标。
[0182]
具体地,该数据计算模块能够基于当前环境数据的坐标信息对特征索引树进行检测,并确定出与当前环境数据对应的特征索引树的叶子节点。
[0183]
具体实施时,该数据计算模块确定与当前环境数据对应的叶子节点的方式,还可以采用下述方式实现。
[0184]
所述数据计算模块基于所述当前环境数据的坐标信息对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,包括:
[0185]
所述数据计算模块确定与所述当前环境数据对应的初始叶子节点,并基于所述当前环境数据的坐标信息确定所述当前环境数据与所述初始叶子节点的目标距离值;
[0186]
所述数据计算模块确定所述当前环境数据与所述特征索引树中其他叶子节点的距离值,并将所述距离值与所述目标距离值进行比较;
[0187]
所述数据计算模块在所述距离值大于等于所述目标距离值的情况下,将所述初始叶子节点确定为与所述当前环境数据对应的所述特征索引树的叶子节点;
[0188]
所述数据计算模块在所述距离值小于所述目标距离值的情况下,将所述距离值对应的叶子节点确定为初始叶子节点,并继续基于所述当前环境数据的坐标信息确定所述当前环境数据与所述初始叶子节点的目标距离值。
[0189]
其中,初始叶子节点可以理解为在确定当前环境数据对应的叶子节点的过程中,当前环境数据初始对应的叶子节点。
[0190]
目标距离值可以理解为当前环境数据与初始叶子节点之间的距离。
[0191]
其他叶子节点的距离值可以理解为当前环境数据与除初始叶子节点以外的、其他叶子节点的距离。
[0192]
具体的,数据计算模块确定与当前环境数据对应的初始叶子节点,并基于当前环境数据的坐标信息确定出当前环境数据与初始叶子节点之间的目标距离值;
[0193]
数据计算模块确定出当前环境数据与特征索引树中其他叶子节点的距离值,并将该距离值与目标距离值进行比较;
[0194]
在距离值大于等于目标距离值的情况下,将该初始叶子节点确定为与当前环境数据对应的特征索引树的叶子节点;
[0195]
在该距离值小于目标距离值的情况下,将该距离值对应的叶子节点确定为初始叶子节点,并继续基于当前环境数据的坐标信息确定当前环境数据与初始叶子节点的目标距离值。
[0196]
沿用上例,对数据计算模块确定出与当前环境数据对应的特征索引树的叶子节点做进一步说明。
[0197]
数据计算节点在特征索引树中确定出与实时点云数据对应的初始叶子节点,并根据实时点云数据的坐标信息计算出实时点云数据与初始叶子节点之间的目标距离值。
[0198]
数据计算节点在确定出目标距离值之后,根据实时点云数据的坐标信息计算出实时点云数据与其他叶子节点之间的距离值,并将该距离值与目标距离值进行比较。
[0199]
在距离值大于等于目标距离值的情况下,表示该初始叶子节点与实时点云数据的相识度最高,因此将该初始叶子节点确定为与实时点云数据对应的k-d树的叶子节点。
[0200]
在距离值小于目标距离值的情况下,表示该初始叶子节点并非与实时点云数据的相识度最高的叶子节点,因此将该距离值对应的叶子节点确定出初始叶子节点,并继续基于实时点云数据的坐标信息确定出实时点云数据与初始叶子节点之间的目标距离值。
[0201]
本说明书实施例中,数据计算模块基于当前环境数据的坐标信息确定出与初始叶子节点的目标距离值;并将当前环境数据与特征索引树中其他叶子节点的距离值,与目标距离值进行比较;从而根据比较结果,实现了精准的确定出与当前环境数据对应的特征索引树的叶子节点;进一步提高了获取目标数据的准确度。
[0202]
在本说明书实施例中,该数据计算模块在获得到当前环境数据对应的目标数据
后,可以将该目标数据存储在数据存储模块中,具体实现方式如下所示。
[0203]
所述获得所述当前环境数据对应的目标数据之后,还包括:
[0204]
所述数据计算模块将所述目标数据存储至所述数据存储模块,并将携带有所述目标数据的存储位置的处理完成指令发送至所述数据控制模块。
[0205]
具体的,数据计算模块在获得与当前环境数据对应的目标数据之后,可以将该目标数据存储至数据存储模块,并将携带有目标数据的存储位置的处理完成指令发送至数据控制模块。
[0206]
本说明书实施例中,数据计算模块将目标数据存储至数据存储模块,并将携带有目标数据的存储位置的处理完成指令发送至数据控制模块,降低了数据控制模块与数据计算模块之间的带宽压力,提高了数据传输的效率。
[0207]
此外,数据控制模块在获取目标对象的当前环境数据的过程中,目标对象的当前环境数据的数量可能较多,因此为了缓解数据计算模块的计算量,减少数据计算模块的耗时,数据控制模块可以预先对目标对象的当前环境数据进行筛选,具体实现方式如下所示:
[0208]
所述数据控制模块获取目标对象的当前环境数据,包括:
[0209]
所述数据控制模块获取目标对象的初始当前环境数据,并确定所述初始当前环境数据的数据内容;
[0210]
所述数据控制模块基于所述数据内容从所述初始当前环境数据中获取目标当前环境数据。
[0211]
其中,初始当前环境数据可以理解为目标对象探测到的所有点云数据,该初始当前环节数据并未经过筛选。
[0212]
数据内容可以理解为当前环境数据所携带的数据,例如,当前环境数据的坐标信息、颜色。
[0213]
具体地,数据控制模块能够获取目标对象的初始当前环境数据,并确定出该初始当前环境数据中的数据内容;且基于数据内容从初始当前环境数据中获取目标当前环境数据。
[0214]
沿用上例,对数据控制模块基于数据内容从初始当前环境数据中获取目标当前环境数据做进一步说明,其中,初始当前环境数据为自动驾驶配送小车上配置的激光雷达所探测到的所有点云数据。
[0215]
数据控制模块能够获取到自动驾驶配送小车通过激光雷达获取到的、每一帧中所有点云数据,并确定出该所有点云数据对应的数据内容,该数据内容可以为点云数据中携带的颜色信息。
[0216]
在该颜色信息满足预设颜色条件的情况下,将该颜色信息对应的点云数据确定出目标对象对应的实时点云数据。其中,该预设颜色条件可以根据实际应用进行设置,本说明书实施例对此不做任何限定。
[0217]
本说明书实施例中,数据控制模块基于初始当前环境数据的数据内容,从初始当前环境数据中获取目标当前环境数据。避免了由于当前环境数据的数量可能较多,导致分类模型的计算量增加的问题,缓解数据计算模块的计算量,减少数据计算模块的耗时。
[0218]
本说明书提供的数据处理方法,通过数据控制模块对特征索引树进行构建的方式,对目标对象对应的地图数据进行预先分类,使得数据计算模块能够通过特征索引树,确
定出与当前环境数据对应的叶子节点(即分类后的地图数据),实现在分类模型对当前环境数据以及对应的叶子节点进行处理的过程中,有效的降低了分类模型的处理复杂度,避免了分类模型执行耗时较长的问题。
[0219]
并且,数据处理方法采用异构的方式,在数据控制模块中对特征索引树进行构建,并在数据计算模块中基于分类模型获得当前环境数据对应的目标数据,进一步降低了对处理器的计算能力和带宽的要求,节省了无人驾驶企业的成本。
[0220]
下述结合附图7,以本说明书提供的数据处理方法在车辆自动驾驶场景下的应用为例,对所述数据处理方法进行进一步说明。其中,图7示出了本说明书一实施例提供的一种应用于车辆自动驾驶场景下的数据处理方法的流程示意图,参见该流程示意图,本说明书提供的应用于车辆自动驾驶场景下的数据处理方法包括两个模块:处理器系统和算法加速模块;其中,该处理器系统和算法加速模块均配置与mpsoc芯片(图7中实线部分)中,实线部分外配置有处理器内存,便于处理器系统与算法加速模块之间共享数据。
[0221]
其中,算法加速模块可以包括多个子模块,该多个子模块可以为knn帧级任务管理子模块、knn搜索树管理子模块、knn搜索树查找子模块、knn待匹配点管理子模块、knn叶子结点管理子模块、knn计算阵列子模块、knn结果上报子模块以及直接内存访问互联子模块。
[0222]
基于上述介绍,本说明书提供的应用于车辆自动驾驶场景下的数据处理方法具体包括以下步骤:
[0223]
步骤702:处理器系统。
[0224]
其中,处理器系统可以理解为上述实施例中的数据控制模块。
[0225]
具体地,处理器系统在执行过程中,能够实现构建k-d树、点云内存管理以及定位交互等功能。
[0226]
该构建k-d树可以为处理器系统获取到自动驾驶配送小车对应的、离线高清地图中的离线点云数据,并基于该离线点云数据每间隔1秒对k-d树进行一次构建。
[0227]
点云内存管理可以为处理器系统每隔100ms(毫秒)获取1帧实时点云数据,并将该实时点云数据以及构建的k-d树存储至处理器内存中。
[0228]
定位交互可以为处理器系统基于实时点云数据以及k-d树在处理器内存中的物理地址,生成任务描述符(bd),并将任务描述符发送至算法加速模块。
[0229]
在处理器系统将任务描述符发送至算法加速模块后,算法加速模块能够基于接收到任务描述符获取实时点云数据以及k-d树,通过knn模型逐点进行计算,并将处理结果写回到处理器系统指定的处理器内存的物理地址中,且在写入完成后,向处理器系统发送处理完成指令;具体包括以下步骤:
[0230]
步骤704:knn帧级任务管理子模块。
[0231]
其中,算法加速模块可以理解为上述实施例中的数据计算模块。
[0232]
具体地,knn帧级任务管理子模块执行算法加速模块上knn任务管理;接收到ps发送的knn任务描述符,该任务描述符中携带有k-d树地址、待搜索点(离线点云数据)地址、待匹配点(实时点云数据)地址、叶子结点地址、返回数据地址以及待搜索点数量等数据。
[0233]
步骤706:knn搜索树管理子模块。
[0234]
具体地,knn搜索树管理子模块负责k-d树片上管理,该knn搜索树管理子模块基于k-d树地址、叶子结点地址以及待搜索点地址,通过直接内存访问互联子模块从处理器内存
中获取已经构建好的k-d树。
[0235]
步骤708:knn搜索树查找子模块。
[0236]
具体地,knn搜索树查找子模块负责树查找逻辑,即找到每个待搜索点对应的叶子结点。
[0237]
步骤710:knn待匹配点管理子模块。
[0238]
具体地,knn待匹配点管理子模块基于待匹配点地址,通过直接内存访问互联子模块从处理器外侧中获取待匹配点。
[0239]
步骤712:knn叶子节点管理子模块。
[0240]
具体地,knn叶子节点管理子模块负责获取处理器内存中的叶子结点,并进行片上缓存管理,从而确定出每个待匹配点对应的叶子节点。
[0241]
步骤714:knn计算阵列子模块。
[0242]
具体地,knn计算阵列子模块可以负责并行knn距离计算,并将计算结果发送至knn结果上报子模块;其中,knn距离计算的方式可以为:
[0243]
将待匹配点p以及与待匹配点p对应的叶子节点l输入至knn模型中,该knn模型能够计算出p与l中所有待搜索点的距离,该距离计算采用几何距离,即(p_x-li_x)*(p_x-li_x) (p_y-li_y)*(p_y-li_y) (p_z-li_z)*(p_z-li_z)。
[0244]
其中,p_x为待匹配点p在x轴上的坐标,p_y为待匹配点p在y轴上的坐标,p_z为待匹配点p在z轴上的坐标;对应的,li_x为叶子节点中每个待搜索点在x轴上的坐标,li_y为叶子节点中每个待搜索点在y轴上的坐标;li_z为叶子节点中每个待搜索点在z轴上的坐标。
[0245]
在计算出p与l中所有待搜索点的距离之后,knn模型将所有距离进行排序,找到距离p最小的k个距离,并返回k个距离所对应的待搜索点。
[0246]
步骤716:knn结果上报子模块。
[0247]
具体地,knn结果上报子模块接收到knn计算阵列子模块发送的计算结果之后,基于直接内存访问互联,将计算结果存储至处理器系统指定的处理器内存中的返回数据地址。
[0248]
进一步地,具体实施时,还可以采用ann模型对实时点云数据以及k-d树进行计算,并将处理结果写回到处理器系统指定的处理器内存的物理地址中。
[0249]
本说明书提供的数据处理方法,采用knn异构加速的方案,实现在knn算法应用于自动驾驶配送小车的点云定位算法的情况下,对该点云定位算法进行加速。通过将离线高精地图中的离线点云数据(几十万到两百万之间)构建成k-d树,并把从激光雷达获取的每一帧实时点云数据中的所有点(大致几千个)在高精地图中找到最近的k个匹配点(离线点云数据),从而便于后续基于k个匹配点完成对自动驾驶配送小车的定位。并且,为了兼顾knn搜索的加速效率,令k-d树的每个叶子结点的大小等于预设数量阈值,进一步降低knn算法的搜索复杂度。
[0250]
此外,所述数据处理方法在进行异步加速过程中,一个高效的加速逻辑,数据交互扮演着重要角色。由于本说明书实施例提供的数据处理方法的异构属性,因此,数据控制模块与数据计算模块之间,需要高效简洁的交互接口设计。基于此,在本说明书实施例中,数据控制模块与数据计算模块之间设计有3个接口:下行bd接口、上/下行数据接口以及中断
接口。
[0251]
其中,该下行bd接口负责数据控制模块(ps)向数据计算模块(pl)下发任务bd,即加速任务说明;参见图8,图8是本说明书一实施例提供的数据处理方法中下行bd接口的示意图。
[0252]
具体地,图8中a1对应的接口为下行bd接口,数据控制模块通过a1对应的硬件接口,向数据计算模块发送任务描述符的方式,通过数据计算模块需要加速的数据信息。
[0253]
在具体实施时,数据控制模块与数据计算模块之间以异步的方式进行任务分发,数据控制模块只负责发送任务描述符bd;而数据搬移工作全部由数据计算模块完成。即数据控制模块只要接收到任务,将可以将任务描述符bd发送给数据计算模块进行计算,不需要等待数据控制模块完成当前帧的knn任务。
[0254]
同时,在实际应用中,数据控制模块需要连续传输两个大小为128位的任务描述符(bd),即32字节的任务描述符给数据计算模块;数据计算模块拿到任务描述符后对其进行解析,从而获得对应的地址以及数量等信息。其中,数据控制模块发送该任务描述符(bd)的消息中,可以携带有接口数据、接口合法性、接口状态、接口数据传输结尾、接口地址以及接口宽度等内容,其中,接口合法性、接口状态以及接口数据传输结尾均为用于表示接口运行状态的信号;接口数据中携带有树地址、地图数据地址、搜索点地址、距离、子节点数量、树大小、待匹配点数量、叶子节点数量、待匹配点地址等信息,以及每个信息的大小;该接口地址可以为(base_addr_***),该接口宽度可以为(0**)。
[0255]
其中,上/下行数据接口负责数据计算模块(pl)向数据控制模块(ps)返回数据,并获取数据存储模块(ps ddr内存)中的k-d树和实时点云数据。参见图9,图9是本说明书一实施例提供的数据处理方法中上/下行数据接口的示意图。
[0256]
具体地,图9中b1对应的接口为上/下行数据接口,数据计算模块处理好的数据,可以通过b1对应的通道dma回数据控制模块对应的数据存储模块的物理地址中。并且在dma结束后通过共享中断接口通知数据控制模块。
[0257]
其中,中断接口负责数据计算模块(pl)通知数据控制模块(ps)加速任务已完成。
[0258]
具体地,中断接口负责将数据控制模块与数据计算模块之间中断消息的传输。从数据控制模块i/o外设(iop)发出的中断消息可以被路由到数据计算模块。对应的,数据计算模块可以异步的将中断消息给数据控制模块。其中,该中断消息可以被分配一个优先级,该分配优先级的中断消息可以被路由到中断控制器,该中断控制器将中断消息进行聚合,并路由到该中断消息对应的模块。该中断消息的参数信息,如表2所示:
[0259]
表2
[0260][0261]
其中,需要说明的是,本说明书仅以表2中的参数为例,对本说明书提供的数据处理方法中的中断消息进行进一步说明,在不同的实际应用场景下,该参数信息也不同。
[0262]
进一步的,在本说明书实施例中,该数据控制模块以及数据计算模块在获取内存中存储的数据时,需要通过该数据对应的基地址从内存中获取数据。其中,在数据计算模块完成对数据的计算后,需要将目标数据存储至数据存储模块中,具体地,数据计算模块将通过knn搜索出的、与实时点云数据相识度较高的离线点云数据以及该离线点云数据对应的距离值,存储至数据存储模块的指定地址中,因此产生两个基地址,该基地址为数据控制模块通过任务描述符发送至数据计算模块的;其中,该基地址以及对应的数据信息,如表3所示:
[0263]
表3
[0264][0265]
其中,接口名为发送数据至数据存储模块的接口的名称;大小为数据的大小;起始地址以及终止地址为数据对应的基地址。
[0266]
需要说明的是,本说明书仅以表3中的信息为例,对本说明书提供的数据处理方法中的基地址以及对应的数据信息进行进一步说明,在不同的实际应用场景下,该信息也不同。
[0267]
进一步地,在数据计算模块将通过knn搜索出的、与实时点云数据相识度较高的离线点云数据以及该离线点云数据对应的距离值,存储至数据存储模块的过程中,自动驾驶系统对应的c-model中会产生对应的数据,该数据存储在c-model中的r_idx**和r_dis_addr**中。
[0268]
本说明书实施例中,通过ps与pl之间的数据通信接口,ps发送任务bd给pl,pl解析任务bd后独立访问和处理数据,释放ps负担;pl通过中断通知ps任务完成,可以去获取加速结果。具体地,通过设计异步接口,实现ps与pl之间相互独立工作,无阻塞,且命令交互格式简单,数据传输完全由pl自行dma完成,避免ps过多介入与pl的数据交互,释放ps处理能力。
[0269]
与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图10示出了本说明书一实施例提供的一种数据处理装置的结构示意图。如图10所示,该装置应用于自动驾驶系统,包括数据控制模块1002和数据计算模块1004,其中,
[0270]
所述数据控制模块1002,被配置为获取目标对象的当前环境数据以及地图数据,并基于所述地图数据构建所述目标对象的特征索引树;
[0271]
所述数据计算模块1004,被配置为获取所述当前环境数据以及所述特征索引树,并基于所述当前环境数据对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点,且将所述当前环境数据以及对应的叶子节点输入分类模型,获得所述当前环境数据对应的目标数据。
[0272]
可选地,所述数据控制模块1002,还被配置为基于所述地图数据的坐标信息构建所述目标对象的特征索引树。
[0273]
可选地,所述数据控制模块1002,还被配置为基于所述目标对象的当前位置以及所述目标对象的预设移动轨迹,确定所述目标对象的地图数据。
[0274]
可选地,所述数据控制模块1002,还被配置为确定所述目标对象的当前位置,并基于所述当前位置从预设移动轨迹中确定所述目标对象的下一移动区域,且获取所述目标对象的下一移动区域对应的地图数据。
[0275]
可选地,所述数据控制模块1002,还被配置为基于所述地图数据的坐标信息对所述地图数据进行分类,并基于分类后的所述地图数据构建所述目标对象的特征索引树。
[0276]
可选地,所述数据控制模块1002,还被配置为:
[0277]
确定所述地图数据的坐标信息中的第一目标坐标,并基于所述第一目标坐标确定所述地图数据的初始中位坐标信息;
[0278]
基于所述初始中位坐标信息对所述地图数据进行分类,获得两种类型的地图数据;
[0279]
确定每种类型的地图数据的坐标信息中的第二目标坐标,并基于所述第二目标坐标确定所述每种类型的地图数据的目标中位坐标信息,且基于所述目标中位坐标信息对所述每种类型的地图数据进行分类,直至所述每种类型的地图数据的数量等于预设数量阈值。
[0280]
可选地,所述数据控制模块1002,还被配置为:
[0281]
将所述地图数据的初始中位坐标信息确定为所述特征索引树的根节点,并将所述每种类型的地图数据的目标中位坐标信息确定为所述特征索引树的子节点,且将所述每种类型的地图数据确定为所述特征索引树的叶子节点;
[0282]
根据所述根节点、所述子节点以及所述叶子节点构建所述目标对象的特征索引树。
[0283]
可选地,所述数据控制模块1002,还被配置为将所述当前环境数据以及特征索引树存储至数据存储模块,并基于所述当前环境数据以及特征索引树生成数据处理指令,且
将所述数据处理指令发送至所述数据计算模块。
[0284]
可选地,所述数据计算模块1004,还被配置为基于接收到的数据处理指令从所述数据存储模块中获取所述当前环境数据以及特征索引树。
[0285]
可选地,所述数据控制模块1002,还被配置为确定所述当前环境数据以及特征索引树在所述数据存储模块中的存储位置,并基于所述存储位置生成数据处理指令。
[0286]
可选地,所述数据计算模块1004,还被配置为基于接收到的数据处理指令中携带的存储位置,从所述数据存储模块中获取所述当前环境数据以及特征索引树。
[0287]
可选地,所述数据计算模块1004,还被配置为基于所述当前环境数据的坐标信息对所述特征索引树进行检测,确定与所述当前环境数据对应的所述特征索引树的叶子节点。
[0288]
可选地,所述数据计算模块1004,还被配置为:
[0289]
确定与所述当前环境数据对应的初始叶子节点,并基于所述当前环境数据的坐标信息确定所述当前环境数据与所述初始叶子节点的目标距离值;
[0290]
确定所述当前环境数据与所述特征索引树中其他叶子节点的距离值,并将所述距离值与所述目标距离值进行比较;
[0291]
在所述距离值大于等于所述目标距离值的情况下,将所述初始叶子节点确定为与所述当前环境数据对应的所述特征索引树的叶子节点;
[0292]
在所述距离值小于所述目标距离值的情况下,将所述距离值对应的叶子节点确定为初始叶子节点,并继续基于所述当前环境数据的坐标信息确定所述当前环境数据与所述初始叶子节点的目标距离值。
[0293]
可选地,所述数据计算模块1004,还被配置为将所述目标数据存储至所述数据存储模块,并将携带有所述目标数据的存储位置的处理完成指令发送至所述数据控制模块。
[0294]
可选地,所述数据控制模块1002,还被配置为:
[0295]
获取目标对象的初始当前环境数据,并确定所述初始当前环境数据的数据内容;
[0296]
基于所述数据内容从所述初始当前环境数据中获取目标当前环境数据。
[0297]
本说明书提供的一种数据处理装置应用于自动驾驶系统,所述数据处理装置包括数据控制模块以及数据计算模块,通过采用数据控制模块对特征索引树进行构建的方式,对目标对象对应的地图数据进行预先分类,使得数据计算模块能够通过特征索引树,确定出与当前环境数据对应的叶子节点(即分类后的地图数据),实现在分类模型对当前环境数据以及对应的叶子节点进行处理的过程中,有效的降低了分类模型的处理复杂度,避免了分类模型执行耗时较长的问题。并且,该数据处理装置采用异构的方式,在数据控制模块中对特征索引树进行构建,并在数据计算模块中基于分类模型获得当前环境数据对应的目标数据,进一步降低了对处理器的计算能力和带宽的要求,节省了无人驾驶企业的成本。
[0298]
上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
[0299]
图11示出了根据本说明书一个实施例提供的一种计算设备1100的结构框图。该计算设备1100的部件包括但不限于存储器1110和处理器1120。处理器1120与存储器1110通过总线1130相连接,数据库1150用于保存数据。
[0300]
计算设备1100还包括接入设备1140,接入设备1140使得计算设备1100能够经由一个或多个网络1060通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备1140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
[0301]
在本说明书的一个实施例中,计算设备1100的上述部件以及图11中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图11所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
[0302]
计算设备1100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备1100还可以是移动式或静止式的服务器。
[0303]
其中,处理器1120用于执行计算机可执行指令,该计算机可执行指令被处理器1120执行时实现任意所述数据处理方法的步骤。
[0304]
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
[0305]
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述数据处理方法的步骤。
[0306]
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
[0307]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0308]
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0309]
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因
为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
[0310]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0311]
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
再多了解一些

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

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

相关文献