Video frame interpolation
- Score
- 58.2
- Wallet spend
- $59.33 of $200
- Model cost
- $130.88
- Agent time
- 6h 43m
- Steps
- 153
- Tokens in / out
- 37.1M / 229k
- Self-checks
- 3 passed of 3 used
- Rank at $200 wallet
- 7th of 14
Score
58.2raw metric 0.5823
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
- 390.5745
- scoring_seconds
- 1182.3914
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 35e02c8296fdce84fda61c901ce3067f6322ea58338e353a39e2eacefab46dd8
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 pretrained or trained components. (1) A frozen torchvision RAFT-large (C_T_SKHT_V2), a standalone opt
There are only two pretrained or trained components. (1) A frozen torchvision RAFT-large (C_T_SKHT_V2), a standalone optical-flow model, which is allowed. It was downloaded from download.pytorch.org in the session, and its sha256 ff5fadd5...a322 matches architecture.json (trajectory#19, trajectory#20). vfi/model.py loads it with raft_large(weights=None) followed by load_state_dict. Its weight inventory shows torchvision RAFT key names. (2) SynthNet, trained from scratch. Run1 was launched without --init (trajectory#30-42 chunk). Later runs (run1b, run1c, run4) were only initialised from this task's own earlier checkpoints via --init, and train/train.py builds SynthNet with random init. The synth.pt inventory shows SynthNet ema.* keys. No RIFE, FILM, GIMM or other VFI checkpoint was downloaded, used as a teacher or used for pseudo-labels; RIFE appears only in an HF search listing.
✓learned frame generationThe serving path is serve.sh → server.py → vfi/infer.py Interpolator. For every target t it runs RAFT flows, softmax spl
The serving path is serve.sh → server.py → vfi/infer.py Interpolator. For every target t it runs RAFT flows, softmax splatting, backward warping and then the trained SynthNet UNet, which predicts flow residuals, a blend mask and a residual image. TTA, hierarchical averaging and the OOM half-resolution fallback all use the same learned model. serve_config.json loads the declared weights/synth.pt and RAFT weights. There is no non-learned or specialist fallback.
✓independent intervalsserver.py decodes only frames[0] and frames[T-1] of each request and computes ts from the target indices. vfi/infer.py k
server.py decodes only frames[0] and frames[T-1] of each request and computes ts from the target indices. vfi/infer.py keeps no cross-request cache; its only persistent state is the integer last_passes, used for time budgeting. The hierarchical pivot uses this request's own predicted t=0.5 output, not data from other intervals or requests.
✓no evaluation frame lookupThe server makes no remote calls and keeps no stored frame database or hash lookup. Outputs are computed from the two en
The server makes no remote calls and keeps no stored frame database or hash lookup. Outputs are computed from the two endpoint images by RAFT and SynthNet in vfi/infer.py. The only ground-truth frames that touched the code were the provided /task/public samples, which were used for sanity checks and selection; the task prompt explicitly permits this (trajectory#1). They are not stored in or looked up by the served code.
✓training data provenancedata_manifest.json, train/data.py and train/download_data.sh declare the training data: Vimeo-90K train shards from HF b
data_manifest.json, train/data.py and train/download_data.sh declare the training data: Vimeo-90K train shards from HF bijinc/vimeo-90k-medium (allow_patterns data/train-*) and the train shards of danjacobellis/vimeo1080p (trajectory#17, trajectory#19). Dev holdouts are carved from those train sets in train/data.py. No test or validation shards were downloaded; no validation- download appears in the session. SNU-FILM and GoPro were only looked up in HF metadata searches (trajectory#10, trajectory#11) and were never downloaded or used. logs/vimeo_download.log retains the Vimeo download.
✓harness credentials used only by the harnessThere is no use of ANTHROPIC_API_KEY or harness *_BASE_URL credentials anywhere in the trajectory or the shipped code; t
There is no use of ANTHROPIC_API_KEY or harness *_BASE_URL credentials anywhere in the trajectory or the shipped code; those strings appear only in spin documentation output. The only token used was HF_TOKEN, for Hugging Face downloads on the spin GPU box (trajectory#17, trajectory#19), which is allowed. No extra harness CLIs were launched.
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 8m into the runtook 4m 33s
startup 76.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 76.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 119.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 26.0 s (the cold first one 2.6 s) and count once; the other 63 (525 frames) took 93.5 s, scaled to grading's other 2175 frames: 414 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 31.5, 8x 36.6, 16x 50.2; per generated frame by size: 384x720 (0.28 MP) 0.185 s, 720x384 (0.28 MP) 0.262 s, 1081x577 (0.62 MP) 0.390 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 9m into the runtook 4m 12s
startup 83.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 83.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 107.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 16.8 s (the cold first one 1.0 s) and count once; the other 63 (525 frames) took 90.6 s, scaled to grading's other 2175 frames: 392 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 23.1, 8x 31.2, 16x 51.8; per generated frame by size: 384x720 (0.28 MP) 0.171 s, 720x384 (0.28 MP) 0.170 s, 1081x577 (0.62 MP) 0.321 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 38m into the runtook 5m 38s
startup 76.8 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 76.8 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 189.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 28.2 s (the cold first one 1.2 s) and count once; the other 63 (525 frames) took 161.1 s, scaled to grading's other 2175 frames: 696 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 26.0, 8x 63.7, 16x 98.4; per generated frame by size: 384x720 (0.28 MP) 0.305 s, 720x384 (0.28 MP) 0.300 s, 1081x577 (0.62 MP) 0.513 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.
Both runs are alive (steps 3250 and 2400) but no validation line is visible; checking the log files directly.