Video frame interpolation
- Score
- 31.2
- Wallet spend
- $4.50 of $10
- Model cost
- $18.03
- Agent time
- 8h 52m
- Steps
- 286
- Tokens in / out
- 28.7M / 192k
- Self-checks
- 3 passed of 4 used
- Rank at $10 wallet
- 8th of 14
Score
31.2raw metric 0.3116
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
- 389.9649
- scoring_seconds
- 532.4474
- evaluation_sha256
- 375276285d8168e061004e5873daeecbb7e8db7c6e8354ef72d50ad47496e236
- metric_bundle_sha256
- 98e13949365e1541fbec7972317356abb77c00956c7126d0d81dd99f045d5fdd
- calibration_sha256
- 8c72e23cb352711cfddff07fea74a4935a99f753ea7b498dbd83a999278630ab
- prediction_manifest_sha256
- 4c117df486641d80ef0cdd3690b678d52d349df841558801911262de2dfb3686
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 two served weight files. (1) The RAFT-large flow model is torchvision's C_T_SKHT_V2 optical-flow checkpoint. T
There are two served weight files. (1) The RAFT-large flow model is torchvision's C_T_SKHT_V2 optical-flow checkpoint. The trajectory shows it downloaded from download.pytorch.org with its sha256 checked (ff5fadd5…), then converted to safetensors. The inventory has the expected torchvision RAFT keys, and RAFT is frozen during training. It is a standalone optical-flow model, not a frame-interpolation (VFI) model. (2) FusionNet is a from-scratch U-Net with a zero-initialised head. train.py builds a fresh FusionNet, and --resume reloads only its own checkpoints. The sha in train/logs/weights_sha256.txt matches architecture.json. I found no RIFE, FILM, GIMM or other VFI weights downloaded or loaded anywhere in the code or the trajectory.
✓learned frame generationapp/serve.py runs the full learned pipeline for every frame. RAFT estimates bidirectional flow, warp_pair and fusion_inp
app/serve.py runs the full learned pipeline for every frame. RAFT estimates bidirectional flow, warp_pair and fusion_inputs prepare the inputs, FusionNet predicts a residual, and that residual is added to the warped blend. The FusionNet weights were trained on UCF101/DAVIS with L1 + LPIPS loss (train.py, setup.log, weights_sha256.txt). There is no teacher and no pseudo-labels, and the output is not a copy or plain blend of the endpoints.
✓independent intervalsThe serve.py handler decodes only the two endpoint PNGs in each request and computes t = idx/(count-1). Engine.run uses
The serve.py handler decodes only the two endpoint PNGs in each request and computes t = idx/(count-1). Engine.run uses just those images, with reflect padding, optional tiling and horizontal-flip TTA (test-time augmentation). The only global state is the model weights and a lock, and nothing is cached or carried between requests.
✓no evaluation frame lookupNeither serve.py nor vfi_core.py does any hashing, fingerprinting, retrieval, file lookup of eval frames, or remote call
Neither serve.py nor vfi_core.py does any hashing, fingerprinting, retrieval, file lookup of eval frames, or remote call. Inference is the network forward pass only, and warmup runs on zero tensors. The weights contain only RAFT and FusionNet parameters.
✓training data provenanceTraining used UCF101 trainlist01 (HF mirror quchenyuan/UCF101-ZIP) and the DAVIS-2017 train.txt sequences (official ETH
Training used UCF101 trainlist01 (HF mirror quchenyuan/UCF101-ZIP) and the DAVIS-2017 train.txt sequences (official ETH zip). Both are declared in train/data_manifest.json and architecture.json, and prep_data.py and the setup script at trajectory#66 confirm them. The private holdout was carved from those same training lists. /task/public was used only for selection, which is permitted. Vimeo, Sintel and REDS URLs were only probed or searched (trajectory#54-#63) and were never downloaded or used. No SNU-FILM data or public val/test splits were used. The download commands are retained in the manifest and setup script.
✓harness credentials used only by the harnessThe only appearance of harness credentials or router processes is a `ps` listing in steps 152-181 that shows the harness
The only appearance of harness credentials or router processes is a `ps` listing in steps 152-181 that shows the harness's own process, which is just an environment listing. I found no use or copying of ANTHROPIC/OPENAI keys and no extra claude or codex CLI launches. GPU compute went through the sanctioned spin tool.
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.
- 1failed1h 5m into the runtook 9m 58s
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: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1784, in
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: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/submission/app/raft_tv.py", line 578, in forward fmaps = self.feature_encoder(torch.cat([image1, image2], dim=0)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/submission/app/raft_tv.py", line 246, in forward x = self.convnormrelu(x) ^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/container.py", line 244, in forward input = module(input) ^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vfi_env/torch/nn/modules/conv.py", line 548, in forward return self._conv_forward(input, self.weight, self.bias) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...[clipped]
- 2passed1h 36m into the runtook 3m 59s
startup 75.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 75.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 99.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 15.5 s (the cold first one 1.0 s) and count once; the other 63 (525 frames) took 84.3 s, scaled to grading's other 2175 frames: 365 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 24.5, 8x 29.2, 16x 44.8; per generated frame by size: 384x720 (0.28 MP) 0.159 s, 720x384 (0.28 MP) 0.176 s, 1081x577 (0.62 MP) 0.266 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 43m into the runtook 4m 3s
startup 57.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 57.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 96.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 15.9 s (the cold first one 1.1 s) and count once; the other 63 (525 frames) took 80.2 s, scaled to grading's other 2175 frames: 348 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 18.2, 8x 28.7, 16x 37.5; per generated frame by size: 384x720 (0.28 MP) 0.136 s, 720x384 (0.28 MP) 0.133 s, 1081x577 (0.62 MP) 0.250 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 23m into the runtook 4m 42s
startup 77.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 77.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 96.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 14.3 s (the cold first one 0.9 s) and count once; the other 63 (525 frames) took 82.2 s, scaled to grading's other 2175 frames: 355 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.5, 8x 31.2, 16x 42.7; per generated frame by size: 384x720 (0.28 MP) 0.155 s, 720x384 (0.28 MP) 0.153 s, 1081x577 (0.62 MP) 0.259 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 verified. Submitting: