[0019] 以下结合附图与实施例对本发明方案进行进一步描述。
[0020] 如图4所示,一种级联解耦的位姿估计方法,步骤如下:
[0021] 所述步骤S1基于位姿解耦公式,设计级联解耦位姿估计网络,具体方法如下:
[0022] 所述的位姿解耦公式具体表述为:
[0023] 对于相邻两帧图像Ig和Is,场景点在图像Ig上的投影像素点为pg,在图像Is上的投影像素点为ps,根据相机内参矩阵K、相机位姿矩阵Pg→s、像素点pg在相机坐标系下的深度值zg和像素点ps在相机坐标系下的深度值zs,像素点pg和像素点ps满足刚性运动的投影公式,具体为:
[0024]
[0025] 其中Pg→s为相机从第g帧到第s帧的相机位姿矩阵,Pg→s由一个3×3的旋转矩阵R和一个3×1的平移矩阵T组成,它能够转化为解耦平移矩阵和解耦旋转矩阵的级联相乘,具体为:
[0026]
[0027] 其中,
[0028]
[0029] 其中,PT为4×4的解耦平移矩阵,PR为4×4的解耦旋转矩阵,E3×3为3×3的单位矩阵。
[0030] 将公式(1)代入公式(2)可得:
[0031]
[0032] 根据公式(4),能够得到像素点pg和像素点ps的级联相乘的公式:
[0033]
[0034] 其中公式(4)的第一行为解耦平移矩阵PT的投影公式,公式(4)的第二行为解耦旋转矩阵PR的投影公式。公式(4)称为位姿解耦估计公式,将相机位姿矩阵Pg→s估计分解为解耦平移矩阵PT和解耦旋转矩阵PR的级联估计。
[0035] 所述的级联解耦位姿估计网络(DecoupledPoseNet)包括四个子网络,分别是平移估计网络T‑Net、平移优化网络T‑RefineNet、旋转估计网络R‑Net和旋转优化网络R‑RefineNet。其中T‑Net和R‑Net的结构采用了Lili Lin,Weisheng Wang etc.Unsupervised monocular visual odometry with decoupled camera pose estimation.中的结构,为现有成熟技术。T‑RefineNet和R‑RefineNet分别与T‑Net和R‑Net的结构相同。
[0036] 级联解耦位姿估计网络(DecoupledPoseNet)的具体结构如图1所示,它的具体表述为:
[0037] 在公式(2)的基础上,对旋转矩阵和平移矩阵进一步优化,公式如下所示:
[0038]
[0039] 其中,
[0040]
[0041] 将公式(6)代入公式(1),将公式(1)划分成四个级联部分,然后设计一个级联解耦位姿估计网络,即DecoupledPoseNet。它的网络输入为连续两帧的左相机图像It和It+1,输出为t时刻相对于t+1时刻的相机位姿Pt→t+1,为了得到更加准确的结果,这里同时输出了一个中间结果Pt'→t+1,并且:
[0042]
[0043] 所述步骤S2设计基于级联解耦位姿估计的迭代网络,具体方法如下:
[0044] 所述的基于级联解耦位姿估计的迭代网络包括一个视差估计网络(UnDispNet),一个光流估计网络(UnFlowNet)和一个级联解耦的位姿迭代网络(DecoupledPoseNet_1&DecoupledPoseNet_2),通过视差估计网络(UnDispNet)和光流估计网络(UnFlowNet)的输出结果得到用于处理图像中的运动对象的掩膜。步骤S2的结构如图2所示。
[0045] 所述的视差估计网络(UnDispNet)和光流估计网络(UnFlowNet)采用了与UnOS中DispNet和FlowNet相同的网络结构;
[0046] 所述的视差估计网络(UnDispNet)的结构为一个包含了编码子网和解码子网的U型网络;编码子网的输入为连续两帧的左相机图像It和It+1,通过卷积和下采样提取深层特征信息;解码子网通过卷积和上采样将深层特征信息图尺寸恢复到输入图像尺寸,并得到连续两帧的视差图dt和dt+1。对于视差图d,u为图像空间的水平方向坐标,v为图像空间的垂直方向坐标,则像素点(u,v)的视差值为d(u,v),其深度值z的计算公式为:
[0047]
[0048] 其中B为车载双目立体相机的基线,f为车载双目立体相机的焦距。
[0049] 所述的光流估计网络(UnFlowNet)的结构为一个包含了编码子网和解码子网的U型网络;编码子网由六层光流特征抽取层构成,每一层的光流特征抽取层是由一个步长为2,大小为3×3的卷积核和一个步长为1,大小为4×4的卷积核以及两个Leaky ReLU激活函数构成。光流特征抽取层的第一层是步长为2的卷积层,其作用是特征信息抽取和降采样作用,第二层是步长为1的卷积层,其作用为了对降采样后的特征块信息作细化处理。每一张图像经过六层光流特征抽取层处理获得一个六层的特征金字塔。编码子网的输入是连续两帧的左相机图像It和It+1,输出是两帧的特征金字塔。
[0050] 解码子网利用六层光流特征金字塔结构逐级优化光流,使用了由粗到细(From coarse to fine)的方式来优化光流结果。解码子网能够拆分为六层子网络结构,每层子网络结构中包含了图像特征代价空间生成器和光流估计网络。第一层子网络用来获取初始小尺寸光流图,第二层至第六层逐级扩大光流图尺寸,并以残差形式优化光流图。
[0051] 所述的用于处理图像中的运动对象的掩膜具体表述为:
[0052] t+1时刻的图像It+1通过warp(可微分双线性插值,为成熟技术)得到t时刻的合成图像。图像It和It+1之间存在遮挡区域,遮挡区域会导致合成图无法和原图像It保持一致。根据视差估计网络(UnDispNet)输出的视差图和相机位姿能够获得图像It和It+1之间对应的刚性流图,刚性流图能够描述图像It中静态对象区域和图像It+1中对应区域的像素位移。由于刚性流图无法正确描述运动对象的像素点变换关系,通过刚性流获得的合成图无法正确表示运动对象区域。因此,针对运动对象,使用反向光流图生成光流遮挡图用来解决运动对象导致的遮挡区域在原图上不一致的问题。
[0053] 首先根据光流估计网络(UnFlowNet)得到光流图,然后通过刚性流图和光流图进行差异比较,得到运动对象区域掩膜。首先,比较获取的刚性流和光流的差异获得Fdiff,具体公式为:
[0054]
[0055] 其中 和 分别表示x轴和y轴上的光流, 和 分别表示x轴和y轴上的刚性流。Fdiff中大于阈值的区域表示刚性流和光流不一致的区域,Fdiff中小于阈值的区域表示刚性流和光流一致的区域。Fdiff在阈值λdiff下进行二值化,得到的二值化图Mdiff分成一致区域和非一致区域,具体公式为:
[0056]
[0057] Mregion是二值化后的遮挡掩膜图,其为了将Mdiff中错误的掩盖区域去除,使得Mmotion仅包含了非刚体部分的二值化运动分割掩膜,具体公式为:
[0058]
[0059]
[0060] 所述的基于级联解耦的位姿迭代网络(DecoupledPoseNet_1&DecoupledPoseNet_2)的具体表述为:
[0061] 基于级联解耦的位姿迭代网络包括级联解耦优化结构DecoupledPoseNet_1和级联解耦优化结构DecoupledPoseNet_2,这两个结构与上述的DecoupledPoseNet结构相同,它们的结构如图3所示。为了叙述方便,此处采用step1和step2代替。通过step1结构和step2结构获得四个相机位姿。通过step1结构获得 和 两个相机位姿,此处将 记为 将 记为 step2结构将step1结构得到的相机位姿
作为输入,获得 和 两个相机位姿,此处将 记为
将 记为
[0062] 所述的步骤S3定义级联解耦位姿估计网络和基于级联解耦位姿估计的迭代网络的损失函数,具体方法如下:
[0063] 所述的级联解耦位姿估计网络结构的损失Ltotal包括光流损失Lflow、双目视差损失Ldisparity、刚体一致性损失Lrigid,具体公式为:
[0064] Ltotal=λfLflow+λdLdisparity+λrLrigid (14)
[0065] 其中λf、λd和λr为权重,用于调整不同损失在整个损失函数中的作用。
[0066] 所述的光流损失Lflow,表示为光流图与原图的光流亮度一致性损失,具体公式为:
[0067]
[0068] 其中β为权重;SSIM(·)为两幅图像的结构相似性计算函数,其计算方法为现有成熟方法;||·||1为计算L1距离,Warp为可微分双线性插值方法,为现有成熟方法。
[0069] 所述的双目视差损失Ldisparity由三个约束条件组成:图像亮度一致性损失Lp,视差图几何一致性损失Lg,视差边缘感知平滑损失Ls,具体公式为:
[0070] Ldisparity=λ1Lp+λ2Lg+λ3Ls (16)
[0071] 其中λ1=λ3=1,λ2=10。
[0072] 所述的相机的亮度一致性损失Lp,级联解耦优化结构能够获得PΔTPTPR和PΔTPTPRPΔR两个位姿变换,具体公式为:
[0073]
[0074] 所述的视差图几何一致性损失Lg,是比较左右视差图之间的视差值差异,其先对右视差图Dr使用Warp操作获得合成视差图 通过 和左视差图Dl相加后计算L1距离,来计算双目视差的差异,具体公式为:
[0075]
[0076] 所述的视差边缘感知平滑损失Ls,具体公式为:
[0077]
[0078] 所述的基于级联解耦位姿估计的迭代网络的损失函数由多视点损失Lmulti、双目视差损失Ldisparity、光流损失Loptical组成,具体公式为:
[0079] Ltotal=Loptical+Ldisparity+Lmulti (20)
[0080] 其中双目视差损失Ldisparity与上述的基于无监督学习的级联解耦位姿估计网络结构的双目视差损失一致。
[0081] 所述的多视点损失Lmulti具体公式为:
[0082] Lmulti=LTTR,step1+LTTRR,step1+LTTR,step2+LTTRR,step2 (21)[0083] 其中LTTR,step1是针对 的多视点亮度一致性损失,LTTRR,step1是针对 的多视点亮度一致性损失,LTTR,step2是针对 的多视点亮度一致性损失,LTTRR,step2是针对 的多视点亮度一致性损失。由于在多视点亮度一致性损失中,运动对象掩膜Mregion能够将运动对象排除在多视点亮度一致性损失之外,并且四个位姿 都需要加入到亮度一致性约束中,其具体公式为:
[0084]
[0085] 其中λTTR和λTTRR都是超参数,它们的值分别是0.4和0.6,Moccu·Mmotion作用于多视点的亮度一致性损失, 是由 经过视点合成生成的合成图。
[0086] 所述的光流损失Loptical,由于引入了运动对象掩膜,针对刚性区域使用了光流和刚性流一致性损失Lconsistent,在非刚性区域使用了边缘感知平滑损失Lsmooth,光流的损失公式具体为:
[0087] Loptical=Limage+Lconsistent+Lsmooth (23)
[0088] 其中Limage为光流的亮度一致性损失,它的计算公式为:
[0089]
[0090] 其中 为图片Warp操作后的合成图,它的计算公式为:
[0091]
[0092] 其中Dl为像素点的视差值。
[0093] 所述的光流和刚性流一致性损失Lconsistent,刚性流通过视差图和相机位姿能够获得刚性区域对应像素运动,并且其刚性区域的精度高于光流,但是刚性流无法描述非刚体区域的像素位置变化。因此使用运动对象掩膜将运动对象排除在光流和刚性流一致性约束之外。光流与刚性流一致性损失的公式如下所示:
[0094]
[0095] 所述的边缘感知平滑损失Lsmooth,亮度一致性约束中存在模糊性和任意性问题,而边缘感知平滑约束基于来自边缘检测的边缘图梯度,能够提高边缘感知的平滑度,并且比像素级约束具有更强的语义性。光流的边缘感知平滑损失能够提高光流估计的准确率,也使得光流图在边缘部分与场景中的边缘轮廓一致。由于边缘的模糊性主要来源于运动对象,因此只对运动对象区域使用了边缘感知平滑约束,对应公式如下所示:
[0096]
[0097] 进一步的,步骤3中的λf=λd=λr=1,β为0.8。