本发明属于计算机视觉领域,具体涉及一种融合深度学习网络的视觉slam方法。
背景技术:
1、在过去的二十年中,同步定位与建图(slam)已成为机器人和计算机视觉研究的热点领域,并广泛应用于例如移动机器人、自动驾驶和虚拟现实(vr)设备等现实世界应用领域。由于相机价格低廉且能够获取丰富的环境信息,视觉slam已被广泛研究。在特定场景下,利用深度学习的鲁棒性来增强传统的vslam系统展现了深度学习在slam领域的卓越潜力。然而,深度学习与slam的融合方法还不够成熟,仍存在明显的缺陷。大多数深度学习方法严重依赖于用于训练的特定数据集,这使得它们在面对未知环境的场景时往往表现不佳。并且,大多数提出的方法并未全面评估系统在各种场景下(包括具有挑战性的场景)的鲁棒性。更重要的是,它们在突出深度学习技术的优势时,势必在计算效率上面临严峻的挑战,这样的设计严重限制了系统性能,往往无法满足slam系统对稳定性与实时性的要求。
技术实现思路
1、针对现有技术中的上述不足,本发明提出了一种融合深度学习网络的视觉slam方法。通过使用深度学习提高局部特征的鲁棒性,提升图像帧之间数据关联的准确性,在不牺牲整体效率的情况下大幅提高了系统实时定位精度。
2、为了达到以上目的,本发明采用的技术方案为:
3、本方案提供一种融合深度学习网络的视觉slam方法。其特征在于,包括以下步骤:
4、s1、系统接受输入的图像对,用深度学习提取局部特征描述符来替代传统手工设计的特征;
5、s2、基于lightglue深度学习网络,在极短的时间内实现前后帧图像特征之间的精准匹配;
6、s3、对双目图像帧进行预处理,计算每个像素匹配代价的累积函数,并利用立体深度估计模块实现精确的立体视觉重建与深度估计;
7、s4、输出特征点匹配对与深度估计结果,并应用于视觉同步定位与建图(slam)的实现中。
8、进一步地,所述步骤s1包括以下步骤:
9、s101、接收输入的图像数据,通过最底层到最上层的降采样过程构建图像金字塔。
10、s102、将每一层应提取的特征点数量与该层图像的面积大小相关联,从而根据每层图像面积确定每一层所需提取的特征点数量。
11、s103、通过高效的深度神经网络特征提取算法(superpoint)并行地提取指定数量的特征点,以确保在每层图像中提取的特征点数量达到设定值,以覆盖足够丰富的图像尺度信息。具体地,通过superpoint提取带有固定长度描述符的特征点。将图像宽度为w,高度为h,分辨率为w×h的图像通过65个8×8的卷积核变为w/8×h/8×65的维度,并在提取特征解码器使用归一化指数函数softmax删除垃圾箱维度,然后应用整形函数输出尺寸大小的w×h的张量。而在描述符解码器中对描述符进行双三次插值,并进行l2归一化处理最后输出描述符;
12、s104、对提取的特征点进行去重处理,采用非极大值抑制的方法解决重复特征点出现的问题,确保最终的特征点集合中没有重复的特征点;
13、再进一步地,所述步骤s2包括以下步骤:
14、s201、将图像i∈{a,b}中的每个局部特征i与状态相关联。状态使用相应的视觉描述符进行初始化,并随后由每一层进行更新。我们将一层定义为一系列一个自注意力单元和一个交叉注意力单元。网络有l=9层,每个注意力单元有4个头,所有表示的维度为d=256。在每个注意力单元中,多层感知器(mlp)根据从源图像s∈{a,b}聚合的消息更新状态:
15、
16、其中[·|·]堆叠两个向量,用于对两个图像中的所有特征点进行并行计算。该消息由注意力机制计算为图像s的所有状态j的加权平均值:
17、
18、其中w是投影矩阵,是图像s的状态j,是图像i和s中特征点i和j之间的注意力得分,softmax()为特征提取解码器通道的激活函数;
19、s202、在自注意力单元中,每个图像i从自身图像的特征点中提取信息,因此s=i,我们将该注意力得分记作aij。对于每个特征点i,当前状态xi通过不同的线性变换分解为键向量ki和查询向量qi,注意力得分表示为:
20、
21、其中是特征点之间相对位置的旋转编码,使模型能够检索位于从特征点i学习到的相对位置的特征点j。
22、s203、在交叉注意力单元中,每个图像i中的特征点都会关注其他图像s的所有特征点,并且s={a,b}\i。我们为每个元素计算键向量ki,但不进行查询。注意力得分表示为:
23、
24、因此,我们只需要为i←s和s←i消息计算一次相似度。
25、s204、计算两个图像的特征点之间的成对分数矩阵
26、
27、其中linear(·)是带有偏差的学习线性变换。该分数对每对对应点的亲和力进行编码,即同一个3d点的2d投影;
28、s205、那么,对于每个特征点计算匹配性分数
29、σi=sigmoid(linear(xi))∈[0,1]
30、这个分数表征了特征点i具有对应点的可能性。如果某个特征点未能在其他图像中被成功检测到,则匹配失败,因此σi→0。
31、我们将相似性和匹配性分数组合成分配矩阵p,为
32、
33、当一对点(i,j)被预测为可匹配并且它们的相似度高于两个图像中的任何其他点时,这两个点就会产生对应关系。我们选择pij大于阈值τ且大于行和列上任何其他元素的对。
34、再进一步地,所述步骤s3包括以下步骤:
35、s301、首先对双目图像进行预处理,获取图像的梯度信息。我们使用sobel算子计算图像中每个像素点处的梯度强度和方向。其计算过程涉及到两个卷积核,分别用于计算水平方向和竖直方向上的梯度值gx和gy。假设左图像的灰度值为il(x,y),则可以用以下公式表示计算的梯度幅度:
36、
37、
38、其中,sx和sy分别是水平和竖直方向的卷积核。那么,图像的像素点的灰度值大小为:
39、g0=|gx|+|gy|
40、s302、为了在后续的步骤中方便处理,我们将预处理后的图像保存起来,以避免重复计算并加速视差计算过程。使用映射函数将该图像上每个像素点映射到新的图像上,其灰度值g为:
41、
42、s303、使用像素块之间的灰度差异构建代价函数。具体地,对于每个像素点(x,y),在右图像中与其匹配的像素坐标为(x+d,y),其中d是视差值,则可以定义两者之间的代价函数c(x,d)如下所示:
43、
44、为了更准确的反应像素之间的相关性,我们通过沿各个方向(水平、竖直和斜对角线方向)进行匹配代价的累积,以选择全局最小代价路径,得到每个像素位置的最佳匹配代价值。并将所有r方向的匹配代价lr(x,d)相加得到总的匹配代价s(x,d),如下:
45、
46、s304、根据s302得到的总的匹配代价获取最小匹配代价的位置,对应的就是当前像素点的视差值d。它代表左图中的像素点在右图中对应的偏移量或者位移距离。具体地可以通过以下公式计算:
47、
48、其中表示求取使得s(x,d)取最小值时的d。
49、s305、我们利用深度学习网络对立体图像进行精准匹配,将结果与深度图比对,输出得到特征点对应的空间点。提升了图像特征点与空间地图点之间数据关联的准确性,实现更精确的立体视觉重建与深度估计。
50、具体地,根据双目视觉的几何关系,由视差与深度的转换公式得到深度值z:
51、
52、其中,fx表示归一化的焦距,b为两个相机光心之间的距离,称作基线距离。
53、再进一步地,所述步骤s4包括以下步骤:
54、s401、在追踪线程中,对于系统输入的每一帧图像,采用深度学习提取和匹配局部特征描述符来替代传统手工设计的特征,通过查找与本地地图匹配的特征并应用ba来最大程度地减少重新投影误差的跟踪,以每帧定位摄像机
55、s402、在局部建图线程中,对于接收到的新关键帧,首先通过对共视图中连接的关键帧的特征进行三角测量来创建新的地图点,然后执行局部ba优化相机位姿。随着关键帧数量的增加,最后通过剔除冗余的局部关键帧来降低系统的复杂性。
56、s403、回环闭合线程分两个步骤执行,首先通过获取局部建图线程处理的最后一个关键帧并检测是否满足回环条件;然后,如果检测到回环,则立即计算当前关键帧与其邻居的共视图之间的相似性变换以获取回环中累积的误差,并优化位姿图,以实现全局一致性。最后,我们在位姿图之后结合了完整的ba优化以实现最优解。
57、与现有技术相比,本发明的有益效果是:
58、本发明提出了一种融合深度学习网络的视觉slam方法。输入的图像通过高效的深度神经网络(superpoint)特征提取算法并行地提取指定数量的特征点;通过网络层级结构得到注意力得分,再根据任意层的更新状态来对得分进行预测分配;以得到系统的精准匹配结果。通过使用深度学习提高局部特征的鲁棒性,提升图像帧之间数据关联的准确性,在不牺牲整体效率的情况下大幅提高了系统实时定位精度。即使是在极具挑战性的低光照场景中,也能克服orb-slam2等流行算法可能无法稳定运行的难题,本发明提出的方法仍然可以准确地跟踪相机位置并构建环境地图。
1.一种融合深度学习网络的视觉slam方法,其特征在于,包括以下步骤:
