网络训练方法、增量建图方法、定位方法、装置及设备与流程

文档序号:17470465发布日期:2019-04-20 05:47阅读:237来源:国知局
网络训练方法、增量建图方法、定位方法、装置及设备与流程

本发明涉及视觉定位技术领域,尤其是涉及一种网络训练方法、增量建图方法、定位方法、装置及设备。



背景技术:

视觉定位是机器人、无人机、自动驾驶汽车、增强现实中普遍应用的关键技术,采用相机作为传感器,通过分析采集的图像,与预先建立的环境地图或实时构建的地图相比较,进而确定出准确的相机位置和姿态。视觉定位主要方式包括:同时定位与地图构建(simultaneouslocalizationandmapping,slam)和视觉重定位。

其中,slam同时估计准确的相机位姿和路标点空间位置,但由于算法复杂度较高,待优化变量过多,导致计算代价较高,很难在计算性能较弱的移动端设备上运行,且计算量容易随着场景增大而增大,无法适用于大场景定位。视觉重定位是一种将地图构建与定位分离开的方法,预先通过复杂的算法和技术手段建立尽量精确的环境地图,定位时只需要将当前图像与地图中的点云进行配准,优化相机位姿即可。但视觉重定位要求事先建立准确的地图,采用运动恢复结构等方法虽然可以得到准确的地图,但在大规模场景下计算量仍然是无法承受的。另一方面,直接将图像与地图进行配准是一种不可取的方案,当场景较大时地图的大小很可能会超出计算机的内存容量,并且在没有任何先验信息的情况下将图像与地图进行匹配会耗费大量时间。

针对上述视觉定位方式存在的硬件需求高、计算量大且耗时的问题,目前还未提出有效解决方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种网络训练方法、增量建图方法、定位方法、装置及设备,可以降低对硬件的依赖且实时运行。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种场景识别网络的训练方法,包括:获取训练样本,所述训练样本包括对象的第一图像集合、第二图像集合和第三图像集合,所述第一图像集合中的图像和所述第二图像集合中的图像为相似的图像,所述第一图像集合中的图像和所述第三图像集合中的图像为不相似的图像;将所述训练样本输入至场景识别网络,所述场景识别网络包括三个特征提取网络,三个所述特征提取网络均为基于深度哈希的轻量级神经网络,三个所述特征提取网络的网络结构相同并且共享参数;所述场景识别网络的损失函数为包括相似度分级的损失函数;使用所述训练样本对所述场景识别网络进行训练,直至所述损失函数收敛,将所述损失函数收敛时对应的参数作为所述场景识别网络的参数。

进一步,所述特征提取网络为mobilenet、shufflenet、squeezenet或xception。

进一步,所述损失函数为:

j=j1+j2

其中,

j1=max(0,dqp-dqn+(margin-β×similarity))+max(0,dqp-dpn+(margin-β×similarity))+max(0,dqp-β×similarity-1)+max(0,β×similarity-dqp);

j2=-‖u-0.5‖2

其中dqp是两个相似图像对应的哈希码之间的海明距离,dqn和dpn分别是不相似图像对应的哈希码之间的海明距离,margin为不相似图像与相似图像之间的海明距离差,β为相似度为1的两个图像对应的哈希码之间的海明距离,similarity为两个相似图像之间的相似度,u为所述场景识别网络最后一层经过sigmoid函数后的输出量。

第二方面,本发明实施例提供了一种增量建图方法,应用于移动终端,所述移动终端存储有第一方面任一项所述场景识别网络的训练方法得到的场景识别网络,所述方法包括:获取目标场景的二维地图;当获取到所述移动终端的真实位姿时,确定所述真实位姿对应的目标帧图像;将所述目标帧图像输入所述场景识别网络,得到所述目标帧图像的全局描述子;计算所述目标帧图像的特征点信息及地图点信息;将关键帧信息添加至所述二维地图中,所述关键帧信息包括所述目标帧图像、所述目标帧图像对应的真实位姿、所述全局描述子、所述特征点信息和所述地图点信息。

进一步,所述二维地图包括多个等分的网格,每个所述网格包括均匀划分的多个采集方向;所述方法还包括:当获取到所述移动终端的真实位姿时,确定所述真实位姿对应的目标网格和采集方向;判断所述目标网格的所述采集方向是否添加过关键帧信息;如果否,将所述真实位姿对应的关键帧信息存储至所述二维地图中。

第三方面,本发明实施例提供了一种视觉定位方法,应用于移动终端,所述移动终端存储有第一方面任一项所述场景识别网络的训练方法得到的场景识别网络,所述方法包括:获取当前帧图像,并将所述当前帧图像输入所述场景识别网络,得到所述当前帧图像的全局描述子;根据所述全局描述子查找预先构建的关键帧数据库,得到多个关键帧信息;所述关键帧数据库用于存储关键帧信息,所述关键帧信息包括目标帧图像以及所述目标帧图像对应的真实位姿、全局描述子、特征点信息和地图点信息;对所述当前帧图像计算局部描述子,以及对所述关键帧信息对应的目标帧图像计算局部描述子;将所述当前帧图像对应的局部描述子与所述目标帧图像对应的局部描述子进行匹配;根据匹配结果计算所述当前帧图像的位姿。

