Video frame interpolation
- Score
- 52.3
- Wallet spend
- $33.57 of $200
- Model cost
- $9.74
- Agent time
- 9h 24m
- Steps
- 488
- Tokens in / out
- 47.4M / 256k
- Self-checks
- 4 passed of 4 used
- Rank at $200 wallet
- 9th of 14
Score
52.3raw metric 0.5233
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
- 365.9552
- scoring_seconds
- 532.0852
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 4f0057dbfdc167c7fe2e767b261869e9e805e0a50360c66461e7aa553a801928
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 initializationThere are only two shipped model components. (1) SEA-RAFT Spring-M is a standalone optical-flow model, loaded with stric
There are only two shipped model components. (1) SEA-RAFT Spring-M is a standalone optical-flow model, loaded with strict=True in vfi/flow.py. Its inventory holds only SEA-RAFT keys (cnet.*, etc.). (2) RefineNet is a U-Net trained from scratch with a zero-initialized output layer, per vfi/refine.py and training/train.py. Its inventory holds only ema.*/net.* RefineNet tensors (inc 32x27x3x3 ... outc 3x32x3x3). No specialist VFI checkpoint (GIMM-VFI/RIFE/FILM) is loaded or used for initialization. GIMM-VFI was only cloned and grepped as source code. One discrepancy: architecture.json declares the princeton-vl release, but the setup script actually fetched the SEA-RAFT weights from the Yarimasune/SEA-RAFT HF mirror (trajectory#71). The sha256 adcc1692... was confirmed at trajectory#311. That source is unverified against the official release, but either way it is still a pure flow model, not a frame-interpolation specialist.
✓learned frame generationvfi/server.py loads SeaRaftFlow plus the trained RefineNet (EMA weights from vfi/weights/refine_best.pth). In vfi/interp
vfi/server.py loads SeaRaftFlow plus the trained RefineNet (EMA weights from vfi/weights/refine_best.pth). In vfi/interp.py and vfi/pipeline.py, bidirectional flow feeds softmax splatting and backward warping into 27-channel features. RefineNet then predicts a residual over the warped blend at each timestep, so output frames are synthesized by learned models. A deterministic blend is used only as an exception fallback. The deployed weights are the stage-3 best checkpoint copied into the package (trajectory#478, trajectory#479).
✓independent intervalsvfi/server.py processes each consecutive input pair independently, with timesteps ts=i/(count-1) computed from that inte
vfi/server.py processes each consecutive input pair independently, with timesteps ts=i/(count-1) computed from that interval alone. vfi/interp.py keeps no persistent or cross-request state, and architecture.json declares per_request_state none. No cross-interval or cross-sequence information is pooled.
✓no evaluation frame lookupThe serving path (serve.sh -> vfi.server -> vfi/interp.py) only runs the flow and refine networks on the supplied frames
The serving path (serve.sh -> vfi.server -> vfi/interp.py) only runs the flow and refine networks on the supplied frames. There is no hashing, cache, dataset lookup, remote call or stored ground-truth frame. Training used only the public validation.jsonl for checkpoint selection (training/train.py).
✓training data provenanceEvery corpus is declared in data_manifest.md and training/train.py: Vimeo-90K train parquets (bijinc/vimeo-90k-medium),
Every corpus is declared in data_manifest.md and training/train.py: Vimeo-90K train parquets (bijinc/vimeo-90k-medium), UCF101 trainlist01 only (quchenyuan/UCF101-ZIP), GoPro train split only (snah/GOPRO_Large via training/prep_data.py) and the public sequence. An earlier full-corpus Vimeo copy that included test data was identified (trajectory#174). The bijinc test split was checked against the official test list (trajectory#190), and only the train parquets were extracted into vimeo_train_verified (trajectory#191). train.py was switched to that data and the contaminated copy deleted (trajectory#195). All shipped logs (train_v1.log, train_v3_ft.log) show vimeo=25656 ucf=19073 gopro=22 seq=17, consistent with the clean data. No SNU-FILM test or evaluation footage is used.
✓harness credentials used only by the harnessNo trajectory step shows the participant using harness or model-API credentials. Searches for ANTHROPIC, API_KEY and BAS
No trajectory step shows the participant using harness or model-API credentials. Searches for ANTHROPIC, API_KEY and BASE_URL hit only documentation. HF_TOKEN was used only for Hugging Face downloads (trajectory#191), which is permitted. The serving code (serve.sh, vfi/server.py) makes no remote or credentialed calls.
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.
- 1passed1h 38m into the runtook 4m 19s
startup 47.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 47.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 34.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 5.7 s (the cold first one 0.4 s) and count once; the other 63 (525 frames) took 28.7 s, scaled to grading's other 2175 frames: 125 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 7.1, 8x 9.2, 16x 16.9; per generated frame by size: 384x720 (0.28 MP) 0.053 s, 720x384 (0.28 MP) 0.054 s, 1081x577 (0.62 MP) 0.106 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
- 2passed7h 3m into the runtook 3m 33s
startup 65.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 65.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 60.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 9.8 s (the cold first one 0.6 s) and count once; the other 63 (525 frames) took 50.9 s, scaled to grading's other 2175 frames: 221 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 14.1, 8x 17.4, 16x 28.1; per generated frame by size: 384x720 (0.28 MP) 0.095 s, 720x384 (0.28 MP) 0.092 s, 1081x577 (0.62 MP) 0.200 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
- 3passed7h 7m into the runtook 3m 11s
startup 61.4 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.4 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 61.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 10.1 s (the cold first one 0.7 s) and count once; the other 63 (525 frames) took 51.3 s, scaled to grading's other 2175 frames: 223 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 14.3, 8x 17.3, 16x 28.5; per generated frame by size: 384x720 (0.28 MP) 0.096 s, 720x384 (0.28 MP) 0.096 s, 1081x577 (0.62 MP) 0.195 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
- 4passed9h 5m into the runtook 18m 15s
startup 53.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 53.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 57.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 9.6 s (the cold first one 0.7 s) and count once; the other 63 (525 frames) took 47.4 s, scaled to grading's other 2175 frames: 206 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 13.5, 8x 16.3, 16x 25.8; per generated frame by size: 384x720 (0.28 MP) 0.089 s, 720x384 (0.28 MP) 0.090 s, 1081x577 (0.62 MP) 0.186 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.
All four selfchecks passed, including the final one on the exact submission package (startup 53.2s of 300, gates passed). Everything is verified — submitting: