# VI3: Grounding Pretrained 3D Foundation Models with Inertial Cues

Ernesto Lozano Alberto Jaenal Javier Civera

I3A, Universidad de Zaragoza, Spain

{e.lozano, ajaenal, jcivera}@unizar.es

![Image](images/1b5b5983361ce00ebe37f4b865a6e8937cd55c98af242bd367d95136bdf429ef.jpg)

<div style="text-align: center;">Figure 1. VI3 grounds the predictions of a pretrained 3D foundation model (trajectory and scene reconstruction shown in red) using inertial data from an onboard IMU (inertial trajectory shown in blue) as GT-free supervision. This leads to a physics-aware, scene-specific trajectory refinement and metric scale recovery, that keeps geometry consistent as seen in the right figure (VI3 results shown in green).</div>

## Abstract

3D foundation models (3DFMs) excel at predicting camera poses and dense depth from multiple views of a scene, showcasing strong zero-shot generalization. However, as metric scale is not observable from monocular images, their absolute scale predictions are typically inaccurate. Inertial measurement units (IMUs), present in most devices, naturally complement monocular cameras by observing scaled motion. We introduce VI3, a model-agnostic framework that metrically anchors a pretrained 3DFM using only IMU readings. VI3 initializes and preintegrates the IMU to obtain a metric motion reference, which is then used to recover the scale of the 3DFM outputs. Our method includes adaptable anchoring strategies tailored to diverse 3DFM architectures. Experiments on synthetic and real aerial datasets demonstrate that VI3 recovers metric scale without ground-truth supervision while preserving geometric consistency, acting as a fine refinement under well-conditioned motion and as a strong prior when motion is less informative. <https://ernestolozano.github.io/vi3>

### 1. Introduction

Estimating 3D scene attributes from unstructured images is a cornerstone of computer vision, with applications in robotics [^30] and neural rendering [^44] among others. For decades, the prevailing paradigm has relied on feature-based pipelines, e.g. Structure-from-Motion (SfM) [^1] [^36] [^41] or visual SLAM [^20] [^33] [^34]. Despite their trajectory accuracy, these methods remain brittle in unconstrained environments [^37] [^40], yielding sparse point clouds rather than the dense geometry required for modern spatial AI [^2] [^44]. Recently, 3D foundation models (3DFMs) have reshaped this landscape. Trained on large, diverse image collections, models such as DUSt3R [^50], VGGT [^47], $\pi^{3}$ [^52], and a growing list of successors [^21] [^24] [^27] [^38] [^48] learn strong geometry and motion priors, predicting camera poses and dense per-pixel geometry from unposed images in a single feed-forward pass.

Nevertheless, 3DFMs process images independently

---

through monocular backbones [^35]. While this enables them to preserve highly accurate relative motion and scene structure, their reconstructions remain defined only up to an unknown scale factor and are therefore decoupled from real-world metric dimensions. This limitation derives from their training: 3DFMs learn under scale-invariant supervision objectives (usually distilled from SfM pipelines [^41] rather than metric signals), making them fundamentally incapable of determining the metric scale of the scene. This remains an open gap: turning a scale-free prediction into a physically anchored, metric reconstruction. Recent work have attempted to enforce metric scale by conditioning inference using camera priors [^16] [^30] or through dedicated tokens [^21]. However, their strong data-driven priors may override explicit metric signals, yielding reconstructions that fail to reflect the real-world dimensions. Crucially, such methods still depend on precise camera calibration (often unavailable in unconstrained settings) or upstream metric poses to produce physically-anchored reconstructions.

This gap can be fully addressed by aligning vision with physical measurements from a sensor ubiquitous across most platforms: an inertial measurement unit (IMU). By providing metric readings, the IMU renders real-world scale observable, with a decade of visual-inertial research [^6] [^12] [^13] sustaining its sufficiency to metrically ground vision.

We introduce a model-agnostic Visual Inertial grounding for 3DFMs (VI3) that enables metric 3DFM reconstruction by just using an IMU; entirely bypassing optimization backends, maps, or external finetuning corpora. Given a short clip, the IMU is initialized leveraging the outputs of the 3DFM (without requiring any GT or external signal) and then preintegrated into a physics-consistent, gravity-aware motion reference that anchors the 3DFM to the real-world. Due to the diversity of 3DFM models, we propose different ways of injecting the metric scale, such as input conditioning (for compatible modes) or test-time refinement $^{[15]}$, thereby scaling the predicted geometry without explicit 3D supervision.

In summary, our contributions are threefold. (1) To the best of our knowledge, V13 is the first method to bring together an inference time the dense 3DFM priors and the metric grounding of inertial sensing with the aim of physically anchoring any model, only requiring an on-board IMU. (2) We propose an IMU initialization method that uses the 3DFM and the inertial readings to estimate the IMU state. (3) We present a test-time refinement formulation to inject physical awareness into 3DFMs and render metric-scale reconstructions. Through extensive experiments on diverse aerial datasets and across several representative 3DFM baselines, we show that V13 metrically grounds a frozen 3DFM from a coarse inertial motion estimate, yielding reconstruction scales close to the real-world.

### 2. Related Work

Feedforward 3D reconstruction. 3DFMs replace the iterative correspondence-and-optimization loop of classical pipelines [^33] [^41], by regressing camera poses and dense per-pixel geometry from unposed images in a feedforward pass. DUST3R [^50] and MAST3R [^24] predict pointmaps from image pairs, with a family of successors focusing on incremental reconstructions [^5] [^8] [^9] [^23] [^26] [^28] [^29] [^31] [^45] [^49] [^53] [^58]; while VGGT [^47], $\pi^{3}$ [^52], and subsequent models [^11] [^27] [^42] [^48] [^54] extend this to multiple views and estimate a set of common 3D attributes jointly (e.g. depth, cameras, pointmaps). These models provide strong and dense geometric priors but are trained under SfM labels, predicting geometry only up to an unknown global scale.

Scale-aware 3DFMs. Recent works have attempted to inject metric scale into 3DFM reconstructions. Some works [^25] [^32] integrate it directly into the attention mechanism. Other approaches opt to use modular auxiliary heads to ingest priors (intrinsics, poses, metric depth) to condition the network during inference. AMB3R [^46] uses a head specifically trained to regress a data-driven scale from the model features. In turn, Pi3X [^52], Depth Anything 3 [^27] and others [^16] [^22] [^30] directly produce metric reconstructions from the scaled inputs, while MapAnything [^21] and variants [^19] use a scale token that allows them to regress the metric scale factor. However, the prior metric scale is still learned, inherited from the training distribution rather than measured; while any metric input depends on a dedicated frontend application. We propose a model-agnostic framework that physically anchors any 3DFM only using inertial signals; conditioning or refining the model output.

Visual-inertial estimation. Inertial sensing resolves the scale ambiguity of monocular vision. Classical visual-inertial systems [^3] [^6] [^13] [^39] estimate metric, gravity-aligned trajectories in real time, but their reconstruction is sparse, covering only trackable features, and runs on a stateful backend tuned to a fixed rig. Closer to our approach, recent work couples unconstrained, learned 3D with inertial data: MASt3R-Fusion [^56] fuses feedforward pointmap correspondences with IMU preintegration in a factor-graph backend, and VIGS-SLAM [^57] optimizes an explicit per-scene 3D Gaussian representation jointly with the IMU states. In both, the inertial signal drives an external optimization, and the pretrained weights are never adapted. This work builds no explicit representation nor recurrent state, instead we use the inertial signal as a lightweight geometric anchor to condition or adapt the model output.

Test-time adaptation of 3D feedforward models. To avoid costly retraining, test-time adaptation updates the weights of the pretrained foundation model during inference to meet a target objective. Generic vision test-time training [^15] tunes parameters to each test input to improve robustness under distribution shifts. For 3DFM reconstru-

---

![Image](images/088d27afbea8b3392e868429ed891a247708f9a286d37d8fc969636cb1d0136f.jpg)

<div style="text-align: center;">Figure 2. VI3's block diagram, consisting of two branches. Visual: a pretrained 3DFM takes unposed input images and yields depth and poses. Inertial: the on-board IMU stream, gt-free initialized and preintegrated, provides a scene-specific target trajectory. On-board inertial cues (green dashed arrows), introduced either via pose conditioning, or through adaption (TTR), ground the reconstruction metric.</div>

tion, recent work [^8] [^17] [^49] [^55] focuses on refinement for long sequence stability and affordability, to achieve linear-time, drift-free visual and temporal consistency. We propose refinement as a way to adapt the 3DFM weights by injecting metric scale to a short monocular video, anchoring the resulting geometry to a physical reference.

### 3. Up-to-Scale Geometry from 3DFMs

A 3DFM $\mathcal{M}$ receives as input n unposed consecutive frames $\{\mathcal{I}_i\}_{i=1}^n$, with $\mathcal{I}_i \in \{0, \ldots, 255\}^{w \times h \times 3}$, and predicts a set of geometric outputs that depends on the specific model, but typically includes pixel-wise depth $\{\mathcal{D}_i^{\mathcal{M}}\}_{i=1}^n, \mathcal{D}_i^{\mathcal{M}} \in \mathbb{R}_+^w \times h$ and camera extrinsics $\{\mathbf{P}_i^{\mathcal{M}}, \mathbf{R}_i^{\mathcal{M}}\}_{i=1}^n \in \mathbb{R}^3 \times SO^3$ for each input image. We assume that camera intrinsics are pre-calibrated, although 3DFMs can also predict them. Point cloud representations $\mathcal{X}_i^{\mathcal{M}} \in \mathbb{R}^{w \times h \times 3}$ can be computed per image from the depth maps and intrinsics.

### 4. Inertial Preintegration

An IMU provides at a discrete time instant k measurements of the angular velocity $\tilde{\omega}_k \in \mathbb{R}^3$ and linear acceleration $\tilde{a}_k \in \mathbb{R}^3$ in the local reference frame, which are affected by additive, slowly-varying biases $b_k^g \in \mathbb{R}^3$ and $b_k^a \in \mathbb{R}^3$ and zero-mean Gaussian noises $\boldsymbol{\eta}^g \sim \mathcal{N}(\mathbf{0}, \boldsymbol{\Sigma}_g) \in \mathbb{R}^3$ and $\boldsymbol{\eta}^a \sim \mathcal{N}(\mathbf{0}, \boldsymbol{\Sigma}_a) \in \mathbb{R}^3$

 $$ \omega_{k}=\tilde{\omega}_{k}-b_{k}^{g}-\eta^{g},\qquad a_{k}=\tilde{a}_{k}-b_{k}^{a}-\eta^{a}, $$

where $\omega_k$ and $a_k$ refer to the true values for angular velocity and acceleration, respectively. As we work with short visual-inertial clips, we will assume constant biases in the considered intervals, i.e., $b_k^g \approx b^g$ and $b_k^a \approx b^a$.

#### 4.1. Preintegration and state propagation

Preintegrating [^12] the m bias- and noise-corrected IMU readings between two consecutive camera frames, i and $i+1$, yields the relative rotation $\Delta\mathbf{R}_i = \mathbf{R}_i^\top\mathbf{R}_{i+1}$, relative position $\Delta\mathbf{p}_i = \mathbf{p}_{i+1} - \mathbf{p}_i$ and velocity change $\Delta\mathbf{v}_i = \mathbf{v}_{i+1} - \mathbf{v}_i$ between them:

 $$ \Delta\mathtt{R}_{i}=\prod_{k=1}^{m}\mathrm{E x p}\left(\left(\tilde{\omega}_{k}-\boldsymbol{b}^{g}-\boldsymbol{\eta}^{g}\right)\Delta t\right), $$

 $$ \Delta\mathbf{v}_{i}=\mathbf{g}\Delta T+\sum_{k=1}^{m}\mathtt{R}_{k}\Big(\tilde{\mathbf{a}}_{k}-\mathbf{b}^{a}-\boldsymbol{\eta}^{a}\Big)\Delta t, $$

 $$ \Delta\mathbf{p}_{i}=\sum_{k=1}^{m}\Big[\mathbf{v}_{k}\Delta t+\frac{1}{2}\mathbf{g}\Delta t^{2}+\frac{1}{2}\mathbb{R}_{k}\Big(\tilde{\boldsymbol{a}}_{k}-\boldsymbol{b}^{a}-\boldsymbol{\eta}^{a}\Big)\Delta t^{2}\Big] $$

