Video frame interpolation
- Score
- 91.1
- Wallet spend
- $8.10 of $10
- Model cost
- $57.94
- Agent time
- 7h 58m
- Steps
- 294
- Tokens in / out
- 77.2M / 253k
- Self-checks
- 4 passed of 4 used
- Rank at $10 wallet
- 1st of 14
Score
91.1raw metric 0.9109
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.4701
- scoring_seconds
- 575.7762
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 7ed33b753bad5d8138a126c06ee058c69fa331c6537b38f9c2eaae6765f0d438
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 is torchvision RAFT-large, a standalone optical-flow model that the policy allows. archite
The only pretrained component is torchvision RAFT-large, a standalone optical-flow model that the policy allows. architecture.json declares it as raft_large_C_T_SKHT_V2 from download.pytorch.org, with its sha256. vfi/model.py builds raft_large(weights=None) and loads that file via train.py --raft. The synthesis U-Net is trained from scratch, and later runs chain only through the participant's own runs via --init (r1→r3→r8→r10). The trajectory shows RAFT downloaded from download.pytorch.org. PWC-Net is used only as a dev metric and LPIPS only as a training loss. No VFI checkpoint (RIFE, FILM, GIMM, etc.) appears; those names show up only in the prompt and the declaration text. The weights/vfi_model.pt inventory is about 39 MB, with flow.raft.* tensors plus synthesis tensors, which matches the declared architecture.
✓learned frame generationserve.sh installs the local wheels and runs server.py. In server.py, POST /interpolate calls engine.interpolate. engine.
serve.sh installs the local wheels and runs server.py. In server.py, POST /interpolate calls engine.interpolate. engine.py builds Interpolator(None, iters=24) and strictly loads weights/vfi_model.pt (raft_weights is null in inference_config.json). Intermediate frames come from RAFT bidirectional flow, then softmax splatting (vfi/ops.py), then the learned synthesis U-Net, with reverse TTA. The linear blend is only an exception fallback after the primary and chunk=1 paths fail, so it is not the normal generation path.
✓independent intervalsEach request uses only frames[0] and frames[T-1] of that request, with times i/(T-1). The engine keeps no state between
Each request uses only frames[0] and frames[T-1] of that request, with times i/(T-1). The engine keeps no state between requests other than the model weights. The _grid_cache in vfi/ops.py stores coordinate grids keyed only by tensor shape, and the lock only serializes access. Warmup uses random images.
✓no evaluation frame lookupNo fingerprinting, hashing, stored frames or lookup tables appear in server.py, engine.py or vfi/model.py. Outputs are c
No fingerprinting, hashing, stored frames or lookup tables appear in server.py, engine.py or vfi/model.py. Outputs are computed by the network from the two endpoint frames. Training data comes from OpenVid-1M windows, not benchmark frames.
✓training data provenancetraining/data_manifest.json declares the training and dev corpus as public OpenVid-1M (HF nkp37/OpenVid-1M), with listed
training/data_manifest.json declares the training and dev corpus as public OpenVid-1M (HF nkp37/OpenVid-1M), with listed parts and download commands. training/prepare_openvid.py implements the extraction. The trajectory shows the OpenVid CSV and zip parts fetched from HF. HF searches for Vimeo-90K, GoPro and YouTube-VOS listings (trajectory#12, trajectory#13) were only size inspection, with no download or use found. The manifest states that no benchmark validation or test split was used; the task's public examples were used only as a secondary selection signal, which is allowed.
✓harness credentials used only by the harnessI found no use, echo or copy of ANTHROPIC or OPENAI keys or the harness base URL in the trajectory or code, and no extra
I found no use, echo or copy of ANTHROPIC or OPENAI keys or the harness base URL in the trajectory or code, and no extra harness CLI was launched. The SPIN_* mentions are only the Spin documentation in the initial context, and the Spin compute CLI use is allowed. HF_TOKEN was used only for dataset and model downloads, which is allowed.
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.
- 1passed53m 59s into the runtook 4m 31s
startup 77.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 77.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 43.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 6.9 s (the cold first one 0.5 s) and count once; the other 63 (525 frames) took 36.3 s, scaled to grading's other 2175 frames: 157 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 9.5, 8x 11.9, 16x 20.7; per generated frame by size: 384x720 (0.28 MP) 0.068 s, 720x384 (0.28 MP) 0.068 s, 1081x577 (0.62 MP) 0.127 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
- 2passed3h 47m into the runtook 3m 10s
startup 52.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 52.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 51.5 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.0 s (the cold first one 0.6 s) and count once; the other 63 (525 frames) took 43.4 s, scaled to grading's other 2175 frames: 188 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.5, 8x 15.1, 16x 22.8; per generated frame by size: 384x720 (0.28 MP) 0.081 s, 720x384 (0.28 MP) 0.082 s, 1081x577 (0.62 MP) 0.147 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
- 3passed6h 18m into the runtook 3m
startup 52.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 52.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 46.5 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.4 s (the cold first one 0.6 s) and count once; the other 63 (525 frames) took 39.1 s, scaled to grading's other 2175 frames: 170 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.7, 8x 13.3, 16x 21.4; per generated frame by size: 384x720 (0.28 MP) 0.073 s, 720x384 (0.28 MP) 0.074 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
- 4passed7h 54m into the runtook 3m 1s
startup 52.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 52.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 46.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 7.6 s (the cold first one 0.7 s) and count once; the other 63 (525 frames) took 39.1 s, scaled to grading's other 2175 frames: 169 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.7, 8x 13.3, 16x 21.5; per generated frame by size: 384x720 (0.28 MP) 0.073 s, 720x384 (0.28 MP) 0.075 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
The agent's last message before its session ended.
Everything is consistent. Handing in: