← all repositories
sniklaus/sepconv-slomo

The 2017 paper that turned two frames into smooth slow-mo

A reference PyTorch implementation of adaptive separable convolution for video frame interpolation, now superseded by the author's own follow-up.

1k stars Python Computer Vision
sepconv-slomo
Velocity · 7d
+0.3
★ / day
Trend
steady
star history

What it does

Takes two consecutive video frames and synthesizes the missing frame between them using adaptive separable convolution. The core trick: instead of estimating motion explicitly, it learns to convolve pixels in a separable manner (horizontal then vertical, or vice versa) to hallucinate the intermediate image. Ships with two trained models—l1 for benchmarking, lf for prettier results.

The interesting bit

The separable convolution layer is hand-rolled in CUDA via CuPy, not PyTorch’s native ops. That’s where the speed comes from, and also where the dependency headache lives. The author has since moved on to a revisited version, which makes this repo partly a time capsule.

Key highlights

  • Command-line interface for single-frame pairs or full video processing
  • Includes benchmark.py against Middlebury optical-flow examples for quick sanity checks
  • Requires CuPy (CUDA) and optionally moviepy for video I/O
  • Two model variants with different loss functions for different evaluation modes
  • Academic-only license; commercial use requires contacting the authors

Caveats

  • The README opens with “This work has now been superseded”—you probably want the newer repo unless you’re reproducing this exact paper
  • CuPy dependency means this won’t run on CPU-only or non-NVIDIA setups
  • No mention of supported CUDA versions, PyTorch versions, or recent maintenance status

Verdict

Grab this if you’re verifying the 2017 ICCV paper or need the exact reference implementation. Skip it for production work or if you lack a CUDA GPU; the author’s revisited version is the better starting point for new projects.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.