where $\Delta t$ stands for the time between IMU readings, $\Delta T = m\Delta t$ for the time between consecutive frames, Exp for the exponential map from so(3) to $SO(3)$, and g for the gravity vector.

Our goal is to recover the inertial states $\mathbf{R}_i$, $\mathbf{p}_i$ and $\mathbf{v}_i$ for every frame. We will assume the origin at the first frame, hence $\mathbf{R}_1 = \mathbf{I}_3$ and $\mathbf{p}_1 = \mathbf{0}$, and the states will be recoverable if we know the values for the biases $\mathbf{b}^g$ and $\mathbf{b}^a$, the gravity $\mathbf{g}$ and the velocity in the first frame $\mathbf{v}_1$.

#### 4.2. Inertial state initialization

As shown in by Kaiser et al. [^18], the effect of $b^a$ is negligible for short-time integrations, so we will assume $b^a \approx 0$ and will only estimate the values for $b^g$, $\mathbf{v}_1$ and $\mathbf{g}$ from the up-to-scale geometry estimated by the 3DFM and the IMU readings.

---

Gyroscope bias $(b^g)$. As observed in Equation 2, $b_g$ can be estimated from the angular velocity measurements given an estimate of the relative rotation $\Delta R_i$, which we obtain from the 3DFM. We adopt the closed-form solution by Cerezo et al. [^7], which, assuming small-angle rotations, estimates $b_g$ from two consecutive frames $\mathcal{I}_i$ and $\mathcal{I}_{i+1}$ as

 $$ \begin{array}{r}{\boldsymbol{b}_{i}^{g}\approx-\frac{1}{\Delta t}\mathrm{L o g}\Big(\mathrm{E x p}(\bar{\omega}_{i}\Delta t)^{\top}\mathrm{E x p}\left(\frac{1}{m}\mathrm{L o g}\Delta\mathtt{R}_{i}^{\mathcal{M}}\right)\Big),}\end{array} $$

where $\bar{\omega}_i = \frac{1}{m} \sum_{k=1}^{m} \tilde{\omega}_k$ is the average of angular velocity measurements between the two frames, $\text{Log}$ is the logarithmic map from $SO(3)$ to $\mathfrak{so}(3)$, and $\Delta \mathbf{R}_i^\mathcal{M} = \mathbf{R}_i^\mathcal{M}^\top \mathbf{R}_{i+1}^\mathcal{M}$ is the relative rotation estimated by the 3DFM. The final estimate for $\hat{\boldsymbol{b}}^g$ is obtained averaging the values for all $n-1$ pairs over the sequence $\hat{\boldsymbol{b}}^g = \frac{1}{n-1} \sum_{i=1}^{n-1} \boldsymbol{b}_i^g$

Initial velocity $(\mathbf{v}_1)$. Up-to-scale velocities can be computed from the 3DFM poses using discrete differences as $\mathbf{v}_i^\mathcal{M} = \Delta \mathbf{p}_i^\mathcal{M} / \Delta T$. Assuming for now known gravity $\mathbf{g}$, something that we will resolve in the next paragraphs, the 3DFM scale factor s can be constrained using the velocity increments in Eq. 3, yielding $s \Delta \mathbf{v}_i^\mathcal{M} = \Delta \mathbf{v}_i$, where $\Delta \mathbf{v}_i^\mathcal{M} = \mathbf{v}_{i+1}^\mathcal{M} - \mathbf{v}_i^\mathcal{M}$. Stacking these constraints over all $n - 1$ image pairs gives the linear system $s \mathbf{V}^\mathcal{M} = \mathbf{V}$, with $\mathbf{V}^\mathcal{M} = \left( \Delta \mathbf{v}_1^\mathcal{M} \right)^\top$. Since both velocity estimates are noisy, we formulate the problem as a total least squares (TLS) optimization rather than ordinary least squares, and obtain an initial estimate $\hat{s}$ by solving

 $$ \begin{aligned}\hat{s}_{init}&=\arg\min_{s,\Delta\mathbf{V}^{\mathcal{M}},\Delta\mathbf{V}}||\Delta\mathbf{V}^{\mathcal{M}}\Delta\mathbf{V}||_{F}^{2}\\&s.t.\quad s(\mathbf{V}^{\mathcal{M}}+\Delta\mathbf{V}^{\mathcal{M}})=\mathbf{V}+\Delta\mathbf{V}\end{aligned} $$

which, in this one-dimensional case, has the following closed-form solution

 $$ \hat{s}=\mathrm{s i g n}\left(\langle\mathbf{V},\mathbf{V}^{\mathcal{M}}\rangle\right)\frac{\|\mathbf{V}\|}{\|\mathbf{V}^{\mathcal{M}}\|}. $$

As this initial estimation of the scale may be affected by large errors in the velocity estimations, in particular for low-parallax frames, we refine this estimation as follows. We align the initial velocity's orientation  $\mathbf{v}_1 = \mathbf{v}_1^{\mathcal{M}} / \|\mathbf{v}_1^{\mathcal{M}}\|$ with the gravity-free first pair, and we compute its magnitude  $\mu$ as the median of back-projecting all frames:

 $$ \begin{array}{r}{\mu=\mathrm{m e d i a n}_{k}\left\langle\hat{s}\mathbf{v}_{k}^{\mathcal{M}}-\sum_{1<l\leq k}\Delta\mathbf{v}_{l},\hat{\mathbf{v}}_{1}\right\rangle}\end{array} $$

The initial velocity is finally computed as $\mathbf{v}_1 = \mu \tilde{\mathbf{v}}_1$. Two sanity checks safeguard the optimization: s falls back to 1 if visual and inertial motions are anti-aligned, and $\mathbf{v}_1$ reverts to $s\mathbf{v}_1^{\mathcal{M}}$ if $\mu \leq 0$ due to an inverted gravity vector.

Gravity (g). The gravity vector can be estimated from image cues using GeoCalib [^43], yielding an estimate that we will denote as $\mathbf{g}_{\mathrm{gc}}$. However, we observed that these estimates can degrade severely on poorly textured, out-of-distribution images, while GeoCalib's confidence measure does not reliably reflect these large errors. To detect such failure cases, we compute approximate gravity estimates using two additional methods and assess their mutual consensus.

Assuming negligible accelerometer bias and small linear accelerations, we can obtain a coarse gravity estimate $\mathbf{g}_{\text{imu}}$ by averaging the measured accelerations

 $$ \mathbf{g_{i m u}}=-9.81\frac{\sum_{k=1}^{(n-1)m}\mathbf{R}_{k}\tilde{\mathbf{a}}_{k}}{(n-1)m\|\sum_{k=1}^{(n-1)m}\mathbf{R}_{k}\tilde{\mathbf{a}}_{k}\|} $$

Additionally, we can also derive the gravity with a kinematic least-squares procedure, an alternative that we will denote as $\mathbf{g}_{ls}$. Based on the preintegrated velocity update [^12] across frame pair $(i, j)$:

 $$ \mathbf{v}_{j}=\mathbf{v}_{i}+\mathbf{g}\Delta t_{ij}+\sum_{i<k\leq j}\mathbf{R}_{k-1}\Delta\mathbf{v}_{k}, $$

we substitute the difference between the visual observation scaled to metric units $\mathbf{v}_j - \mathbf{v}_i = s \Delta \mathbf{v}_{ij}^{\mathcal{M}}$, isolating the velocity residuals in the integrated inertial motion:

 $$ {\bf r}_{i j}~:=~s\Delta{\bf v}_{i j}^{\mathcal{M}}-\sum_{i<k\leq j}{\bf R}_{k-1}\Delta{\bf v}_{k}~=~{\bf g}\Delta t_{i j}, $$

Minimizing the squared norm  $\sum_{i<j} \|\Delta t_{ij} \mathbf{g} - \mathbf{r}_{ij}\|^2$ over all image pairs  $i < j$ yields a closed-form solution for the unit gravity direction:

 $$ \mathbf{g}_{\mathrm{l s}}=9.81,\frac{\mathbf{n}}{\left\|\mathbf{n}\right\|},\mathbf{n}=\frac{\sum_{i<j}\Delta t_{i j}\mathbf{r}_{i j}}{\sum_{i<j}\Delta t_{i j}^{2}}=\sum_{i<j}w_{i j}\frac{\mathbf{r}_{i j}}{\Delta t_{i j}}, $$

where the weighting term $w_{ij} = \Delta t_{ij}^2 / \sum \Delta t_{ij}^2$ makes long-baseline pairs dominate quadratically, insulating $\mathbf{g}_{\text{ls}}$ against high-frequency visual tracking noise while locking the magnitude to the gravity modulus 9.81. There is a circular dependence between the term $\mathbf{g}_{\text{ls}}$ and the scale s, that was mentioned when estimating the initial velocity $\mathbf{v}_1$, which can be modeled as the function $s = \mathcal{S}(\mathbf{g})$. This requires tightly couple both variables through a fixed-point iteration scheme $s^{(n+1)} = \mathcal{S}(\mathbf{g}^{(n)})$, $\mathbf{g}^{(n+1)} = \mathbf{g}_{\text{ls}}(s^{(n+1)})$, which starts from a scale-free seed $\mathbf{g}^{(0)}$ ( $\mathbf{g}_{\text{gc}}$ or $\mathbf{g}_{\text{imu}}$) and converges within two to three iterations to solution $\text{FP}(\mathbf{g}^{(0)})$.

The consensus is evaluated using the two independent seeds for the iterative process: visual $\hat{\mathbf{g}}_{\mathrm{gc}} = \mathrm{FP}(\mathbf{g}_{\mathrm{gc}})$ and

---

