Bilinear time-then-space interpolation for jittery, sparse camera arrays.
- Model the video frames from a sparse camera array as a set of parallel timelines.
- Interpolate the frame rate of each timeline.
- Interpolate the camera angles between timelines.
-- space -->
|
| A
t | C
i | |
m E----G--F
e | |
| B |
| |
v D
space | time | |||||
---|---|---|---|---|---|---|
ABCD | linear | sparse | variable | sparse | ||
EF | linear | sparse | uniform | dense | ||
G | uniform | dense | uniform | dense |
Inference calls within shared edges are optimized by caching and reusing motion features between image pairs.
When the four points bounding the sample point change, the corresponding memory is freed. The buffer used on top of the pytorch model is approximately |image + features| * (2 * n + 3)
, where n
is the number of timelines (input cameras).
Image decoding and video encoding run in separate processes parallel to inference using pytorch multiprocessing. Data is pipelined through CPU tensor queues.
Frames are produced in the order needed for streaming hologram quilts to a video encoder. The input queue is limited to 8 images, which prevents IO from blocking compute without unnecissary back pressure.
- Download the "ours_t.pkl" model into
ckpt
per EMA-VFI - Install dependencies
pip install -r requirements.txt
(modify pytorch per platform)
python -m bilinear --help