Video frame interpolation
- Score
- 79.5
- Wallet spend
- $69.80 of $200
- Model cost
- $23.91
- Agent time
- 5h 30m
- Steps
- 330
- Tokens in / out
- 66.4M / 203k
- Self-checks
- 3 passed of 3 used
- Rank at $200 wallet
- 5th of 14
Score
79.5raw metric 0.7948
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
- 358.5947
- scoring_seconds
- 775.3884
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 3e8a32e75b5a7a5213ff7fcd4124a8af172973b7323b8e867a17a1a8d5b4ee0e
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 served refiner (the HybridVFI UNet in src/hybrid.py) was randomly initialized and trained from scratch. Training Run
The served refiner (the HybridVFI UNet in src/hybrid.py) was randomly initialized and trained from scratch. Training Runs A, B and C are recorded in docs/TRAINING.md and the train_log_hybrid*.jsonl files. The weights were packaged from hybrid_c/ckpt_102000.pt as an EMA state dict (trajectory#290, #307, #309). The only pretrained component used at inference is SEA-RAFT-M, a standalone optical-flow model, which the policy allows. It was downloaded from the official princeton-vl Google Drive model zoo with gdown (trajectory#169-170). Its size, 78,899,562 bytes, matches the shipped weights/sea_raft_m.pth (trajectory#307). src/searaft_flow.py loads it frozen with strict=True. No RIFE, FILM or GIMM weights were downloaded or used: the only RIFE fetch was a text trainlist that returned 404. The IFNet experiment was trained from scratch, used a jointly-trained teacher block rather than external VFI weights, and is not loaded in the served path.
✓learned frame generationsrc/server.py uses the hybrid engine (config.json). HybridInterpolator in src/pipeline.py computes bidirectional SEA-RAF
src/server.py uses the hybrid engine (config.json). HybridInterpolator in src/pipeline.py computes bidirectional SEA-RAFT flows. The learned refiner in src/hybrid.py then predicts flow refinements, a visibility mask and a residual, warps and blends the endpoints, and is applied recursively at midpoints. Output frames are therefore produced by learned models, not by copying or retrieval.
✓independent intervalsrun_inference in src/server.py decodes only the request's two endpoint images and calls _interp.interval(img0, img1, fra
run_inference in src/server.py decodes only the request's two endpoint images and calls _interp.interval(img0, img1, frame_count-1). The recursion in src/pipeline.py works only within that single interval. No cross-request caches, buffers or state are kept, and the lock only serializes GPU use.
✓no evaluation frame lookupThe serving code (src/server.py, src/pipeline.py, src/hybrid.py, src/searaft_flow.py) contains no hashing, lookup tables
The serving code (src/server.py, src/pipeline.py, src/hybrid.py, src/searaft_flow.py) contains no hashing, lookup tables, stored frames or network calls. Its only inputs are the request images and the two shipped weight files. serve.sh installs torch offline from wheels/.
✓training data provenanceTraining data is declared in docs/DATA.md and architecture.json: Vimeo-90K triplet TRAIN shards from the HF datasets bij
Training data is declared in docs/DATA.md and architecture.json: Vimeo-90K triplet TRAIN shards from the HF datasets bijinc/vimeo-90k-medium and danjacobellis/vimeo90k_triplet. The download and preparation code is retained (docs/code/prepare_data.py, prepare_data2.py, merge_data.py), as are the logs (docs/prep_log.json, prep_log_ext.json). The official test split was used only for exclusion and decontamination hashing: test triplets matching by md5 or dHash were dropped, and test frames were never written to the training set (trajectory#153-155). Checkpoints were selected using the task-provided public examples and the participant's own train-split holdout, not public val/test benchmarks (trajectory#306-307). No SNU-FILM or GoPro data was downloaded.
✓harness credentials used only by the harnessThe trajectory has no matches for harness API credentials such as ANTHROPIC or OPENROUTER keys. Credential-related actio
The trajectory has no matches for harness API credentials such as ANTHROPIC or OPENROUTER keys. Credential-related actions were limited to the allowed Spin CLI (`spin transfer credentials`, trajectory#104) and read-only HF downloads. The serving code makes no remote 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 3 of 4.
- 1failed1h 4m into the runtook 2m 39sfree (stopped before any GPU time)
failed review prerequisites: Initialization metadata must declare a nonempty base_model and base_revision (or none for both when training from scratch)
1 gates
- ✗review prerequisites · Initialization metadata must declare a nonempty base_model and base_revision (or none for both when training from scratch)
- 2passed1h 15m into the runtook 3m 56s
startup 69.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 69.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 100.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 14.5 s (the cold first one 0.9 s) and count once; the other 63 (525 frames) took 86.3 s, scaled to grading's other 2175 frames: 372 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 25.7, 8x 29.4, 16x 44.5; per generated frame by size: 384x720 (0.28 MP) 0.162 s, 720x384 (0.28 MP) 0.144 s, 1081x577 (0.62 MP) 0.270 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 38m into the runtook 3m 38s
startup 59.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 59.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 89.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 16.5 s (the cold first one 1.0 s) and count once; the other 63 (525 frames) took 72.6 s, scaled to grading's other 2175 frames: 317 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 21.3, 8x 26.1, 16x 40.4; per generated frame by size: 384x720 (0.28 MP) 0.137 s, 720x384 (0.28 MP) 0.155 s, 1081x577 (0.62 MP) 0.340 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 53m into the runtook 4m 10s
startup 74.6 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 74.6 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 94.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 15.5 s (the cold first one 0.9 s) and count once; the other 63 (525 frames) took 78.8 s, scaled to grading's other 2175 frames: 342 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 22.2, 8x 27.3, 16x 43.6; per generated frame by size: 384x720 (0.28 MP) 0.149 s, 720x384 (0.28 MP) 0.146 s, 1081x577 (0.62 MP) 0.299 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.
Converged (all within noise). Locking in C-102k. Final docs update and submission: