Skip to content

T2 WALKTHROUGH

Video depth

Takes an ordered T × H × W × 3 RGB clip from one phase and returns a T × H × W depth sequence.

FRAME 00185: RGB clip · preserve frame order
FRAME 00185RGB clip · preserve frame order
FRAME 00186: Adjacent frame · same capture
FRAME 00186Adjacent frame · same capture

Scene 049, Interaction, frames 00185 and 00186. Real clips are longer; their length comes from the manifest.

INPUTOrdered RGB clip
PREDICTIONDepth sequence
EVALUATIONDepth + temporal accuracy

Connect your model

Put your prediction function in my_model.py. Load the model or API client once, at module level, rather than on every call.

my_model.py
import numpy as np

def predict_video_depth(rgb):
    return np.asarray(model.predict_clip(rgb), dtype=np.float32)

Return one depth map per input frame, in the order you received them. A constant map is rejected as degenerate.

Run the benchmark

Install the toolkit with pip install 'rpx-benchmark[hub,schemas]'. The smoke test checks the install; the second tab scores your model.

python -m rpx_benchmark.examples.benchmark_tasks \
  --task T2 --smoke --output results/t2-smoke

This runs the real evaluator on a few synthetic inputs with a placeholder model. Nothing is downloaded and no weights are needed. The output directory must be new or empty.

Run this from the directory that contains my_model.py. Without --manifest, the command downloads the data it needs first.

python -m rpx_benchmark.examples.benchmark_tasks \
  --task T2 \
  --model my_model:predict_video_depth \
  --model-name my-model \
  --model-revision exact-checkpoint-or-api-version \
  --output results/my-model/T2 \
  --device cuda \
  --split easy \
  --max-samples 10

Ten samples are enough to check the wiring; drop --max-samples to score the whole split. To use data you already have on disk, add --manifest path/to/manifest.json (see using local data).

Read the results

The output directory holds result.json, summary.md, per-sample tables and cell logs. run_config.json records the model revision and the manifest hash. From Python, the run_* functions return (result, report, paths).

Check that the number of scored samples matches what you asked for. Keep the per-sample records: Φ and 𝒥min are computed from them. Latency and memory are measured separately, with the hardware profiler.

Scoring and protocol

Your function must keep the input frame order and return the same T. Pass --depth-output-kind relative only for up-to-scale predictions; those get a per-clip scale and shift fit before scoring. Compare models with the same clip length, frame sampling and alignment.

Scores combine per-frame depth accuracy with two temporal metrics, tgm and tgse. The paper's metric vector leaves out the pose- and flow-dependent diagnostics. Here --max-samples counts clips, not frames. VideoDepthRunConfig has frame-budget and sampling options for ablations.

Before a full run

Check units, shapes, input order and sample IDs on a small run first. Pin the model revision, and keep the split and preprocessing the same for every model you compare. The smoke test only exercises the evaluator; your model still needs its own environment and weights.

Workflow figure

T2 workflow (SVG): the inputs, adapter and scoring stages for this task.