<div style="text-align: center;">Table 1. Up-to-scale models. GT-free inertial test-time refinement (TTR) of the pretrained up-to-scale 3D foundation models (Base), which predict geometry without metric scale. The base models are  $\sim3-7\times$ under-scaled and thus score  $\approx0$ in  $\delta<1.25$, while TTR restores absolute metric depth and pulls both trajectory and depth scale toward 1, respecting the geometry. Note, in addition, that rotation metrics are also substantially improved.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2" colspan="2">Model</td><td colspan="2">Trans (m) $\downarrow$</td><td colspan="2">Rot (°) $\downarrow$</td><td colspan="2">Scale (Traj.) $\rightarrow$1</td><td colspan="2">AbsRel $\downarrow$</td><td colspan="2">$\delta < 1.25$ $\uparrow$</td><td colspan="2">Scale (Depth) $\rightarrow$1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>TTR</td></tr><tr><td rowspan="3">TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>1.130</td><td style='text-align: center; word-wrap: break-word;'>0.358</td><td style='text-align: center; word-wrap: break-word;'>0.933</td><td style='text-align: center; word-wrap: break-word;'>0.410</td><td style='text-align: center; word-wrap: break-word;'>0.14</td><td style='text-align: center; word-wrap: break-word;'>1.05</td><td style='text-align: center; word-wrap: break-word;'>0.052</td><td style='text-align: center; word-wrap: break-word;'>0.089</td><td style='text-align: center; word-wrap: break-word;'>0.000</td><td style='text-align: center; word-wrap: break-word;'>0.515</td><td style='text-align: center; word-wrap: break-word;'>0.17</td><td style='text-align: center; word-wrap: break-word;'>1.11</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>1.110</td><td style='text-align: center; word-wrap: break-word;'>0.378</td><td style='text-align: center; word-wrap: break-word;'>0.725</td><td style='text-align: center; word-wrap: break-word;'>0.354</td><td style='text-align: center; word-wrap: break-word;'>0.17</td><td style='text-align: center; word-wrap: break-word;'>1.10</td><td style='text-align: center; word-wrap: break-word;'>0.033</td><td style='text-align: center; word-wrap: break-word;'>0.080</td><td style='text-align: center; word-wrap: break-word;'>0.000</td><td style='text-align: center; word-wrap: break-word;'>0.596</td><td style='text-align: center; word-wrap: break-word;'>0.19</td><td style='text-align: center; word-wrap: break-word;'>1.12</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>1.047</td><td style='text-align: center; word-wrap: break-word;'>0.350</td><td style='text-align: center; word-wrap: break-word;'>0.560</td><td style='text-align: center; word-wrap: break-word;'>0.296</td><td style='text-align: center; word-wrap: break-word;'>0.20</td><td style='text-align: center; word-wrap: break-word;'>1.09</td><td style='text-align: center; word-wrap: break-word;'>0.041</td><td style='text-align: center; word-wrap: break-word;'>0.083</td><td style='text-align: center; word-wrap: break-word;'>0.000</td><td style='text-align: center; word-wrap: break-word;'>0.556</td><td style='text-align: center; word-wrap: break-word;'>0.21</td><td style='text-align: center; word-wrap: break-word;'>1.12</td></tr><tr><td rowspan="3">EuRoC</td><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>0.192</td><td style='text-align: center; word-wrap: break-word;'>0.061</td><td style='text-align: center; word-wrap: break-word;'>0.293</td><td style='text-align: center; word-wrap: break-word;'>0.285</td><td style='text-align: center; word-wrap: break-word;'>0.27</td><td style='text-align: center; word-wrap: break-word;'>0.98</td><td style='text-align: center; word-wrap: break-word;'>0.239</td><td style='text-align: center; word-wrap: break-word;'>0.234</td><td style='text-align: center; word-wrap: break-word;'>0.004</td><td style='text-align: center; word-wrap: break-word;'>0.324</td><td style='text-align: center; word-wrap: break-word;'>0.28</td><td style='text-align: center; word-wrap: break-word;'>1.00</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>0.176</td><td style='text-align: center; word-wrap: break-word;'>0.074</td><td style='text-align: center; word-wrap: break-word;'>0.291</td><td style='text-align: center; word-wrap: break-word;'>0.252</td><td style='text-align: center; word-wrap: break-word;'>0.32</td><td style='text-align: center; word-wrap: break-word;'>1.05</td><td style='text-align: center; word-wrap: break-word;'>0.212</td><td style='text-align: center; word-wrap: break-word;'>0.215</td><td style='text-align: center; word-wrap: break-word;'>0.003</td><td style='text-align: center; word-wrap: break-word;'>0.243</td><td style='text-align: center; word-wrap: break-word;'>0.31</td><td style='text-align: center; word-wrap: break-word;'>1.10</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>0.178</td><td style='text-align: center; word-wrap: break-word;'>0.078</td><td style='text-align: center; word-wrap: break-word;'>0.234</td><td style='text-align: center; word-wrap: break-word;'>0.164</td><td style='text-align: center; word-wrap: break-word;'>0.40</td><td style='text-align: center; word-wrap: break-word;'>1.08</td><td style='text-align: center; word-wrap: break-word;'>0.204</td><td style='text-align: center; word-wrap: break-word;'>0.203</td><td style='text-align: center; word-wrap: break-word;'>0.008</td><td style='text-align: center; word-wrap: break-word;'>0.251</td><td style='text-align: center; word-wrap: break-word;'>0.42</td><td style='text-align: center; word-wrap: break-word;'>1.18</td></tr><tr><td rowspan="3">UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>1.109</td><td style='text-align: center; word-wrap: break-word;'>0.497</td><td style='text-align: center; word-wrap: break-word;'>2.152</td><td style='text-align: center; word-wrap: break-word;'>0.301</td><td style='text-align: center; word-wrap: break-word;'>0.22</td><td style='text-align: center; word-wrap: break-word;'>0.81</td><td style='text-align: center; word-wrap: break-word;'>0.209</td><td style='text-align: center; word-wrap: break-word;'>0.203</td><td style='text-align: center; word-wrap: break-word;'>0.002</td><td style='text-align: center; word-wrap: break-word;'>0.201</td><td style='text-align: center; word-wrap: break-word;'>0.35</td><td style='text-align: center; word-wrap: break-word;'>0.92</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>1.089</td><td style='text-align: center; word-wrap: break-word;'>0.328</td><td style='text-align: center; word-wrap: break-word;'>0.762</td><td style='text-align: center; word-wrap: break-word;'>0.192</td><td style='text-align: center; word-wrap: break-word;'>0.20</td><td style='text-align: center; word-wrap: break-word;'>0.92</td><td style='text-align: center; word-wrap: break-word;'>0.244</td><td style='text-align: center; word-wrap: break-word;'>0.237</td><td style='text-align: center; word-wrap: break-word;'>0.007</td><td style='text-align: center; word-wrap: break-word;'>0.217</td><td style='text-align: center; word-wrap: break-word;'>0.31</td><td style='text-align: center; word-wrap: break-word;'>1.20</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>0.891</td><td style='text-align: center; word-wrap: break-word;'>0.396</td><td style='text-align: center; word-wrap: break-word;'>0.734</td><td style='text-align: center; word-wrap: break-word;'>0.246</td><td style='text-align: center; word-wrap: break-word;'>0.29</td><td style='text-align: center; word-wrap: break-word;'>0.79</td><td style='text-align: center; word-wrap: break-word;'>0.241</td><td style='text-align: center; word-wrap: break-word;'>0.249</td><td style='text-align: center; word-wrap: break-word;'>0.039</td><td style='text-align: center; word-wrap: break-word;'>0.138</td><td style='text-align: center; word-wrap: break-word;'>0.45</td><td style='text-align: center; word-wrap: break-word;'>1.07</td></tr></table>

inertial $\hat{g}_{imu} = FP(g_{imu})$. When the motion is sufficient, both seeds converge to a common direction within approximately $1^{\circ}$, establishing a consensus error $\angle(\hat{g}_{gc}, \hat{g}_{imu})$ that reflects how inertial observations pin gravity, and demonstrating that $g_{gc}$ is accurate in most cases.

We classify $g_{gc}$ as an outlier if it diverges beyond the consensus error, enforcing the condition:

 $$ \operatorname*{m i n}_{X\in\{\mathrm{g c},\mathrm{i m u}\}}\angle\big(\mathbf{g}_{\mathrm{g c}},\mathbf{g}_{X}\big)>\operatorname*{m a x}\big(\angle\big(\hat{\mathbf{g}}_{\mathrm{g c}},\hat{\mathbf{g}}_{\mathrm{i m u}}\big),\gamma_{\mathrm{m i n}}\big), $$

where $\gamma_{\mathrm{min}} = 20^{\circ}$ acts as a lower noise floor. When this condition triggers, the system rejects $\mathbf{g}_{\mathrm{gc}}$ and adopts the purely inertial fixed point $\hat{\mathbf{g}}_{\mathrm{imu}}$, subject to (sign $(\hat{\mathbf{g}}_{\mathrm{imu}})\geq0$), alongside its corresponding scale $s_{\mathrm{imu}}$ and initial velocity $\mathbf{v}_{1}(\mathbf{g}_{\mathrm{imu}}, s_{\mathrm{imu}})$, ensuring robust initialization even under severe visual prior degradation.

Once the initialization parameters are estimated, we use the in the preintegration process described in Sec. 4.1 to construct the metric, frame-1-anchored target trajectory $\mathcal{T}^{\mathrm{imu}} = \{\mathbf{p}_i^{\mathrm{imu}}, \mathbf{R}_i^{\mathrm{imu}}\}_{i=1}^n$ used as supervisory signal driving the anchoring.

### 5. Metrically anchoring 3DFMs

VI3 aims to inject the metric information encoded in the inertial trajectory into the pretrained 3DFM at test time. We consider two possible approaches to achieve this.

Input conditioning As stated in Sec. 2, certain models [^27] [^52] can use optional inputs during inference to metrically scale the output. Thus, we feed $\mathcal{T}^{\text{imu}}$ into the 3DFM to obtain a physically-informed reconstruction.

Test-time refinement The objective of the proposed test-time refinement process is to find a joint parameter subset $(\alpha, \hat{\theta})$ of scale and model weights such that the geometric output of the refined model is physically aligned to the trajectory $\mathcal{T}^{\mathrm{imu}}$. Since the geometry predicted by the 3DFM is correct up to a global scale factor, we introduce a single learnable scalar $\alpha > 0$, which from onwards acts on the raw translation $\mathbf{p}_i^\mathcal{M} \mapsto \alpha \mathbf{p}_i^\mathcal{M}$ and depth $\mathcal{D}_i^\mathcal{M} \mapsto \alpha \mathcal{D}_i^\mathcal{M}$, tying both representations and leaving rotation and intrinsics untouched. This factor is initialized by directly comparing the ratios between the path lengths $\alpha_0 = \left( \sum_i \|\mathbf{p}_i^{\mathrm{imu}}\|_2 \right) / \left( \sum_i \|\mathbf{p}^\mathcal{M}_i\|_2 \right)$.

We propose a pose supervision term that takes place on consecutive frames, making the objective globally invariant (rigid transforms shared by prediction and target cancel):

 $$ \mathcal{L}_{\mathrm{p o s}}=\frac{1}{n-1}\sum_{i=2}^{n}\left\|\left(\mathbf{p}_{i}^{\mathcal{M}}-\mathbf{p}_{i-1}^{\mathcal{M}}\right)-\Delta\mathbf{p}_{i-1}\right\|_{1}, $$

 $$ \mathcal{L}_{\mathrm{r o t}}=\frac{1}{n-1}\sum_{i=2}^{n}\left\|\mathrm{L o g}\left(\left(\mathbb{R}_{i-1}^{\mathcal{M}}{}^{\top}\mathbb{R}_{i}^{\mathcal{M}}\right)^{\top}\Delta\mathbb{R}_{i-1}\right)\right\|_{2}. $$

Since this procedure operates without an available 3D ground truth, we need to enforce cross-view geometric consistency by coupling depth maps and camera poses via a self-supervised consistency loop. We thus introduce a geometric depth-consistency loss that anchors predicted depths directly to the inertial recovered pose scale. For every pair $(i, j)$ where $i \neq j$, we penalize discrepancies between the reprojected depth and the source depth sampled at the valid reprojected coordinates [^14]:

 $$ \mathcal{L}_{\mathrm{d c o n s}}=\frac{1}{n}\sum_{t=1}^{n}\Big[\min_{i\neq j}\Big\vert[\pi_{i}(\mathcal{X}_{j}^{\mathcal{M}})]_{Z}-\mathcal{D}_{i}^{\mathcal{M}}\Big(\pi_{i}(\mathcal{X}_{j}^{\mathcal{M}})\Big)\Big\vert\Big]_{\mathrm{v a l i d}}, $$

with $\pi_{i}$ the projection operator projecting into the i-th frame

---

