https://github.com/open-mmlab/denseflow
Extracting optical flow and frames
https://github.com/open-mmlab/denseflow
denseflow optical-flow
Last synced: 2 months ago
JSON representation
Extracting optical flow and frames
- Host: GitHub
- URL: https://github.com/open-mmlab/denseflow
- Owner: open-mmlab
- License: mit
- Created: 2020-07-07T05:41:14.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-01T00:24:14.000Z (over 3 years ago)
- Last Synced: 2025-03-30T11:09:03.371Z (2 months ago)
- Topics: denseflow, optical-flow
- Language: C++
- Homepage: https://open-mmlab.github.io/
- Size: 241 KB
- Stars: 313
- Watchers: 8
- Forks: 61
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Denseflow
Extracting dense flow field given a video.
## Features
- support multiple optical flow algorithms, including Nvidia hardware optical flow
- support single video (or a frame folder) / a list of videos (or a list of frame folders) as input
- support multiple output types (image, hdf5)
- faster, 40% faster (by parallelize IO & computation)
- record the progress when extract a list of videos, and resume by simply running the same command again (idempotent)## Install
### Dependencies:
- CUDA (driver version > 400)
- OpenCV (with CUDA support):
[opencv3](https://www.learnopencv.com/install-opencv3-on-ubuntu/) |
[opencv4](https://www.learnopencv.com/install-opencv-4-on-ubuntu-16-04/)
- Boost
- HDF5 (Optional)```bash
git clone https://github.com/open-mmlab/denseflow.git
cd denseflow && mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/app -DUSE_HDF5=no -DUSE_NVFLOW=no ..
make -j
make install
```If you have trouble setting up building environments, scripts in [INSTALL](INSTALL.md) might be helpful.
## Usage
### Extract optical flow of a single video
```bash
denseflow test.avi -b=20 -a=tvl1 -s=1 -v
```- `test.avi`: input video
- `-b=20` bound set to 20
- `-a=tvl1` algorithm is tvl1
- `-s=1` step is 1, ie flow of adjacent frames
- `-v`: verbose### Extract optical flow of a list of videos
```bash
denseflow videolist.txt -b=20 -a=tvl1 -s=1 -v
```- `videolist.txt`: a list of video paths
- `-b=20` bound set to 20
- `-a=tvl1` algorithm is tvl1
- `-s=1` step is 1, ie flow of adjacent frames
- `-v`: verbose### Extract optical flow of a list of videos, each video is under a class folder
```bash
denseflow videolist.txt -b=20 -a=tvl1 -s=1 -cf -v
```- `videolist.txt`: a list of video paths
- `-b=20` bound set to 20
- `-a=tvl1` algorithm is tvl1
- `-s=1` step is 1, ie flow of adjacent frames
- `-cf` this switch means that parent folder of the video is a class name
- `-v`: verbose### Extract optical flow of a folder of frame images
```bash
denseflow test -b=20 -a=tvl1 -s=1 -if -v
```- `test`: folder of the frame images
- `-b=20` bound set to 20
- `-a=tvl1` algorithm is tvl1
- `-s=1` step is 1, ie flow of adjacent frames
- `-if` indicates that inputs are frames
- `-v`: verbose### Extract frames of a single video
```bash
denseflow test.avi -s=0 -v
```- `test.avi`: input video
- `-s=0` step 0 is reserved for extracting frames
- `-v`: verbose### Extract frames of a list of videos
```bash
denseflow videolist.txt -s=0 -v
```- `videolist.txt`: a list of video paths
- `-s=1` step is 1, ie flow of adjacent frames
- `-s=0` step 0 is reserved for extracting frames
- `-v`: verbose## Documentation
```bash
$ denseflow -h
GPU optical flow extraction.
Usage: denseflow [params] input-a, --algorithm (value:tvl1)
optical flow algorithm (nv/tvl1/farn/brox)
-b, --bound (value:32)
maximum of optical flow
--cf, --classFolder
outputDir/class/video/flow.jpg
-f, --force
regardless of the marked .done file
-h, --help (value:true)
print help message
--if, --inputFrames
inputs are frames
--newHeight, --nh (value:0)
new height
--newShort, --ns (value:0)
short side length
--newWidth, --nw (value:0)
new width
-o, --outputDir (value:.)
root dir of output
-s, --step (value:0)
right - left (0 for img, non-0 for flow)
--saveType, --st (value:jpg)
save format type (png/h5/jpg)
-v, --verbose
verboseinput
filename of video or folder of frames or a list.txt of those
```## Citation
If you use this tool in your research, please cite this project.
```
@misc{denseflow,
author = {Wang, Shiguang* and Li, Zhizhong* and Zhao, Yue and Xiong, Yuanjun and Wang, Limin and Lin, Dahua},
title = {{denseflow}},
howpublished = {\url{https://github.com/open-mmlab/denseflow}},
year = {2020}
}
```## Acknowledgement
Rewritten based on [yuanjun's fork of dense_flow](https://github.com/yjxiong/dense_flow).