首页 / 一种基于注意力机制的无人机视觉里程计导航定位方法

一种基于注意力机制的无人机视觉里程计导航定位方法公开 发明

技术领域

[0001] 本发明属于导航定位技术领域,涉及一种基于注意力机制的无人机视觉里程计导航定位方法。

相关背景技术

[0002] 第一部分:运动体如无人平台、机器人等进入未知环境,对自己的位置及周围环境是没有认知的,只能通过各种传感器获取信息。人类基于视觉系统获取大量的信息。运动体被假设为像人类一样通过眼睛的观察、理解周围的物体与环境,知道自己所处的位置,观察探索世界。随着计算机视觉(Computer Vision,CV)的发展,最近几十年通过附着视觉传感器获取丰富的信息进行自运动估计逐步得以实现。视觉传感器得到的信息最为丰富、全面也最直观,成本也相对较低,检测的应用范围也比较广泛。通过视觉传感器进行相机自运动估计的过程称为视觉里程计(Visual odometry,VO)。VO已经在很多类型的无人平台及机器人中广泛应用,遍布空中、陆地、水下。
[0003] 目前主流的视觉里程计导航定位方法依据图片的几何关系进行计算,需要稳定的、有纹理的特征,容易受到光线、天气变化的影响,对相机的参数十分敏感,不适用于无人机在室外长时间、大范围的工作环境。依托于卷积神经网络结构的视觉里程计方案大多针对地面车载环境,而无人机采集图像多为倾斜向下的俯拍图片,图片涵盖范围广,内容类目多且密集度高,飞行轨迹相对于城市道路上的汽车也更为灵活,使得传统基于地面车载环境的视觉里程计导航定位方案对于无人机适用性较差。

具体实施方式