<div style="text-align: center;">Table 2. Metric models: learned priors vs. inertial cues. Each backbone's native metric prediction (Base), the same pretrained model conditioned on our GT-free IMU-integrated poses (IMU-cond, pose-only, feed-forward), and, conversely, using inertial test-time refinement (TTR).  ${}^{\dagger}$IMU-cond additionally feeds camera intrinsics (required by DA3's pose encoder); Pi3X's IMU-cond is pose-only.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td rowspan="2">Model</td><td colspan="3">Trans (m) $\downarrow$</td><td colspan="3">Rot (°) $\downarrow$</td><td colspan="3">Scale (Traj.) $\rightarrow$1</td><td colspan="3">Scale (Depth) $\rightarrow$1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond</td><td style='text-align: center; word-wrap: break-word;'>TTR</td><td style='text-align: center; word-wrap: break-word;'>Base</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond</td><td style='text-align: center; word-wrap: break-word;'>TTR</td></tr><tr><td rowspan="2">TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>0.392</td><td style='text-align: center; word-wrap: break-word;'>0.371</td><td style='text-align: center; word-wrap: break-word;'>0.382</td><td style='text-align: center; word-wrap: break-word;'>0.802</td><td style='text-align: center; word-wrap: break-word;'>0.546</td><td style='text-align: center; word-wrap: break-word;'>0.316</td><td style='text-align: center; word-wrap: break-word;'>1.18</td><td style='text-align: center; word-wrap: break-word;'>1.20</td><td style='text-align: center; word-wrap: break-word;'>1.08</td><td style='text-align: center; word-wrap: break-word;'>1.26</td><td style='text-align: center; word-wrap: break-word;'>1.25</td><td style='text-align: center; word-wrap: break-word;'>1.11</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3</td><td style='text-align: center; word-wrap: break-word;'>0.322</td><td style='text-align: center; word-wrap: break-word;'>0.446 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.486</td><td style='text-align: center; word-wrap: break-word;'>1.379</td><td style='text-align: center; word-wrap: break-word;'>0.801 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.351</td><td style='text-align: center; word-wrap: break-word;'>0.90</td><td style='text-align: center; word-wrap: break-word;'>0.83 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.06</td><td style='text-align: center; word-wrap: break-word;'>0.99</td><td style='text-align: center; word-wrap: break-word;'>0.90 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.19</td></tr><tr><td rowspan="2">EuRoC</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>0.071</td><td style='text-align: center; word-wrap: break-word;'>0.081</td><td style='text-align: center; word-wrap: break-word;'>0.067</td><td style='text-align: center; word-wrap: break-word;'>0.257</td><td style='text-align: center; word-wrap: break-word;'>0.306</td><td style='text-align: center; word-wrap: break-word;'>0.254</td><td style='text-align: center; word-wrap: break-word;'>0.83</td><td style='text-align: center; word-wrap: break-word;'>0.82</td><td style='text-align: center; word-wrap: break-word;'>1.04</td><td style='text-align: center; word-wrap: break-word;'>0.91</td><td style='text-align: center; word-wrap: break-word;'>0.93</td><td style='text-align: center; word-wrap: break-word;'>1.11</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3</td><td style='text-align: center; word-wrap: break-word;'>0.061</td><td style='text-align: center; word-wrap: break-word;'>0.055 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.092</td><td style='text-align: center; word-wrap: break-word;'>0.261</td><td style='text-align: center; word-wrap: break-word;'>0.326 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.312</td><td style='text-align: center; word-wrap: break-word;'>0.72</td><td style='text-align: center; word-wrap: break-word;'>0.75 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.13</td><td style='text-align: center; word-wrap: break-word;'>0.74</td><td style='text-align: center; word-wrap: break-word;'>0.73 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.20</td></tr><tr><td rowspan="2">UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>0.576</td><td style='text-align: center; word-wrap: break-word;'>0.535</td><td style='text-align: center; word-wrap: break-word;'>0.368</td><td style='text-align: center; word-wrap: break-word;'>0.933</td><td style='text-align: center; word-wrap: break-word;'>0.738</td><td style='text-align: center; word-wrap: break-word;'>0.233</td><td style='text-align: center; word-wrap: break-word;'>1.11</td><td style='text-align: center; word-wrap: break-word;'>1.15</td><td style='text-align: center; word-wrap: break-word;'>0.82</td><td style='text-align: center; word-wrap: break-word;'>1.63</td><td style='text-align: center; word-wrap: break-word;'>1.65</td><td style='text-align: center; word-wrap: break-word;'>1.10</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3</td><td style='text-align: center; word-wrap: break-word;'>0.538</td><td style='text-align: center; word-wrap: break-word;'>0.452 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.379</td><td style='text-align: center; word-wrap: break-word;'>1.252</td><td style='text-align: center; word-wrap: break-word;'>0.626 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.231</td><td style='text-align: center; word-wrap: break-word;'>0.96</td><td style='text-align: center; word-wrap: break-word;'>0.83 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.88</td><td style='text-align: center; word-wrap: break-word;'>1.39</td><td style='text-align: center; word-wrap: break-word;'>1.05 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.07</td></tr></table>

<div style="text-align: center;">Table 3. Calibration-parameter init error. Accuracy of the backbone-independent, fully-GT-free estimates of the two IMU calibration parameters that seed refinement: gravity direction and gyro bias, the latter as absolute error with relative in parentheses. GT gyro bias is only available on EuRoC (- elsewhere).</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>Gravity (°) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>Gyro-bias (rad/s) $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>1.05</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EuRoC</td><td style='text-align: center; word-wrap: break-word;'>1.08</td><td style='text-align: center; word-wrap: break-word;'>0.009 (11.3%)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>6.61</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr></table>

the 3D world points $\mathcal{X}_j^{\mathcal{M}}$ resulting of backprojecting depth predictions from frame j; and $[]$ the z-coordinate.

On top of these, we add two regularization terms that protect the structural integrity: (i) a frame-1 positional anchor on the first frame predicted position  $\hat{\mathbf{p}}_1^{\mathcal{M}}$, restricting the coordinate origin  $(\mathcal{L}_a^p = \|\hat{\mathbf{p}}_1^{\mathcal{M}}\|_1)$, and (ii) a depth-to-init anchor, which pins the depth to its zero-shot shape  $\mathcal{L}_a^{\mathcal{D}} = \frac{1}{n} \sum_i \|\mathcal{D}_i^{\mathcal{M}} - \mathcal{D}_i^{\mathcal{M}^{(0)}}\|_1$. This allows the network to adapt to the input stream photometric distribution while ensuring the geometry remains strictly bounded by the 3DFM structural prior. The total objective amounts to:

 $$\mathcal{L}(\theta)=w_{r}\mathcal{L}_{\mathrm{rot}}+w_{p}\mathcal{L}_{\mathrm{pos}}+w_{\mathrm{d}}\mathcal{L}_{\mathrm{dcons}}+w_{a_{p}}\mathcal{L}_{\mathrm{a}}^{p}+w_{a_{d}}{\mathcal{L}_{\mathrm{a}}^{\mathcal{D}}}_{(17)}$$

which we minimize by unfreezing only the camera- and depth-estimation heads, together with the last few L interframe (global) attention blocks of the aggregator in the 3DFM, plus the scalar $\alpha$, running K gradient steps on the single window with $\mathcal{T}^{\mathrm{imu}}$ held fixed.

### 6. Experiments

We evaluate the performance of VI3 through quantitative and qualitative results, and ablating design choices.

Datasets. We use three visual-inertial aerial datasets spanning synthetic, micro-aerial and drone racing nature. TartanAirV2 [^51] contributes 24 synthetic drone-flight settings.

<div style="text-align: center;">Table 4. Initial velocity estimation. Recovery of the direction and magnitude, for each specific dataset and backbone.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td rowspan="2">Metric</td><td colspan="3">Up-to-scale</td><td colspan="2">Scale-aware</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>DA3</td></tr><tr><td rowspan="2">TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>$v_1$ dir. ( $^{\circ}$) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>6.2</td><td style='text-align: center; word-wrap: break-word;'>4.3</td><td style='text-align: center; word-wrap: break-word;'>5.4</td><td style='text-align: center; word-wrap: break-word;'>6.6</td><td style='text-align: center; word-wrap: break-word;'>11.0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$v_1$ mag. $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.21</td><td style='text-align: center; word-wrap: break-word;'>0.22</td><td style='text-align: center; word-wrap: break-word;'>0.20</td><td style='text-align: center; word-wrap: break-word;'>0.20</td><td style='text-align: center; word-wrap: break-word;'>0.22</td></tr><tr><td rowspan="2">EuRoC</td><td style='text-align: center; word-wrap: break-word;'>$v_1$ dir. ( $^{\circ}$) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>10.0</td><td style='text-align: center; word-wrap: break-word;'>3.6</td><td style='text-align: center; word-wrap: break-word;'>9.3</td><td style='text-align: center; word-wrap: break-word;'>8.8</td><td style='text-align: center; word-wrap: break-word;'>5.6</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$v_1$ mag. $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.21</td><td style='text-align: center; word-wrap: break-word;'>0.23</td><td style='text-align: center; word-wrap: break-word;'>0.26</td><td style='text-align: center; word-wrap: break-word;'>0.17</td><td style='text-align: center; word-wrap: break-word;'>0.22</td></tr><tr><td rowspan="2">UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>$v_1$ dir. ( $^{\circ}$) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>10.4</td><td style='text-align: center; word-wrap: break-word;'>4.9</td><td style='text-align: center; word-wrap: break-word;'>4.6</td><td style='text-align: center; word-wrap: break-word;'>7.2</td><td style='text-align: center; word-wrap: break-word;'>6.3</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$v_1$ mag. $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.24</td><td style='text-align: center; word-wrap: break-word;'>0.17</td><td style='text-align: center; word-wrap: break-word;'>0.27</td><td style='text-align: center; word-wrap: break-word;'>0.17</td><td style='text-align: center; word-wrap: break-word;'>0.16</td></tr></table>

quences coming from four varied environments: indoors and outdoors (House, Hospital, ModernCityDowntown, ForestEnv) at the two existing difficulties (easy/hard) and on the first two trajectories (P000, P002). We take the full EuRoC-MAV [^4] dataset, consisting of 11 sequences: Vicon-Room (GT-depth obtained from Leica MS50 laser scanner) and Machine-Hall (GT-depth stereo-derived). UZH-FPV [^10] brings 16 drone-racing sequences with public GT (Snapdragon indoor/outdoor, forward- and 45°-facing cameras); the event-camera and no-GT competition splits are omitted. GT-depth is stereo-derived. Notably, TartanAirV2 (or its earlier version TartanAir), appears in the original training corpus of all the backbones we use, except VGGT. Its inclusion aims to show that results, despite being closer to in-distribution rather than zero-shot, still exhibit a clear scene-specific gap we target. The datasets utilized in this work span the whole motion regime range: noise-free (synthetic) and high-parallax (TartanAirV2); moderate motion (EuRoC); and highly dynamic, low-parallax (UZH-FPV).

#### 6.1. Experimental setup

Consistent with the nature of 3DFMs, which operate on short context windows, we evaluate on clips: short segments sampled from each sequence consisting of a window

---

of n=8 frames, with a stride of two. We sample three clips per sequence (near the start, middle, and end) for diverse coverage. All reported metrics are therefore aggregated as the median over all clips across a dataset's sequences.

Backbones. We extensively analyze the behaviour of test-time refinement on five relevant pretrained 3DFMs (using their released weights): three of them up-to-scale, VGGT [^47], VGGT- $\Omega$ [^48] and $\pi^3$ [^52]; and other two scale-aware, Pi3X [^52] and Depth Anything 3 (DA3) [^27]. Optimization. For the TTR, we experimentally set $w_r=20$, $w_t=10$, $w_d=10$, $w_{a_p}=1000$, and $w_{a_d}=1$, as they bring a good trade-off between pose refinement and scale recovery, without corrupting depth. We optimize with AdamW for a fixed budget of $K = 160$ steps per clip. Experiments run on a single NVIDIA RTX 5090. TTR optimizes the scale factor $\alpha$, alongside the model's camera head, depth head, and the final aggregator blocks ( $L = 8$), while keeping all other parameters frozen.

Evaluation metrics. We evaluate camera pose, scale, and dense depth. Unlike conventional visual-odometry practice, we do not align trajectories before computing pose error, as our goal is to assess absolute metric accuracy. Trans is the RMSE of per-frame camera positions against GT (meters); Rot is the mean geodesic angle to GT orientations (degrees). Scale (Traj.) is the median per-frame ratio  $|t_{pred}|/|t_{gt}|$, where 1 is ideal and values below/above indicate under/over-scaling, excluding near-stationary (GT displacement <1cm) clips, for which the ratio is undefined. For dense depth we report two complementary metrics. Shape is invariant to global scale and isolates geometric fidelity, measured via per-frame median scale alignment AbsRel ( $\downarrow$) and the absolute inlier ratio  $\delta<1.25$ ( $\uparrow$), which measures the pixels within  $1.25\times$ of GT without alignment. Scale (Depth), measured without alignment as median( $D_{pred}/D_{gt}$), again targets 1. Reporting them separately distinguishes a reconstruction correctly shaped but mis-scaled, from one correct on both, only differentiated by the Scale (Depth) column.

All results are seeded; on fixed hardware, re-runs report variances within 0.01 m, $0.04^{\circ}$ and 0.03 in scale, far below the reported anchoring effects.

#### 6.2. Results

Fig. 3 illustrates qualitative results, further examples can be found in the supplementary. Tables 1 and 2 report the median results respectively for up-to-scale and metric backbones across sequences and clips of the raw pretrained model (Base), IMU conditioning (if applicable) and our TTR. The results show that inertial measures are useful to inject physical knowledge in models spanning both natures. Up-to-scale models can only recover a correct geometry, but at most up to a 45% of the original scale, reflected also by position and the poor results in $\delta<1.25$, which confirms

