APP下载

无监督深度学习单目视觉里程计研究

2023-04-24凌智琛邓甘霖

导航定位与授时 2023年2期
关键词:里程计光流位姿

李 鹏,黄 鹏,凌智琛,邓甘霖

(湘潭大学自动化与电子信息学院,湖南 湘潭 411100)

0 引言

移动机器人和自动驾驶技术近年来得到了快速发展,对自主定位和导航的精度要求也越来越高。在室内或弱卫星导航环境下,基于视觉的同时定位与建图(simultaneous localization and mapping,SLAM)技术有着至关重要的作用,视觉里程计(visual odometry,VO)作为视觉SLAM的关键环节,也受到了越来越多的关注和研究。

视觉里程计可分为基于特征的方法和直接方法。基于特征的方法[1-2]通过检测特征点和提取局部描述符作为中间表示,在图像之间进行特征匹配,并且使用重投影误差来优化相机位姿。而直接方法[3-5]则对图像形成过程建模,通过假设灰度不变性对光度误差函数进行优化。

深度学习近年来席卷了计算机视觉领域,基于深度学习的SLAM研究也取得了显著进展。目前相关工作主要关注SLAM标准环节的子问题,例如特征提取[6]、特征匹配[7-8]和异常值剔除[9]等。端到端的视觉里程计框架[10-11]提出了从卷积神经网络(convolutional neural networks, CNN)中直接回归相机相对姿态或定位信息。CNN-SLAM[12]在LSD-SLAM[4]的基础上,将深度估计和图像匹配均替换成基于CNN[13]的方法,但在室外精度严重不足。GEN-SLAM[14]使用单目RGB相机,利用传统几何SLAM的结果来训练网络得到位姿和深度估计。文献[15]提出了一种基于改进双流网络结构的VO,并在卷积层中加入注意力机制。SfM-Lear-ner[11]同时训练姿态和深度网络,得到了与ORB-SLAM相竞争的结果。Deep-VO-Feat[10]和D3VO[16]使用双目相机进行训练,可在单目相机运行下直接得到真实尺度下的轨迹。文献[17]使用长短时记忆网络进行时序建模,端到端地输出位姿。然而,由于缺乏多视图几何约束[18],端到端的深度学习方法往往面临着极大的尺度漂移问题,很难取得与传统VO[19]相竞争的结果。

光流估计作为视觉SLAM的子问题,传统方法大多是基于Horn-Schunck算法[20]与Lucas-Kanade算法[21]进行求解。最近,研究发现基于深度学习的方法可提取密集光流,在精度上大大优于传统方法。结合人工合成和真实数据的训练标签,FlowNet[22]首先提出了使用CNN训练光流,SpyNet[23]和PWC-Net[24]等使用从粗到细的金字塔结构进行迭代细化。

本文提出了一种基于无监督深度网络和光流网络的视觉里程计。该方法结合了深度学习提取特征的鲁棒性和多视图投影原理的几何约束。利用深度一致性和图像相似性损失函数得到尺度一致的深度估计网络,并与RAFT(recurrent all-pairs field transforms)光流网络[25]联合训练得到更加鲁棒的光流。深度估计网络和光流网络作为中间信息,并不直接输出相机位姿,而是根据前后一致性误差,在密集光流中进行稀疏采样,得到准确的对应关系。然后,利用多视图几何约束,并根据其结构关系选择最优跟踪方式,联合深度网络进行深度对齐,从而得到尺度一致的视觉里程计。

1 网络结构

无监督学习的关键是使用图像重建损失[26],利用估计的深度、位姿、光流和源图像计算合成图像与目标图像之间的差异。单视图深度网络、光流网络和相机相对姿态网络是3个单独的任务,但他们有相互关联的图像相似性约束关系,通过视图合成,在现有无监督信号的基础上,结合空间一致性损失函数和图像相似性损失函数,耦合这3个网络的训练过程。

网络框架主要包括三部分:单视图深度估计网络、姿态估计网络和光流网络。深度估计网络接收单个RGB图像作为输入并输出逆深度图,位姿网络和光流网络均接收两帧图像作为输入,位姿网络输出两帧之间的六自由度相对位姿,光流网络输出两帧之间的双通道光流。

网络架构整体流程如图1所示,在训练期间,同时估计相邻两帧图像深度,使用空间一致性约束使其深度信息一致。姿态网络和光流网络的输入为两张相邻RGB图像,联合相对位姿估计和深度估计得到合成图像,采用光度一致性损失函数和图像平滑损失函数优化深度信息和相机姿态,通过合成光流对RAFT网络进行联合优化。与网络单独训练相比,结合多任务一致性约束,加强了网络之间的联系,得到了更加精确和鲁棒的深度、姿态和光流估计。

