Video frame interpolation
- Score
- 68.8
- Wallet spend
- $5.85 of $10
- Model cost
- $19.94
- Agent time
- 5h 9m
- Steps
- 286
- Tokens in / out
- 56.7M / 190k
- Self-checks
- 3 passed of 3 used
- Rank at $10 wallet
- 6th of 14
Score
68.8raw metric 0.6884
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
- 352.8339
- scoring_seconds
- 517.1295
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 970ced6cdebb12f1cf40766f85a3353f22b9e60b3a0796d3b8192602febdca5c
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 component used at inference is torchvision RAFT-Large (C_T_SKHT_V2). It is a standalone optical-flow
The only pretrained component used at inference is torchvision RAFT-Large (C_T_SKHT_V2). It is a standalone optical-flow model. vfi/model.py builds it with raft_large(weights=None) and loads it from the local model/raft_large_C_T_SKHT_V2.pth, whose inventory has torchvision RAFT keys. The session obtained that file through torchvision Raft_Large_Weights and download.pytorch.org (trajectory#34, trajectory#88). Both refiner checkpoints (model/refiner.pth with base 64 and model/refiner2.pth with base 48) contain only keys from the project's own Refiner UNet. train.py trains them from random initialization with a zero-initialized final layer, and its resume path loads only refiner weights. No specialist VFI checkpoint, such as RIFE, or VFI teacher appears in the code, the inventories or the trajectory.
✓learned frame generationserve.sh launches serve.py. Its run_interpolate function computes RAFT flows between the two endpoint frames, builds war
serve.sh launches serve.py. Its run_interpolate function computes RAFT flows between the two endpoint frames, builds warped and splatted candidates with forward-backward consistency, and passes them through the trained UNet refiner ensemble with h-flip TTA. The ensemble predicts a residual on top of a prior. The output frames therefore come from the learned refiner networks applied to the current request's inputs. VGG16 and LPIPS are used only as training losses.
✓independent intervalsThe /interpolate handler in serve.py uses only frames[0] and frames[T-1] of the current request to synthesize the interm
The /interpolate handler in serve.py uses only frames[0] and frames[T-1] of the current request to synthesize the intermediate frames. Nothing is cached, and no state is carried across requests or intervals. Each interval is processed independently.
✓no evaluation frame lookupserve.py makes no network calls and does not read any dataset, hash table or stored frames at serving time. Outputs are
serve.py makes no network calls and does not read any dataset, hash table or stored frames at serving time. Outputs are computed only from the request's endpoint frames using local weights. The model weights contain only network parameters (RAFT and the Refiner UNet), not stored frames. Public examples were used only for checkpoint selection, as TRAINING.md states.
✓training data provenanceThe training corpora are declared in architecture.json, TRAINING.md and prepare_data.py. They are DAVIS 2017 train, down
The training corpora are declared in architecture.json, TRAINING.md and prepare_data.py. They are DAVIS 2017 train, downloaded with curl from data.vision.ee.ethz.ch with the val sequences deleted; Vimeo-90K training data from HF bijinc/vimeo-90k-medium split=train, used after the official CSAIL zip returned 403 (trajectory#36, trajectory#37); and MPI Sintel training/final images downloaded from files.is.tue.mpg.de (trajectory#80, trajectory#81). The training commands use the matching train manifests. I found no use of the evaluation or test splits listed during the HF search (trajectory#25). All sources are declared and public.
✓harness credentials used only by the harnessI reviewed the trajectory and found no use of harness credentials, API keys or base URLs by participant code. The shippe
I reviewed the trajectory and found no use of harness credentials, API keys or base URLs by participant code. The shipped serve.py makes no remote calls. The network access I found was for public datasets and weights (PyTorch, HF datasets, DAVIS, Sintel) and the participant's own compute/storage tooling.
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.
- 1passed1h 5m into the runtook 3m 31s
startup 84.7 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 84.7 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 53.4 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 9.8 s (the cold first one 1.4 s) and count once; the other 63 (525 frames) took 43.6 s, scaled to grading's other 2175 frames: 190 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.1, 8x 14.4, 16x 27.8; per generated frame by size: 384x720 (0.28 MP) 0.083 s, 720x384 (0.28 MP) 0.084 s, 1081x577 (0.62 MP) 0.175 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
- 2passed4h 54m into the runtook 4m 22s
startup 71.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 71.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 119.1 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 21.0 s (the cold first one 1.5 s) and count once; the other 63 (525 frames) took 98.2 s, scaled to grading's other 2175 frames: 428 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 17.9, 8x 32.9, 16x 67.2; per generated frame by size: 384x720 (0.28 MP) 0.187 s, 720x384 (0.28 MP) 0.187 s, 1081x577 (0.62 MP) 0.424 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
- 3passed5h 2m into the runtook 4m 18s
startup 73.5 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 73.5 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 124.0 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 21.8 s (the cold first one 1.8 s) and count once; the other 63 (525 frames) took 102.3 s, scaled to grading's other 2175 frames: 445 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 19.6, 8x 34.4, 16x 68.9; per generated frame by size: 384x720 (0.28 MP) 0.195 s, 720x384 (0.28 MP) 0.196 s, 1081x577 (0.62 MP) 0.434 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. The final submission in /workspace/output/ passed frontier selfcheck on an H100 (startup 73.5s/300s, generation 5.05 frames/s vs 1 required) and was handed in with frontier submit --confirm.
System: frozen RAFT-Large standalone optical-flow (torchvision C_T_SKHT_V2, the only pretrained inference component, declared with checksum in architecture.json) plus forward-splat/backward-warp candidates refined by an ensemble of two from-scratch UNet refiners (base widths 64 and 48) with horizontal-flip TTA and adaptive fallbacks for large/tiny frames. No specialist VFI weights (RIFE/FILM/GIMM-VFI or descendants) were used anywhere; VGG/LPIPS were training-loss only.
Training used only training splits — DAVIS 2017 train (val sequences deleted pre-training), Vimeo90K triplet train, MPI Sintel training — documented in TRAINING.md with full logs in logs. Key fix during development: replacing transposed-convolution upsampling (checkerboard artifacts, LPIPS 0.22 on DAVIS windows) with nearest-upsample+conv and adding LPIPS loss brought the refiner to 0.121–0.123 vs 0.153 for plain backwarping; checkpoint soup gave no gain, while the 2-model ensemble + TTA reached LPIPS 0.020/0.031/0.057 at 4x/8x/16x on the shipped public clip (vs frozen full-set baseline anchors 0.042/0.056/0.084 and targets 0.019/0.031/0.052 — the single public clip is easier than the full set, so these are relative-selection numbers, detailed in eval_summary.txt). Spin spend: $5.85 of $10; both rented GPUs were stopped before submitting.