![Image](images/f8b9e262d3e93432545a703c791512f2633628ff83bb4b8a2828e1dc7c98f43b.jpg)

![Image](images/2931f16b188344e6ba23edf2e8235049e0f783d8c47905fde93aa6d4e82eda0c.jpg)

![Image](images/42113bf3eff435843e1d1e4f62044517f25b31c234a6fd1c6817268fe0158547.jpg)

![Image](images/d5b674a4e580cee5c6d7ed8a90796a5d57a4e1a8d77a08393f47b851f721132c.jpg)

<div style="text-align: center;">Figure 3. Qualitative examples. From top to bottom: TartanAirV2 ModernCityDowntown P000; EuRoC Vicon-Room V2-03; UZHFPV indoor-forward-9. VI3 (green) correctly recovers, thanks to the inertial signal (blue), metric, scene-consistent geometry, in contrast to the pretrained 3DFM (red). Best in color. the monocular scale ambiguity. In turn, our proposed refinement is able to successfully retrieve near metric recon-</div>

---

![Image](images/1154bbedee93270111d9195d63937a3987856448a149d09d5c4d107258202090.jpg)

![Image](images/d1916ddb25b4045d5eaee1456a22a0f24b9dd25f8bcc11022294e84b6b2e1fb7.jpg)

![Image](images/5a9fa942665dece43b2f0e62443a06c11d70889f003f3be93e7b84922d206379.jpg)

![Image](images/547360939e121896a409b63de5f7c351b48e850bec8602cf6fd109a459dc2d0a.jpg)

![Image](images/270ef5b7fdb2bae6c4064481e9f38e87c0d6508029fff21b3d55dfd2a80027b4.jpg)

<div style="text-align: center;">Figure 4. Sensitivity to inertial initialization of recovered metric scale (VGGT backbone). Downstream scale ( $\rightarrow$ 1 ideal) as each GT initialization component is independently perturbed (growing values of error applied to initial linear velocity, gravity and IMU biases).</div>

structions in all cases (scale $\approx 1$), which is propagated to translation. Additionally, we observe a consistent improvement in rotation, while our proposed cross-view loss helps to preserve the geometry, meaning that the injected scale does not corrupt 3D awareness. Metric-aware models produce scale estimates closer to 1 and much better translation results (especially on TartanAirV2, consistent with its in-distribution status), but we show that the IMU can improve this substantially in out-of-distribution cases both by TTR or conditioning on auxiliary geometry at test time. We also observe a slight but consistent improvement in the rotation, meaning that the inertial measurements can inject accurate information for the six degrees of freedom of the motion. We can see that, in some cases, the performance does not vary by just conditioning the network by metric inputs, suggesting that the data-driven prior is overriding any input. In these cases, TTR proves to be usually a better alternative, since the backbone parameters are adapted to fit the specific scene.

#### 6.3. Additional analyses

The most relevant analyses are included here, while further ones can be found in the supplementary material.

Inertial initialization sensitivity. We test how IMU initialization errors affect the recovered metric scale, applying varied noise over the preintegrated trajectory, then injected in a VGGT backbone using TTR. Fig. 4 shows that VI3's scale recovery is robust against IMU biases and gravity noise, while being greatly affected by deviations in the initial velocity estimate: direction and especially magnitude errors degrade performance substantially.

Initialization accuracy. We evaluate the error obtained by the initialization procedure described in Sec. 4.2, analyzing two sensor-derived variables, less dependent on the choice of backbone: absolute error angle in the gravity direction  $\hat{g}$ and the relative gyro bias error  $\|\hat{b}_g - b_g\| / \|b_g\|$. Tab. 3 shows the results (only EuRoC has GT bias), where we observe that our initialization process achieves good estimates for both variables, with a worse performance in the UZH-FPV dataset, more challenging due to the high speed.

We also evaluate the error obtained in the estimation of the most sensitive initialization parameter, the initial velocity. Since this metric depends on the employed backbone, we evaluate the error in both components: direction and magnitude factor ( $||\hat{v}_0| - |v_0|| / |v_0|$). Tab. 4 shows that the direction error stays small across backbones while the magnitude spreads more spreads widely.

### 7. Conclusion

In this work, we have demonstrated that the IMU is a suitable source of physical knowledge to anchor scale-ambiguous geometric outputs from any pretrained 3DFM into metric observations. For that, we introduced VI3, a sensor-in-the-loop framework that reframes physical anchoring, with diverse ways of injecting metric scale, including a dedicated refinement method. Through extensive experiments, we show that VI3 generalizes across backbones of different nature and diverse scenes; and that neither learned scale priors nor input conditioning are reliable enough alternatives, a reminder that physical properties need to be anchored in physical measurement, as data-driven priors can be inaccurate and prone to out-of-distribution failures.

The same philosophy extends as future work to any metric signal available at deployment, or a fusion of several (e.g. GNSS, wheel odometry, depth), and to downstream pipelines (feedforward novel-view synthesis, mapping) that depend on accurate metric geometry, pointing toward foundation models that specialize to the physical world they are dropped into.

## References

[^1]: Sameer Agarwal, Yasutaka Furukawa, Noah Snavely, Ian Simon, Brian Curless, Steven M Seitz, and Richard Szeliski. Building rome in a day. Communications of the ACM, 54 (10):105–112, 2011.

[^2]: Yanqi Bao, Tianyu Ding, Jing Huo, Yaoli Liu, Yuxin Li, Wenbin Li, Yang Gao, and Jiebo Luo. 3d gaussian splatting: Survey, technologies, challenges, and opportunities. IEEE

---

Transactions on Circuits and Systems for Video Technology, 35(7):6832–6852, 2025. 1

[^3]: Simon Boche, Jaehyung Jung, Sebastián Barbas Laina, and Stefan Leutenegger. Okvis2-x: Open keyframe-based visual-inertial slam configurable with dense depth or lidar, and gnss. IEEE Transactions on Robotics, 2025. 2

[^4]: Michael Burri, Janosch Nikolic, Pascal Gohl, Thomas Schneider, Joern Rehder, Sammy Omari, Markus W Achtelik, and Roland Siegwart. The euroc micro aerial vehicle datasets. The International Journal of Robotics Research, 2016. 6

[^5]: Yohann Cabon, Lucas Stoffl, Leonid Antsfeld, Gabriela Csurka, Boris Chidlovskii, Jerome Revaud, and Vincent Leroy. Must3r: Multi-view network for stereo 3d reconstruction. In CVPR, pages 1050–1060, 2025. 2

[^6]: Carlos Campos, Richard Elvira, Juan J. Gómez Rodríguez, José M. M. Montiel, and Juan D. Tardós. ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM. IEEE Transactions on Robotics, 37(6):1874–1890, 2021. arXiv:2007.11898 [cs.RO]. 2

[^7]: Samuel Cerezo, Seong Hun Lee, and Javier Civera. An efficient closed-form solution to full visual-inertial state initialization. IEEE Robotics and Automation Letters, 2026. 4

[^8]: Xingyu Chen, Yue Chen, Yuliang Xiu, Andreas Geiger, and Anpei Chen. TTT3R: 3D Reconstruction as Test-Time Training, 2026. arXiv:2509.26645 [cs]. 2, 3

[^9]: Zhuoguang Chen, Minghui Qin, Tianyuan Yuan, Zhe Liu, and Hang Zhao. Long3r: Long sequence streaming 3d reconstruction. arXiv preprint arXiv:2507.18255, 2025. 2

[^10]: Jeffrey Delmerico, Titus Cieslewski, Henri Rebecq, Matthias Faessler, and Davide Scaramuzza. Are We Ready for Autonomous Drone Racing? The UZH-FPV Drone Racing Dataset. In 2019 International Conference on Robotics and Automation (ICRA), pages 6713–6719, Montreal, QC, Canada, 2019. IEEE. 6

[^11]: Sven Elflein, Qunjie Zhou, and Laura Leal-Taixé. Light3r-sfm: Towards feed-forward structure-from-motion. In CVPR, pages 16774–16784, 2025. 2

[^12]: Christian Forster, Luca Carlone, Frank Dellaert, and Davide Scaramuzza. On-Manifold Preintegration for Real-Time Visual-Inertial Odometry. IEEE Transactions on Robotics, 33(1):1–21, 2017. arXiv:1512.02363 [cs.RO]. 2, 3, 4

[^13]: Patrick Geneva, Kevin Eckenhoff, Woosik Lee, Yulin Yang, and Guoquan Huang. OpenVINS: A research platform for visual-inertial estimation. In Proc. of the IEEE International Conference on Robotics and Automation, Paris, France, 2020. 2

[^14]: Clément Godard, Oisin Mac Aodha, Michael Firman, and Gabriel J. Brostow. Digging into self-supervised monocular depth prediction. The International Conference on Computer Vision (ICCV), 2019. 5

[^15]: Dongchen Han, Yining Li, Tianyu Li, Zixuan Cao, Ziming Wang, Jun Song, Yu Cheng, Bo Zheng, and Gao Huang. Vit $^{3}$: Unlocking test-time training in vision. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2026. 2

[^16]: Wonbong Jang, Philippe Weinzaepfel, Vincent Leroy, Lourdes Agapito, and Jerome Revaud. Pow3R: Empowering Unconstrained 3D Reconstruction with Camera and Scene Priors. 2025. 2

[^17]: Haian Jin, Rundi Wu, Tianyuan Zhang, Ruiqi Gao, Jonathan T. Barron, Noah Snavely, and Aleksander Holynski. ZipMap: Linear-time stateful 3d reconstruction via test-time training. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2026. 3

[^18]: Jacques Kaiser, Agostino Martinelli, Flavio Fontana, and Davide Scaramuzza. Simultaneous state initialization and gyroscope bias calibration in visual inertial aided navigation. IEEE Robotics and Automation Letters, 2(1):18–25, 2016. 3

[^19]: Jay Karhade, Nikhil Keetha, Yuchen Zhang, Tanisha Gupta, Akash Sharma, Sebastian Scherer, and Deva Ramanan. Any4d: Unified feed-forward metric 4d reconstruction. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 14578–14589, 2026. 2

[^20]: Nikhil Keetha, Jay Karhade, Krishna Murthy Jatavallabhula, Gengshan Yang, Sebastian Scherer, Deva Ramanan, and Jonathon Luiten. Splatam: Splat, track & map 3d gaussians for dense rgb-d slam. In 2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pages 21357–21366. IEEE, 2024. 1

[^21]: Nikhil Keetha, Norman Müller, Johannes Schönberger, Lorenzo Porzi, Yuchen Zhang, Tobias Fischer, Arno Knapitsch, Duncan Zauss, Ethan Weber, Nelson Antunes, Jonathon Luiten, Manuel Lopez-Antequera, Samuel Rota Bulò, Christian Richardt, Deva Ramanan, Sebastian Scherer, and Peter Kontschieder. MapAnything: Universal Feed-Forward Metric 3D Reconstruction, 2026. arXiv:2509.13414[cs]. 1, 2

[^22]: Ramil Khafizov, Ar“ichev, Ruslan Rakhimov, Peter Wonka 3rd: Guided 3rd reaction. arXiv

[^23]: Yushi Lan, Yihang Luo, Fangzhou Hong, Shangchen Zhou, Honghua Chen, Zhaoyang Lyu, Shuai Yang, Bo Dai, Chen Change Loy, and Xingang Pan. Stream3r: Scalable sequential 3d reconstruction with causal transformer. arXiv preprint arXiv:2508.10893, 2025. 2

[^24]: Vincent Leroy, Yohann Cabon, and Jérôme Revaud. Grounding Image Matching in 3D with MASt3R, 2024. arXiv:2406.09756 [cs]. 1, 2

[^25]: Ruilong Li, Brent Yi, Junchen Liu, Hang Gao, Yi Ma, and Angjoo Kanazawa. Cameras as relative positional encoding. Advances in Neural Information Processing Systems, 38:15984–16009, 2026. 2