进一步,所述对所述关键帧信息计算局部描述子的步骤,包括:将所述多个关键帧信息进行聚类,得到聚类中心的关键帧信息;对所述聚类中心的关键帧信息计算局部描述子。

进一步,所述根据匹配结果计算所述当前帧图像的位姿的步骤,包括:根据匹配成功的所述关键帧信息包括的特征点信息,查找对应的地图点信息;求解pnp获得所述当前帧图像的位姿。

进一步,所述方法还包括:以重投影误差最小为目标优化所述当前帧图像的位姿,得到所述当前帧图像的优化位姿。

第四方面,本发明实施例提供了一种场景识别网络的训练装置,包括:样本获取模块,用于获取训练样本,所述训练样本包括对象的第一图像集合、第二图像和集合第三图像集合,所述第一图像集合中的图像和所述第二图像集合中的图像为相似的图像,所述第一图像集合中的图像和所述第三图像集合中的图像为不相似的图像;输入模块,用于将所述训练样本输入至场景识别网络,所述场景识别网络包括三个特征提取网络,三个所述特征提取网络均为基于深度哈希的轻量级神经网络,三个所述特征提取网络的网络结构相同并且共享参数;所述场景识别网络的损失函数为包括相似度分级的损失函数;训练模块,用于使用所述训练样本对所述场景识别网络进行训练,直至所述损失函数收敛,将所述损失函数收敛时对应的参数作为所述场景识别网络的参数。

第五方面,本发明实施例提供了一种增量建图装置,应用于移动终端,所述移动终端存储有第一方面任一项所述场景识别网络的训练方法得到的场景识别网络,所述装置包括:地图获取模块,用于获取目标场景的二维地图;目标帧图像确定模块,用于当获取到所述移动终端的真实位姿时,确定所述真实位姿对应的目标帧图像;全局描述子确定模块,用于将所述目标帧图像输入所述场景识别网络,得到所述目标帧图像的全局描述子;计算模块,用于计算所述目标帧图像的特征点信息及地图点信息;添加模块,用于将关键帧信息添加至所述二维地图中,所述关键帧信息包括所述目标帧图像、所述目标帧图像对应的真实位姿、所述全局描述子、所述特征点信息和所述地图点信息。

第六方面,本发明实施例提供了一种视觉定位装置,应用于移动终端,所述移动终端存储有第一方面任一项所述场景识别网络的训练方法得到的场景识别网络,所述装置包括:当前帧图像获取模块,用于获取当前帧图像,并将所述当前帧图像输入所述场景识别网络,得到所述当前帧图像的全局描述子;关键帧信息确定模块,用于根据所述全局描述子查找预先构建的关键帧数据库,得到多个关键帧信息;所述关键帧数据库用于存储关键帧信息,所述关键帧信息包括目标帧图像以及所述目标帧图像对应的真实位姿、全局描述子、特征点信息和地图点信息;局部描述子计算模块,用于对所述当前帧图像计算局部描述子,以及对所述关键帧信息对应的目标帧图像计算局部描述子;匹配模块,用于将所述当前帧图像对应的局部描述子与所述目标帧图像对应的局部描述子进行匹配;位姿计算模块,用于根据匹配结果计算所述当前帧图像的位姿。

第七方面,本发明实施例提供了一种设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面任一项所述的方法的步骤。

第八方面,本发明实施例提供了一种具有处理器可执行的程序代码的计算机可读介质,所述程序代码使所述处理器执行第一方面任一项所述的方法的步骤。

本发明实施例提供的网络训练方法、增量建图方法、定位方法、装置及设备,通过训练样本对场景识别网络进行训练,该场景识别网络包括三个基于深度哈希的特征提取网络均为轻量级神经网络,采用轻量级神经网络可降低对硬件的依赖,能够在低端处理器上实时运行,降低了对硬件的依赖程度;特征提取网络的损失函数为包括相似度分级的损失函数,这种新的损失函数可以对相似度进行分级,从而解决不同场景之间界限模糊的问题。

本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例所提供的一种电子设备的结构示意图;

图2示出了本发明实施例所提供的一种场景识别网络的训练方法的流程图;

图3示出了本发明实施例所提供的一种场景识别网络的结构示意图;

图4示出了本发明实施例所提供的一种增量建图方法的流程图;

图5示出了本发明实施例所提供的一种视觉定位方法的流程图;

图6示出了本发明实施例所提供的基于深度哈希的场景识别系统在nordland数据集上的p-r曲线;

图7示出了本发明实施例所提供的基于深度哈希的场景识别系统在gardenpoint数据集上的p-r曲线;

图8示出了本发明实施例所提供的一种场景识别网络的训练装置的结构框图;

图9示出了本发明实施例所提供的一种增量建图装置的结构框图;

图10示出了本发明实施例所提供的一种视觉定位装置的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

