Skip to content

Memory Return Gate

This metric evaluates whether a closed-loop rollout actually left its anchor viewpoint and later returned to a previously visited one. It is an official metric for the closed-loop family of the long_sequence dimension. A failed gate no longer blocks subsequent memory metrics: they calculate their own measurements and retain gate_passed=false and gate_failure_reason in their details. Pairs are read from the estimated pose track, not from ground-truth action indices.

Camera-to-world poses {Tt}t=0T−1⊂SE(3)\{\mathbf{T}_t\}_{t=0}^{T-1}\subset\mathrm{SE}(3) are loaded from the ViPE sidecar beside the prediction. Missing poses make the whole memory track not_applicable. Let pt\mathbf{p}_t be translation and Rt\mathbf{R}_t rotation. Translation is normalized by the trajectory’s own departure extent E=max⁡t∥pt−p0∥E=\max_t\|\mathbf{p}_t-\mathbf{p}_0\|, then combined with the geodesic rotation angle θ(i,j)=∠(Ri,Rj)\theta(i,j)=\angle(\mathbf{R}_i,\mathbf{R}_j) (degrees) into a scale-free pose distance:

d(i,j)=∥pi−pj∥E+λ⋅θ(i,j)180(1)d(i,j) = \frac{\|\mathbf{p}_i-\mathbf{p}_j\|}{E} + \lambda\cdot\frac{\theta(i,j)}{180} \tag{1}

The default is λ=1\lambda = 1 (rotation_weight). When EE is degenerate (an in-place rotation loop), the translation term is dropped and the distance falls back to rotation only.

Departure requires the farthest pose from the anchor to clear several pair-thresholds:

ddep=max⁡td(0,t)≥α⋅τ,α=3, τ=0.15(2)d_{\mathrm{dep}} = \max_{t} d(0,t) \ge \alpha\cdot\tau, \qquad \alpha = 3,\ \tau = 0.15 \tag{2}

i.e. min_departure_factor * max_pair_distance. Return then, for each frame jj, selects the geometrically closest earlier frame i⋆=arg⁡min⁡i≤j−gd(i,j)i^\star=\arg\min_{i\le j-g}d(i,j) at least Δtmin⁡\Delta t_{\min} seconds away (default 11 s, g=⌈Δtmin⁡⋅fps⌉g=\lceil\Delta t_{\min}\cdot\mathrm{fps}\rceil). The pair is kept if d(i⋆,j)≤τd(i^\star,j)\le\tau and the intervening excursion satisfies

e(i⋆,j)=max⁡i⋆<k<jd(i⋆,k)≥β⋅τ,β=3(3)e(i^\star,j) = \max_{i^\star < k < j} d(i^\star,k) \ge \beta\cdot\tau, \qquad \beta = 3 \tag{3}

(min_excursion_factor * max_pair_distance). The excursion test stops slow continuous motion from pairing every frame with its own recent past. A model that never walks back is reported as having no revisit, not as having forgotten the scene.

The gate score is the product of two indicators:

Sgate=1 ⁣[ddep≥ατ]⋅1 ⁣[∃ (i,j): d(i,j)≤τ ∧ e(i,j)≥βτ](4)S_{\mathrm{gate}} = \mathbf{1}\!\left[d_{\mathrm{dep}}\ge\alpha\tau\right] \cdot \mathbf{1}\!\left[\exists\,(i,j):\ d(i,j)\le\tau\ \wedge\ e(i,j)\ge\beta\tau\right] \tag{4}

Sgate∈{0,1}S_{\mathrm{gate}}\in\{0,1\}. In WorldAtlas this algorithm is implemented as the official metric memory_return_gate (pose_loop_gate backend). Under the default normalization config, raw and normalized outputs lie in {0,1}\{0,1\}. Report this official metric as a pass rate alongside the other memory scores; aggregate weights follow the published leaderboard rule. When strict revisit pairs are absent, scoring uses nearest earlier poses satisfying the same minimum time gap, without the return-distance or excursion thresholds (pair_source=nearest_pose_fallback). Scene F1 uses a supported revisit episode when available; after a failed gate with no supported episode, it compares the first and second halves of the pose track (split_source=temporal_midpoint_fallback), requiring at least two pose frames per half. These fallback scores can reflect viewpoint/control differences and should be read together with the gate. Missing inputs, unavailable backends, insufficient pair support or unreliable half-life fits still produce an explicit unavailable result.

Audit manifest: docs/assets/metric_examples/longseq_memory_60s_examples_20260909.json.

Input image: memory-dolly_loop-memory_pool_002
Input image
60s memory_loop · same benchmark case · gap 1.0000

memory-dolly_loop-memory_pool_002

Suite: memory_loopScene: photorealistic / outdoor / city
Benchmark prompt target

Move the camera forward through the scene, then back to where it started.

prompt source: memory_loop_prompt

Watch whether the camera actually leaves the start view and later comes back. A failed return is a control miss, not a memory miss.

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Higher metric scoreScore 1.0000 · official

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Lower metric scoreScore 0.0000 · official
Input image: memory-double_yaw_loop-memory_pool_090
Input image
60s memory_loop · same benchmark case · gap 1.0000

memory-double_yaw_loop-memory_pool_090

Suite: memory_loopScene: photorealistic / outdoor / terrestrial_landscape
Benchmark prompt target

Turn away and back to the start twice in a row.

prompt source: memory_loop_prompt

Watch whether the camera actually leaves the start view and later comes back. A failed return is a control miss, not a memory miss.

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Higher metric scoreScore 1.0000 · official

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Lower metric scoreScore 0.0000 · official
Input image: memory-yaw_loop_360-memory_pool_478
Input image
60s memory_loop · same benchmark case · gap 1.0000

memory-yaw_loop_360-memory_pool_478

Suite: memory_loopScene: photorealistic / outdoor / terrestrial_landscape
Benchmark prompt target

Rotate the camera a full turn in place and come back to the starting view.

prompt source: memory_loop_prompt

Watch whether the camera actually leaves the start view and later comes back. A failed return is a control miss, not a memory miss.

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Higher metric scoreScore 1.0000 · official

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Lower metric scoreScore 0.0000 · official
Input image: memory-yaw_loop_180-memory_pool_471
Input image
60s memory_loop · same benchmark case · gap 1.0000

memory-yaw_loop_180-memory_pool_471

Suite: memory_loopScene: photorealistic / indoor / living_spaces
Benchmark prompt target

Turn the camera to the right, then turn back to the starting view.

prompt source: memory_loop_prompt

Watch whether the camera actually leaves the start view and later comes back. A failed return is a control miss, not a memory miss.

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Higher metric scoreScore 1.0000 · official

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Lower metric scoreScore 0.0000 · official
Input image: memory-square_loop-memory_pool_476
Input image
60s memory_loop · same benchmark case · gap 1.0000

memory-square_loop-memory_pool_476

Suite: memory_loopScene: stylized / indoor / workspaces
Benchmark prompt target

Walk a closed square around the scene and return to the starting view.

prompt source: memory_loop_prompt

Watch whether the camera actually leaves the start view and later comes back. A failed return is a control miss, not a memory miss.

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Higher metric scoreScore 1.0000 · official

Model result videos will be available with the ModelScope release. / 模型推理视频将在 ModelScope 方案上线后提供。

Lower metric scoreScore 0.0000 · official