[^26]: Zizun Li, Jianjun Zhou, Yifan Wang, Haoyu Guo, Wenzheng Chang, Yang Zhou, Haoyi Zhu, Junyi Chen, Chunhua Shen, and Tong He. Wint3r: Window-based streaming reconstruction with camera token pool. arXiv preprint arXiv:2509.05296, 2025. 2

[^27]: Haotong Lin, Sili Chen, Junhao Liew, Donny Y. Chen, Zhenyu Li, Guang Shi, Jiashi Feng, and Bingyi Kang. Depth Anything 3: Recovering the Visual Space from Any Views, 2025. arXiv:2511.10647 [cs]. 1, 2, 5, 7

---

[^28]: Yuzheng Liu, Siyan Dong, Shuzhe Wang, Yingda Yin, Yanchao Yang, Qingnan Fan, and Baoquan Chen. Slam3r: Real-time dense scene reconstruction from monocular гб videos. In CVPR, pages 16651–16662, 2025. 2

[^29]: Jiahao Ma, Lei Wang, David Ahmedt-Aristizabal, Chuong Nguyen, et al. Puzzles: Unbounded video-depth augmentation for scalable end-to-end 3d reconstruction. arXiv preprint arXiv:2506.23863, 2025. 2

[^30]: Mohammad Mahdavian, Gordon Tan, Binbin Xu, Yuan Ren, Dongfeng Bai, and Bingbing Liu. Uniscale: Unified scale-aware 3d reconstruction for multi-view understanding via prior injection for robotic perception. arXiv preprint arXiv:2602.23224, 2026. 1, 2

[^31]: Soroush Mahdi, Fardin Ayar, Ehsan Javanmardi, Manabu Tsukada, and Mahdi Javanmardi. Evict3r: Training-free token eviction for memory-bounded streaming visual geometry transformers. arXiv preprint arXiv:2509.17650, 2025. 2

[^32]: Takeru Miyato, Bernhard Jaeger, Max Welling, and Andreas Geiger. Gta: A geometry-aware attention mechanism for multi-view transformers. In International Conference on Learning Representations, pages 8172–8208, 2024. 2

[^33]: Raul Mur-Artal and Juan D Tardós. Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras. IEEE transactions on robotics, 33(5):1255–1262, 2017. 1,2

[^34]: Raul Mur-Artal, J. M. M. Montiel, and Juan D. Tardos. Orbslam: A versatile and accurate monocular slam system. IEEE Transactions on Robotics, 31(5):1147–1163, 2015.

[^35]: Maxime Oquab, Timothée Darcet, Théo Moutakanni, Huy Vo, Marc Szafraniec, Vasil Khalidov, Pierre Fernandez, Daniel Haziza, Francisco Massa, Alaaeldin El-Nouby, Mahmoud Assran, Nicolas Ballas, Wojciech Galuba, Russell Howes, Po-Yao Huang, Shang-Wen Li, Ishan Misra, Michael Rabbat, Vasu Sharma, Gabriel Synnaeve, Hu Xu, Hervé Jegou, Julien Mairal, Patrick Labatut, Armand Joulin, and Piotr Bojanowski. DINOv2: Learning Robust Visual Features without Supervision, 2024. arXiv:2304.07193 [cs]. 2

[^36]: Linfei Pan, Dániel Baráth, Marc Pollefeys, and Johannes L. Schönberger. Global structure-from-motion revisited. In European Conference on Computer Vision, pages 58–77. Springer, 2024. 1

[^37]: Vojtech Panek, Qunjie Zhou, Yaqing Ding, Sérgio Agostinho, Zuzana Kukelova, Torsten Sattler, and Laura Leal-Taixé. A guide to structureless visual localization: V. panek et al. International Journal of Computer Vision, 134 (6):263, 2026. 1

[^38]: Haosong Peng, Hao Li, Yalun Dai, Yushi Lan, Yihang Luo, Tianyu Qi, Zhengshen Zhang, Yufeng Zhan, Junfei Zhang, Wenchao Xu, et al. Omnivggt: Omni-modality driven visual geometry grounded transformer. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 36485–36497, 2026. 1

[^39]: Tong Qin, Peiliang Li, and Shaojie Shen. Vins-mono: A robust and versatile monocular visual-inertial state estimator. IEEE transactions on robotics, 34(4):1004–1020, 2018. 2

[^40]: Torsten Sattler, Akihiko Torii, Josef Sivic, Marc Pollefeys, Hajime Taira, Masatoshi Okutomi, and Tomas Pajdla. Are

large-scale 3d models really necessary for accurate visual localization? In 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 6175–6184. IEEE, 2017. 1

[^41]: Johannes Lutz Schönberger and Jan-Michael Frahm. Structure-from-Motion Revisited. In Conference on Computer Vision and Pattern Recognition (CVPR), 2016. 1,2

[^42]: Zhenggang Tang, Yuchen Fan, Dilin Wang, Hongyu Xu, Rakesh Ranjan, Alexander Schwing, and Zhicheng Yan. Mv-dust3r+: Single-stage scene reconstruction from sparse views in 2 seconds. In CVPR, pages 5283–5293, 2025. 2

[^43]: Alexander Veicht, Paul-Edouard Sarlin, Philipp Lindenberger, and Marc Pollefeys. Geocalib: Learning single-image calibration with geometric optimization. In European Conference on Computer Vision, pages 1–20. Springer, 2024.

[^44]: Guangming Wang, Lei Pan, Songyou Peng, Shaohui Liu, Chenfeng Xu, Yanzi Miao, Wei Zhan, Masayoshi Tomizuka, Marc Pollefeys, and Hesheng Wang. Nerfs in robotics: A survey. The International Journal of Robotics Research, 45(6):858–892, 2026. 1

[^45]: Hengyi Wang and Lourdes Agapito. 3d reconstruction with spatial memory. In Proceedings of the International Conference on 3D Vision (3DV), pages 78–89. IEEE, 2025. 2

[^46]: Hengyi Wang and Lourdes Agapito. Amb3r: Accurate feed-forward metric-scale 3d reconstruction with backend. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 14612–14625, 2026. 2

[^47]: Jianyuan Wang, Minghao Chen, Nikita Karaev, Andrea Vedaldi, Christian Rupprecht, and David Novotny. VGGT: Visual Geometry Grounded Transformer, 2025. arXiv:2503.11651 [cs]. 1, 2, 7

[^48]: Jianyuan Wang, Minghao Chen, Shangzhan Zhang, Nikita Karaev, Johannes Schönberger, Patrick Labatut, Piotr Bojanowski, David Novotny, Andrea Vedaldi, and Christian Rupprecht. VGGT-Ω, 2026. 1, 2, 7

[^49]: Qianqian Wang*, Yifei Zhang*, Aleksander Holynski, Alexei A. Efros, and Angjoo Kanazawa. Continuous 3d perception model with persistent state. In CVPR, 2025. 2, 3

[^50]: Shuzhe Wang, Vincent Leroy, Yohann Cabon, Boris Chidlovskii, and Jerome Revaud. DUSt3R: Geometric 3D Vision Made Easy, 2023. arXiv:2312.14132 [cs]. 1, 2

[^51]: Wenshan Wang, Delong Zhu, Xiangwei Wang, Yaoyu Hu, Yuheng Qiu, Chen Wang, Yafei Hu, Ashish Kapoor, and Sebastian Scherer. TartanAir: A Dataset to Push the Limits of Visual SLAM, 2020. arXiv:2003.14338 [cs.RO]. 6

[^52]: Yifan Wang, Jianjun Zhou, Haoyi Zhu, Wenzheng Chang, Yang Zhou, Zizun Li, Junyi Chen, Jiangmiao Pang, Chunhua Shen, and Tong He. $\pi^{3}$: Permutation-equivariant visual geometry learning, 2026. 1, 2, 5, 7

[^53]: Yuqi Wu, Wenzhao Zheng, Jie Zhou, and Jiwen Lu. Point3r: Streaming 3d reconstruction with explicit spatial pointer memory. arXiv preprint arXiv:2507.02863, 2025. 2

[^54]: Jianing Yang, Alexander Sax, Kevin J Liang, Mikael Henaff, Hao Tang, Ang Cao, Joyce Chai, Franziska Meier, and Matt Feiszli. Fast3r: Towards 3d reconstruction of 1000+ images in one forward pass. In CVPR, pages 21924–21935, 2025. 2

---

[^55]: Junyi Zhang, Charles Herrmann, Junhwa Hur, Chen Sun, Ming-Hsuan Yang, Forrester Cole, Trevor Darrell, and Deqing Sun. Loger: Long-context geometric reconstruction with hybrid memory. arXiv preprint arXiv:2603.03269, 2026. 3

[^56]: Yuxuan Zhou, Xingxing Li, Shengyu Li, Zhuohao Yan, Chunxi Xia, and Shaoquan Feng. Mast3r-fusion: Integrating feed-forward visual model with imu, gnss for high-functionality slam, 2025. 2

[^57]: Zihan Zhu, Wei Zhang, Moyang Li, Norbert Haala, Marc Pollefeys, and Daniel Barath. Vigs-slam: Visual inertial gaussian splatting slam. In European Conference on Computer Vision (ECCV), 2026. 2

[^58]: Dong Zhuo, Wenzhao Zheng, Jiahe Guo, Yuqi Wu, Jie Zhou, and Jiwen Lu. Streaming 4d visual geometry transformer. arXiv preprint arXiv:2507.11539, 2025. 2

---

# VI3: Grounding Pretrained 3D Foundation Models with Inertial Cues Supplementary Material

### A. Additional results

We provide further experiments and ablation studies, spanning the analysis of specific components of VI3, specifically the inertial initialization and the test-time refinement.

#### A.1. Inertial initialization

## Ground-truth inertial initialization

Tables 8 and 9 compare VI3 using our ground-truth-free (GT-free) inertial initialization from Sec. 4.2 against using the ground truth (GT) inertial parameters. As before, we separately assess its impact on TTR for the up-to-scale models, and on both input conditioning and TTR for the metric baselines. These results validate our proposed GT-free initialization, which maintains a small performance gap with respect to the GT oracle in rotation and depth, although the gap is larger for translation due to the sensitivity of the estimated scale to errors in the initial velocity. This trend is consistent across datasets and models, for both metric and up-to-scale settings. Overall, the results demonstrate that TTR can effectively absorb the errors introduced by the initial inertial estimate and refine the predictions, making it a more effective mechanism than input conditioning for injecting inertial cues into pretrained 3DFMs.

## Gravity consensus

Table 5 provides additional results for our gravity consensus mechanism. The image-based gravity estimation $g_{gc}$ typically fails on texture-less scenarios, as reflected by large mean errors in TartanAirV2 and UZH-FPV. The use of an alternative, rough, inertial-only gravity estimation ( $g_{imu}$) brings the possibility to detect large errors of $g_{gc}$, and swap to a visual-inertial least-squares estimate ( $g_{ls}$), which prevents from using largely erroneous values and, on average, shows a configuration which outperforms every gravity estimate alone. Note, in the right part of the table, the specific percentage of gravity swaps from $g_{gc}$ to $g_{ls}$, and how the error is substantially reduced for these specific cases. This shows how our consensus method effectively detects large errors from image-based gravity predictions.

## Initial velocity-scale estimation

Table. 6 supports our decision of formulating the initial velocity estimation as total least squares (TLS), instead of as an ordinary least squares (OLS). The assumption underlying TLS is that both the visual and inertial counterparts are noisy. On TartanAirV2, for which IMU data is noiseless, this assumption does not hold and both scale estimates show similar errors. However, on the two real (noisy) datasets (EuRoC and UZH-FPV) TLS leads to clear improvements over OLS, with scale estimates closer to the ideal value (1).

## Initial velocity magnitude

When applying the regressed velocity scale to obtain the magnitude of the initial velocity, two options arise: scaling only the first pair of frames, or backprojecting all pairs to the initial one and taking the median as a robust representative. Table 7 shows that using all pairs brings slightly, but clearly lower translation errors and a better scale estimates for out-of-distribution scenes with moderate parallax, in particular in EuRoC.

