Home

Awesome

FLAVR: Flow-Agnostic Video Representations for Fast Frame Interpolation

WACV 2023 (Best Paper Finalist)

Eg1 Eg2

[project page] [paper] [Project Video]

FLAVR is a fast, flow-free frame interpolation method capable of single shot multi-frame prediction. It uses a customized encoder decoder architecture with spatio-temporal convolutions and channel gating to capture and interpolate complex motion trajectories between frames to generate realistic high frame rate videos. This repository contains original source code.

Inference Times

FLAVR delivers a better trade-off between speed and accuracy compared to prior frame interpolation methods.

MethodFPS on 512x512 Image (sec)
FLAVR3.10
SuperSloMo3.33
QVI1.02
DAIN0.77

Dependencies

We used the following to train and test the model.

Model

<center><img src="./figures/arch_dia.png" width="90%"></center>

Training model on Vimeo-90K septuplets

For training your own model on the Vimeo-90K dataset, use the following command. You can download the dataset from this link. The results reported in the paper are trained using 8GPUs.

python main.py --batch_size 32 --test_batch_size 32 --dataset vimeo90K_septuplet --loss 1*L1 --max_epoch 200 --lr 0.0002 --data_root <dataset_path> --n_outputs 1

Training on GoPro dataset is similar, change n_outputs to 7 for 8x interpolation.

Testing using trained model.

Trained Models.

You can download the pretrained FLAVR models from the following links.

MethodTrained Model
2xLink
4xLink
8xLink

2x Interpolation

For testing a pretrained model on Vimeo-90K septuplet validation set, you can run the following command:

python test.py --dataset vimeo90K_septuplet --data_root <data_path> --load_from <saved_model> --n_outputs 1

8x Interpolation

For testing a multiframe interpolation model, use the same command as above with multiframe FLAVR model, with n_outputs changed accordingly.

Time Benchmarking

The testing script, in addition to computing PSNR and SSIM values, will also output the inference time and speed for interpolation.

Evaluation on Middleburry

To evaluate on the public benchmark of Middleburry, run the following.

python Middleburry_Test.py --data_root <data_path> --load_from <model_path> 

The interpolated images will be saved to the folder Middleburry in a format that can be readily uploaded to the leaderboard.

SloMo-Filter on custom video

You can use our trained models and apply the slomo filter on your own video (requires OpenCV 4.2.0). Use the following command. If you want to convert a 30FPS video to 240FPS video, simply use the command

python interpolate.py --input_video <input_video> --factor 8 --load_model <model_path>

by using our pretrained model for 8x interpolation. For converting a 30FPS video to 60FPS video, use a 2x model with factor 2.

Baseline Models

We also train models for many other previous works on our setting, and provide models for all these methods. Complete benchmarking scripts will also be released soon.

New [April 2024]: Due to a shocking reduction of google drive allowance by Google to UCSD, I lost access to pre-trained models from other methods listed below. I hope to re-train them and publish new links in the future but don't count on it. Sorry!

MethodPSNR on VimeoTrained Model
FLAVR36.3Model
AdaCoF35.3Model
QVI*35.15Model
DAIN34.19Model
SuperSloMo*32.90Model

Google Colab

A Colab notebook to try 2x slow-motion filtering on custom videos is available in the notebooks directory of this repo.

Model for Motion-Magnification

Unfortunately, we cannot provide the trained models for motion-magnification at this time. We are working towards making a model available soon.

Acknowledgement

The code is heavily borrowed from Facebook's official PyTorch video repository and CAIN.

Cite

If this code helps in your work, please consider citing us.

@article{kalluri2023flavr,
  title={FLAVR: Flow-Agnostic Video Representations for Fast Frame Interpolation},
  author={Kalluri, Tarun and Pathak, Deepak and Chandraker, Manmohan and Tran, Du},
  booktitle={WACV},
  year={2023}
}