核心思想


  本文提出一种通过重建渲染目标物体在不同视角下的3D特征进行位姿估计的方法(LatentFusion)。早期的位姿估计方法中,有种方法就是预先采样得到不同视角下目标物体的图像,通过比对当前图像和不同视角下图像之间的相似性来找到最相似的视角,该视角对应的物体位姿即为目标物体的位姿。这种方法当然是比较原始的,因为采样过程是离散的,采样视角的数量就决定了位姿估计的准确性,另一方面不同视角下的采样工作也是非常繁重的。因此就有人提出根据少量的参考位姿下的图像构建一个特征空间,然后根据输入的新的位姿,通过重建的方式渲染出新位姿下的目标物体图像,这就解决了采样的离散性问题和工作量巨大的问题。作者就延续这样的思路,首先构建一个重建和渲染网络,该网络能够根据输入的目标物体图像和初始位姿,生成初始位姿下的目标物体图像;然后,通过比较生成图像和输入图像之间的相似程度,对初始位姿进行优化,直至生成的图像和输入图像之间的差异小于特定阈值,则当前的位姿即为所求物体的位姿。
在这里插入图片描述


实现过程


在这里插入图片描述


  首先,作者根据输入的




N



N


N
幅参考图像





I


i




\mathcal{I}_i


Ii
以及对应的目标物体掩码图





M


i




\mathcal{M}_i


Mi
和深度图





D


i




\mathcal{D}_i


Di
,构建起相机坐标系下不同视角对应的3D特征。将





x


i



=


[



I


i



,



M


i



,



D


i



]



x_i=[\mathcal{I}_i,\mathcal{M}_i,\mathcal{D}_i]


xi=[Ii,Mi,Di]
输入到2D U-Net网络





g



p


i


x





g_{pix}


gpix
中提取2D图像特征,特征维度为




C


×


H


×


W



C\times H \times W


C×H×W
。利用一个反投影单元





p







p_{\uparrow}


p
将2D图像特征提升为3D空间特征,实现方法也非常简单,将2D特征的通道维度




C



C


C
按照深度维度




D



D


D
进行拆分,得到新的通道维度





C






=


C


/


D



C’=C/D


C=C/D
,则拆分后的3D空间特征维度为





C






×


D


×


H


×


W



C’\times D\times H \times W


C×D×H×W
。接着利用一个3D U-Net网络





g



c


a


m





g_{cam}


gcam
得到相机坐标系下的3D特征





Φ


i



=



g



c


a


m








p










g



p


i


x




(



x


i



)






R




C






×


M


×


M


×


M





\Phi_i=g_{cam} \circ p_{\uparrow} \circ g_{pix}(x_i) \in \R^{C’\times M\times M \times M}


Φi=gcampgpix(xi)RC×M×M×M
,其中




M



M


M
表示相机对应的截头锥体的深度尺寸,如下图所示
在这里插入图片描述
其中




c



c


c
表示目标物体外接框的尺寸,





z


c




z_c


zc
表示目标物体中心点坐标与相机之间的距离,




r



r


r
表示物体的外接半径。3D特征





Φ


i




\Phi_i


Φi
中的每个体素都表示3D空间中的一个点。
  然后,根据相机的外参和内参将每个图像对应的3D特征变换到统一的物体坐标系下。定义一个连续函数




ϕ


(


x


)



\phi(x)


ϕ(x)
用来表示相机空间中的潜层特征,




x



x


x
表示相机坐标系下的一个3D点,则




Φ



\Phi


Φ
就是该连续函数的一个离散采样结果。在物体空间中的潜层特征可以表示为




ψ


(



x






)


=


ϕ


(



W






1





x






)



\psi(x’)=\phi(W^{-1}x’)


ψ(x)=ϕ(W1x)






x







x’


x
表示物体坐标系下的3D点,




W


=


[


R





t


]



W=[R|t]


W=[Rt]
表示物体到相机的外参矩阵,通过对




ψ


(



x






)



\psi(x’)


ψ(x)
进行采样可到到物体坐标系下的3D特征





Ψ


^




\hat{\Psi}


Ψ^
。实际过程中,已知相机坐标系到物体坐标系之间的变换





T



c





o





T_{c\rightarrow o}


Tco
就可以计算得到






Ψ


^



i



=



T



c





o




(



Φ


i



)



\hat{\Psi}_i=T_{c\rightarrow o}(\Phi_i)


Ψ^i=Tco(Φi)

  得到各个视角图像在物体坐标系下对应的3D特征






Ψ


^



i




\hat{\Psi}_i


Ψ^i
后,要将多个特征进行融合。最简单的融合方法是采用平均池化的方式,而作者发现利用RNN网络给不同视角的特征赋予不同的关注度,能得到更好的结果。本文采用ConvGRU对3D特征序列进行处理,得到融合结果




Ψ



\Psi


Ψ

在这里插入图片描述
  接下来,根据目标物体融合的3D特征并给定一个新的相机参数




θ



\theta


θ
,就可以利用渲染网络得到新位姿下的目标物体的深度、掩码和RGB图像信息。因为直接预测RGB图像这样的高频信息是比较困难的,而且预测效果比较模糊,因此作者先预测得到深度和掩码图,然后采用基于图像的渲染方法得到彩色的图像。首先,融合的3D空间特征




Ψ



\Psi


Ψ
经过一个3D U-Net网络





h



o


b


j





h_{obj}


hobj
进行编码,然后使用新的物体到相机的外参矩阵




E



E


E
对其进行变换,接着再用一个3D U-Net网络





h



c


a


m





h_{cam}