<div style="text-align: center;">Table 5. Init: gravity consensus. VGGT model. Mean frame-0 gravity error ( $^{\circ}$ vs. GT). For diverging consensus, we report Fires on % of windows, replacing the default single-image  $g_{gc}$ with the motion-compensated  $g_{ls}$ only there; our estimate beats both sources over the full suite. Mean over sequences $\times$windows.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td colspan="4">Full-suite ( $^{{o}}$) $\downarrow$</td><td colspan="2">Diverging consensus</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\mathbf{g}_{\text{gc}}$</td><td style='text-align: center; word-wrap: break-word;'>$\mathbf{g}_{\text{imu}}$</td><td style='text-align: center; word-wrap: break-word;'>$\mathbf{g}_{\text{ls}}$</td><td style='text-align: center; word-wrap: break-word;'>Ours</td><td style='text-align: center; word-wrap: break-word;'>Fires (%)</td><td style='text-align: center; word-wrap: break-word;'>$\mathbf{g}_{\text{gc}} \rightarrow \mathbf{g}_{\text{ls}}$ ( $^{{o}}$)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>9.67</td><td style='text-align: center; word-wrap: break-word;'>8.58</td><td style='text-align: center; word-wrap: break-word;'>4.31</td><td style='text-align: center; word-wrap: break-word;'>1.96</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>78.3 $\rightarrow$4.3</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EuRoC</td><td style='text-align: center; word-wrap: break-word;'>1.98</td><td style='text-align: center; word-wrap: break-word;'>4.22</td><td style='text-align: center; word-wrap: break-word;'>2.62</td><td style='text-align: center; word-wrap: break-word;'>1.98</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>23.75</td><td style='text-align: center; word-wrap: break-word;'>22.38</td><td style='text-align: center; word-wrap: break-word;'>15.52</td><td style='text-align: center; word-wrap: break-word;'>10.32</td><td style='text-align: center; word-wrap: break-word;'>31</td><td style='text-align: center; word-wrap: break-word;'>61.8 $\rightarrow$18.8</td></tr></table>

<div style="text-align: center;">Table 6. Init: velocity-scale estimation – OLS vs. TLS. VGGT model. Implied  $|\hat{v}_1| / |v_1^{\mathrm{gt}}|$ (ideal 1.0) of the ordinary- and total-least-squares scalar scale. OLS attenuates under-predictor noise (regression dilution)  $\Rightarrow$ systematic under-scale; the errors-in-variables TLS is unbiased.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>OLS</td><td style='text-align: center; word-wrap: break-word;'>TLS</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>0.89</td><td style='text-align: center; word-wrap: break-word;'>1.12</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EuRoC</td><td style='text-align: center; word-wrap: break-word;'>0.76</td><td style='text-align: center; word-wrap: break-word;'>0.96</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>0.60</td><td style='text-align: center; word-wrap: break-word;'>0.70</td></tr></table>

<div style="text-align: center;">Table 7. Init: velocity magnitude. Using the TLS scale on the first pair alone (first-pair, Eq. 7) vs. the robust median back-projection over all pairs (all-pairs, Eq. 8). The all-pairs back-out lowers translation error and pulls both trajectory and depth scale toward 1 where the single-pair estimate is noisy. VGGT.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td colspan="2">Trans (m) $\downarrow$</td><td colspan="2">Scale (Traj.) $\rightarrow$1</td><td colspan="2">Scale (Depth) $\rightarrow$1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>first</td><td style='text-align: center; word-wrap: break-word;'>all</td><td style='text-align: center; word-wrap: break-word;'>first</td><td style='text-align: center; word-wrap: break-word;'>all</td><td style='text-align: center; word-wrap: break-word;'>first</td><td style='text-align: center; word-wrap: break-word;'>all</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanAirV2</td><td style='text-align: center; word-wrap: break-word;'>0.505</td><td style='text-align: center; word-wrap: break-word;'>0.351</td><td style='text-align: center; word-wrap: break-word;'>1.00</td><td style='text-align: center; word-wrap: break-word;'>1.05</td><td style='text-align: center; word-wrap: break-word;'>1.05</td><td style='text-align: center; word-wrap: break-word;'>1.11</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EuRoC</td><td style='text-align: center; word-wrap: break-word;'>0.060</td><td style='text-align: center; word-wrap: break-word;'>0.060</td><td style='text-align: center; word-wrap: break-word;'>0.91</td><td style='text-align: center; word-wrap: break-word;'>0.99</td><td style='text-align: center; word-wrap: break-word;'>1.08</td><td style='text-align: center; word-wrap: break-word;'>1.00</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>0.537</td><td style='text-align: center; word-wrap: break-word;'>0.495</td><td style='text-align: center; word-wrap: break-word;'>0.81</td><td style='text-align: center; word-wrap: break-word;'>0.80</td><td style='text-align: center; word-wrap: break-word;'>0.94</td><td style='text-align: center; word-wrap: break-word;'>0.94</td></tr></table>

---