针对地图构建问题,现有技术多采用主流的同时定位与地图构建技术,通过扫描待定位的场景,可以获得准确的环境点云地图。但这些方案都需要高性能计算机作为处理平台,有些还需要特定硬件的支持,比如rgb-d深度相机。此外,地图一旦建立就无法进一步添加或修改,一次性建立非常完整的地图在实际操作中并不容易,一步步扩展现有的地图才是实际生产中的需求。当环境变化程度较大时,现有地图很可能失效,更新地图也是一项重要的需求。

针对图像与地图匹配较为耗时的问题,现有技术常用方法是将定位过程分为由粗到细的两步:

第一步,寻找与当前图像最相似的关键帧图像,称为粗定位,关键帧图像在建图的时候确定,位姿已知且与该关键帧图像可观测到的路标点相关联。该问题可以通过传统的视觉词袋方法或基于深度学习的方法解决。视觉词袋方案需要计算每个关键帧的视觉单词向量,该向量基于局部特征描述子,对光照和环境变化不鲁棒,且数量长度不统一,不利于快速匹配。基于深度学习的方法可以提取到更高层的语义特征,对光照和环境变化有更强的鲁棒性,但是对运算量要求过高,无法在移动端平台实时运行。

第二步,在当前图像与找到的关键帧图像之间匹配局部特征,找到足够多的3d-2d匹配关系,进而构建一个n点透视问题(perspectivenpoints,pnp),求解得到当前图像的位姿。但由于无法保证找到的关键帧图像完全正确,因此局部特征匹配很可能无法匹配或产生大量错误匹配,由此计算的图像位姿误差极大。

为改善上述现有技术存在的问题,本发明实施例提供了一种网络训练方法、增量建图方法、定位方法、装置及设备,以下通过本发明的实施例进行详细介绍。

实施例一:

首先,参照图1来描述用于实现本发明实施例的网络训练方法、增量建图方法、定位方法、装置及设备的示例电子设备100。

如图1所示的一种电子设备的结构示意图,电子设备100包括一个或多个处理设备102、一个或多个存储装置104。可选地,图1所示电子设备100还可以包括输入装置106、输出装置108以及数据采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。