hcam
进行解码,得到





Ψ






=



h



c


a


m








T



o





c








h



o


b


j




(


Ψ


)



\Psi ‘=h_{cam} \circ T_{o \rightarrow c}\circ h_{obj}(\Psi)


Ψ=hcamTochobj(Ψ)
。利用一个降维模块





p







p_{\downarrow}


p
将其压缩为2D特征





Φ






=



p






(



Ψ






)



\Phi’=p_{\downarrow}(\Psi’)


Φ=p(Ψ)
,具体实现方法就是将深度维度重新级联起来恢复到通道维度上,然后用1 _ 1的卷积进行融合。2D特征再经过2D U-Net网络





h



p


i


x





h_{pix}


hpix
解码,并使用两个输出分支,分别输出深度图





y



d


e


p


t


h




=



h



d


e


p


t


h








h



p


i


x




(



Φ






)



y_{depth}=h_{depth}\circ h_{pix}(\Phi’)


ydepth=hdepthhpix(Φ)
和分割掩码图





y



m


a


s


k




=



h



m


a


s


k








h



p


i


x




(



Φ






)



y_{mask}=h_{mask}\circ h_{pix}(\Phi’)


ymask=hmaskhpix(Φ)
。本文采用基于图像的渲染方法,根据输入的参考图像来预测输出图像的颜色,给定相机内参矩阵




K



K


K
和输出的深度图,就可以恢复每个输出的图像像素




(


u


,


v


)



(u,v)


(u,v)
在物体坐标系下3D位置坐标




X


=



E






1




(




u






u


0





f


u




z


,




v






v


0





f


v




z


,


z


,


1



)


T




X=E^{-1}(\frac{u-u_0}{f_u}z,\frac{v-v_0}{f_v}z,z,1)^T


X=E1(fuuu0z,fvvv0z,z,1)T
,进而根据参考图像对应的相机参数





θ


i



=


{



K


i



,



W


i



}



\theta_i={K_i,W_i}


θi={Ki,Wi}
,得到其在参考图像





I


i




\mathcal{I}_i


Ii
中对应的像素坐标





x


i






=



K


i




W


i



X



x_i’=K_iW_iX


xi=KiWiX
,并将参考图像中对应的颜色复制到对应的输出像素上去,得到重投影后的彩色图像。
  最后介绍如何根据渲染结果进行位姿估计。本文是通过优化的方式来计算最佳位姿的,首先要给定一个初始位姿,其中平移矩阵




t



t


t
是根据目标物体外接框的中心点及其对应的深度值计算得到,旋转矩阵是利用四元数




q



q


q
表示的,其中方位角和俯仰角利用斐波那契晶格(Fibonacci lattice)得到,而偏航角通过均匀采样得到。将旋转矩阵转换成对数四元数的形式




w


=


(


0


,



w


1



,



w


2



,



w


3



)



w=(0,w_1,w_2,w_3)


w=(0,w1,w2,w3)
,保证在参数更新过程中结果都处于一个有效的单位四元数中
在这里插入图片描述
  在初始位姿的基础上,根据当前位姿的渲染结果与真实输入




x


=


{


I


,


M


,


D


}



x={\mathcal{I},\mathcal{M},\mathcal{D}}


x={I,M,D}
之间的差异可以对位姿估计结果进行优化,目标函数为
在这里插入图片描述
其中,深度损失





L



d


e


p


t


h





\mathcal{L}_{depth}


Ldepth
采用L1损失函数,其可以消除物体的尺度不确定性,并计算预测的深度和真实深度之间的差异
在这里插入图片描述
掩码损失





L



m


a


s


k





\mathcal{L}_{mask}


Lmask
采用交叉熵损失函数,交并比损失





L



i


o


u





\mathcal{L}_{iou}


Liou
计算输入的真实掩码





M







\mathcal{M}^_


M
和预测掩码




M



\mathcal{M}


M
之间的并集像素数量的对数与交集像素数量的对数之间的差值:
在这里插入图片描述
潜层特征损失是描述了中间过程中渲染特征之间的差异:
在这里插入图片描述
其中





H


θ




H_{\theta}


Hθ
表示直到2D映射层之前的渲染网络,





G


θ




G_{\theta}


Gθ
表示重建网络部分,




Ψ



\Psi


Ψ
表示根据参考图像获得的3D特征,





G


θ



(


x


)



G_{\theta}(x)


Gθ(x)
表示根据输入图像获取的3D特征。
  利用Adam算法不断的迭代优化,使得渲染得到的结果和真实输入的结果之间的差异不断减少,直至得到最优的相机位姿估计结果





θ







\theta^*


θ


创新点


  • 提出一种可微分的重建与渲染网络,能够根据参考图像和特定位姿得到特定位姿对应的渲染结果
  • 利用渲染结果,通过迭代优化的方式不断更新位姿估计结果

算法评价


  本文提出了一种基于渲染的位姿估计方法,提取目标物体在参考视角下的3D特征,构成3D特征卷,根据指定的位姿可以渲染得到对应的输出图像,包括深度图、掩码图和RGB图像。通过对比渲染结果和真实输入之间的差异,就可以了解当前估计的位姿和真实位姿之间的差异,利用迭代优化的方式得到最终的优化位姿。本文的方法优点在于无需目标物体的模型,只需要目标物体几个参考图像和对应的位姿就能生成渲染结果,构建出虚拟的3D模型,用于位姿估计。并且在特征空间中比较潜层特征之间的差异,相对于直接比较图像之间的差异要更加的稳定和鲁棒。


如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。在这里插入图片描述