Giter VIP home page Giter VIP logo

adacof-pytorch's Introduction

AdaCoF: Adaptive Collaboration of Flows for Video Frame Interpolation

This repository is for AdaCoF introduced in the following paper

Hyeongmin Lee, Taeoh Kim, Tae-young Chung, Daehyun Pak, Yuseok Ban, and Sangyoun Lee, "AdaCoF: Adaptive Collaboration of Flows for Video Frame Interpolation", CVPR 2020, [arXiv], [Video]

Paper

Contents

  1. Introduction
  2. Environment
  3. Train
  4. Test
  5. Citation
  6. Acknowledgements

Introduction

Video frame interpolation is one of the most challenging tasks in video processing research. Recently, many studies based on deep learning have been suggested. Most of these methods focus on finding locations with useful information to estimate each output pixel using their own frame warping operations. However, many of them have Degrees of Freedom (DoF) limitations and fail to deal with the complex motions found in real world videos. To solve this problem, we propose a new warping module named Adaptive Collaboration of Flows (AdaCoF). Our method estimates both kernel weights and offset vectors for each target pixel to synthesize the output frame. AdaCoF is one of the most generalized warping modules compared to other approaches, and covers most of them as special cases of it. Therefore, it can deal with a significantly wide domain of complex motions. To further improve our framework and synthesize more realistic outputs, we introduce dual-frame adversarial loss which is applicable only to video frame interpolation tasks. The experimental results show that our method outperforms the state-of-the-art methods for both fixed training set environments and the Middlebury benchmark.

Architecture The network architecture.

VisualComp Visual Comparisons.

OffsetVis Offset Visualizations.

Environment

  • GPU: GTX1080Ti
  • Ubuntu 16.04.4
  • CUDA 10.0
  • python 3.6
  • torch 1.2.0
  • torchvision 0.4.0
  • cupy 6.2.0
  • scipy 1.3.1
  • pillow 6.1.0
  • numpy 1.17.0

Train

Prepare training data

  1. Download Vimeo90k training data from vimeo triplet dataset.

  2. In train.py, specify '--train' based on the directory of 'vimeo_triplet'.

For more informaiton about Vimeo90k, please refer to TOFlow.

Begin to train

  1. Run train.py with following command.

    python train.py --train [dir_to_vimeo_triplet] --out_dir [dir_to_output_folder]
  2. You can change many other options (epochs, learning rate, hyper parameters, etc.) in train.py.

  3. Then you will have the output folder (out_dir) that contains the checkpoints, result images and the configuration file of the training.

Test

Evaluation

  1. For evaluation, you need the checkpoint file and configuration (configuration is optional).

  2. You can use your own trained checkpoint, or we provide our pre-trined model in './checkpoint'.

  3. You can set the hyper parameters (kernel size and dilation) manually or you can use config.txt files.

  4. Run evaluation.py with following command.

    python evaluation.py --out_dir [output_dir] --checkpoint [checkpoint_dir] --config [configuration_dir]
  5. Then you will have the output folder (out_dir) that contains the results on the test sets 'middlebury_eval', 'middlebury_others', 'davis', 'ucf101'.

Video Interpolation

  1. To interpolate an arbitrary video you have, create a directory which contains the frames of the video like 'sample_video' directory.

  2. The starting frame index and zero-padding of indexing can be changed with '--index_from' and '--zpad'.

  3. Run interpolate_video.py with following command.

    python interpolate_video.py --input_video [input_video_frames_dir] --output_video [output_video_frames_dir] --checkpoint [checkpoint_dir] --config [configuration_dir]
  4. Then you will have the output folder (output_video_frames_dir) that contains the output video frames.

Two-frame interpolation

  1. To interpolate a frame between arbitrary two frames you have, run interpolate_video.py with following command.

    python interpolate_twoframe.py --first_frame [first_frame] --second_frame [second_frame] --output_frame [output_frame] --checkpoint [checkpoint_dir] --config [configuration_dir]
  2. Then you will have the interpolated output frame.

Citation

If you find the code helpful in your resarch or work, please cite the following paper.

@inproceedings{lee2020adacof,
    title={AdaCoF: Adaptive Collaboration of Flows for Video Frame Interpolation},
    author={Hyeongmin Lee, Taeoh Kim, Tae-young Chung, Daehyun Pak, Yuseok Ban, and Sangyoun Lee},
    booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    year={2020}
}

Acknowledgements

This code is based on yulunzhang/RCAN
The cupy part is based on sniklaus/sepconv-slomo

adacof-pytorch's People

Contributors

hyeongminlee avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.