Video frame interpolation
- Score
- 86.7
- Wallet spend
- $41.88 of $50
- Model cost
- $23.07
- Agent time
- 5h 15m
- Steps
- 289
- Tokens in / out
- 75.9M / 243k
- Self-checks
- 4 passed of 4 used
- Rank at $50 wallet
- 2nd of 14
Score
86.7raw metric 0.8669
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
- 344.9998
- scoring_seconds
- 630.4465
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- e666cbe954b23897a1fa8529a085f0f2cb695a20ef5bea928ce83f5c29010989
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 initializationOptical flow comes from torchvision RAFT-large (Raft_Large_Weights.C_T_SKHT_V2). This is a standalone optical-flow check
Optical flow comes from torchvision RAFT-large (Raft_Large_Weights.C_T_SKHT_V2). This is a standalone optical-flow checkpoint, which the policy allows. architecture.json declares its URL and sha256. code/vfi_model.py builds it with build_raft (raft_large with weights=None, then load_state_dict). training/train.py loads that torchvision pth. Only the update_block and mask_predictor are fine-tuned, with an L1 anchor to the frozen original. The synthesis networks (Encoder, Metric, Synth in Interpolator) start from random initialization in training/train.py; --init only loads the participant's own earlier stage checkpoints. The served weights/vfi_synth.pt is a uniform soup of the participant's own B4 and C2 EMA checkpoints (training/export_soup.py, final step of trajectory#283). Weight inventories show RAFT and Interpolator tensor names only. PWC-Net appears only in the local FloLPIPS evaluation metric and is never served or used as a teacher. Trajectory searches found no RIFE, FILM, GIMM or other VFI checkpoint downloads.
✓learned frame generationserve.sh runs code/server.py. For every request it loads weights/raft_finetuned.pt and weights/vfi_synth.pt, estimates b
serve.sh runs code/server.py. For every request it loads weights/raft_finetuned.pt and weights/vfi_synth.pt, estimates bidirectional RAFT flows (code/infer.py), then runs Interpolator.prepare/synthesize: softmax splatting plus a learned Synth U-Net that predicts each intermediate frame. weights/config.json defines no routes, and TTA is off. A linear blend is used only as an exception fallback; it is not the main path.
✓independent intervalscode/server.py decodes only the two endpoint frames of each POST /interpolate and computes target times from the indices
code/server.py decodes only the two endpoint frames of each POST /interpolate and computes target times from the indices in the request. It keeps no state between requests; the lock only serializes them. The only cache is _grid_cache in code/vfi_model.py, keyed by (h, w, device, dtype). It holds coordinate grids and does not depend on image content. Warmup uses random images.
✓no evaluation frame lookupNeither the serving code (code/server.py, code/infer.py, code/vfi_model.py) nor weights/config.json contains any hashing
Neither the serving code (code/server.py, code/infer.py, code/vfi_model.py) nor weights/config.json contains any hashing, fingerprinting or lookup of stored frames or outputs. Every output is computed by the networks from the input frames.
✓training data provenanceThe training corpus is OpenVid-1M (HF nkp37/OpenVid-1M) parts 5, 6, 30, 40, 50, 60, 70, 80, 100, 110 and 120. It is decl
The training corpus is OpenVid-1M (HF nkp37/OpenVid-1M) parts 5, 6, 30, 40, 50, 60, 70, 80, 100, 110 and 120. It is declared in data_manifest.json and architecture.json, with retained commands and logs, and downloaded with range reads in training/prep_data.py and training/remotezip.py. trajectory#14 and trajectory#21 show the dataset listing. Part 90 was held out as the dev set. Selection also used the task's shipped public examples (training/pubmodel.py), which the policy allows. The trajectory shows FineVideo returned a 403 and was never used. There is no use of SNU-FILM or other benchmark validation/test splits.
✓harness credentials used only by the harnessThe trajectory shows only HF_TOKEN used for HF dataset access (trajectory#11, trajectory#12), spin compute CLI calls, an
The trajectory shows only HF_TOKEN used for HF dataset access (trajectory#11, trajectory#12), spin compute CLI calls, and the task's own frontier selfcheck command (trajectory#284). All of these are allowed. Searches found no use or echoing of the harness API keys or base URL, and no launch of extra harness or agent CLIs.
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 4 of 4.
- 1error50m 41s into the runtook 1h 2mfree (stopped before any GPU time)
The self-check could not finish (TimeoutError: Grading resource operation timed out: inference sandbox start did not return within 3630 s).
1 gates
- ✓review prerequisites
- 2passed2h 8m into the runtook 34m
startup 50.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 50.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 39.7 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 6.2 s (the cold first one 0.4 s) and count once; the other 63 (525 frames) took 33.4 s, scaled to grading's other 2175 frames: 145 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 8.5, 8x 10.9, 16x 19.1; per generated frame by size: 384x720 (0.28 MP) 0.062 s, 720x384 (0.28 MP) 0.063 s, 1081x577 (0.62 MP) 0.112 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 59m into the runtook 3m 38s
startup 61.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 61.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 75.9 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 11.9 s (the cold first one 0.9 s) and count once; the other 63 (525 frames) took 64.0 s, scaled to grading's other 2175 frames: 277 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.2, 8x 22.7, 16x 33.0; per generated frame by size: 384x720 (0.28 MP) 0.121 s, 720x384 (0.28 MP) 0.122 s, 1081x577 (0.62 MP) 0.218 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
- 4passed4h 19m into the runtook 2m 50s
startup 62.2 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.2 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.8 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.5 s) and count once; the other 63 (525 frames) took 38.5 s, scaled to grading's other 2175 frames: 167 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.0, 8x 12.7, 16x 21.9; per generated frame by size: 384x720 (0.28 MP) 0.072 s, 720x384 (0.28 MP) 0.073 s, 1081x577 (0.62 MP) 0.133 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
- 5passed5h 11m into the runtook 2m 53s
startup 51.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 51.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 52.8 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 8.3 s (the cold first one 0.8 s) and count once; the other 63 (525 frames) took 44.4 s, scaled to grading's other 2175 frames: 192 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 12.8, 8x 15.0, 16x 23.7; per generated frame by size: 384x720 (0.28 MP) 0.083 s, 720x384 (0.28 MP) 0.086 s, 1081x577 (0.62 MP) 0.141 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.
The package matches what the last selfcheck verified (72 files, 4.03 GB). Submitting.