单目视觉建图和定位方法、装置、存储介质及移动设备
技术领域
本公开涉及计算机视觉领域,具体地,涉及一种单目视觉建图和定位方法、装置、存储介质及移动设备。
背景技术
在机器人导盲、无人驾驶、增强现实(Augmented Reality,AR)等很多领域,都需要用到环境地图,在相关技术中,该环境地图多是使用单目相机和低成本惯性器件(Inertialmeasurement unit,IMU)的同步定位与建图技术((Simultaneous Localization andMapping,SLAM)技术)建立的。具体地,通过标定单目相机和IMU的内参、外参、以及单目相机和IMU的时间同步性,构建一个精密的里程计系统。在该系统中,首先,在单目相机采集的一系列图像中匹配相邻图像,接着,对IMU在相邻图像对应时间段内测量的IMU数据(例如,移动设备在该时间段内测量的加速度数据、角速度数据)进行积分,最后,根据图像匹配结果和IMU数据的积分结果共同构建损失函数,迭代计算出最优参数,从而实现移动设备建图、定位以及IMU状态的优化。
然而,在该方法中,由于单目相机参数和IMU参数的精确标定,以及单目相机和IMU的时间同步性在建图、定位中有着至关重要的作用,所以,需要专业且复杂的标定过程,SLAM技术精度严重依赖标定参数的准确性。此外,由于单目相机、IMU两者之间的时间差大多数是一个动态范围,且随时间、外界环境不断变化,因此,需要每隔一段时间对单目相机、IMU的时间同步性进行一次标定,才能使上述方法获得最优结果。另外,若单目相机采集的图像丢失或IMU数据出现噪声,上述方法中的定位精度也会下降。
发明内容
本公开的目的是提供一种单目视觉建图和定位方法、装置、存储介质及移动设备,以实现提高定位的精准度。
为了实现上述目的,本公开提供一种单目视觉建图和定位方法,包括:
分别获取当前帧单目图像对应的第一深度图和第一光流特征,以及所述当前帧的前一帧单目图像对应的第二深度图;
根据所述第一深度图和所述当前帧单目图像对应的第一RGB图,确定与所述当前帧单目图像对应的第一帧点云;
根据所述第二深度图和所述前一帧单目图像对应的第二RGB图,确定与所述前一帧单目图像对应的第二帧点云;
获取惯性测量器件在所述前一帧单目图像对应的第一时刻和所述当前帧单目图像对应的第二时刻的时间段内测量的数据,以及预估的所述惯性测量器件在所述第一时刻下的状态;
根据所述数据、所述惯性测量器件的状态、所述第一光流特征,确定移动设备在所述时间段内的第一运动轨迹;
根据所述第一运动轨迹、所述第一帧点云和所述第二帧点云,生成稠密地图。
可选地,所述分别获取当前帧单目图像对应的第一深度图和第一光流特征,以及所述当前帧的前一帧单目图像对应的第二深度图,包括:
将当前帧单目图像和所述当前帧的前一帧单目图像输入至第一网络模型,以获得所述当前帧单目图像对应的第一深度图,所述第一网络模型是根据第一训练样本训练得到的,所述第一训练样本包括:连续两帧历史单目图像、所述连续两帧中的最后一帧单目图像对应的深度图以及双目相机在所述最后一帧单目图像对应时刻下采集的左目图像对应的深度图;
获得所述当前帧的前一帧单目图像对应的第二深度图;
将当前帧单目图像和所述前一帧单目图像输入至第二网络模型,以获得所述当前帧单目图像和所述前一帧单目图像对应的第一光流特征,所述第二网络模型是根据第二训练样本训练得到,所述第二训练样本包括:连续两帧历史单目图像、所述连续两帧历史单目图像对应的二维光流以及所述双目相机在所述连续两帧历史单目图像分别对应时刻下采集的连续两帧历史左目图像对应的三维光流在连续两帧中最后一帧左目图像投影的二维光流。
可选地,所述根据所述数据、所述惯性测量器件的状态、所述第一光流特征,确定移动设备在所述时间段内的第一运动轨迹,包括:
将所述数据、所述惯性测量器件的状态输入至第三网络模型,以获得所述移动设备在所述时间段内的第二运动轨迹,所述第三网络模型是根据第三训练样本训练得到的,所述第三训练样本包括:所述惯性测量器件在连续两帧历史单目图像对应的历史时间段内测量的数据、预估的所述惯性测量器件在所述连续两帧中的第一帧单目图像对应时刻下的状态、所述移动设备在所述历史时间段内的第二运动轨迹以及所述双目相机在所述历史时间段内的第三运动轨迹;
将所述第二运动轨迹和所述第一光流特征输入至第四网络模型,以获得所述移动设备在所述时间段内的第一运动轨迹,所述第四网络模型是根据第四训练样本训练得到的,所述第四训练样本包括:所述移动设备在所述历史时间段内的第二运动轨迹、所述连续两帧历史单目图像中最后一帧单目图像对应的第一光流特征、所述移动设备在所述历史时间段内的第一运动轨迹、以及所述双目相机在所述历史时间段内的第三运动轨迹。
可选地,所述根据所述第一运动轨迹、所述第一帧点云和所述第二帧点云,生成稠密地图,包括:
通过以下公式生成稠密地图:
其中,M表征所述稠密地图,表征使取最小值时的第一运动轨迹T,At-1表征所述第二帧点云,Bt表征所述第一帧点云,T表征所述第一运动轨迹。
可选地,所述方法还包括:
根据所述第一运动轨迹、所述第二运动轨迹以及以下公式,预估所述惯性测量器件在所述第二时刻下的状态:
其中,St表征预估的所述惯性测量器件在所述第二时刻下的状态,ρ表征Huber损失函数,ΣI表征预积分信息矩阵,eR、eP分别表征所述第一运动轨迹和所述第二运动轨迹之间的旋转误差、平移误差,ΔRLSTM、ΔRVIO分别表征所述第一时刻和所述第二时刻的时间段内通过所述第三网络模型、所述第四网络模型确定的旋转量,表征预估的所述惯性测量器件在所述第一时刻下的状态,ΔpVIO、ΔpLSTM分别表征所述第一时刻和所述第二时刻的时间段内通过所述第三网络模型、所述第四网络模型确定的平移量。
本公开还提供一种单目视觉建图和定位装置,包括:
第一获取模块,用于分别获取当前帧单目图像对应的第一深度图和第一光流特征,以及所述当前帧的前一帧单目图像对应的第二深度图;
第一确定模块,用于根据所述第一深度图和所述当前帧单目图像对应的第一RGB图,确定与所述当前帧单目图像对应的第一帧点云;
第二确定模块,用于根据所述第二深度图和所述前一帧单目图像对应的第二RGB图,确定与所述前一帧单目图像对应的第二帧点云;
第二获取模块,用于获取惯性测量器件在所述前一帧单目图像对应的第一时刻和所述当前帧单目图像对应的第二时刻的时间段内测量的数据,以及预估的所述惯性测量器件在所述第一时刻下的状态;
第三确定模块,用于根据所述数据、所述惯性测量器件的状态、所述第一光流特征,确定移动设备在所述时间段内的第一运动轨迹;
生成模块,用于根据所述第一运动轨迹、所述第一帧点云和所述第二帧点云,生成稠密地图。
可选地,所述第一获取模块包括:
第一输入子模块,用于将当前帧单目图像和所述当前帧的前一帧单目图像输入至第一网络模型,以获得所述当前帧单目图像对应的第一深度图,所述第一网络模型是根据第一训练样本训练得到的,所述第一训练样本包括:连续两帧历史单目图像、所述连续两帧中的最后一帧单目图像对应的深度图以及双目相机在所述最后一帧单目图像对应时刻下采集的左目图像对应的深度图;
第一获取子模块,用于获得所述当前帧的前一帧单目图像对应的第二深度图;
第二输入子模块,用于将当前帧单目图像和所述前一帧单目图像输入至第二网络模型,以获得所述当前帧单目图像和所述前一帧单目图像对应的第一光流特征,所述第二网络模型是根据第二训练样本训练得到,所述第二训练样本包括:连续两帧历史单目图像、所述连续两帧历史单目图像对应的二维光流以及所述双目相机在所述连续两帧历史单目图像分别对应时刻下采集的连续两帧历史左目图像对应的三维光流在连续两帧中最后一帧左目图像投影的二维光流。
可选地,所述第三确定模块包括:
第三输入子模块,用于将所述数据、所述惯性测量器件的状态输入至第三网络模型,以获得所述移动设备在所述时间段内的第二运动轨迹,所述第三网络模型是根据第三训练样本训练得到的,所述第三训练样本包括:所述惯性测量器件在连续两帧历史单目图像对应的历史时间段内测量的数据、预估的所述惯性测量器件在所述连续两帧中的第一帧单目图像对应时刻下的状态、所述移动设备在所述历史时间段内的第二运动轨迹以及所述双目相机在所述历史时间段内的第三运动轨迹;
第四输入子模块,用于将所述第二运动轨迹和所述第一光流特征输入至第四网络模型,以获得所述移动设备在所述时间段内的第一运动轨迹,所述第四网络模型是根据第四训练样本训练得到的,所述第四训练样本包括:所述移动设备在所述历史时间段内的第二运动轨迹、所述连续两帧历史单目图像中最后一帧单目图像对应的第一光流特征、所述移动设备在所述历史时间段内的第一运动轨迹、以及所述双目相机在所述历史时间段内的第三运动轨迹。
可选地,所述生成模块,用于通过以下公式生成稠密地图:
其中,M表征所述稠密地图,表征使取最小值时的第一运动轨迹T,At-1表征所述第二帧点云,Bt表征所述第一帧点云,T表征所述第一运动轨迹。
可选地,所述装置还包括:
预估模块,用于根据所述第一运动轨迹、所述第二运动轨迹以及以下公式,预估所述惯性测量器件在所述第二时刻下的状态:
其中,St表征预估的所述惯性测量器件在所述第二时刻下的状态,ρ表征Huber损失函数,ΣI表征预积分信息矩阵,eR、eP分别表征所述第一运动轨迹和所述第二运动轨迹之间的旋转误差、平移误差,ΔRLSTM、ΔRVIO分别表征所述第一时刻和所述第二时刻的时间段内通过所述第三网络模型、所述第四网络模型确定的旋转量,表征预估的所述惯性测量器件在所述第一时刻下的状态,ΔpVIO、ΔpLSTM分别表征所述第一时刻和所述第二时刻的时间段内通过所述第三网络模型、所述第四网络模型确定的平移量。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面提供的所述方法的步骤。
本公开还提供一种移动设备,包括:
单目相机,用于采集单目图像;
双目相机,用于采集双目图像,所述双目图像包括:左目图像和右目图像;
惯性测量器件,用于测量在相邻两帧所述单目图像对应的时间段内所述移动设备的角速度和加速度数据;
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面提供的所述方法的步骤。
采用上述技术方案,根据惯性测量器件在前一帧单目图像对应的第一时刻和所述当前帧单目图像对应的第二时刻的时间段内测量的数据、预估的惯性测量器件在前一时刻下的状态,以及当前帧单目图相对应的第一光流特征,确定移动设备在该时间段内的第一运动轨迹。如此,综合考虑通过惯性测量器件测得的移动设备的运动轨迹,以及通过相邻两帧单目图像的运动确定的移动设备的运动轨迹,确定出移动设备的第一运动轨迹,提高了移动设备的定位精度。此外,由于考虑到了预估的惯性测量器件在前一时刻下的状态,减少了因惯性测量器件的测量误差导致的定位不准的问题,所以,可以进一步提高定位的精度。并且,由于采用的是惯性测量器件在时间段内测量的数据,因此,无需对单目相机、IMU的时间同步性进行标定。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开一示例性实施例示出的一种单目视觉建图和定位方法的流程图。
图2是根据本公开一示例性实施例示出的一种单目视觉建图和定位方法的示意图。
图3是根据本公开一示例性实施例示出的一种单目视觉建图和定位方法的流程图。
图4是根据本公开一示例性实施例示出的一种单目视觉建图和定位装置的框图。
图5是根据一示例性实施例示出的一种移动设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
为了解决相关技术中,对单目相机参数、IMU参数、以及单目相机和IMU时间同步性较为敏感的问题,本公开提供一种单目视觉建图和定位方法、装置、存储介质及移动设备。
图1是根据本公开一示例性实施例示出的一种单目视觉建图和定位方法的流程图,该方法应用于移动设备,且该移动设备包括单目相机和惯性测量器件IMU。如图1所示,该方法可以包括以下步骤。
在步骤11中,分别获取当前帧单目图像对应的第一深度图和第一光流特征,以及当前帧的前一帧单目图像对应的第二深度图。
执行本方法的移动设备可以为智能机器人、Meta头盔等。移动设备在移动的过程中,其包括的单目相机可以实时采集到该单目相机视野内的图像,其中,该单目相机视野为单目相机所能拍摄的到的环境范围。由于单目相机在同一时刻只能采集到一帧单目图像,而确定深度图像时至少需要两帧图像,所以,在本公开中,分别需要获取到当前帧单目图像IL,t和当前帧的前一帧单目图像IL,t-1,以确定出当前帧单目图像IL,t对应的第一深度图。同理,在确定当前帧的前一帧单目图像对应的第二深度图时,也需要获取到当前帧的前一帧单目图像IL,t-1和当前帧的前两帧单目图像IL,t-2,才能确定出当前帧的前一帧单目图IL,t-1对应的第二深度图。在本公开中第一光流特征用于反映当前帧单目图像IL,t和当前帧的前一帧单目图像IL,t-1之间像素点运动的特征,其可以用向量表示。
在步骤12中,根据第一深度图和当前帧单目图像对应的第一RGB图,确定与当前帧单目图像对应的第一帧点云。
在步骤13中,根据第二深度图和前一帧单目图像对应的第二RGB图,确定与所述前一帧单目图像对应的第二帧点云。
在本公开中,第一RGB图、第二RGB图可以直接通过视觉传感器、RGB-D相机等现有的图像获取装置直接获取得到,也可以是后期处理得到,本公开中对于该第一RGB图、第一RGB图的来源不做限制,只要是该第一RGB图与当前帧单目图像对应,第二RGB图与前一帧单目图像对应即可。其中,第一帧点云和第二帧点云包括三维坐标(x,y,z)和颜色信息(r,g,b)。
示例地,确定当前帧单目图像对应的第一帧点云的具体实施方式可以为:首先,在当前帧单目图像IL,t和当前帧的前一帧单目图像IL,t-1中确定出一对互相匹配的像素点,P1(u1,v1)和P2(u2,v2),假设在相邻两个时刻下,单目相机距离地面的高度不变,即,v1=v2,视差S=u1-u2,则可以根据公式(1)确定像素点P1的深度D:
接着,根据公式(2)确定出当前帧单目图像IL,t中的像素点P1的点云C:
C=K1 -1D[u1,v1,1]T (2)
其中,K1为单目相机内参。
然后,从与当前帧单目图像对应的第一RGB图中确定出与当前帧单目图像中的像素点P1相匹配的点,并将该像素点的颜色信息(r,g,b)添加至像素点P1的点云中。
针对当前帧单目图像中所有的特征点,均执行上述方式,进而得到当前帧单目图像对应的第一帧点云。同样地,参照上述方式,也可以确定出前一帧单目图像对应的第二帧点云。
在步骤14中,获取惯性测量器件在前一帧单目图像对应的第一时刻和当前帧单目图像对应的第二时刻的时间段内测量的数据,以及预估的惯性测量器件在第一时刻下的状态。
在本公开中,该时间段是指以第一时刻t-1为起始时刻,第二时刻t为终止时刻的时间段,该惯性测量器件可以包括陀螺仪和加速度计,该惯性测量器件在该时间段内测量的数据可以为移动设备在该时间段内的角速度数据和加速度数据。预估的惯性测量器件在第一时刻下的状态可以为陀螺仪和加速度计在第一时刻下的偏置。
在步骤15中,根据惯性测量器件测量的数据、惯性测量器件的状态、第一光流特征,确定移动设备在时间段内的第一运动轨迹。
需要理解的是,惯性测量器件测量的数据在一定程度上可以表征通过惯性测量器件测得的移动设备的运动轨迹,第一光流特征在一定程度上可以表征通过相邻两帧单目图像的运动确定的移动设备的运动轨迹。因此,在本公开中,确定移动设备在t-1时刻至t时刻时间段内的第一运动轨迹时,综合考虑了惯性测量器件测量的数据和第一光流特征,使得所确定的第一运动轨迹较为准确,即,提高了移动设备的定位精度。此外,惯性测量器件为测量仪器,在测量数据时有一个零点位,但是通常这个零点位是变化的,在本公开中,在计算t-1时刻至t时刻的时间段内的第一运动轨迹时,除了考虑到惯性测量器件测量的数据和第一光流特征之外,还考虑了预估的惯性测量器件在前一时刻下的偏置,因此,可以进一步提高定位的精度。
在步骤16中,根据第一运动轨迹、第一帧点云和第二帧点云,生成稠密地图。
相邻两帧单目图像中包括相同场景,该相同场景由于移动设备的移动,在图像中的位置不同。假设移动设备在第一时刻至第二时刻的时间段内在z轴方向上移动了0.01m,同一场景在第一时刻下采集到的图像中的位置,与在第二时刻下采集到的图像中的位置在z轴方向上可能会变化0.01m,示例地,某一物体在在前一帧图像中的坐标为(0,0,0),在当前帧图像中的坐标可能为(0,0,0.01)。为了在相邻两帧图像中匹配出相同的像素点,在本公开中,可以基于移动设备的第一运动轨迹,在第一帧点云和第二帧点云中依次确定出相匹配的点,并将相匹配的两个点云进行合并。另外,将未匹配的点云,与匹配后合并的点云拼接成一帧尺寸更大的点云。如此,针对建立地图的区域,均按照上述方式进行合并以及拼接,最终可以得到该区域的稠密地图。
采用上述技术方案,根据惯性测量器件在前一帧单目图像对应的第一时刻和所述当前帧单目图像对应的第二时刻的时间段内测量的数据、预估的惯性测量器件在前一时刻下的状态,以及当前帧单目图相对应的第一光流特征,确定移动设备在该时间段内的第一运动轨迹。如此,综合考虑通过惯性测量器件测得的移动设备的运动轨迹,以及通过相邻两帧单目图像的运动确定的移动设备的运动轨迹,确定出移动设备的第一运动轨迹,提高了移动设备的定位精度。此外,由于考虑到了预估的惯性测量器件在前一时刻下的状态,减少了因惯性测量器件的测量误差导致的定位不准的问题,所以,可以进一步提高定位的精度。并且,由于采用的是惯性测量器件在时间段内测量的数据,因此,无需对单目相机、IMU的时间同步性进行标定。
首先,对本公开所使用的第一网络模型、第二网络模型、第三网络和第四网络的训练过程进行说明。
如图2所示,该第一网络模型可以为Mono-Depth神经网络模型,该模型是根据第一训练样本训练得到的,其中该第一训练样本可以包括:连续两帧历史单目图像、连续两帧中的最后一帧单目图像对应的深度图以及双目相机在最后一帧单目图像对应时刻下采集的左目图像对应的深度图。
需要说明的是,该移动设备除了包括单目相机、惯性测量器件之外,还可以包括双目相机。在Mono-Depth神经网络模型进行训练时,将连续两帧历史单目图像IL,1、IL,2输入至Mono-Depth神经网络模型以得到连续两帧中的最后一帧单目图像对应的深度图Depth。同时,控制双目相机在采集历史单目图像IL,2的时刻t2下采集左目图像IL,t2和右目图像IR,t2,并将该左目图像IL,t2和该右目图像IR,t2输入至第五神经网络模型(其可以例如为PSMnet网络模型、ASMnet网络模型、PSMnet网络模型、DSMnet网络模型等等)中(在图2中以第五神经网络为PSMnet网络模型为例),以得到在时刻t2下采集的左目图像IL,t2对应的深度图t2Depth。以在时刻t2下采集的左目图像IL,t2对应的深度图t2Depth作为Mono-Depth神经网络模型输出的连续两帧中的最后一帧单目图像对应的深度图Depth的约束真值,对该Mono-Depth神经网络模型进行训练。示例地,根据在时刻t2下采集的左目图像IL,t2对应的深度图和Mono-Depth神经网络模型输出的深度图,确定Mono-Depth神经网络模型的损失函数(如图2中的MonoDepth Loss),该损失函数如公式(3)所示:
其中,Ldepth表征Mono-Depth神经网络模型的损失函数,EPE表征预测误差期望(Expected Prediction Error),Dmono(u,v)表征Mono-Depth神经网络模型输出的连续两帧中的最后一帧单目图像对应的深度图,Dstereo(u,v)表征在时刻t2下采集的左目图像对应的深度图。
当损失函数Ldepth小于或等于第一阈值时,认为对Mono-Depth神经网络模型训练完成,所得到的Mono-Depth神经网络模型即为第一网络模型。
如图2所示,第二网络模型可以为CNN(Convolutional Neural Networks,卷积神经网络)-Flow神经网络模型,该模型是根据第二训练样本训练得到的,该第二训练样本可以包括:连续两帧历史单目图像、连续两帧历史单目图像对应的二维光流以及双目相机在连续两帧历史单目图像分别对应时刻下采集的连续两帧历史左目图像对应的三维光流在连续两帧中最后一帧左目图像投影的二维光流。
在对第二网络模型进行训练时,首先,将连续两帧历史单目图像IL,1、IL,2输入至CNN-Flow神经网络模型,以得到连续两帧历史单目图像IL,1、IL,2对应的二维光流(2DOptical Flow)。同时,控制双目相机在采集历史单目图像IL,1的时刻t1下采集左目图像IL,t1和右目图像IR,t1,以及在采集历史单目图像IL,2的时刻t2下采集左目图像IL,t2和右目图像IR,t2,将时刻t1下采集左目图像IL,t1和右目图像IR,t1输入至第六神经网络模型在(图2中以第五神经网络为PSMnet网络模型为例),以得到时刻t1下采集的左目图像IL,t1对应的深度图t1Depth,将时刻t2下采集左目图像IL,t2和右目图像IR,t2输入至第五神经网络模型(PSMnet网络模型),以得到时刻t2下采集的左目图像IL,t2对应的深度图t2Depth。其中,第六神经网络模型与第五神经网络模型为相同的模型。
接着,根据时刻t1下采集的左目图像IL,t1对应的深度图t1Depth和该左目图像IL,t1对应的RGB图,确定时刻t1下采集的左目图像IL,t1对应的第三帧点云,以及,根据时刻t2下采集的左目图像IL,t2对应的深度图t2Depth和该左目图像IL,t2对应的RGB图,确定时刻t2下采集的左目图像IL,t2对应的第四帧点云。其中,确定点云的具体方式可以参照上述公式(1)和(2),在此不再赘述。
接着,根据第三帧点云和第四帧点云,确定在时刻t1下采集的左目图像IL,t1和在时刻t2下采集的左目图像IL,t2对应的三维光流3D Optical Flow。具体地,利用ICP算法(Iterative Closest Point迭代最近点算法)在第三帧点云和第四帧点云中进行对应点匹配,以得到在时刻t1下采集的左目图像IL,t1和在时刻t2下采集的左目图像IL,t2对应的三维光流3D Optical Flow,其中,可以利用ICP算法参照公式(4)进行点云匹配:
其中,表征三维光流,(Vx,Vy,Vz)表征光流在x轴、y轴、z轴方向上的位置,ΔI表征ICP算法,Ct1表征第三帧点云,Ct2表征第四帧点云。
然后,在确定出在时刻t1下采集的左目图像IL,t1和在时刻t2下采集的左目图像IL,t2对应的三维光流之后,将该三维光流在时刻t2下采集的左目图像IL,t2中投影,以得到在时刻t2下采集的左目图像对应的二维光流(Synthetic 2D Optical Flow)示例地,可以根据公式(5)确定二维光流
其中,K2表征双目相机中的左目相机内参,DL(x,y)为时刻t2下采集的左目图像对应的深度图。
最后,以投影得到的二维光流(Synthetic 2D Optical Flow)作为CNN-Flow模型输出的连续两帧历史单目图像IL,1、IL,2对应的二维光流(2D Optical Flow)的约束真值,对CNN-Flow模型进行训练。示例地,根据投影得到的二维光流、CNN-Flow模型输出的连续两帧历史单目图像IL,1、IL,2对应的二维光流,确定CNN-Flow模型的损失函数(如图2中的CNN-Flow Loss),该损失函数如公式(6)所示:
其中,Lflow表征CNN-Flow模型的损失函数,表征投影得到的二维光流,表征CNN-Flow模型输出的连续两帧历史单目图像IL,1、IL,2对应的二维光流。
当损失函数Lflow小于或等于第二阈值时,认为对CNN-Flow模型训练完成,所得到的CNN-Flow模型即为第二网络模型。
需要说明的是,对模型进行训练的时候,训练样本中可以包括多组连续两帧历史单目图像。例如,在第一次训练时,可以使用连续两帧历史单目图像IL,1、IL,2,在第二次训练时,可以使用连续两帧历史单目图像IL,3、IL,4等,在本公开中,对连续两帧历史单目图像的组数不作具体限定。
如图2所示,该第三网络模型可以为LSTM(long short term memory,长短期记忆网络)-IMU神经网络模型,该模型是根据第三训练样本训练得到的,该第三训练样本可以包括:惯性测量器件在连续两帧历史单目图像对应的历史时间段内测量的数据、预估的惯性器件在连续两帧中的第一帧历史单目图像对应时刻下的状态、移动设备在所述历史时间段内的第二运动轨迹以及双目相机在历史时间段内的第三运动轨迹。
如上文所述,该移动设备包括双目相机。在对LSTM-IMU神经网络模型进行训练时,首先,将惯性测量器件在连续两帧历史单目图像对应的历史时间段内测量的数据、预估的惯性器件在连续两帧中的第一帧历史单目图像对应时刻下的状态输入至LSTM-IMU神经网络模型,以得到通过惯性测量器件确定的移动设备在历史时间段内的第二运动轨迹。具体地,假设连续两帧历史单目图像分别对应的采集时刻为t1、t2,惯性测量器件在t1至t2的时间段内测量的数据为IMUt1、t2,预估的惯性测量器件在时刻t1下的状态为[Ba,Bg]t1,其中,Ba表征预估的加速度计在t1时刻下的偏差,Bg表征预估的陀螺仪在t1时刻下的偏差。如图2所示,将IMUt1、t2、和[Ba,Bg]t1输入至LSTM-IMU神经网络模型,以得到通过惯性测量器件确定的移动设备在历史时间段内的第二运动轨迹IMU-se3,且第二运动轨迹IMU-se3为六维向量。
接着,根据时刻t1下采集的左目图像IL,t1对应的深度图t1Depth和该左目图像IL,t1对应的RGB图,确定时刻t1下采集的左目图像IL,t1对应的第三帧点云,以及,根据时刻t2下采集的左目图像IL,t2对应的深度图t2Depth和该左目图像IL,t2对应的RGB图,确定时刻t2下采集的左目图像IL,t2对应的第四帧点云。其中,确定点云的具体方式可以参照上述公式(1)和(2),此处不再赘述。根据第三帧点云和第四帧点云,利用ICP算法获得双目相机在t1至t2的时间段内的第三运动轨迹Stereo-se3。其中,由于双目相机设置在移动设备上,所以,获得的双目相机的运动轨迹也即是移动设备的运动轨迹,在本公开中,为了区别通过不同的器件(例如单目相机、IMU和双目相机)获得的移动设备的运动轨迹,此处用双目相机在t1至t2的时间段内的第三运动轨迹表示。
示例地,利用ICP算法参照公式(7)得到第三运动轨迹stereo-se3:
其中,I(Ct1,Ct2)表征第三帧点云和第四帧点云的匹配索引,R,t表示在该历史时间段内双目相机的旋转和平移,stereo-se3[w,v]表征在第三运动轨迹中的任一位置处的双目相机的位姿,so(3)表征双目相机的旋转向量,表征双目相机的平移向量。需要说明的是,第三运动轨迹stereo-se3也为六维向量。
最后,以双目相机在t1至t2的时间段内的第三运动轨迹stereo-se3作为LSTM-IMU神经网络模型输出的第二运动轨迹IMU-se3的约束真值,对LSTM-IMU神经网络模型进行训练。示例地,根据第二运动轨迹IMU-se3和第三运动轨迹stereo-se3,确定LSTM-IMU神经网络模型的损失函数(如图2中的IMU Loss),该损失函数如公式(8)所示:
其中,LIMU表征LSTM-IMU神经网络模型的损失函数,w、v表征第三运动轨迹stereo-se3中的旋转、平移,表征第二运动轨迹IMU-se3中的旋转、平移,β为权值,取值范围为(0,1)。
当损失函数LIMU小于或等于第三阈值时,认为对LSTM-IMU神经网络模型训练完成,所得到的LSTM-IMU神经网络模型即为第三网络模型。
如图2所示,第四网络模型可以为FC(fully connected,全连接)-Fusion神经网络模型,该模型是基于第四训练样本训练得到的,该第四训练样本包括:移动设备在历史时间段内的第二运动轨迹、连续两帧历史单目图像中最后一帧单目图像对应的第一光流特征、移动设备在历史时间段内的第一运动轨迹、以及双目相机在历史时间段内的第三运动轨迹。
在对第四网络模型进行训练时,首先,将移动设备在历史时间段内的第二运动轨迹IMU-se3,以及连续两帧历史单目图像中最后一帧单目图像IL,2对应的第一光流特征OFF输入至FC-Fusion神经网络模型,以得到移动设备在历史时间段内的第一运动轨迹VIO-se3。然后,以双目相机在t1至t2的时间段内的第三运动轨迹stereo-se3作为FC-Fusion神经网络模型输出的移动设备在历史时间段内的第一运动轨迹VIO-se3的约束真值,对FC-Fusion神经网络模型进行训练。示例地,根据第三运动轨迹stereo-se3和第一运动轨迹VIO-se3,确定FC-Fusion神经网络模型的损失函数(如图2中的Fusion Loss),该损失函数如公式(9)所示:
其中,LVIO表征FC-Fusion神经网络模型的损失函数,表征第一运动轨迹VIO-se3中的旋转、平移,β'为权值,取值范围为(0,1)。
当损失函数LVIO小于或等于第四阈值时,认为对FC-Fusion神经网络模型训练完成,所得到的FC-Fusion神经网络模型即为第四网络模型。
需要说明的是,对第一网络模型、第二网络模型、第三网络模型、第四网络模型进行训练的方式并不局限于上文描述的方式,还可以采用其他实施方式进行训练,对此不作具体限定。此外,在本公开中,可以只对第一网络模型和第二网络模型按照上述方式进行训练,对第三网络模型和第四网络采用其他的方式进行训练,也可以以只对第三网络模型和第四网络模型按照上述描述的方式进行训练,对第一网络模型和第二网络采用其他的方式进行训练,还可以对第一网络模型、第二网络模型、第三网络模型和第四网络模型均按照上述方式进行训练(如图2所示)。
通过上述技术方案,利用移动设备中包括的双目相机对单目视觉建图和定位方法中所用到的网络模型进行约束,不需要利用额外的系统(例如外部GPS系统、动作捕捉系统)提供约束真值,简化了单目视觉建图和定位方法,使单目视觉建图和定位方法应用范围更广。
接着,以一个完成的实施例对本公开提供的单目视觉建图和定位方法进行说明。
如图3所示,图1中的步骤11可以具体包括步骤111和步骤112。
在步骤111中,将当前帧单目图像和当前帧的前一帧单目图像输入至第一网络模型,以获得当前帧单目图像对应的第一深度图。
具体地,将当前帧单目图像IL,t和当前帧的前一帧单目图像IL,t-1,输入至Mono-Depth神经网络模型,以获得当前帧单目图像IL,t对应的第一深度图。
在步骤112中,获得当前帧的前一帧单目图像对应的第二深度图。
在本公开中,该当前帧的前一帧单目图像也是基于第一网络模型获得的,一种可能的实施方式为:在单目相机采集到当前帧的前一帧单目图像时,将当前帧的前一帧单目图像和当前帧的前两帧单目图像输入至第一网络模型中,以获得当前帧的前一帧单目图像对应的第二深度图。在该实施方式中,第二深度图是预先得到的,在后续方法中可以直接获得使用。另一种可能的实施方式为:在单目相机采集到当前帧单目图像时,将当前帧单目图像和当前帧的前一帧单目图像输入至第一网络模型得到第一深度图,并将当前帧的前一帧单目图像和当前帧的前两帧单目图像也输入至第一网络模型以得到第二深度图。其中,获得第二深度图的方式与获得第一深度图的方式相同。
在步骤113中,将当前帧单目图像和前一帧单目图像输入至第二网络模型,以获得当前帧单目图像和前一帧单目图像对应的第一光流特征。
具体地,在将当前帧单目图像IL,t和前一帧单目图像IL,t-1输入至CNN-Flow模型中时,该模型除了输出当前帧单目图像IL,t和前一帧单目图像IL,t-1对应的二维光流之外,还可以输出当前帧单目图像IL,t和前一帧单目图像IL,t-1对应的第一光流特征OFF。
在步骤12中,根据第一深度图和当前帧单目图像对应的第一RGB图,确定与前帧单目图像对应的第一帧点云。
在步骤13中,根据第二深度图和前一帧单目图像对应的第二RGB图,确定与前一帧单目图像对应的第二帧点云。
确定第一帧点云、第二帧点云的具体实施方式如上文所述,此处不再赘述。
在步骤14中,获取惯性测量器件在前一帧单目图像对应的第一时刻和当前帧单目图像对应的第二时刻的时间段内测量的数据,以及预估的惯性测量器件在第一时刻下的状态。
在步骤15中,根据惯性测量器件测量的数据、惯性测量器件的状态、第一光流特征,确定移动设备在时间段内的第一运动轨迹。
具体地,该步骤的具体实施方式可以为:首先,将惯性测量器件在该时间段内测量的数据,以及在第一时刻下预估的惯性测量器件的状态输入至第三网络模型,以获得移动设备在该时间段内的第二运动轨迹。
示例地,将惯性测量器件在t-1时刻至t时刻时间段内的测量的IMU数据,以及预估的惯性测量器件在t-1时刻下的状态,输入至LSTM-IMU神经网络模型,以得到移动设备在t-1时刻至t时刻时间段内的第二运动轨迹IMU-se3。
接着,将第二运动轨迹和第一光流特征输入至第四网络模型,以获得移动设备在该时间段内的第一运动轨迹。
示例地,将第二运动轨迹IMU-se3和第一光流特征OFF输入至FC-Fusion神经网络模型,得到移动设备在t-1时刻至t时刻时间段内的第一运动轨迹VIO-se3。
在步骤16中,根据第一运动轨迹、第一帧点云和第二帧点云,生成稠密地图。
具体地,可以根据第一运动轨迹,在相邻两帧点云中确定出相匹配的点云,将相匹配的两个点云进行合并,并将未匹配的点云与合并后的点云拼接成一帧尺寸更大的点云,进而生成稠密地图。但是,在实际应用中,相匹配的点云在相邻两帧点云中的变化与第一运动轨迹并不完全相同,若严格根据第一运动轨迹进行匹配,可能无法确定出完全相匹配的点云,因此,在本公开中,可以通过公式(10)生成稠密地图:
其中,M表征生成的稠密地图,表征使取最小值时的第一运动轨迹T,At-1表征第二帧点云,Bt表征第一帧点云,T表征第一运动轨迹。
示例地,假设由第四模型输出的第一运动轨迹T可知,该移动设备在第一时刻至第二时刻的时间段内在z轴方向上移动了1cm,但是,对应于同一场景的特征点在相邻两帧点云中的位置坐标为(10,10,9)和(10,10,9.9),这样,如果按照第一运动轨迹T在第一帧点云中确定与第二帧点云中位置坐标为(10,10,9)的点云相匹配的点云的位置坐标为(10,10,10),但是,实际上,在第一帧点云中可能不存在位置坐标为(10,10,10)的点云,这样,就会认为在第一帧点云中不存在与第二帧点云中位置坐标为(10,10,9)的点云相匹配的点云。因此,为了避免上述问题,在本公开中,对相邻两帧点云进行点云匹配时,可以对第一运动轨迹T进行调整。示例地,若对应于同一场景的像素点在相邻两帧点云中的位置坐标为(10,10,9)和(10,10,9.9),此时,为了将第二帧点云中位置坐标为(10,10,9)点云和第一帧点云中位置坐标为(10,10,9.9)的点云进行匹配,可以将第一运动轨迹T中在z轴方向上移动了1cm改成在z轴方向上移动了0.9cm。按照上述方式,针对相邻两帧点云中相匹配的两个点云,相应地调整第一运动轨迹T,最终得到使最小的第一运动轨迹T,从而按照该第一运动轨迹T,对相邻两帧点云进行匹配合并以及拼接,最终得到稠密地图。
通过上述技术方案,由于是通过网络模型获得到的深度图、点云以及移动设备的运动轨迹,且该网络模型是经过训练得到的,所以,在建图和定位的过程中无需对单目相机参数和IMU参数进行标定,使得建图和定位更为简单。
此外,考虑到惯性测量器件为测量仪器,为了提高对数据测量的准确度,在测量数据时需要考虑到惯性测量器件的偏置,因此,在本公开中,如图2所示,在确定出第一运动轨迹VIO-se3和第二运动轨迹IMU-se3之后,还可以根据第一运动轨迹和第二运动轨迹,预估惯性测量器件在第二时刻下的状态(如图2中的Status Update),并将该惯性测量器件在第二时刻下的状态与惯性测量器件在第二时刻和下一时刻的时间段内测量的数据一起作为第三网络模型的输入,以得到下一时刻的第二运动轨迹。
示例地,可以通过公式(11)预估在第二时刻下的惯性测量器件的状态:
其中,St表征预估的惯性测量器件在第二时刻下的状态,ρ表征Huber损失函数,ΣI表征预积分信息矩阵,eR、eP分别表征第一运动轨迹和第二运动轨迹之间的旋转误差、平移误差,ΔRLSTM、ΔRVIO分别表征第一时刻和第二时刻的时间段内通过第三网络模型、第四网络模型确定的旋转量,ΔpVIO、ΔpLSTM分别表征在一时刻和第二时刻的时间段内通过第三网络模型、第四网络模型确定的平移量,表征预估的惯性测量器件在第一时刻下的状态。
采用上述技术方案,考虑到了惯性测量器件的状态,也即是,在使用惯性测量器件测量数据时,考虑到了惯性测量器件的偏差,所以,可以提高惯性测量器件测量数据的准确度,进而提高了基于该惯性测量器件测量数据确定的第二运动轨迹和第三运动轨迹的准确度,即,使得对移动设备的定位更高。
基于同一发明构思,本公开还提供一种单目视觉建图和定位装置。图4是是根据本公开一示例性实施例示出的一种单目视觉建图和定位装置的框图。如图4所示,该装置可以包括:
第一获取模块41,用于分别获取当前帧单目图像对应的第一深度图和第一光流特征,以及所述当前帧的前一帧单目图像对应的第二深度图;
第一确定模块42,用于根据所述第一深度图和所述当前帧单目图像对应的第一RGB图,确定与所述当前帧单目图像对应的第一帧点云;
第二确定模块43,用于根据所述第二深度图和所述前一帧单目图像对应的第二RGB图,确定与所述前一帧单目图像对应的第二帧点云;
第二获取模块44,用于获取惯性测量器件在所述前一帧单目图像对应的第一时刻和所述当前帧单目图像对应的第二时刻的时间段内测量的数据,以及预估的所述惯性测量器件在所述第一时刻下的状态;
第三确定模块45,用于根据所述数据、所述惯性测量器件的状态、所述第一光流特征,确定移动设备在所述时间段内的第一运动轨迹;
生成模块46,用于根据所述第一运动轨迹、所述第一帧点云和所述第二帧点云,生成稠密地图。
可选地,所述第一获取模块包括:
第一输入子模块,用于将当前帧单目图像和所述当前帧的前一帧单目图像输入至第一网络模型,以获得所述当前帧单目图像对应的第一深度图,所述第一网络模型是根据第一训练样本训练得到的,所述第一训练样本包括:连续两帧历史单目图像、所述连续两帧中的最后一帧单目图像对应的深度图以及双目相机在所述最后一帧单目图像对应时刻下采集的左目图像对应的深度图;
第一获取子模块,用于获得所述当前帧的前一帧单目图像对应的第二深度图;
第二输入子模块,用于将当前帧单目图像和所述前一帧单目图像输入至第二网络模型,以获得所述当前帧单目图像和所述前一帧单目图像对应的第一光流特征,所述第二网络模型是根据第二训练样本训练得到,所述第二训练样本包括:连续两帧历史单目图像、所述连续两帧历史单目图像对应的二维光流以及所述双目相机在所述连续两帧历史单目图像分别对应时刻下采集的连续两帧历史左目图像对应的三维光流在连续两帧中最后一帧左目图像投影的二维光流。
可选地,所述第三确定模块包括:
第三输入子模块,用于将所述数据、所述惯性测量器件的状态输入至第三网络模型,以获得所述移动设备在所述时间段内的第二运动轨迹,所述第三网络模型是根据第三训练样本训练得到的,所述第三训练样本包括:所述惯性测量器件在连续两帧历史单目图像对应的历史时间段内测量的数据、预估的所述惯性测量器件在所述连续两帧中的第一帧单目图像对应时刻下的状态、所述移动设备在所述历史时间段内的第二运动轨迹以及所述双目相机在所述历史时间段内的第三运动轨迹;
第四输入子模块,用于将所述第二运动轨迹和所述第一光流特征输入至第四网络模型,以获得所述移动设备在所述时间段内的第一运动轨迹,所述第四网络模型是根据第四训练样本训练得到的,所述第四训练样本包括:所述移动设备在所述历史时间段内的第二运动轨迹、所述连续两帧历史单目图像中最后一帧单目图像对应的第一光流特征、所述移动设备在所述历史时间段内的第一运动轨迹、以及所述双目相机在所述历史时间段内的第三运动轨迹。
可选地,所述生成模块,用于通过以下公式生成稠密地图:
其中,M表征所述稠密地图,表征使取最小值时的第一运动轨迹T,At-1表征所述第二帧点云,Bt表征所述第一帧点云,T表征所述第一运动轨迹。
可选地,所述装置还包括:
预估模块,用于根据所述第一运动轨迹、所述第二运动轨迹以及以下公式,预估所述惯性测量器件在所述第二时刻下的状态:
其中,St表征预估的所述惯性测量器件在所述第二时刻下的状态,ρ表征Huber损失函数,ΣI表征预积分信息矩阵,eR、eP分别表征所述第一运动轨迹和所述第二运动轨迹之间的旋转误差、平移误差,ΔRLSTM、ΔRVIO分别表征所述第一时刻和所述第二时刻的时间段内通过所述第三网络模型、所述第四网络模型确定的旋转量,表征预估的所述惯性测量器件在所述第一时刻下的状态,ΔpVIO、ΔpLSTM分别表征所述第一时刻和所述第二时刻的时间段内通过所述第三网络模型、所述第四网络模型确定的平移量。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种移动设备500的框图。如图5所示,该移动设备500可以包括:单目相机506、双目相机507、惯性测量器件508,以及处理器501,存储器502。该移动设备500还可以包括多媒体组件503,输入/输出(I/O)接口504,以及通信组件505中的一者或多者。
其中,单目相机506用于采集单目图像,双目相机507用于采集双目挺,该双目图像包括左目图像和右目图像,惯性测量器件508用于测量相邻两帧单目图像对应的时间段内移动设备的角速度和加速度数据。处理器501用于控制该移动设备500的整体操作,以完成上述的单目视觉建图和定位方法中的全部或部分步骤。存储器502用于存储各种类型的数据以支持在该移动设备500的操作,这些数据例如可以包括用于在该移动设备500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如单目图像数据、双目图像数据、IMU数据、IMU状态等等。该存储器502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件503可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器502或通过通信组件505发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口504为处理器501和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件505用于该移动设备500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,移动设备500可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的单目视觉建图和定位方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的单目视觉建图和定位方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由移动设备500的处理器501执行以完成上述的单目视觉建图和定位方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。