所述处理设备102可以是网关,也可以为智能终端,或者是包含中央处理单元(cpu)、图像处理单元(gpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元的设备,可以对所述电子设备100中的其它组件的数据进行处理,还可以控制所述电子设备100中的其它组件以执行期望的功能。

所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理设备102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理设备实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。

所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。

所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。

所述数据采集装置110可以采集对象的图像,并且将所采集的图像存储在所述存储装置104中以供其它组件使用。示例性地,该数据采集装置110可以为摄像头。

示例性地,用于实现根据本发明实施例的网络训练方法、增量建图方法、定位方法、装置及设备的示例电子设备中的各器件可以集成设置,也可以分散设置,诸如将处理设备102、存储装置104、输入装置106和输出装置108集成设置于一体,而将数据采集装置110分离设置。

示例性地,用于实现根据本发明实施例的网络训练方法、增量建图方法、定位方法、装置及设备的示例电子设备可以被实现为诸如智能手机、平板电脑、智能手表、照相机等智能终端。

实施例二:

根据本发明实施例,提供了一种场景识别网络的训练方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图2是本发明实施例提供的一种场景识别网络的训练方法的流程图,该网络训练方法用于训练场景识别网络。在本实施例中提出的场景识别网络是应用深度哈希进行回环检测的方案,也可以应用于机器人的重定位。基于深度哈希的场景识别网络对于视角变化,光照变化和环境变化相比于传统的视觉词袋模型具有更好的稳定性。此外,在程序运行的过程中只需要维护一个kb级的数据库,可以极大地缓解机器人程序运行过程中内存资源不足的问题。如图2所示,该方法包括如下步骤:

步骤s202,获取训练样本。

其中,训练样本包括对象的第一图像集合、第二图像集合和第三图像集合,每个集合包括至少一张图像,并且第一图像集合中的图像和第二图像集合中的图像为相似的图像,第一图像集合中的图像和第三图像集合中的图像为不相似的图像。上述对象可以是场景或者地点,通过对对象进行图像采集获得上述第一图像集合、第二图像集合和第三图像集合。相似的图像和不相似的图像可以通过预先确定的判断规则进行判断,例如是否相似主要考虑图像的视角和光照情况,将视角或光照变化大于一定阈值的两张图像确定为不相似。

步骤s204,将训练样本输入场景识别网络。

该场景识别网络包括三个特征提取网络,且该三个特征提取网络均为基于深度哈希的轻量级神经网络,分别接收上述第一图像集合、第二图像集合和第三图像集合输入。上述三个特征提取网络的结构可以完全相同并且共享参数。第一图像集合中的图像、第二图像集合中的图像和第三图像集合中的图像经过上述特征提取网络后,生成各自的哈希码,生成的哈希码可以保持原始图像的相似关系。由于三个网络结构相同且共享权重,因此在测试的过程中只需要使用一个网络生成图片对应的哈希码,然后通过哈希码进行最近邻查询即可。针对机器人或移动终端等应用场景,使用更加轻量级的神经网络进行图像的特征提取,可以达到实时的要求。上述特征提取网络可以是mobilenet、shufflenet、squeezenet或xception中的一种。

上述场景识别网络的损失函数为包括相似度分级的损失函数,可以对相似度进行分级,从而解决不同场景之间界限模糊的问题。

步骤s206,使用训练样本对场景识别网络进行训练,直至损失函数收敛,将损失函数收敛时对应的参数作为场景识别网络的参数。

训练过程中,同时将上述相似图像和不相似图像输入场景识别网络,可以通过误差反向传播等优化算法来优化网络的参数,当损失函数收敛时,将损失函数收敛时对应的参数作为场景识别网络的参数,此时设定该参数的网络为已训练完成的场景识别网络,具有分辨场景的能力。

上述场景识别网络相比于现有的图像检索网络有几个显著的区别:(1)图像检索需要有明确的类别数量,而场景识别则不需要;(2)图像检索中不同类别之间有着明显的界限,而场景识别中不同场景之间的界限模糊。由于上述区别,用于图像检索的深度哈希网络直接应用于场景识别会导致准确率很低,无法实际使用。

本发明实施例提供的上述场景识别网络的训练方法,通过训练样本对场景识别网络进行训练,该场景识别网络包括三个基于深度哈希的特征提取网络均为轻量级神经网络,采用轻量级神经网络可降低对硬件的依赖,能够在低端处理器上实时运行,降低了对硬件的依赖程度;特征提取网络的损失函数为包括相似度分级的损失函数,这种新的损失函数可以对相似度进行分级,从而解决不同场景之间界限模糊的问题。

参见图3所示的场景识别网络的结构示意图,其中示出了三个网络net1、net2和net3,其网络结构完全相同并共享参数。输入数据为三幅图像image_q、image_p和image_n,其中image_q和image_p是相似的图像,image_q和image_n是不相似的图像。三幅图像经过上述网络之后生成各自的哈希码(binarycode),生成的哈希码可以保持原始图像之间的相似关系。

在图3中还示出了损失函数(lossfunction),传统的三元组损失函数为max(0,dqp-dqn+α),其中dqp是两个相似图像对应的哈希码之间的海明(hamming)距离,dqn是不相似图像对应的哈希码之间的hamming距离,α为不相似图像和相似图像对之间的hamming距离。在本实施例中,提出了一种新的损失函数,用于对相似度进行分级,如公式(1)所示:

其中dqp,dqn,dpn的含义与传统三元组损失函数中的符号相同。dqp=-‖uq-up‖2,其中u为图片对应的哈希码,两个哈希码之间的hamming距离可以通过上式计算。margin为不相似图像与相似图像之间的hamming距离差,β为相似度为1的两个图片对应的哈希码之间的hamming距离,similarity是两个相似图片之间的相似度,similarity为0时代表相似度最高,similarity的值越大,相似度越小。从公式(1)可以看出不仅相似与不相似图片对应的哈希码之间的hamming距离做了约束,同时也对相似图片对应的哈希码之间的hamming距离做了约束,并且把相似度考虑到损失函数中,实验表明这种方式极大地改进了模型的精度。

此外考虑到需要网络输出是二值的,即输出为0或者1,如公式(2)给出了另一项约束,其中u为网络最后一层经过sigmoid函数之后的输出,这一项可以让u的输出接近0或者1,从而达到二值的目的。

j2=-‖u-0.5‖2(2)

最终的损失函数如公式(3)所示:

j=j1+j2(3)

实施例三:

图4是本发明实施例提供的一种增量建图方法的流程图,该增量建图方法应用于移动终端,该移动终端中存储有上述实施例提供的场景识别网络的训练方法得到的场景识别网络,如图4所示,该方法包括如下步骤:

步骤s402,获取目标场景的二维地图。

该二维地图可以是根据现有方式绘制的地图,例如激光雷达地图等,在本实施例中可以借助激光雷达定位的辅助,以获取移动终端的真实位姿,激光雷达定位包括但不限于cartographer、gmapping、karto等。可以理解的是,其它任何能够获得相机真实位姿的方法也可以在此处替代激光雷达定位。

步骤s404,当获取到移动终端的真实位姿时,确定真实位姿对应的目标帧图像。

当通过上述定位方式获取到真实位姿时,确定该真实位姿对应的目标帧图像,该目标帧图像即移动终端在该真实位姿时,其图像采集装置应该采集得到的图像。

步骤s406,将目标帧图像输入场景识别网络,得到目标帧图像的全局描述子。

该全局描述子与局部描述子仅由特征点局部信息提取得到不同,其由目标帧图像的所有信息提取得到。通过将目标帧图像输入上述训练完成的场景识别网络,可以得到该目标帧图像的全局描述子。

步骤s408,计算目标帧图像的特征点信息及地图点信息。

在目标帧图像中提取特征点,然后根据特征点计算其在相机坐标系下的三维坐标,再计算对应的世界坐标系下的世界坐标,即得到地图点。

步骤s410,将关键帧信息添加至二维地图中。

该关键帧信息可以包括目标帧图像、目标帧图像对应的真实位姿、全局描述子、特征点信息和地图点信息,还可以包括关键帧的标示符。本实施例提供的是一种增量式的地图构建方法,不必一次性建好完整的地图,而可以将建图过程分为多次,每次构建一部分,构建的地图会实时存储至存储器,在下次启动时读取存储器内容,可以在上次构建的地图基础上继续建图。

本发明实施例提供的上述增量建图方法,将目标帧图像及其对应的真实位姿、全局描述子、特征点信息和地图点信息保存为关键帧信息,并添加至二维地图中,可以快速低成本地进行增量地图构建,支持在原有地图的基础上随时添加、更新和删除地图。

考虑到在增量建图中的重复采集数据及存储增量数据的问题,可以在保存关键帧信息之前进行判断,若该位置已有数据,即不再保存新数据,因此上述方法,还可以包括以下步骤:

(1)将二维地图划分成多个等分的网格,每个网格包括均匀划分的多个采集方向,当获取到移动终端的真实位姿时,确定真实位姿对应的目标网格和采集方向。

可以将二维地图划分成特定分辨率的网格,每个网格再根据方向划分成多个。网格的分辨率可以任意指定,分辨率越高,存储的关键帧信息越多,场景识别的成功率越高,但同时占用的内存和硬盘空间也会越多,因此需要考虑实际情况后决定。

(2)判断目标网格的采集方向是否添加过关键帧信息,如果否,将真实位姿对应的关键帧信息存储至二维地图中。

每得到一次真实位姿,确定对应的目标网格和采集方向,如果该方向尚未添加过数据,增量地图构建程序就保存当前帧图像作为关键帧,同时计算并保存关键帧信息。增量地图构建时将大部分数据都实时存入了硬盘,内存中只保留各个网格和采集方向是否已经建图的信息,极大降低了内存占用。

以下对上述增量建图方法举例说明,具体地,机器人的增量地图构建程序接收激光雷达地图、双目相机的图像以及自适应蒙特卡洛定位算法计算出的位姿作为输入,输出地图关键帧和关键帧信息组成的数据库,进行实时地图构建。

首先,需要进行激光雷达地图的构建,可以采用现有的成熟解决方案。得到激光雷达地图后,将其均匀划分为小方格,对于每个小方格,以方格中心为原点,把360度的方向均匀划分为待采集的方向。然后,机器人移动经过尽可能多的方格,并且在每个方格中机器人的位姿应尽量覆盖较多的待采集方向。每当机器人当前位姿与所在方格的待采集方向吻合,并且该方向尚未添加过数据,增量地图构建程序就保存相机的当前帧图像作为关键帧,同时计算并保存关键帧信息。

上述关键帧信息可以包括:关键帧id、特征点信息、地图点信息和关键帧全局描述子。其中,关键帧id为每个关键帧的标识符。特征点信息获取方式如下:先对机器人采集的图像进行去畸变和矫正,接着在左目图像提取特征点、计算描述符,将特征点个数、每个特征点在图像上的坐标和描述符保存。在左目提取到特征点之后,根据对极几何,在右图的极线上采用块匹配的方式搜索对应的点,得到视差,再利用视差计算出深度进而计算出该点在相机坐标系下的三维坐标,再乘以世界坐标系到左目相机坐标系的转换矩阵的逆矩阵转换到世界坐标,即地图点信息。全局描述子获取方式如下:利用前述实施例中的基于深度哈希的场景识别网络计算关键帧的全局描述子。

在机器人经过的所有路径上,每个小方格中都会添加关键帧。由于机器人的运动具有一定的随机性,因此有些区域关键帧比较密集,有些区域关键帧比较稀疏。但在增量建图的情况下,关键帧稀疏的区域随着机器人经过的次数增多,会逐渐补充关键帧,从而使其变得密集。最终,当机器人已经充分构建了整个环境的地图,建图过程宣告结束。

实施例四:

图5是本发明实施例提供的一种视觉定位方法的流程图,该视觉定位方法应用于移动终端,该移动终端中存储有上述实施例提供的场景识别网络的训练方法得到的场景识别网络,如图5所示,该方法包括如下步骤:

步骤s502,获取当前帧图像,并将当前帧图像输入场景识别网络,得到当前帧图像的全局描述子。

利用前述实施例中的场景识别网络,计算当前帧图像的全局描述子,在此不再赘述。基于深度哈希算法对场景特征的深度提取,无论地图怎样增大,深度哈希提取的全局描述子总可以保证最相似的场景距离最近。

步骤s504,根据全局描述子查找预先构建的关键帧数据库,得到多个关键帧信息。

该关键帧数据库用于存储关键帧信息,关键帧信息包括目标帧图像以及目标帧图像对应的真实位姿、全局描述子、特征点信息和地图点信息。在进行视觉定位前,可以预先构建关键帧数据库,数据库提供通过图像描述子进行最近邻匹配的功能,给定任意一张图片的描述子,可以查找出数据库中距离该描述符最近的描述子,并找到对应的关键帧id。描述子之间的距离为海明距离,即对应二进制位不同的个数。构建关键帧数据库的方式有很多种,比如使用线性表存储所有id和对应的描述子,支持暴力匹配。此外,还可以构建kdtree等形式的数据库,支持最近邻搜索等快速匹配算法。至此粗定位过程完成。

步骤s506,对当前帧图像计算局部描述子,以及对关键帧信息对应的目标帧图像计算局部描述子。

步骤s508,将当前帧图像对应的局部描述子与目标帧图像对应的局部描述子进行匹配。

对上述粗定位过程确定的关键帧信息,可以再通过局部描述子进行细定位,步骤s506和步骤s508分别是计算局部描述子和局部描述子匹配的步骤,只需要将构建的关键帧数据库加载入内存即可,内存占用低。

步骤s510,根据匹配结果计算当前帧图像的位姿。

其中,可以根据匹配成功的关键帧信息包括的特征点信息,查找对应的地图点信息,再求解pnp问题获得当前帧图像的位姿。在获得上述位姿后,还可以以重投影误差最小为目标优化当前帧图像的位姿,得到当前帧图像的优化位姿。

本发明实施例提供的上述视觉定位方法,基于增量建图结果,首先通过场景识别网络进行全局描述子提取,进行粗定位,然后通过局部描述子进行细定位,只需要将构建的关键帧数据库加载入内存即可,内存占用低;基于深度哈希算法对场景特征的深度提取的全局描述子可以保证最相似的场景距离最近,定位速度快。

为提高细定位的精度,可以通过冗余的观测信息优化定位结果,上述方法还可以包括以下步骤:将多个关键帧信息进行聚类,得到聚类中心的关键帧信息,对聚类中心的关键帧信息计算局部描述子。在细定位时遍历每个聚类。对当前帧图像提取局部特征点,计算局部描述子,并与聚类中的关键帧的局部描述子匹配。取出匹配成功的特征点对应的3d地图点,若匹配成功的3d-2d点对数大于5,则可以求解pnp问题,得到当前帧的位姿。

在得到上述位姿后,还可以将该位姿作为初始值,构建bundleadjustment(光束平差法)图优化问题,优化当前帧位姿,使得重投影误差最小。优化后,剔除重投影误差仍然较大的边,用其余边再次构建bundleadjustment图优化问题,最后得到较精确的当前帧位姿。如果该过程中出现3d-2d点对数过少,或优化后重投影误差过大的现象,则认为当前聚类中的关键帧为错误匹配,放弃该聚类。如果优化后重投影误差较小,则认为位姿求解是正确的,直接输出结果,不再进入下个聚类的循环。经过由粗到细的两步定位之后,可以得到较为精确的当前帧图像对应的位姿。

实施例五:

本实施例对前述实施例提供的方法进行试验和验证。

(1)基于深度哈希算法的场景识别网络。

训练样本为两个公开的数据集:nordlanddataset数据集和gardenpoint数据集。nordlanddataset数据集是由火车在729公里的路途中拍摄到的,包含了春夏秋冬四个季节,每个季节有10个小时的视频,具有很大的光照变化和环境变化。在训练时采用了25%的数据作为训练集,其余的数据作为测试集;gardenpoint数据集包含了三个视频,一个是白天在道路左侧拍摄得到,一个是白天在道路右侧拍摄得到,最后一个是晚上在道路右侧拍摄得到,三个子序列之间有着比较大的视角变化和很大的光照变化。

参见图6所示的基于深度哈希的场景识别系统在nordland数据集上的p-r曲线,以及图7所示的基于深度哈希的场景识别系统在gardenpoint数据集上的p-r曲线,可以看出两个数据集上都取得了很好的效果,在召回率为100%的情况下,准确率能保持在90%以上。

在实际的使用场景中,实时性是需要考虑到的另一个因素,在i5cpu以及英伟达gtx1080两个平台进行了运行速度的测试,在cpu上分别进行了优化指令集以及不优化指令集两个测试,此外还对最近邻匹配的匹配时间做了测试,上述的测试均在tensorflow1.10深度学习框架中进行,具体效果如表1,表2所示。

表1提取哈希码时间测试

表2匹配时间测试

由表1以及表2可以看出提取哈希码在经过指令集优化的i5cpu上完全可以达到实时。在普通场景下,哈希码的匹配时间几乎可以忽略。当面对较大的场景时,哈希码的匹配时间会变得很长,此时通过一些加速的手段依然可以达到实时的效果。

(2)增量地图构建。

增量地图构建程序支持在原有地图的基础上随时添加、更新和删除地图。具体来说,程序首先读取数据库已有的地图数据,在建图过程中,保存关键帧之前需要进行判断,若该位置已有数据,就不再保存新数据。这样做的优点一是避免重复采集数据,二是可以分批次构建地图,每次只构建一部分。此外,若是环境变化,或者对构建的地图不满意,只需要在数据库中将对应部分的数据删除,重新构建这部分地图。这样做的优点是可以多次构建地图直到满意为止,并且可以扩展地图。

增量地图构建程序可以采用自适应蒙特卡洛定位算法计算出的位姿作为输入,与采用运动恢复结构等建图方法相比,增量地图构建无需对大量的相机位姿进行优化,大大减小了计算量,从而使得增量地图构建程序可以实时运行。经过实际测试,增量地图构建程序在corei5处理器上可以达到168ms每帧的处理速度。

增量地图构建将大部分数据都实时存入硬盘,内存中只保留各个位置和方向是否已经建图的信息,极大降低了内存占用。经过实际测试,在100平方米的空间中,使用slam方法构建的地图内存占用约160mb,而增量建图程序构建的地图内存占用只有20kb。

(3)由粗到细的视觉定位。

在进行视觉定位时,不需要加载完整的地图信息到内存中,只需要将构建的关键帧数据库加载入内存即可。经过实际测试,在每100平方米的空间中,使用传统slam方法定位的内存占用约160mb,而本实施例的方法的内存占用只有60kb。

传统的定位方法定位所需时间随着地图规模增大而增大,本实施例提供的方法所需的时间则是固定的。无论地图怎样增大,深度哈希提取的全局描述子总可以保证最相似的场景距离最近。经过实际测试,每帧图像定位所需的时间总计168毫秒,其中粗定位(使用深度哈希算法计算描述子)80毫秒,细定位88毫秒,达到实时性的要求。

通过将相似的关键帧聚类并利用它们的共视关系来共同优化位姿的方法来提高定位精度,可以避免由于单帧观测导致的不确定性,并避免了关键帧提取错误导致错误定位情况的发生。经过实际测试,视觉定位方法成功率为93.0%,中位数位置误差为0.120米,中位数旋转误差为2.35度。

本实施例上述方法在具体实施时分为三个模块。

模块一,深度哈希场景识别算法模块。该算法包括神经网络模型的搭建,训练集生成,神经网络训练等过程。神经网络模型的前几层为mobilenet网络,后面添加全连接层,最后输出长度为256位的二进制描述子。mobilenet也可以用shufflenet、squeezenet、xception等轻量化网络代替。最后输出的二进制描述子长度也可以是128位、512位、1024位、2048位、4096位或8192位。训练集可以直接利用增量建图的结果,选取相近位置的图片作为正样本对、不相近位置的图片作为负样本对,也可以采用公开数据集训练。训练过程中,同时将正样本对和负样本对送入神经网络,误差反向传播,最终使得网络具有分辨场景的能力。

模块二,增量建图算法模块。需要借助激光雷达定位的辅助,以获取相机真实位姿,其它任何能够获得相机真实位姿的方法也可。在已知相机真实位姿的情况下,将二维地图划分成特定分辨率的网格,每个网格再根据方向划分成多个。每得到一次相机真实位姿,就找到对应的网格和方向,将该帧图像添加为关键帧。

模块三,由粗到细的视觉定位算法模块。首先构建关键帧数据库,将模块二所得的所有关键帧利用模块一深度哈希算法模块计算全局描述子,将所有描述子连同关键帧id构建数据库。构建数据库后,算法采用由粗到细的两步过程实现定位。粗定位通过将当前帧的全局描述子与数据库比较,找到最接近的若干个关键帧,将关键帧的位姿作为粗定位结果。细定位通过匹配当前帧与关键帧的局部特征,找到3d-2d匹配,求解pnp问题,得到当前帧位姿,并进一步构建图优化问题,优化当前帧位姿,最终得到准确的定位结果。粗定位选取的关键帧数量可任意选定,数量越多,正确定位的成功率越高,但时间和空间耗费也会越多,可以依场景大小而定,场景越大,选取的关键帧数量可以越多。细定位匹配的局部特征可以是任意一种特征,包括但不限于sift、surf、orb等人工设计的特征,以及tfeat等神经网络学习的特征。求解pnp的算法可以有多种,包括但不限于p3p、直接线性变换、epnp、upnp等等。构建图优化问题可以用g2o或ceres等优化库,采用的优化算法可以是高斯牛顿、列文伯格-马夸尔特等梯度下降方法。

实施例六:

对应前述实施例中所提供的场景识别网络的训练方法,本发明实施例提供了一种网络训练装置,参见图8所示的一种场景识别网络的训练装置的结构框图,包括:

样本获取模块802,用于获取训练样本,训练样本包括对象的第一图像集合、第二图像集合和第三图像集合,第一图像集合中的图像和第二图像集合中的图像为相似的图像,第一图像集合中的图像和第三图像集合中的图像为不相似的图像;

输入模块804,用于将训练样本输入场景识别网络,场景识别网络包括三个特征提取网络,三个特征提取网络均为基于深度哈希的轻量级神经网络,三个特征提取网络的网络结构相同并且共享参数;场景识别网络的损失函数为包括相似度分级的损失函数;

训练模块806,用于使用训练样本对场景识别网络进行训练,直至损失函数收敛,将损失函数收敛时对应的参数作为场景识别网络的参数。

本发明实施例提供的上述场景识别网络的训练装置,通过训练样本对场景识别网络进行训练,该场景识别网络包括三个基于深度哈希的特征提取网络均为轻量级神经网络,采用轻量级神经网络可降低对硬件的依赖,能够在低端处理器上实时运行,降低了对硬件的依赖程度;特征提取网络的损失函数为包括相似度分级的损失函数,这种新的损失函数可以对相似度进行分级,从而解决不同场景之间界限模糊的问题。

在一种实施方式中,损失函数为:

j=j1+j2

其中,

j2=-‖u-0.5‖2

其中dqp是两个相似图像对应的哈希码之间的海明距离,dqn和dpn分别是不相似图像对应的哈希码之间的海明距离,margin为不相似图像与相似图像之间的海明距离差,β为相似度为1的两个图像对应的哈希码之间的海明距离,similarity为两个相似图像之间的相似度,u为场景识别网络最后一层经过sigmoid函数后的输出量。

对应前述实施例中所提供的增量建图方法,本发明实施例提供了一种增量建图装置,应用于移动终端,移动终端存储有场景识别网络的训练方法得到的场景识别网络,参见图9所示的一种增量建图装置的结构框图,包括:

地图获取模块902,用于获取目标场景的二维地图;

目标帧图像确定模块904,用于当获取到移动终端的真实位姿时,确定真实位姿对应的目标帧图像;

全局描述子确定模块906,用于将目标帧图像输入场景识别网络,得到目标帧图像的全局描述子;

计算模块908,用于计算目标帧图像的特征点信息及地图点信息;

添加模块910,用于将关键帧信息添加至二维地图中,关键帧信息包括目标帧图像、目标帧图像对应的真实位姿、全局描述子、特征点信息和地图点信息。

本发明实施例提供的上述增量建图装置,将目标帧图像及其对应的真实位姿、全局描述子、特征点信息和地图点信息保存为关键帧信息,并添加至二维地图中,可以快速低成本地进行增量地图构建,支持在原有地图的基础上随时添加、更新和删除地图。

在一种实施方式中,二维地图包括多个等分的网格,每个网格包括均匀划分的多个采集方向;上述装置还包括聚类模块,用于:当获取到移动终端的真实位姿时,确定真实位姿对应的目标网格和采集方向;判断目标网格的采集方向是否添加过关键帧信息;如果否,将真实位姿对应的关键帧信息存储至二维地图中。

对应前述实施例中所提供的视觉定位方法,本发明实施例提供了一种视觉定位装置,应用于移动终端,移动终端存储有场景识别网络的训练方法得到的场景识别网络,参见图10所示的一种视觉定位装置的结构框图,包括:

当前帧图像获取模块1002,用于获取当前帧图像,并将当前帧图像输入场景识别网络,得到当前帧图像的全局描述子;

关键帧信息确定模块1004,用于根据全局描述子查找预先构建的关键帧数据库,得到多个关键帧信息;关键帧数据库用于存储关键帧信息,关键帧信息包括目标帧图像以及目标帧图像对应的真实位姿、全局描述子、特征点信息和地图点信息;

局部描述子计算模块1006,用于对当前帧图像计算局部描述子,以及对关键帧信息对应的目标帧图像计算局部描述子;

匹配模块1008,用于将当前帧图像对应的局部描述子与目标帧图像对应的局部描述子进行匹配;

位姿计算模块1010,用于根据匹配结果计算当前帧图像的位姿。

本发明实施例提供的上述视觉定位装置,基于增量建图结果,首先通过场景识别网络进行全局描述子提取,进行粗定位,然后通过局部描述子进行细定位,只需要将构建的关键帧数据库加载入内存即可,内存占用低;基于深度哈希算法对场景特征的深度提取的全局描述子可以保证最相似的场景距离最近,定位速度快。

在一种实施方式中,上述局部描述子计算模块还用于:将多个关键帧信息进行聚类,得到聚类中心的关键帧信息;对聚类中心的关键帧信息计算局部描述子。

在另一种实施方式中,上述匹配模块还用于:根据匹配成功的关键帧信息包括的特征点信息,查找对应的地图点信息;求解pnp获得当前帧图像的位姿。

在另一种实施方式中,上述装置还包括优化模块,用于:以重投影误差最小为目标优化当前帧图像的位姿,得到当前帧图像的优化位姿。

本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

本发明实施例还提供了一种设备,包括存储器和处理器,存储器中存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例提供的方法的步骤。可选地,该电子设备还可以包括图像采集装置或指纹传感器。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

进一步,本实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例所提供的方法的步骤。

本发明实施例所提供的网络训练方法、增量建图方法、定位方法、装置及设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中提供的方法,具体实现可参见方法实施例,在此不再赘述。

本实施例还提供了一种计算机程序,该计算机程序可以存储在云端或本地的存储介质上。在该计算机程序被计算机或处理器运行时用于执行前面方法实施例中提供的方法,并且用于实现根据本发明实施例的装置中的相应模块。具体实现可参见方法实施例,在此不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。

本申请的各个装置实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的装置中的一些模块的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。例如,本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

本申请的上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1