Video frame interpolation
- Score
- 87.8
- Wallet spend
- $9.75 of $10
- Model cost
- $17.97
- Agent time
- 10h 1m
- Steps
- 454
- Tokens in / out
- 49.9M / 628k
- Self-checks
- 3 passed of 4 used
- Rank at $10 wallet
- 2nd of 14
Score
87.8raw metric 0.8785
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
- 363.6264
- scoring_seconds
- 813.8009
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 18da73dd118ae9c62de6e66aa65660c5cf5072d813daa4e28e4e1e32a8e736b8
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 initializationEvery pretrained component is generic or a standalone flow estimator. These are SEA-RAFT-M optical flow (pinned HF revis
Every pretrained component is generic or a standalone flow estimator. These are SEA-RAFT-M optical flow (pinned HF revision and sha256, in weights/sea_raft.safetensors), ResNet18 ImageNet weights and a frozen DINOv2 ViT-S/14, both declared as sources inside weights/synthesis.pt. architecture.json lists no interpolation teachers and no fallback models. The task-trained dino_trajectory synthesis net was trained in stages with SWA merging, per the lineage in architecture.json and evidence/download_commands.sh. Its DINO projection is zero-initialized. evidence/development_models.json lists only flow, depth and generic models that were later discarded. No VFI checkpoint was downloaded or loaded.
✓learned frame generationserve.sh execs server.py. server.py builds Interpolator() from model.py and raises an error if no synthesis net is loade
serve.sh execs server.py. server.py builds Interpolator() from model.py and raises an error if no synthesis net is loaded. model.py loads RAFT with weights/sea_raft.safetensors and the learned synthesis net from weights/synthesis.pt, choosing DinoTrajectorySynthesis by variant. Frames come from a learned flow, warping and blending network applied to the two endpoint frames. The weight inventories confirm real tensors are present.
✓independent intervalsserver.py decodes only the two endpoint PNGs from each request and calls model.generate(first, last, times). The feature
server.py decodes only the two endpoint PNGs from each request and calls model.generate(first, last, times). The feature and curve caches in model.py and dino_trajectory_model.py exist only within a single call. The temporal ensemble averages forward and reversed orderings of the same pair. No state persists across requests.
✓no evaluation frame lookupThe serving path in server.py and model.py only computes flow and synthesis from the request inputs. It does no hash loo
The serving path in server.py and model.py only computes flow and synthesis from the request inputs. It does no hash lookups, reads no stored target frames, makes no remote calls and has no fallback models. config.json holds only inference hyperparameters.
✓training data provenanceevidence/data_manifest.json declares every corpus. Vimeo90K training data came from the pinned HF mirrors bijinc/vimeo-9
evidence/data_manifest.json declares every corpus. Vimeo90K training data came from the pinned HF mirrors bijinc/vimeo-90k-mini and -medium, using only the train-* parquet files (training/prepare_data.py). DAVIS2017 was filtered by train.txt. LAVIB was filtered by annotations/train.csv at a pinned revision, as shown in training/prepare_lavib.py and evidence/machines/main/logs/prepare_lavib.log. The task-provided sample was authorized. Model selection used crc32 holdouts drawn from the training splits. LAVIB test and val annotation files appear only in a repository file listing (trajectory#120 region). Probes of the Vimeo septuplet URLs were range requests and were not established as being used. I found no SNU-FILM data and no public val/test splits used for training or selection.
✓harness credentials used only by the harnessThe trajectory shows the participant used spin and vast.ai SSH only for compute and uploads. Searches found no use of th
The trajectory shows the participant used spin and vast.ai SSH only for compute and uploads. Searches found no use of the harness API_KEY or BASE_URL by the participant. The only openrouter mention is in spin's help output.
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.
- 1failed5m 9s into the runtook 7m 3s
failed startup: Server did not become healthy in 300s (last /health probe: RuntimeError: Submission HTTP request failed: ConnectionRefusedError: [Errno 111] Connection refused); end of its log: Traceback (most recent call last): File "/submission/server.py", line 20, in <module> model
2 gates
- ✓review prerequisites
- ✗startup · Server did not become healthy in 300s (last /health probe: RuntimeError: Submission HTTP request failed: ConnectionRefusedError: [Errno 111] Connection refused); end of its log: Traceback (most recent call last): File "/submission/server.py", line 20, in <module> model = Interpolator() ^^^^^^^^^^^^^^ File "/submission/model.py", line 71, in __init__ self.flow.load_state_dict(load_file(str(self.root / 'weights/sea_raft.safetensors'))) File "/tmp/vfi-packages/torch/nn/modules/module.py", line 2593, in load_state_dict raise RuntimeError( RuntimeError: Error(s) in loading state_dict for RAFT: Missing key(s) in state_dict: "cnet.layer2.0.downsample.1.weight", "cnet.layer2.0.downsample.1.bias", "cnet.layer2.0.downsample.1.running_mean", "cnet.layer2.0.downsample.1.running_var", "cnet.layer3.0.downsample.1.weight", "cnet.layer3.0.downsample.1.bias", "cnet.layer3.0.downsample.1.running_mean", "cnet.layer3.0.downsample.1.running_var", "fnet.layer2.0.downsample.1.weight", "fnet.layer2.0.downsample.1.bias", "fnet.layer2.0.downsample.1.running_mean", "fnet.layer2.0.downsample.1.running_var", "fnet.layer3.0.downsample.1.weight", "fnet.layer3.0.downsample.1.bias", "fnet.layer3.0.downsample.1.running_mean", "fnet.layer3.0.downsample.1.running_var".
- 2passed12m 26s into the runtook 2m 39s
startup 57.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 57.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 35.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 6.9 s (the cold first one 1.4 s) and count once; the other 63 (525 frames) took 28.5 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 8.9, 8x 8.4, 16x 16.9; per generated frame by size: 384x720 (0.28 MP) 0.055 s, 720x384 (0.28 MP) 0.061 s, 1081x577 (0.62 MP) 0.103 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
- 3passed1h 6m into the runtook 4m 18s
startup 72.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 72.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 17.5 s (the cold first one 2.0 s) and count once; the other 63 (525 frames) took 101.5 s, scaled to grading's other 2175 frames: 438 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 30.5, 8x 36.2, 16x 51.2; per generated frame by size: 384x720 (0.28 MP) 0.192 s, 720x384 (0.28 MP) 0.186 s, 1081x577 (0.62 MP) 0.317 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 57m into the runtook 2m 50s
startup 64.0 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 64.0 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 48.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 8.8 s (the cold first one 1.9 s) and count once; the other 63 (525 frames) took 39.8 s, scaled to grading's other 2175 frames: 174 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.9, 8x 12.7, 16x 23.8; per generated frame by size: 384x720 (0.28 MP) 0.076 s, 720x384 (0.28 MP) 0.078 s, 1081x577 (0.62 MP) 0.139 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 /workspace/output/.
- Learned interpolation with declared generic pretrained components; no specialist VFI weights used.
- Final offline H100 self-check passes: 64-second startup and 174 seconds projected for 2,250 frames, including transport/export.
- Raw RGB, legacy PNG, arbitrary ordering, identical endpoints, and 4K checks pass.
- Training provenance and quality-search evidence are included. Official quality score is not yet available.