[0041] 下面结合附图和实施例对本发明所述一种基于注意力机制的无人机视觉里程计定位方法做进一步说明和详细描述。
[0042] 实施例1
[0043] 所述一种基于注意力机制的无人机视觉里程计导航定位方法,依托于GoogLeNet卷积神经网络模型,结合网上现有车载城市及郊区道路公开数据集(包括11个场景共2万余张图片)和自行采集的无人机航拍数据集(包括15个场景共8740张图片),首先基于较为成熟完善的车载公开数据集训练基于GoogLeNet卷积层结构的车载视觉里程计模型,再通过直推式迁移学习的方法构建无人机视觉里程计模型,引入无人机目标数据集进行网络模型训练,最终建立无人机任务环境下图像特征与无人机位姿间的关系模型,完成基于GoogLeNet卷积层结构的无人机视觉里程计的定位。
[0044] 一种基于注意力机制的无人机视觉里程计导航定位方法,依托基于GoogLeNet的卷积层结构,包括如下步骤:
[0045] S1、采集并制作无人机视觉‑位姿数据集,具体为:
[0046] S11、通过无人机采集不同高度、速度下行驶不同的轨迹对地面拍摄的视频;
[0047] S12、采用运动估计结构算法离线解算出相机位姿和里程运动信息,得到解算的位姿序列数据;
[0048] S13、制作包含时序图片和位姿序列数据的FLYING数据集,分别保存图片和位姿标签,用于模型训练;
[0049] S2、获取车载环境数据集并执行S12和S13将该公开数据集转变为与FLYING数据集齐次的形式;
[0050] S3、搭建车载视觉里程计模型,包括设计编码层的卷积层结构、图像位置编码、注意力机制求解序列间关系及设置损失函数;
[0051] S4、模型训练,具体为:设置样本序列长度以及样本的重叠采样值,按照顺序每次重复一张图片采集制作下一个样本;
[0052] S4具体实施时,设置样本序列长度为5或6,即每个样本由5或6张序列图片组成;设置样本的重叠采样值为1;所述S4为适应于循环卷积神经网络结构并在台式机内存范围;
[0053] S5、基于车载环境数据集对车载视觉里程计模型进行模型测试与评估,对训练过程中保存下来的模型在测试集展开测试以评估模型性能,选取测试效果较好的模型用于后续迁移学习;
[0054] S6、采取直推式迁移学习方法训练无人机视觉里程计模型,得到基于注意力机制的无人机视觉里程计网络结构模型。
[0055] S11所述无人机采集,具体为:分别采集直行、转弯、升降移动画面数据并尽可能在场景中移动较长时间以确保采集的原始数据是遍历无人机视觉姿态获取得到。
[0056] S12所述解算数据前三位表示位置坐标,后四位表示旋转四元数。
[0057] S2所述的车载环境数据集为车载城市及郊区道路公开数据集。
[0058] S3所述网络总体架构包括CNN、多头注意力单元及前向传输单元;S3所述CNN中包括卷积层;卷积层又包括编码层,编码层为flownet结构的编码层。
[0059] S3所述网络总体架构中的卷积层用于特征提取,学习序列间关系并均衡权重分布;所述学习序列间关系不再按照时间标签依次学习,而是将时序关系标识为位置编码后再学习。
[0060] S3所述车载视觉里程计模型,依托基于GoogLeNet的卷积层结构。
[0061] S3所述设置损失函数依托于地面真实位姿信息和预测信息均方误差最小准则。
[0062] S6所述采取直推式迁移学习方法训练无人机视觉里程计模型,具体为:选择FLYING数据集中的一部分图片作为验证集,一部分图片作为测试集,其余场景序列作为训练集,在无人车视觉里程计模型保存的模型和参数的基础上,采用相同的配置文件和网络结构,对数据集路径及部分超参数进行修改后展开训练,得到基于注意力机制的无人机视觉里程计网络结构模型。
[0063] 具体实施时,所述一种基于注意力机制的无人机视觉里程计导航定位方法基于GoogLeNet卷积层结构,包括如下步骤:
[0064] 步骤1、采集制作无人机视觉‑位姿数据集;
[0065] 步骤1.1、数据采集,通过无人机在不同高度、速度下行驶不同的轨迹对地面拍摄采集视频。拍摄过程中无人机云台相对于机体保持固定角度,场景中包含树林、多种形状的楼宇、车辆,并且在场景中还包含运动的物体,同时在一些场景的采集过程中包含光线的变化。分别采集直行、转弯、升降移动画面数据,并尽可能在场景中移动较长时间以保证采集到的原始数据的丰富性。
[0066] 步骤1.2、采用运动估计结构算法离线解算出相机位姿和里程运动信息,数据前三位表示位置坐标,后四位表示旋转四元数q=q0+q1i+q2j+q3k,示例相邻6帧图像位姿解算的结果如图1所示:
[0067] 步骤1.3、数据集制作,创建数据集,命名为FLYING,并在其中创建图像序列文件夹“Images”和位姿文件夹“Poses”,分别保存对应的图片和转化的位姿标签,用于模型训练。
[0068] 步骤2、下载车载城市及郊区道路公开数据集KITTI(包括11个场景共3万余张图片),类似步骤1.2和1.3,将KITTI数据集转变为与FLYING数据集齐次的形式。
[0069] 步骤3、网络设计;
[0070] 总体架构:网络的总体架构如图2所示,输入数据为制作的时序图片样本,进入网络结构之前将相邻的两幅图片堆叠构成一个张量。首先经过卷积层进行特征提取,将高维度图片的特征缩小,然后将特征向量送入注意力机制中进行序列约束关系学习,输出相机7自由度的位姿信息,其中前3个自由度表示位移,后4个自由度是旋转四元数的姿态变化。网络以自注意力机制为基础,并引入多头注意力机制均衡权重分布。模型不再按照时间标签依次进行计算,而是将时序关系标识为位置编码,从而学习序列间关系。
[0071] 步骤3.1、卷积层结构设计:如图3所示,采用flownet结构中的编码层作为本结构中的卷积层结构。CNN的参数已经在上图中标识,卷积核的大小由7×7、5×5逐渐减少到3×3以捕捉图片中小的局部特征,特征图谱尺寸的减小表示收集到了更加抽象的特征。卷积核的个数由128、512到1024逐渐增加,经过卷积层后特征图谱数量的增加表示采集了更为丰富的特征。按照顺序将两张图片堆叠输入到CNN中,得到表示图片间几何关系的特征向量,将特征向量进行一维拉伸后输入到后面的注意力机制中。
[0072] 步骤3.2、图像位置编码:由于注意力机制本身不考虑元素顺序,需要位置编码通过为序列中的每个元素添加额外的信息来使模型能够利用元素的位置信息。在视觉里程计任务中,视频流提取出的图片具有时间序列关系,保留图片间的相互序列关系就是对特征的编码过程。图片按照顺序输入网络结构中获得与其对应的相机相对位姿,通过对图片的位置信息进行编码来标识图片顺序:
[0073]
[0074] 其中,angle是角度的计算,hid_idx是图片的序列位置,d_hid是编码后的维度数,在每一个图片中求解该角度的sin值及cos值,将其合并作为该张图片的位置编码。
[0075] 步骤3.3、注意力机制求解序列间关系:如图4所示,将编码的相邻图片特征与位置编码信息一起送入到注意力机制进行序列间约束关系的学习。注意力部分由4个称为encoder的部分堆叠构成,每个encoder层的结构相同,但是权重不共享。每个encoder层由multi‑head attention模块和feed forward模块构成,每个模块后面连接着add&norm。卷积层提取的每一个特征向量都会输入堆叠的multi‑head attention模块和feed forward模块获得一个输出。
[0076] 在multi‑head attention机制中有多个query,key,value权重矩阵,这些矩阵随机初始化后将编码后的输入元素映射到各个不同的子空间中。multi‑head attention机制计算过程如图5所示,设置n_head=4,机制中每一个header都有一套独立的query,key,value权重矩阵。将输入复制为n_head份分别进入不同的self attention机制,将self attention输出得到的矩阵拼接乘以权重矩阵ω0得到输出向量z,再向后传输。摘选其前向传输过程代码如下:
[0077]
[0078]
[0079] multi‑head attention运算后经过add&norm模块,该模块输入x时的输出为:
[0080] y=LayerNorm(x+SubLayer(x))
[0081] 然后,再输入全连接的前馈网络与add&norm模块进行降维度处理,输入序列中的元素经过相同的前馈神经网络结构,但它们是相互独立的。最后,将输出维度映射为7维,表示图片间相机位姿的变化情况。
[0082] 步骤3.4、损失函数设置:将位姿信息Y分解为位移和旋转 神经网络得到的预测位姿为 对于时长为T的M个序列的损失函数由均方误差计算:
[0083]
[0084] 其中,||·||2是2范数,β是平衡权重的比例因子。计算神经网络参数使地面真实*位姿信息和预测信息误差最小,从而训练得到最优参数w
[0085] 步骤4、模型训练,设置样本序列长度为5或6,即每个样本由5或6张序列图片组成;设置样本的重叠采样值为1,按照顺序每次重复一张图片采集制作下一个样本;为适应于循环卷积神经网络结构并在台式机内存范围内正常运行,采用中心裁剪的方式(CenterCrop)对图片进行处理,以减轻GPU的负载并大幅提升计算速度;采用Adam优化器,设置学习率为
0.00001,n‑head为4,encoder层数为4,value与key的维度设置为256,损失函数中的耦合系数为100。CNN部分的参数由训练的flownet模型参数进行初始化,其余权重随机初始化,偏置由0开始初始化。
[0086] 步骤5、基于车载环境数据集模型测试与评估,对训练过程中保存下来的模型在测试集展开测试以评估模型的性能,并选取测试效果较好的模型用于后续迁移学习。设置测试时每次处理的图片序列长度为6,overlap值为5,将样本按照顺序放入训练好的网络模型中。取每一个图片序列的前五幅图片与后五幅图片对齐,通过神经网络模型预测相机的相对位姿,如图片序列0,1,2,3,4,5,根据数据处理文件中定义的方式将图片转换为0,1,2,3,4和1,2,3,4,5,组合为0‑1,1‑2,2‑3,3‑4,4‑5的图像对。
[0087] 步骤6、如图6,采取直推式迁移学习方法,训练无人机视觉里程计模型。选择FLYING数据集中的一部分图片作为验证集,一部分图片作为测试集,其余的场景序列作为训练集,在无人车视觉里程计模型保存的模型和参数的基础上,采用相同的配置文件和网络结构,对数据集路径及部分超参数进行修改后展开训练,得到基于注意力机制的无人机视觉里程计网络结构模型attention VO。
[0088] 1.数据采集:本专利采集的无人机数据采用大疆公司的悟1进行,负载相机分辨率为1276万像素。在不同高度、速度下行驶不同的轨迹对地面拍摄采集视频。场景中包含树林、多种形状的楼宇、车辆,并且在场景中还包含运动的物体,甚至存在飞鸟群占据图像的大量篇幅,同时在一些场景的采集过程中包含光线的变化。获取的部分视频截图如图7所示。
[0089] 2.数据预处理:参考前文中的数据预处理文件,对应FLYING数据集修改preprocess.py。对数据进行预处理,为后文中网络的训练奠定基础。第一步清除没有用到的图片;第二步将位姿的表示形式转化为三维的位置和欧拉角;第三步计算图片的均值及方差。由于场景序列较多,图8为数据预处理第三步对应的输出内容。
[0090] 如图9构建目标数据集FLYING,并选择FLYING数据集中40,47作为验证集,32,45,47作为测试集,其余的场景序列作为训练集,训练集中包含约8000张图片。两个模型训练样本集的制作方式相同,均按照图片顺序每次重复1张图片采样5或6张图片为一个样本序列,位姿标签对应转化为图片间相对的相机位姿信息。为在实验平台中正常运行,在两个模型的训练中均采用中心裁剪后的图片。
[0091] 3.迁移学习:选择FLYING数据集中40,42作为验证集,32,45作为测试集,其余的场景序列作为训练集,在无人车视觉里程计模型保存的模型和参数的基础上,仍然采用adam优化算法,对数据集路径及部分超参数进行修改后展开训练,得到基于注意力机制的无人机视觉里程计网络结构模型attention VO。在训练过程中,模型的训练损失和验证损失收敛到一个合适的范围内大概需要200epoch,在模型收敛情况较好时保存对应的网络及参数。记录训练过程中训练损失的下降曲线如图10所示,其中A曲线代表训练损失,B曲线代表验证损失,迭代过程中伴随着损失小范围震荡,这源于部分场景图片与前文中的数据相类似。
[0092] 5.数据评估:基于无人机测试数据集视觉里程计的平均位移、旋转误差和处理时间与传统VISO2M模型结果对比如表1、表2所示。
[0093] 表1平均位移和旋转误差
[0094]
[0095] 表2基于FLYING数据集的测试耗时对比(s)
[0096]
[0097] 通过数据分析,场景序列47的误差低于其他测试场景序列,与轨迹图的直观分析相吻合。主要原因是47场景中无人机高度变化较少,由于KITTI数据集为车载环境数据集,不存在高度变化,在此基础上通过迁移学习训练出来的视觉里程计模型对高度变量的变化适应能力较差。
[0098] 在模型测试用时上,attention机制有效的提升了网络的并行计算能力,在时间性能上具有较为明显的优越性,频率调至20Hz左右attention VO模型仍可以满足实时性要求。
[0099] 本实施例详细阐述了本发明一种基于注意力机制的无人机视觉里程计设计的数据采集设备、训练方法及测试结果。
[0100] 以上所述为本发明的较佳实施例而已,本发明不应该局限于该实施例和附图所公开的内容。凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。

当前第1页 第1页 第2页 第3页
相关技术
导航定位相关技术
无人机视觉相关技术
易瑔发明人的其他相关专利技术