Awesome
Caffe with GuidedNet
This the relase of the CVPR 2017 BNMW workshop version of GuidedNet, "Guided Optical Flow Learning". You can refer to paper for more details at Openreview or Arxiv.
The code base is heavily borrowed from DispNet and UnsupFlownet. Thanks for open sourcing the code.
Dependencies
OpenCV 3 (Installation can be refered here)
Tested on Ubuntu 16.04 with Titan X GPU, CUDNN 5.1
Compiling
To get started with GuidedNet, first compile caffe, by configuring a
"Makefile.config"
then make with
$ make -j 6 all
Training
(this assumes you compiled the code sucessfully)
First you need to download and prepare the training data. For that go to the data folder:
cd data
Then run:
./download.sh
Then prepare FlyingChairs_release.list file, change the directory accordingly. For example, if you want to train with FlowFields proxy ground truth, you need to first generate FlowFields flow estimation by yourself and change:
FlyingChairs_release/data/00001_img1.ppm FlyingChairs_release/data/00001_img2.ppm FlyingChairs_release/data/00001_flow.flo
to:
FlyingChairs_release/data/00001_img1.ppm FlyingChairs_release/data/00001_img2.ppm FlyingChairs_release/FlowFields/00001_flow.flo
Then run:
./make-lmdbs.sh
(this will take some time and disk space)
To train a GuidedNet network, go to this folder:
cd ./GuidedNet/models/FlowNetS_FlowFields/
Then just run:
./train.py
To train GuidedNet network with unsuervised fine-tuning, go to this folder:
cd ./GuidedNet/models/Unsup_FineTune/
Then just run:
./train.py
NOTE: You may get better performance if you carefully tune the hyper-params for different datasets, such as loss weights, learning rate etc.
Testing
(this assumes you compiled the code sucessfully)
E.g. go to this folder:
cd ./GuidedNet/models/FlowNetS_FlowFields/
First, download pre-trained models:
FlowNetS trained with FlowFields proxy ground truth for Flying Chairs dataset
FlowNetS trained with FlowFields and unsupervised fine-tuning for Flying Chairs dataset
FlowNetS trained with FlowFields and unsupervised fine-tuning for MPI-Sintel dataset
Then prepare image pairs list, as in the example of fc_val_im0.txt
and fc_val_im1.txt
.
Change line 157 in run.py to use the correct model. To try out GuidedNet on sample image pairs, run
./run.py fc_val_im0.txt fc_val_im1.txt
This is just an example of testing on Flying Chairs dataset. You can generate your own image pairs list for any dataset.
License and Citation
Please cite this paper in your publications if you use GuidedNet for your research:
@article{guided_flow_17,
title={{Guided Optical Flow Learning}},
author={Yi Zhu and Zhenzhong Lan and Shawn Newsam and Alexander G. Hauptmann},
journal={arXiv preprint arXiv:1702.022952},
year={2017}
}