Video frame interpolation
- Score
- 0.0
- Wallet spend
- $6.99 of $10
- Model cost
- $0.90
- Agent time
- 1h 19m
- Steps
- 469
- Tokens in / out
- 71.7M / 262k
- Self-checks
- 2 passed of 2 used
- Rank at $10 wallet
- 11th of 14
Score
0.0raw metric 0
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.4930
- scoring_seconds
- 570.5677
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 0e1be85f888c8931c8904c1b3a6e3f0ef75688dd3b215a65f1d5bf9d899616b6
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 network served is TorchVision RAFT-Large C_T_SKHT_V2. That is a standalone optical-flow model, which
The only pretrained network served is TorchVision RAFT-Large C_T_SKHT_V2. That is a standalone optical-flow model, which the policy allows. src/interpolator.py builds it with raft_large(weights=None) and loads the shipped weights/raft_large_C_T_SKHT_V2-ff5fadd5.pth with strict=True. The inventory shows RAFT keys only, and the trajectory shows the file was curled from download.pytorch.org with a matching sha256. Both refiners are task-trained. weights/flow_refiner.pth was trained from scratch by train_refiner.py. weights/flow_refiner_lpips.pth is an LPIPS fine-tune that started from that checkpoint, by way of an intermediate LPIPS run. LPIPS-AlexNet is used only as a training loss and is not a VFI-specialist teacher. No RIFE, FILM or other VFI-specialist weights or teachers appear anywhere in the code, the inventories or the session.
✓learned frame generationserve.sh launches src/server.py. For each request it calls the Interpolator in src/interpolator.py. That code estimates
serve.sh launches src/server.py. For each request it calls the Interpolator in src/interpolator.py. That code estimates bidirectional RAFT flow, does fixed-point inverse warping and forward/backward consistency, and then applies a task-trained FlowRefiner U-Net (src/refiner.py) residual on top of the warped blend. So the output frames are generated by learned flow plus a learned refiner network, not copied or looked up. Both refiner checkpoints load with strict=True from the weights that serve.sh exports.
✓independent intervalssrc/server.py checks that each request has exactly two endpoint frames (index 0 and count-1). It decodes them and calls
src/server.py checks that each request has exactly two endpoint frames (index 0 and count-1). It decodes them and calls the global INTERPOLATOR on those frames alone. src/interpolator.py does all its computation inside each call, with no caching or state carried between requests. Per-factor gain and variant tables are fixed constants, not data collected across requests.
✓no evaluation frame lookupThe serving code only uses the two endpoint images in the request. It makes no network calls, reads no ground-truth or e
The serving code only uses the two endpoint images in the request. It makes no network calls, reads no ground-truth or evaluation files, and uses no hash or lookup tables keyed on the inputs. The constants in src/server.py (refinement strengths, refiner variant per factor) were picked on the task-provided public validation examples. trajectory#5 explicitly allows that use, and logs/development_selection.json records it.
✓training data provenanceThe corpus is declared in architecture.json, train_refiner.py and the logs: bijinc/vimeo-90k-mini at revision da99cacddd
The corpus is declared in architecture.json, train_refiner.py and the logs: bijinc/vimeo-90k-mini at revision da99cacddddcae112d2fb81b6d97a3908fb5084e, train split only. The scripts download only train-*-of-00013.parquet shards. logs/training_lpips_long.json and logs/training_lpips_long.log record split_used 'train only' with no val/test data. The trajectory shows the test split only as an entry in a README listing (trajectory#58) and never downloaded. Selection used only the task-provided public examples, which trajectory#5 permits. Nothing from SNU-FILM or external val/test splits was used.
✓harness credentials used only by the harnessThe session contains no participant use of harness API keys or base URLs. Searches for OPENAI_API_KEY and BASE_URL found
The session contains no participant use of harness API keys or base URLs. Searches for OPENAI_API_KEY and BASE_URL found nothing, and 'openrouter' appears only in help text. The participant only used the spin compute/transfer tooling, PyTorch downloads and HF dataset downloads, all of which are permitted.
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 2 of 4.
- 1failed1h 3m into the runtook 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 4m into the runtook 3m 18s
startup 79.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 79.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 37.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 6.7 s (the cold first one 0.7 s) and count once; the other 63 (525 frames) took 30.3 s, scaled to grading's other 2175 frames: 132 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.7, 8x 9.0, 16x 18.4; per generated frame by size: 384x720 (0.28 MP) 0.056 s, 720x384 (0.28 MP) 0.063 s, 1081x577 (0.62 MP) 0.116 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 16m into the runtook 3m 51s
startup 68.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 68.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 93.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 14.0 s (the cold first one 1.0 s) and count once; the other 63 (525 frames) took 79.7 s, scaled to grading's other 2175 frames: 344 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.6, 8x 29.2, 16x 37.6; per generated frame by size: 384x720 (0.28 MP) 0.149 s, 720x384 (0.28 MP) 0.148 s, 1081x577 (0.62 MP) 0.263 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.
The final selfcheck passed with the six-epoch checkpoint: startup was 68.1 seconds, and the projected generation rate cleared the required gate. The interface validator also passed all 25 shipped frames. I’m handing in the verified /workspace/output now.