图1 无监督深度学习架构Fig.1 Architecture of unsupervised deep learning

2 优化目标

在缺少真实深度信息和光流信息的情况下,无监督网络利用合成视图,以帧间相似性作为监督信号训练网络模型。深度网络和光流网络通过姿态网络进行几何关联,其中相对姿态估计网络用于帮助约束深度网络和光流网络,且只在训练期间使用。

考虑两张相邻图像Ik和Ik+1,通过相对姿态网络和深度估计网络得到相机相邻帧之间的运动Tk→k+1和单视图深度Dk、Dk+1,根据等式

(1)

(2)

无监督训练通常假设帧间相同物体表面外观也相同,在简单逐像素差的基础上,引入结构相似度(structural similarity, SSIM)损失以学习相邻帧之间的结构信息,使用L1和SSIM[28]损失结合作为重建图像损失

Lp=

(3)

其中,α=0.85;SSIM使用3×3大小的窗口计算;V是相邻帧有效共视区域。

在低纹理场景或均匀区域下,假设的光度不变性会导致预测空洞问题,为了得到平滑的深度预测,引入一阶边缘平滑项损失[29]

Ls=

(4)

对于动态物体,联合图像分割网络[30]进行掩码处理,大大增加了网络计算负担。本文根据Monodepth2[31],使用二进制掩码,忽略与摄像机同步运动的对象,该掩码在网络的正向传递中自动计算

(5)

选择使用泛化能力强、快速且准确的RAFT网络作为光流主干网络,与使用从粗到细的金字塔迭代式网络[32]相比,RAFT只以高分辨率维护和更新单个光流场,并且在迭代期间共享权重,克服了从粗到细优化网络时难以在粗分辨率下修正错误和难以检测小物体的快速运动这两大困难。通过合成光流和RAFT网络的误差联合训练进行微调

(6)

其中,Fsyn表示合成光流网络;FR表示RAFT网络。

在训练中,为了得到结构一致的深度预测,通过光流网络将Dk+1与Dk对齐,计算深度一致性损失

(7)

综上所述,网络总体损失函数为

L=Lp+λsLs+λfLf+λdcLdc

(8)

其中,λs、λf和λdc表示各项损失的权重,所有损失共同应用于深度网络和光流网络。

3 算法流程

传统视觉里程计一般分为初始化和运动跟踪两个过程,在初始化环节采用对极几何方法得到稀疏三维点云,然后在跟踪过程中使用运动模型或者PnP方法求解[R|t],并重新三角化新的匹配点,在此过程中会引入累积误差。本文使用深度网络得到尺度一致的深度信息,三角化对齐过程独立进行,可以最大限度减少尺度漂移问题。

为了从光流网络中提取稀疏匹配,同时使用前向光流和后向光流,利用双向一致性误差过滤得到精确的稀疏对应关系(见图3)。由于不依赖运动模型进行局部匹配,避免了突然的运动转向引起的大量特征点误匹配问题。

图3 从前向和后向光流中提取稀疏匹配关系Fig.3 Extraction of sparse matching relation from forward and backward optical flow

受ORB-SLAM初始化方法启发,考虑了2D-2D和3D-3D两种跟踪方式。ORB-SLAM使用模型得分方法仅进行初始化模型选择,跟踪过程则使用恒速运动模型以及PnP方法求解运动轨迹。由于同时具有2D-2D和3D-3D对应关系,不必进行复杂的初始化调试,仅使用模型得分RF进行跟踪方式的选择。首先求解单应矩阵Hcr和本质矩阵Fcr

(9)

其中,pc和pr为相邻两帧匹配点,然后为H模型和F模型分别计算SH和SF得分(M为H或F)

(10)

当发生三维点云结构退化[33]的情况时,ORB-SLAM选择分解单应矩阵求解相对运动,经常面临初始化失败问题。本文通过深度网络得到尺度一致的深度信息,避免分解单应矩阵,通过奇异值分解(singular value decomposition, SVD)[34]方法求解[R|t]

(11)

其中,p′表示与p相匹配的像素。

方法流程如下:

2)稀疏点采样:将图像划分为10×10网格区域,并在每个区域中取dF小于阈值δ的前20组稀疏匹配点;

3)模型选择:计算本质矩阵和单应矩阵,然后计算模型得分RF=SF/(SF+SH),如果RF>0.5,则选择2D-2D跟踪模式,反之,则选择3D-3D跟踪模式;

