- Notifications
You must be signed in to change notification settings - Fork745
Pytorch implementation of FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks
License
NVIDIA/flownet2-pytorch
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Pytorch implementation ofFlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks.
Multiple GPU training is supported, and the code provides examples for training or inference onMPI-Sintel clean and final datasets. The same commands can be used for training or inference with other datasets. See below for more detail.
Inference using fp16 (half-precision) is also supported.
For more help, type
python main.py --help
Below are the different flownet neural network architectures that are provided.
A batchnorm version for each network is also available.
- FlowNet2S
- FlowNet2C
- FlowNet2CS
- FlowNet2CSS
- FlowNet2SD
- FlowNet2
FlowNet2
orFlowNet2C*
achitectures rely on custom layersResample2d
orCorrelation
.
A pytorch implementation of these layers with cuda kernels are available at./networks.
Note : Currently, half precision kernels are not available for these layers.
Dataloaders for FlyingChairs, FlyingThings, ChairsSDHom and ImagesFromFolder are available indatasets.py.
L1 and L2 losses with multi-scale support are available inlosses.py.
# get flownet2-pytorch sourcegit clone https://github.com/NVIDIA/flownet2-pytorch.gitcd flownet2-pytorch# install custom layersbash install.sh
Currently, the code supports python 3
- numpy
- PyTorch ( == 0.4.1, for <= 0.4.0 see branchpython36-PyTorch0.4)
- scipy
- scikit-image
- tensorboardX
- colorama, tqdm, setproctitle
We've included caffe pre-trained models. Should you use these pre-trained weights, please adhere to thelicense agreements.
- FlowNet2[620MB]
- FlowNet2-C[149MB]
- FlowNet2-CS[297MB]
- FlowNet2-CSS[445MB]
- FlowNet2-CSS-ft-sd[445MB]
- FlowNet2-S[148MB]
- FlowNet2-SD[173MB]
# Example on MPISintel Clean python main.py --inference --model FlowNet2 --save_flow --inference_dataset MpiSintelClean \--inference_dataset_root /path/to/mpi-sintel/clean/dataset \--resume /path/to/checkpoints
# Example on MPISintel Final and Clean, with L1Loss on FlowNet2 modelpython main.py --batch_size 8 --model FlowNet2 --loss=L1Loss --optimizer=Adam --optimizer_lr=1e-4 \--training_dataset MpiSintelFinal --training_dataset_root /path/to/mpi-sintel/final/dataset \--validation_dataset MpiSintelClean --validation_dataset_root /path/to/mpi-sintel/clean/dataset# Example on MPISintel Final and Clean, with MultiScale loss on FlowNet2C model python main.py --batch_size 8 --model FlowNet2C --optimizer=Adam --optimizer_lr=1e-4 --loss=MultiScale --loss_norm=L1 \--loss_numScales=5 --loss_startScale=4 --optimizer_lr=1e-4 --crop_size 384 512 \--training_dataset FlyingChairs --training_dataset_root /path/to/flying-chairs/dataset \--validation_dataset MpiSintelClean --validation_dataset_root /path/to/mpi-sintel/clean/dataset
If you find this implementation useful in your work, please acknowledge it appropriately and cite the paper:
@InProceedings{IMKDB17, author = "E. Ilg and N. Mayer and T. Saikia and M. Keuper and A. Dosovitskiy and T. Brox", title = "FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks", booktitle = "IEEE Conference on Computer Vision and Pattern Recognition (CVPR)", month = "Jul", year = "2017", url = "http://lmb.informatik.uni-freiburg.de//Publications/2017/IMKDB17"}
@misc{flownet2-pytorch, author = {Fitsum Reda and Robert Pottorff and Jon Barker and Bryan Catanzaro}, title = {flownet2-pytorch: Pytorch implementation of FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks}, year = {2017}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/NVIDIA/flownet2-pytorch}}}
Code (in Caffe and Pytorch):PWC-Net
Paper :PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume.
Parts of this code were derived, as noted in the code, fromClementPinard/FlowNetPytorch.