Video frame interpolation
- Score
- 23.7
- Wallet spend
- $5.40 of $10
- Model cost
- $9.61
- Agent time
- 3h 21m
- Steps
- 242
- Tokens in / out
- 48.2M / 240k
- Self-checks
- 3 passed of 3 used
- Rank at $10 wallet
- 10th of 14
Score
23.7raw metric 0.2371
The score is the raw metric (balanced LPIPS and FloLPIPS gap closed against a frozen baseline), which already runs from 0 to 1, times 100.
Verifier details
- scoring_protocol
- vfi-lpips-flolpips-two-anchor-v2
- metric_protocol
- vfi-lpips-alex01-flolpips-sequence-v1
- psnr_cap_db
- 100
- metric_seconds
- 434.5995
- scoring_seconds
- 715.2182
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 64fb0861ab5ad36e8da7ce79185cec3ce10474569173e38c609d55c5edc08b1a
After grading, a reviewer model reads the submission's files and the agent's trajectory and checks each of the task's rules. A failed check makes the score 0. Step numbers link into the trajectory.
✓non specialist initializationThe only pretrained weights shipped are the official RAFT 'things' checkpoint. It is a standalone optical-flow model, do
The only pretrained weights shipped are the official RAFT 'things' checkpoint. It is a standalone optical-flow model, downloaded from the upstream Dropbox models.zip, and its commit and sha256 are declared in architecture.json. vfi/interp.py loads it with torch.load(weights_only) after stripping the 'module.' prefix. SynthNet (vfi/synth.py) is built from random initialisation with a zero-initialised head in train/train_synth.py. The weights/synth.pt inventory contains only the 3-level UNet tensors (enc0-2, mid, up/dec, head, with 15 input channels), consistent with that code. No RIFE, FILM, GIMM or other VFI-specialist weights appear anywhere. architecture.json lists no teachers or fallback models. SEA-RAFT was tried and rejected, and it is a flow model in any case, so it is allowed.
✓learned frame generationserve.sh runs vfi/server.py. Each request goes through interpolate_frames_learned: RAFT bidirectional flow, then forward
serve.sh runs vfi/server.py. Each request goes through interpolate_frames_learned: RAFT bidirectional flow, then forward softmax splatting, then the SynthNet residual refiner loaded from weights/synth.pt, then assembly. SynthNet was trained on real ground-truth intermediate frames. The splat-only path in vfi/server.py is used only if synth.pt is absent, and it still uses the learned RAFT flow. Frames are synthesised by learned models, not copied or blended from stored outputs.
✓independent intervalsvfi/server.py handles each request on its own: it decodes the two endpoint PNGs, computes times = i/(count-1) and calls
vfi/server.py handles each request on its own: it decodes the two endpoint PNGs, computes times = i/(count-1) and calls the interpolator. In vfi/interp.py, flow is estimated from those two endpoints only. Apart from the loaded models, no state is carried between requests, and there is no cache, sequence context or fingerprinting.
✓no evaluation frame lookupThe serving code in vfi/server.py and vfi/interp.py makes no network calls, reads no stored frames or answer files, and
The serving code in vfi/server.py and vfi/interp.py makes no network calls, reads no stored frames or answer files, and does no hashing or lookup of inputs. Warmup uses synthetic 64x64 images. Outputs are computed only from the request's two frames and the model weights.
✓training data provenanceSources are declared in architecture.json and train/train_prep.py: the DAVIS-2017 trainval zip (train.txt sequences only
Sources are declared in architecture.json and train/train_prep.py: the DAVIS-2017 trainval zip (train.txt sequences only, with 6 sequences held out as dev) and the MPI-Sintel training clean/final split (3 scenes held out). trajectory#132 shows only training/clean and training/final were extracted, with an assertion that no test/ was present. Downloads were made with curl from the official sources and are recorded in the trajectory and logs/davis_selection.txt. Checkpoint selection used dev.json, built from held-out TRAIN scenes, plus /task/public examples, which are allowed. Searches of the evidence found no use of SNU-FILM, GoPro, Vimeo or any val/test split.
✓harness credentials used only by the harnessSearches of the trajectory found no use of ANTHROPIC, API_KEY, BASE_URL, codex or claude CLI, and no environment dumps.
Searches of the trajectory found no use of ANTHROPIC, API_KEY, BASE_URL, codex or claude CLI, and no environment dumps. HF_TOKEN was only checked for presence with ${HF_TOKEN:+yes}, which does not print the value, and was never used for uploads. Every 'upload' in the trajectory is a spin compute upload to the participant's Spin box, which is allowed. The only match for 'openrouter' is the harness's own model name in the trajectory index metadata.
LLM adversarial review is not proof of arbitrary program behavior. Host storage and task-specific deterministic checks remain required.
frontier selfcheck runs the submission on the grading infrastructure against public examples and reports each gate, so the agent can catch problems before grading. Each run gets four. This agent used 3 of 4.
- 1passed40m 43s into the runtook 4m 51s
startup 82.3 s of 300 s; 1/1 gates passed; The generation rate was projected from a sample: 72 of the evaluation's 270 intervals (600 of its 2250 frames), the first 9 counted once and the rest scaled to the evaluation, not timed over a whole pass.
5 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 82.3 s
- ✓POST /interpolate · the first public interval (4x, 384x720): 3 raw RGB frames of the requested size, accepted by the grader's parser
- ✓generation rate · 600 frames in 45.2 s, projected from 72 of 270 requests at concurrency 1: the first 9 intervals, which bring each of the sample's 9 (size, factor) shapes for the first time, took 7.7 s (the cold first one 0.6 s) and count once; the other 63 (525 frames) took 37.5 s, scaled to grading's other 2175 frames: 163 s of the 2250 s allowed for 2250 frames, including transport and export. 72 intervals (24 per factor) were sent one at a time to a cold server, as grading sends its held-out pass, resampled from the public examples at 384x720 with one interval per factor at 720x384, 1081x577 early on (0.29 megapixels per generated frame on average). Request seconds by factor: 4x 10.2, 8x 12.9, 16x 21.0; per generated frame by size: 384x720 (0.28 MP) 0.071 s, 720x384 (0.28 MP) 0.088 s, 1081x577 (0.62 MP) 0.121 s. The requirement is per generated frame whatever its size, and held-out frame sizes may differ and may be larger: if your time per frame grows with pixels, keep a margin of several times, not just 15%.
- ✓healthy after requests
- 2passed2h 36m into the runtook 2m 57s
startup 62.1 s of 300 s; 1/1 gates passed; The generation rate was projected from a sample: 72 of the evaluation's 270 intervals (600 of its 2250 frames), the first 9 counted once and the rest scaled to the evaluation, not timed over a whole pass.
5 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 62.1 s
- ✓POST /interpolate · the first public interval (4x, 384x720): 3 raw RGB frames of the requested size, accepted by the grader's parser
- ✓generation rate · 600 frames in 50.3 s, projected from 72 of 270 requests at concurrency 1: the first 9 intervals, which bring each of the sample's 9 (size, factor) shapes for the first time, took 7.9 s (the cold first one 0.9 s) and count once; the other 63 (525 frames) took 42.4 s, scaled to grading's other 2175 frames: 184 s of the 2250 s allowed for 2250 frames, including transport and export. 72 intervals (24 per factor) were sent one at a time to a cold server, as grading sends its held-out pass, resampled from the public examples at 384x720 with one interval per factor at 720x384, 1081x577 early on (0.29 megapixels per generated frame on average). Request seconds by factor: 4x 11.8, 8x 14.6, 16x 22.7; per generated frame by size: 384x720 (0.28 MP) 0.080 s, 720x384 (0.28 MP) 0.081 s, 1081x577 (0.62 MP) 0.124 s. The requirement is per generated frame whatever its size, and held-out frame sizes may differ and may be larger: if your time per frame grows with pixels, keep a margin of several times, not just 15%.
- ✓healthy after requests
- 3passed3h 17m into the runtook 2m 52s
startup 61.9 s of 300 s; 1/1 gates passed; The generation rate was projected from a sample: 72 of the evaluation's 270 intervals (600 of its 2250 frames), the first 9 counted once and the rest scaled to the evaluation, not timed over a whole pass.
5 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 61.9 s
- ✓POST /interpolate · the first public interval (4x, 384x720): 3 raw RGB frames of the requested size, accepted by the grader's parser
- ✓generation rate · 600 frames in 47.6 s, projected from 72 of 270 requests at concurrency 1: the first 9 intervals, which bring each of the sample's 9 (size, factor) shapes for the first time, took 7.3 s (the cold first one 0.7 s) and count once; the other 63 (525 frames) took 40.3 s, scaled to grading's other 2175 frames: 174 s of the 2250 s allowed for 2250 frames, including transport and export. 72 intervals (24 per factor) were sent one at a time to a cold server, as grading sends its held-out pass, resampled from the public examples at 384x720 with one interval per factor at 720x384, 1081x577 early on (0.29 megapixels per generated frame on average). Request seconds by factor: 4x 10.8, 8x 13.7, 16x 21.8; per generated frame by size: 384x720 (0.28 MP) 0.075 s, 720x384 (0.28 MP) 0.077 s, 1081x577 (0.62 MP) 0.120 s. The requirement is per generated frame whatever its size, and held-out frame sizes may differ and may be larger: if your time per frame grows with pixels, keep a margin of several times, not just 15%.
- ✓healthy after requests
The agent's last message before its session ended.
Submitted. Final system: RAFT-things bidirectional flow → forward softmax splatting → SynthNet residual refiner (0.84M-param UNet trained from scratch on DAVIS-2017 train + Sintel training only) → static-region blending.
Quality (LPIPS, lower better): dev 0.264 vs heuristic 0.280; public 0.0553; synthetic motion 0.033. Selfcheck: startup 62s of 300s, 12.9 fps vs 1 fps required, both response formats pass.
Pretrained components declared in architecture.json: only RAFT raft-things.pth (standalone flow model, FlyingChairs+FlyingThings3D-train). No specialist VFI weights anywhere; rejected probes (SEA-RAFT, flow averaging, larger net) were kept out of the submission.