4 实验验证与结果分析

采用Ubuntu 20.04系统,CPU为 i5-10300H,GPU为 NVIDIA Geforce GTX 1660Ti,显卡内存为6 GB,设备内存为16 GB。在KITTI数据集上进行视觉里程计实验,并与传统方法和基于端到端的深度学习的方法进行对比,以验证方法的有效性。

4.1 网络架构与参数设置

深度估计网络基于通用的U-Net[35]网络架构,即编码器-解码器结构,如图4所示。以ResNet18[36]作为编码器网络,解码器使用跳跃连接架构,网络层之间的跳跃连接使其能同时融合浅层几何信息和高层抽象特征。由于相邻帧之间的运动很小,多尺度输出既不准确也不必要,本文只输出单尺度深度预测结果,这极大节省了计算资源。光流网络使用RAFT网络作为主干网络,相对位姿网络是一个具有ResNet18结构的姿态估计网络,使用轴角表示三维旋转。

图4 深度估计网络架构Fig.4 Architecture of depth estimation network

网络模型使用Pytorch框架实现,使用Adam优化器进行两阶段训练。第一阶段训练20个周期,学习速率设置为10-4,批量样本大小为8。第二阶段训练100个周期,学习速率设置为10-5,批量样本大小为4。在训练中,设置λs=0.4,λf=0.4,λdc=0.1,将图像序列大小调整为480×640。

4.2 深度估计

由于单目相机固有的缺陷,无法得到真实世界的绝对深度估计,为了进行比较,参照SC-SfMLearner的方法,将深度图乘以尺度标量r与真实尺度中值匹配,在KITTI数据集上使用平均绝对相对误差(AbsRel)、平均log10误差(SqRel)、平均均方根误差(RMSE)、平均均方根log误差(RMSElog)以及不同阈值(δ<1.25,δ<1.252,δ<1.253)的精度进行深度评估。如表1所示,加粗字体表示该评估方面最好的结果,提出的方法与SfMLearner、Monodepth2及SC-SfMLearner相比,均有较大优势,SfMLearner与Monodepth2均无法达到连续深度一致性,SC-SfMLearner与提出的方法可在长时间序列上达到深度一致性,并由此减少了视觉里程计的尺度漂移问题。

表1 KITTI数据集单视图深度估计结果Tab.1 Single-view depth estimation results of KITTI

4.3 视觉里程计

KITTI数据集共提供了22组序列数据,其中0~10提供了真实轨迹,实验在0~8序列进行训练,9~10序列进行评估测试,并与ORB-SLAM2和端到端的深度学习方法进行对比研究。由于单目视觉里程计无法得到真实世界下的尺度,为了公平比较,统一将结果与真实轨迹尺度对齐。定性轨迹结果如图5和图6所示,相较于ORB-SLAM2、SfMLearner、SC-SfMLerner和Depth-VO-Feat,本文所提方法的轨迹平移漂移量明显减少(见表2),这得益于尺度一致的深度估计。尽管Depth-VO-Feat使用双目相机训练,能够得到与真实世界尺度一致的结果,但其尺度漂移问题却最为严重。相反,由于提取了精确的匹配关系,经过尺度对齐之后,本文的方法与真实轨迹更加吻合。

图5 KITTI 09序列轨迹Fig.5 Track of KITTI sequence 09

图6 KITTI 10序列轨迹Fig.6 Track of KITTI sequence 10

表2 KITTI 09与10序列对比Tab.2 Comparison of KITTI sequence 09 and sequence 10

5 结论

本文提出了一种基于无监督网络的视觉里程计方法,通过光流网络与深度网络进行特征匹配与尺度对齐,并结合传统方法的几何约束条件进行优化,提高了精度与鲁棒性,实验结果表明:

1)本文所提的基于无监督网络的方法有效提高了单目视觉里程计的精度;

2)有效减少了传统单目视觉里程计的尺度漂移和尺度不一致问题;

3)提出的联合光流网络与深度网络训练方法有效提高了深度网络的精度。

猜你喜欢

里程计光流位姿
室内退化场景下UWB双基站辅助LiDAR里程计的定位方法
利用掩膜和单应矩阵提高LK光流追踪效果
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
基于物理学的改善粒子图像测速稳健光流方法研究
基于模板特征点提取的立体视觉里程计实现方法
基于共面直线迭代加权最小二乘的相机位姿估计
基于CAD模型的单目六自由度位姿测量
大角度斜置激光惯组与里程计组合导航方法
小型四旋翼飞行器位姿建模及其仿真
融合光流速度场与背景差分的自适应背景更新方法