Home

Awesome

PWC PWC PWC PWC PWC PWC PWC PWC PWC PWC

FastDVDnet

A state-of-the-art, simple and fast network for Deep Video Denoising which uses no motion compensation.

Oral presentation at CVPR2020. CVPR publication page

Previous deep video denoising algorithm: DVDnet

Overview

This source code provides a PyTorch implementation of the FastDVDnet video denoising algorithm, as in Tassano, Matias and Delon, Julie and Veit, Thomas. "FastDVDnet: Towards Real-Time Deep Video Denoising Without Flow Estimation", arXiv preprint arXiv:1907.01361 (2019).

Datasets and Video Examples

You can download several denoised sequences with our algorithm and other methods here and here

Trainset

The 2017 DAVIS dataset was used for training. You can find a list with the names of the 480p sequences employed here. The dataloader needs the sequences in mp4 format. You can find the converted .mp4 files under the training folder here.

Note: when converting the sequences one has to pay particular attention to the 'crf' and 'keyint' ffmpeg parameters to avoid strong compression. For the code to convert the image sequences see this gist

Testsets

Two testsets are used in the paper: Set8 and the 2017 DAVIS testset.

Set8 is composed of 8 sequences: 4 sequences from the Derf 480p testset ("tractor", "touchdown", "park_joy", "sunflower") plus other 4 540p sequences. You can find these under the test_sequences folder here.

Running Times

FastDVDnet is orders of magnitude faster than other state-of-the-art methods

<img src="https://github.com/m-tassano/fastdvdnet/raw/master/img/runtimes_all_log.png" width=350>

Results

<img src="https://github.com/m-tassano/fastdvdnet/raw/master/img/9831-teaser.gif" width=256> <img src="https://github.com/m-tassano/fastdvdnet/raw/master/img/psnrs.png" width=600>

Left: Input noise sigma 40 denoised with FastDVDnet (sorry about the dithering due to gif compression)

Right: PSNRs on the DAVIS testset, Gaussian noise and clipped Gaussian noise

Architecture

<img src="https://github.com/m-tassano/fastdvdnet/raw/master/img/arch.png" heigth=350>

Code User Guide

Colab example

You can use this Colab notebook to replicate the results

Dependencies

The code runs on Python +3.6. You can create a conda environment with all the dependecies by running

conda env create -f requirements.yml -n <env_name>

NOTE: the code was updated to support a newer version of the DALI library. For the original version of the algorithm which supported pytorch=1.0.0 and nvidia-dali==0.10.0 you can see this release

Testing

If you want to denoise an image sequence using the pretrained model you can execute

test_fastdvdnet.py \
	--test_path <path_to_input_sequence> \
	--noise_sigma 30 \
	--save_path results

NOTES

Training

DISCLAIMER: The weights shared in this repo were trained with a previous DALI version, v0.10.0, and pytorch v1.0.0. The training code was later updated to work with a more recent version of DALI. However, it has been reported that the perfomance obtained with this newer DALI version is not as good as the original one, see https://github.com/m-tassano/fastdvdnet/issues/51 for more details.

If you want to train your own models you can execute

train_fastdvdnet.py \
	--trainset_dir <path_to_input_mp4s> \
	--valset_dir <path_to_val_sequences> \
	--log_dir logs

NOTES

ABOUT

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.

The sequences are Copyright GoPro 2018