Visual localization is the task of accurate camera pose estimation in a known scene. It is a key problem in computer vision and robotics, with applications including selfdriving cars, Structure-from-Motion, SLAM, and Mixed Reality. Traditionally, the localization problem has been tackled using 3D geometry. Recently, end-to-end approaches based on convolutional neural networks have become popular. These methods learn to directly regress the camera pose from an input image. However, they do not achieve the same level of pose accuracy as 3D structure-based methods. To understand this behavior, we develop a theoretical model for camera pose regression. We use our model to predict failure cases for pose regression techniques and verify our predictions through experiments. We furthermore use our model to show that pose regression is more closely related to pose approximation via image retrieval than to accurate pose estimation via 3D structure. A key result is that current approaches do not consistently outperform a handcrafted image retrieval baseline. This clearly shows that additional research is needed before pose regression algorithms are ready to compete with structure-based methods.
视觉定位是在已知场景下相机位姿准确估计任务。该任务在计算机视觉与机器人领域的关键问题,应用领域有自动驾驶、SFM和混合现实。传统方法中,3D 几何常用于解决该问题。近年来,基于CNN的端对端方法逐渐流行。这些方法从输入图像中直接回归相机的位姿。但是,这类方法很难达到与基于3D结构方法的位姿准确水平。为了理解这种现象,我们为相机位姿回归建立了一个理论模型。我们使用该模型预测了位姿归回技术失败的案例,并通过实验验证了我们的预测。我们进一步使用我们的模型展示了位姿回归更加与通过图像检索进行位姿逼近相关,而不是通过3D结构进行准确的位姿估计。一个重要的结论是**目前的方法并不是一直优胜于手工设计的图像检索的基线。**这清晰地表明了在位姿回归算法可以与基于结构的方法相竞争之前,仍然需要其他研究。
视觉位姿定位的state-of-the-art算法遵循了基于3D结构的方法。第一步是确定了测试图像中像素与场景中3D点的对应关系。通过在RANSAC循环中使用PnP算法,这些对应关系然后用于确定相机的位姿。
这篇文章并没有提出一种新的absolute pose regression (APR)变形以缩小与基于结构方法在位姿准确度上差距,而是关注于理解APR技术与其性能。主要贡献有三:
这节主要介绍了APR的理论模型。
I \mathcal{I} I是一张以相机位姿 p I = ( c I , r I ) \mathbf{p}_{\mathcal{I}} = (\mathbf{c_\mathcal{I}}, \mathbf{r_\mathcal{I}}) pI=(cI,rI)拍摄得到的图像。其中 c I ∈ R 3 \mathbf{c_\mathcal{I}}\in \mathbb{R}^3 cI∈R3为相机, r I ∈ R r \mathbf{r_\mathcal{I}}\in \mathbb{R}^r rI∈Rr为相机旋转。相机的绝对位姿因此就表示为 R 3 + r \mathbb{R}^{3+r} R3+r空间中的一点。
绝对位姿回归(APR)算法学习一个视觉定位函数 L ( I ) = p ^ I L(\mathcal{I})=\hat{\mathbf{p}}_\mathcal{I} L(I)=p^I,其中 p ^ I = ( c ^ I , r ^ I ) \hat{\mathbf{p}}_\mathcal{I}=(\hat{\mathbf{c}}_\mathcal{I}, \hat{\mathbf{r}}_\mathcal{I}) p^I=(c^I,r^I)是对图像 I \mathcal{I} I的相机位姿估计值。
APR是一个instance-level的问题。因此,对于APR,基于CNN的方法使用场景的一系列的图像,标记了它们的相对位姿,以作为训练集。训练目标是最小化损失 L ( p ^ I , p I ) \mathcal L(\hat\mathbf{p}_\mathcal{I}, \mathbf{p}_\mathcal{I}) L(p^I,pI)。
将APR分解为CNN的三个步骤:
将前两步视为一个单独的网络,可以得到训练得到的视觉位姿定位函数 L L L:
L ( I ) = b + P ⋅ E ( F ( I ) ) = b + P ⋅ ( α 1 I , ⋯   , α n I ) T \begin{aligned} L(\mathcal{I}) &= \mathbf{b} + \rm P\cdot E(F(\mathcal{I})) \\ &= \mathbf{b} + \rm P\cdot (\alpha^\mathcal{I}_1,\cdots,\alpha^\mathcal{I}_n)^T\end{aligned} L(I)=b+P⋅E(F(I))=b+P⋅(α1I,⋯,αnI)T
其中 P ∈ R ( 3 + r ) × n \rm{P}\in \mathbb{R}^{(3+r)\times n} P∈R(3+r)×n 是一个映射矩阵, b ∈ R 3 + r \mathbf b \in \mathbb{R}^{3+r} b∈R3+r为偏置项。输出项 L ( I ) L(\mathcal{I}) L(I)为 p ^ I = ( c ^ I , r ^ I ) \hat{\mathbf{p}}_\mathcal{I}=(\hat{\mathbf{c}}_\mathcal{I}, \hat{\mathbf{r}}_\mathcal{I}) p^I=(c^I,r^I)。
设 P j ∈ R 3 + r \mathbf{P}_j\in \mathbb{R}^{3+r} Pj∈R3+r为矩阵 P \mathrm{P} P 的第 j j j列。将预测的相机位姿表示为 P \rm P P列的线性组合:
L ( I ) = b + ∑ j = 1 n α j I P j = ( c ^ I , r ^ I ) L(\mathcal I)=\mathbf b + \sum_{j=1}^n\alpha_j^\mathcal I \mathbf P_j = (\hat{\mathbf{c}}_\mathcal{I}, \hat{\mathbf{r}}_\mathcal{I}) L(I)=b+j=1∑nαjIPj=(c^I,r^I)
进一步将 P j \mathbf{P}_j Pj分解为平移部分 c j ∈ R 3 \mathbf c_j \in \mathbb R^3 cj∈R3和旋转部分 r j ∈ R 3 \mathbf r_j \in \mathbb R^3 rj∈R3 ,因此 P j = ( c j T , r j T ) T \mathbf{ P}_ j = (\bf c_j^T, \bf r_j^T)^T Pj=(cjT,rjT)T。因此:
( c ^ I r ^ I ) = ( c b ^ + ∑ j = 1 n α j I c j r b ^ + ∑ j = 1 n α j I r j ) \begin{pmatrix} \hat \mathbf{c}_\mathcal I \\ \hat \mathbf{r}_\mathcal I \end{pmatrix} = \begin{pmatrix} \hat \mathbf{c_b} + \sum _{j=1}^n \alpha_j^\mathcal I \mathbf c_j\\ \hat \mathbf{r_b} + \sum _{j=1}^n \alpha_j^\mathcal I \mathbf r_j \end{pmatrix} (c^Ir^I)=(cb^+∑j=1nαjIcjrb^+∑j=1nαjIrj)
基于CNN的位姿回归算法,例如PoseNet及其变种,学习得到了位姿基集合 B = { ( c j , r j ) } \mathcal B =\{(\bf c_j, \bf r_j)\} B={(cj,rj)},训练图像中所有的位姿都可以用这些位姿基的线性组合表示。基本上,网络通过学习将这些基通过embedding中的权重进行线性加权得到最终的绝对位姿。将 { c j } \{\bf c_j\} {cj}称为平移基。
基于结构的方法能够成功估计相机位姿的必要条件是提供足够的正确的2D、3D匹配。基于CNN 的位姿回归方法能够学习得到由输入图像到相机位姿映射的必要条件是提供充足的训练数据。但是,收集数量巨大的图像,计算训练真值(通过sfm)并在很大的数据集上训练CNN是一个十分耗时的工作。接下来,使用理论模型预测了位姿回归方法在训练数据集有限的场景下失败的一些案例。此外,展示了基于结构的方法可以有效的处理这些案例。
训练数据集与测试数据集中的真值都是由SfM方法得到。基于CNN的方法选择了具有代表性的PoseNet和MapNet,基于结构的方法选择了Active Search。Active Search 使用了Root-SIFT特征确定了2D-3D匹配关系,位姿估计由RANSAC循环中的P3P方法得到,再经过一个非线性的优化。
T = { ( I , p I = ( c I , r I ) ) } \mathcal{T}=\left\{( \mathcal I, \mathbf p_\mathcal I = (\mathbf c_\mathcal I, \mathbf r_\mathcal I))\right\} T={(I,pI=(cI,rI))}是一组训练图像以及对应的相机位姿。
在前一节提到,位姿回归中,相机位姿是由一组位姿基加权得到。考虑所有训练图像对应的相机位姿都在同一条直线上的场景。在该场景下,每个相机的位置 c I \mathbf c_\mathcal I cI对应与直线上的一点 o + δ d \mathbf o + \delta\mathbf d o+δd。其中, o ∈ R 3 \mathbf o \in \mathbb R^3 o∈R3是直线上的一点, d ∈ R 3 \mathbf d \in \mathbb R^3 d∈R3是直线的方向。训练中一个可能的解是所有的平移基 c j \bf c_j cj都在一条只直线上,那么对于这个解,基于CNN的方法将无法泛化。
下图中两种实验场景说明这一点。其中训练和测试轨迹分别是红色和绿色,PoseNet、MapNet和Active Search的预测值分别为蓝色、紫色和蓝绿色。
可以看到,只有Active Search在两中场景下成功完成了预测,PoseNet、MapNet在考虑到相机抖动的情况下都没有实现泛化。
考虑由训练图像子集 T ′ = I \mathcal T'={\mathcal I} T′=I定义的场景部分 P ′ \mathcal P' P′。子集 B ′ ( P ′ ) \mathcal B'(\mathcal P') B′(P′)对应位姿基 B = { ( c j , r j ) } \mathcal B=\{(\mathbf c_j, \mathbf r_j)\} B={(cj,rj)}中的部分为:
B ′ ( P ′ ) = { ( c j , r j ) ∣ e x i s t s   I ∈ T ′ w i t h ∥ a j I ∥ > 0 } \mathcal B'(\mathcal P') = \left\{(\bf c_j, \bf r_j)| exists \: \mathcal I \in \mathcal T' with \|a_j^\mathcal I\| > 0 \right\} B′(P′)={(cj,rj)∣existsI∈T′with∥ajI∥>0}
泛化的一个强必要条件是每个 B ′ ( P ′ ) \mathcal B'(\mathcal P') B′(P′)的线性张成包含测试图像集合 P ′ 3 \mathcal P'^3 P′3中对应的所有位姿。在实际实验中并不能保证这种情况。
图1和图3展示了更加常规的轨迹。可以看到:
图4展示了一个更加复杂的实验,其中训练轨迹是多个平行的直线,测试轨迹包括了一些平行直线、穿插在训练轨迹间的曲线以及一些训练视场内的曲线组成。可以看到
由于密集采样设计到大量数据,这小节的实验使用了仿真数据。验证了随着训练数据的增加,PoseNet和MapNet的性能都有所提升,但是仍然没有超过Active Search。
在训练数据较少以及视角变化较大的情况下,位姿回归技术性能不佳。这限制了其在实际中的应用。尽管提供了充足的训练数据,位姿回归方法仍然没能达到与基于结构的方法相同的性能。事实上,基于结构的方法遵循了摄影几何的规律,并且强调了场景的3D结构。
前面展示了在训练数据较少的情况下,APR技术得到的测试图像预测值往往比较与训练集相近。这点与图像检索比较相似。这不是巧合,事实上,APR与图像检索有着很强的联系。
设 I \mathcal I I 为一张测试图像, J \mathcal J J为一训练图像,两者具有同一场景的相同部分。记 α I = α J + Δ I \alpha^\mathcal I = \alpha^\mathcal J + \Delta^\mathcal I αI=αJ+ΔI。因此, I \mathcal I I的位姿估计值 ( c ^ I , r ^ I ) (\hat\mathbf c_\mathcal I, \hat\mathbf r_\mathcal I) (c^I,r^I)与 J \mathcal J J的位姿估计值 ( c ^ J , r ^ J ) (\hat\mathbf c_\mathcal J, \hat\mathbf r_\mathcal J) (c^J,r^J)的关系为:
( c ^ I r ^ I ) = ( c ^ J r ^ J ) + ( ∑ j = 1 n Δ j I c I ∑ j = 1 n Δ j I r I ) = ( c ^ J r ^ J ) + ( c ^ I , J r ^ I , J ) \begin{pmatrix} \hat \mathbf c_ \mathcal I \\ \hat \mathbf r_ \mathcal I \end{pmatrix} = \begin{pmatrix} \hat \mathbf c_ \mathcal J \\ \hat \mathbf r_ \mathcal J \end{pmatrix} + \begin{pmatrix} \sum_{j=1}^n\Delta_j^\mathcal I \mathbf c_ \mathcal I \\ \sum_{j=1}^n\Delta_j^\mathcal I \mathbf r_ \mathcal I \end{pmatrix} = \begin{pmatrix} \hat \mathbf c_ \mathcal J \\ \hat \mathbf r_ \mathcal J \end{pmatrix} + \begin{pmatrix} \hat \mathbf c_ \mathcal{I, J} \\ \hat \mathbf r_ \mathcal{I, J} \end{pmatrix} (c^Ir^I)=(c^Jr^J)+(∑j=1nΔjIcI∑j=1nΔjIrI)=(c^Jr^J)+(c^I,Jr^I,J)
其中 ( c ^ I , J , r ^ I , J ) (\hat \mathbf c_ \mathcal{I, J}, \hat \mathbf r_ \mathcal{I, J} ) (c^I,J,r^I,J)是 I \mathcal I I的位姿相对于 J \mathcal J J位姿的预测值的预测值。
标准的图像记过方法首先找到与给定测试图像 I \mathcal I I最相似的训练图像 J \mathcal J J,其相似度的定义有一些特征空间定义,例如词袋(Bag-of-Words)或VLDA。然后,测试图像的位姿由检索得到的图像位姿逼近得到,即 ( c ^ I , r ^ I ) = ( c ^ J , r ^ J ) (\hat \mathbf c_ \mathcal{I}, \hat \mathbf r_ \mathcal{I}) = (\hat \mathbf c_ \mathcal{J}, \hat \mathbf r_ \mathcal{J} ) (c^I,r^I)=(c^J,r^J),没有添加便宜项。但是,检索方法可以由检索得到的前k个训练图像的位姿的仿射组合提供偏置项,即 ∑ j = 1 k a i ( c J i , r J i ) , ∑ a j = 1 \sum_{j=1}^ka_i(\mathbf c _ {\mathcal J_i}, \mathbf r _{\mathcal J_i}), \sum a_j = 1 ∑j=1kai(cJi,rJi),∑aj=1。设检索过程中的 I \mathcal I I的描述子为 d ( I ) \mathbf d(\mathcal I) d(I)。权重 a j a_j aj可以由最小化 ∥ d ( I ) − ∑ i = 1 k a i d ( J i ) ∥ \|\mathbf d(\mathcal I )- \sum_{i=1}^ka_i\mathbf d(\mathcal J_i)\| ∥d(I)−∑i=1kaid(Ji)∥得到。
这种插值方法与基于CNN的位姿回归方法中位姿基线性组合方法比较类似。
进行了四组实验,分别是
这四组实验都从表明了APR方法最好不会超过图像检索(在密集采样、训练数据较多时可能超过),其性能更加接近与检索的基线而不是基于结构的方法。