<div style="text-align: center;">Table 8. Initialization of up-to-scale models: GT-free vs. GT (Oracle). Inertial test-time refinement with fully-GT-free init vs. an oracle GT init (GT gravity,  $v_{1}$, gyro bias). Each cell is GT-free / GT; better in bold. GT-free reaches near-oracle quality.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>Model</td><td style='text-align: center; word-wrap: break-word;'>Trans (m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>Rot (°) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>Scale (Traj.) $\rightarrow$1</td><td style='text-align: center; word-wrap: break-word;'>AbsRel $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>$\delta < 1.25$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>Scale (Depth) $\rightarrow$1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>Init</td><td style='text-align: center; word-wrap: break-word;'>GT-free / GT</td><td style='text-align: center; word-wrap: break-word;'>GT-free / GT</td><td style='text-align: center; word-wrap: break-word;'>GT-free / GT</td><td style='text-align: center; word-wrap: break-word;'>GT-free / GT</td><td style='text-align: center; word-wrap: break-word;'>GT-free / GT</td><td style='text-align: center; word-wrap: break-word;'>GT-free / GT</td></tr><tr><td rowspan="3">TortanAir</td><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>0.358 / 0.058</td><td style='text-align: center; word-wrap: break-word;'>0.410 / 0.348</td><td style='text-align: center; word-wrap: break-word;'>1.05 / 0.99</td><td style='text-align: center; word-wrap: break-word;'>0.089 / 0.076</td><td style='text-align: center; word-wrap: break-word;'>0.515 / 0.882</td><td style='text-align: center; word-wrap: break-word;'>1.11 / 1.06</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>0.378 / 0.053</td><td style='text-align: center; word-wrap: break-word;'>0.354 / 0.248</td><td style='text-align: center; word-wrap: break-word;'>1.10 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.080 / 0.077</td><td style='text-align: center; word-wrap: break-word;'>0.596 / 0.938</td><td style='text-align: center; word-wrap: break-word;'>1.12 / 1.04</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>0.350 / 0.053</td><td style='text-align: center; word-wrap: break-word;'>0.296 / 0.307</td><td style='text-align: center; word-wrap: break-word;'>1.09 / 0.99</td><td style='text-align: center; word-wrap: break-word;'>0.083 / 0.071</td><td style='text-align: center; word-wrap: break-word;'>0.556 / 0.921</td><td style='text-align: center; word-wrap: break-word;'>1.12 / 1.01</td></tr><tr><td rowspan="3">EuRoC</td><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>0.061 / 0.015</td><td style='text-align: center; word-wrap: break-word;'>0.285 / 0.118</td><td style='text-align: center; word-wrap: break-word;'>0.98 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.234 / 0.240</td><td style='text-align: center; word-wrap: break-word;'>0.324 / 0.465</td><td style='text-align: center; word-wrap: break-word;'>1.00 / 1.08</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>0.074 / 0.016</td><td style='text-align: center; word-wrap: break-word;'>0.252 / 0.062</td><td style='text-align: center; word-wrap: break-word;'>1.05 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.215 / 0.219</td><td style='text-align: center; word-wrap: break-word;'>0.243 / 0.653</td><td style='text-align: center; word-wrap: break-word;'>1.10 / 1.03</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>0.078 / 0.012</td><td style='text-align: center; word-wrap: break-word;'>0.164 / 0.105</td><td style='text-align: center; word-wrap: break-word;'>1.08 / 0.99</td><td style='text-align: center; word-wrap: break-word;'>0.203 / 0.204</td><td style='text-align: center; word-wrap: break-word;'>0.251 / 0.672</td><td style='text-align: center; word-wrap: break-word;'>1.18 / 1.07</td></tr><tr><td rowspan="3">UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>VGGT</td><td style='text-align: center; word-wrap: break-word;'>0.497 / 0.027</td><td style='text-align: center; word-wrap: break-word;'>0.301 / 0.344</td><td style='text-align: center; word-wrap: break-word;'>0.80 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.203 / 0.209</td><td style='text-align: center; word-wrap: break-word;'>0.201 / 0.379</td><td style='text-align: center; word-wrap: break-word;'>0.92 / 1.28</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>0.328 / 0.009</td><td style='text-align: center; word-wrap: break-word;'>0.192 / 0.189</td><td style='text-align: center; word-wrap: break-word;'>0.92 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.237 / 0.242</td><td style='text-align: center; word-wrap: break-word;'>0.217 / 0.309</td><td style='text-align: center; word-wrap: break-word;'>1.20 / 1.30</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>0.396 / 0.022</td><td style='text-align: center; word-wrap: break-word;'>0.246 / 0.242</td><td style='text-align: center; word-wrap: break-word;'>0.79 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.249 / 0.239</td><td style='text-align: center; word-wrap: break-word;'>0.138 / 0.247</td><td style='text-align: center; word-wrap: break-word;'>1.07 / 1.34</td></tr></table>

<div style="text-align: center;">Table 9. Initialization of scale-aware models: GT-free vs. GT IMU-pose conditioning (IMU-cond, feed-forward) and inertial test-time refinement (TTR), each shown as GT-free/GT: our fully-GT-free init vs. an oracle init (GT gravity,  $v_0$, gyro bias). Better in bold.  $\dagger$DA3's IMU-cond additionally feeds camera intrinsics (required by its pose encoder); Pi3X's is pose-only. Median over sequences  $\times$windows.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td rowspan="2">Model</td><td colspan="2">Trans (m) $\downarrow$</td><td colspan="2">Rot ( $^{\circ}$) $\downarrow$</td><td colspan="2">Scale (Traj.) $\rightarrow 1$</td><td colspan="2">Scale (Depth) $\rightarrow 1$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>IMU-cond GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>TTR GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>TTR GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>TTR GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>IMU-cond GT-free/GT</td><td style='text-align: center; word-wrap: break-word;'>TTR GT-free/GT</td></tr><tr><td rowspan="2">TartanAir</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>0.371 / 0.339</td><td style='text-align: center; word-wrap: break-word;'>0.417 / 0.061</td><td style='text-align: center; word-wrap: break-word;'>0.546 / 0.589</td><td style='text-align: center; word-wrap: break-word;'>0.310 / 0.320</td><td style='text-align: center; word-wrap: break-word;'>1.20 / 1.20</td><td style='text-align: center; word-wrap: break-word;'>1.09 / 0.99</td><td style='text-align: center; word-wrap: break-word;'>1.25 / 1.26</td><td style='text-align: center; word-wrap: break-word;'>1.10 / 1.03</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3</td><td style='text-align: center; word-wrap: break-word;'>0.446 / 0.248 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.486 / 0.061</td><td style='text-align: center; word-wrap: break-word;'>0.801 / 0.683 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.351 / 0.345</td><td style='text-align: center; word-wrap: break-word;'>0.83 / 0.81 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.06 / 1.01</td><td style='text-align: center; word-wrap: break-word;'>0.90 / 0.88 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.19 / 1.16</td></tr><tr><td rowspan="2">EuRoC</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>0.081 / 0.070</td><td style='text-align: center; word-wrap: break-word;'>0.071 / 0.015</td><td style='text-align: center; word-wrap: break-word;'>0.306 / 0.257</td><td style='text-align: center; word-wrap: break-word;'>0.247 / 0.138</td><td style='text-align: center; word-wrap: break-word;'>0.82 / 0.85</td><td style='text-align: center; word-wrap: break-word;'>1.02 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>0.93 / 0.93</td><td style='text-align: center; word-wrap: break-word;'>1.12 / 1.07</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3</td><td style='text-align: center; word-wrap: break-word;'>0.055 / 0.057 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.092 / 0.027</td><td style='text-align: center; word-wrap: break-word;'>0.326 / 0.235 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.312 / 0.141</td><td style='text-align: center; word-wrap: break-word;'>0.75 / 0.76 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.13 / 1.01</td><td style='text-align: center; word-wrap: break-word;'>0.73 / 0.73 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.20 / 1.04</td></tr><tr><td rowspan="2">UZH-FPV</td><td style='text-align: center; word-wrap: break-word;'>Pi3X</td><td style='text-align: center; word-wrap: break-word;'>0.535 / 0.494</td><td style='text-align: center; word-wrap: break-word;'>0.404 / 0.036</td><td style='text-align: center; word-wrap: break-word;'>0.738 / 0.812</td><td style='text-align: center; word-wrap: break-word;'>0.231 / 0.214</td><td style='text-align: center; word-wrap: break-word;'>1.15 / 1.15</td><td style='text-align: center; word-wrap: break-word;'>0.82 / 1.00</td><td style='text-align: center; word-wrap: break-word;'>1.65 / 1.64</td><td style='text-align: center; word-wrap: break-word;'>1.09 / 1.38</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3</td><td style='text-align: center; word-wrap: break-word;'>0.452 / 0.377 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.379 / 0.020</td><td style='text-align: center; word-wrap: break-word;'>0.626 / 0.423 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.231 / 0.228</td><td style='text-align: center; word-wrap: break-word;'>0.83 / 0.84 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.88 / 0.99</td><td style='text-align: center; word-wrap: break-word;'>1.05 / 1.06 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1.07 / 1.27</td></tr></table>

#### A.2. Test-time refinement

## Supervision objective

Table 10 breaks down the supervision objective adopted in the our TTR. Exclusively supervising pose (keeping depth frozen) limits the benefits that multiple views can bring into the refinement process. Adding reprojection depth consistency, unlocks multi-view constraints in a self-supervised manner, leading to pose improvement. However, the inclusion of this up-to-scale loss degrades the scale estimates. Our adopted configuration solves this problem by regularizing depth, leading to a significant growth in depth metric correctness ( $\delta<1.25$).

## Frame stride: parallax

Figure 5 analyzes the effect of the frame stride parameter, a direct tuning knob which allows adjusting parallax by skipping a number of consecutive sequence frames. Figure 5 (A) shows absolute pose error increases with growing stride, which is a consequence of the absolute translation being bigger. Figure 5 (B) normalizes the error by the translation length, which makes a more relevant pattern to emerge. Strides of 3 or 2 bring a good balance between parallax and translation in the datasets considered, as below them the parallax is insufficient, and above it the multi-view overlap diminishes and perspective effects change texture. The initial velocity, influenced by the translation accuracy commented, shows the same pattern, with stride 2 being optimal for initial velocity direction, and 3 for its magnitude counterpart, as Figure 5 (C) exposes. We set stride 2 in the results presented in the main paper.

## Computational cost

On Table 11 we show the backbone-specific initialization and test-time refinement cost. We use the consumer-grade NVIDIA RTX 5090 GPU. Note some models (↑) implement gradient checkpointing to fit in memory, increasing the cost for the choice of consumer-grade hardware. We also show, for the lightest model, VGGT-Ω, the impact of fine-tuning capacity. More unfrozen blocks (higher capacity), implies longer overall processing time and a higher memory consumption. We find 8 to be a sweet spot between refinement capacity (see rotation column) but also computational time and memory, as for the choice of $n = 8$ context frames,

---

![Image](images/0f7b02013864cc28feb8531ffd3ff4aab8b3d9d45e0393f1c37795115afc834f.jpg)

![Image](images/aed3aa8d17dc730b698891fa287caf672917f62cf78b0423581fdcc45924b34d.jpg)

![Image](images/8cb1a3112ff01561ebba122082b7c46823ea12d79e64f4db909827bd9c954957.jpg)

<div style="text-align: center;">Figure 5. Frame-stride (parallax) effect absolute and relative poses, and initial velocity estimation.</div>

<div style="text-align: center;">Table 10. TTR: supervision objective ablation. Results shown for VGGT, on EuRoC, using GT-free init (VI3). Adding our self-supervised depth-consistency term to the pose loss improves trajectory refinement and metric depth; anchoring then fixes the metric-depth drift the consistency term alone erodes.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Loss</td><td style='text-align: center; word-wrap: break-word;'>Trans (m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>Rot ( $^{\circ}$) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>Scale (Traj.) $\rightarrow$1</td><td style='text-align: center; word-wrap: break-word;'>AbsRel $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>$\delta < 1.25$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>Scale (Depth) $\rightarrow$1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Pose-only</td><td style='text-align: center; word-wrap: break-word;'>0.078</td><td style='text-align: center; word-wrap: break-word;'>0.441</td><td style='text-align: center; word-wrap: break-word;'>0.983</td><td style='text-align: center; word-wrap: break-word;'>0.240</td><td style='text-align: center; word-wrap: break-word;'>0.275</td><td style='text-align: center; word-wrap: break-word;'>0.994</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>+ SSL dcons</td><td style='text-align: center; word-wrap: break-word;'>0.063</td><td style='text-align: center; word-wrap: break-word;'>0.334</td><td style='text-align: center; word-wrap: break-word;'>0.981</td><td style='text-align: center; word-wrap: break-word;'>0.242</td><td style='text-align: center; word-wrap: break-word;'>0.246</td><td style='text-align: center; word-wrap: break-word;'>0.917</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>+ Anchoring</td><td style='text-align: center; word-wrap: break-word;'>0.062</td><td style='text-align: center; word-wrap: break-word;'>0.290</td><td style='text-align: center; word-wrap: break-word;'>0.988</td><td style='text-align: center; word-wrap: break-word;'>0.234</td><td style='text-align: center; word-wrap: break-word;'>0.324</td><td style='text-align: center; word-wrap: break-word;'>1.003</td></tr></table>

8 is the upper bound to fit in memory some of the models utilized in this work.

### B. Additional qualitative results

We show further examples of qualitative results. Figures 6 and 7 correspond to the four synthetic environments we evaluate on from TartanAirV2 (ForestEnv, ModernCityDowntown, Hospital and House). Figure 8 presents an additional Vicon Room 2 reconstruction, with moderate motion and various scene objects; and Figure 9 shows how VI3 is capable of recovering from an overscaled metric-aware pretrained baseline, despite the high-speed motion profile of UZH-FPV Indoor Forward scenes.

### C. Limitations

Our approach materializes a way to add inertial cues to pre-trained 3DFMs without any ground-truth. We have shown VI3 robustly recovers metric motion and geometry across backbones and datasets. It is, however, bounded by what visual-inertial cues cannot observe. Metric scale is only recoverable where motion provides sufficient translational parallax; a fundamental observability limit rather than a failure of estimation. Models differ in how gracefully they degrade in this regime, since the estimate operates on their predicted inter-frame velocities.

Table 11. Test-time refinement cost on a single NVIDIA RTX 5090, $(n = 8$, stride 2). Init is the one-time GT-free initialization, with model-weight loading excluded as it is amortized across windows. ms / iteration is the amortized per-step wall-time. Total is the time to reach the converged operating point of 160 iterations, i.e. Init + 160 $\times$(ms / iteration). The initialization is essentially free ( $\sim$ 230ms) and model independent; the cost is dominated by the refinement steps. ${}^{\dagger}$Uses gradient checkpointing to be able to fit n = 8, trading recompute for memory (reflected in the per-iteration cost).

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td colspan="4">Initialization and optimization steps</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Model</td><td style='text-align: center; word-wrap: break-word;'>Init</td><td style='text-align: center; word-wrap: break-word;'>ms / iteration</td><td style='text-align: center; word-wrap: break-word;'>Total (160 it.)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>232 ms</td><td style='text-align: center; word-wrap: break-word;'>706</td><td style='text-align: center; word-wrap: break-word;'>113 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VGGT- $\Omega$</td><td style='text-align: center; word-wrap: break-word;'>232 ms</td><td style='text-align: center; word-wrap: break-word;'>302</td><td style='text-align: center; word-wrap: break-word;'>48 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\pi^{3}$</td><td style='text-align: center; word-wrap: break-word;'>232 ms</td><td style='text-align: center; word-wrap: break-word;'>492</td><td style='text-align: center; word-wrap: break-word;'>79 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Pi3X $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>232 ms</td><td style='text-align: center; word-wrap: break-word;'>739</td><td style='text-align: center; word-wrap: break-word;'>118 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DA3 $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>232 ms</td><td style='text-align: center; word-wrap: break-word;'>802</td><td style='text-align: center; word-wrap: break-word;'>128 s</td></tr></table>

<div style="text-align: center;">Number of trainable blocks (VGGT- $\Omega$)</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Blocks</td><td style='text-align: center; word-wrap: break-word;'>Rot. ( $^{\circ}$)</td><td style='text-align: center; word-wrap: break-word;'>ms / iteration</td><td style='text-align: center; word-wrap: break-word;'>Total (160 it.)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0.315</td><td style='text-align: center; word-wrap: break-word;'>255</td><td style='text-align: center; word-wrap: break-word;'>41 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>0.291</td><td style='text-align: center; word-wrap: break-word;'>274</td><td style='text-align: center; word-wrap: break-word;'>44 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>0.228</td><td style='text-align: center; word-wrap: break-word;'>302</td><td style='text-align: center; word-wrap: break-word;'>48 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>16</td><td style='text-align: center; word-wrap: break-word;'>0.206</td><td style='text-align: center; word-wrap: break-word;'>381</td><td style='text-align: center; word-wrap: break-word;'>61 s</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>24 (Full)</td><td style='text-align: center; word-wrap: break-word;'>0.234</td><td style='text-align: center; word-wrap: break-word;'>421</td><td style='text-align: center; word-wrap: break-word;'>67 s</td></tr></table>

---

![Image](images/10eb8e3a308ecc164def6288d7a699d07d23ed1998e2479082a5a12c25972ade.jpg)

![Image](images/e521ef8192df1ac3f6971e093d53ba993c643f3ac26f2716a0b8f4bc86f2ff36.jpg)

![Image](images/6465c11cc88bd842f720fbf41fa208754705fd8e0a81a3d1d07557f080dadda5.jpg)

![Image](images/e571c51cea6025e5601d8d3c9c3460646c985bfbb0c76896e073b9abc7db3547.jpg)

<div style="text-align: center;">Figure 6. TartanAirV2 qualitative results: ForestEnv and House environments. Pretrained 3DFM (red); inertial trajectory (blue); VI3 (green); GT pointcloud (normal texture).</div>

![Image](images/5b82fef33f90dfcd6cfa1552c6e7b4ef1084eb0a0ba482c6a75aef88a6df1f5b.jpg)

![Image](images/5c72339d226ac534e9959697e6553c181f5012b0e663595a8a1f7385b2642b6d.jpg)

![Image](images/2d74983a6f652f5991305ba229e44ea5861aa308ff41218217c82c8c6d42d20d.jpg)

![Image](images/32ef558fdfaa7fa28d8acfec6e339dc3a420a22ddc63997cde5a81b829d7abbd.jpg)

<div style="text-align: center;">Figure 7. TartanAirV2 qualitative results: ModernCityDowntown and Hospital environments. Pretrained 3DFM (red); inertial trajectory (blue); VI3 (green); GT pointcloud (normal texture).</div>

---

![Image](images/7946a716fe3da78698ce8716071271aab357218afe7a09bf83bdcf83832ef370.jpg)

<div style="text-align: center;">Figure 8. EuRoC qualitative results: Vicon Room 2 scene. Pretrained 3DFM (red); inertial trajectory (blue); VI3 (green); GT pointcloud (normal texture).</div>

![Image](images/26aee78a1dbcb30d3ab1f369512e243517f7c16d8087653672c1a4f1da59827d.jpg)

<div style="text-align: center;">Figure 9. UZH-FPV qualitative results: Indoor Forward scene. Pretrained 3DFM (red); inertial trajectory (blue); VI3 (green); GT pointcloud (normal texture), stereo-derived (noisy).</div>
