The development of this repository has been discontinued. An active fork of this code is available at github.com/davisvideochallenge
Package containing helper functions for loading and evaluating DAVIS.
A Matlab version of the same package is also available.
DAVIS is released under the BSD License (see LICENSE for details)
DAVIS (Densely Annotated VIdeo Segmentation), consists of high quality, Full HD video sequences, spanning multiple occurrences of common video object segmentation challenges such as occlusions, motion-blur and appearance changes. Each video is accompanied by densely annotated, pixel-accurate and per-frame ground truth segmentation.
In order to evaluate your results, execute the script ROOT/python/tools/eval.py
providing the segmentation and setting the correct phase (train,val etc...) and year (2016,2017).
- The evaluation on the 2016 dataset can be done either as single object (ver. 2016) or on multiple objects (ver. 2017, default). For single object evaluation set the flag:
-single-object
.
python tools/eval.py -i path-to-my-technique -o results.yaml --year {year} --phase val
python tools/eval.py -i path-to-my-technique -o results.yaml --year 2016 --single-object --phase val
Annotations are provided in PNG indexed format. We provide helper functions to read and write individual images:
davis.io.imread_indexed(filename)
davis.io.imwrite_indexed(filename,array)
Note that for a correct evaluation of the results, it is critical to preserve the same labeling of the annotations, i.e. assign identical numbers to corresponding objects.
See experiments/read_write_segmentation.py
for usage examples
Execute the script ROOT/python/tools/visualize.py
. The command-line arguments are similar to the evaluation script. Use --single-object
to visualize the original DAVIS 2016.
Example: python tools/visualize.py -i path-to-my-technique --year 2017 --phase val
C++
Python
- See ROOT/python/requirements.txt (Optionally to visualize results install
cv2
)
C++
- ./configure.sh && make -C build/release
Python:
- pip install virtualenv virtualenvwrapper
- source /usr/local/bin/virtualenvwrapper.sh
- mkvirtualenv davis
- pip install -r python/requirements.txt
- export PYTHONPATH=$(pwd)/python/lib
- See ROOT/python/lib/davis/config.py for a list of available options
The directory is structured as follows:
-
ROOT/cpp
: Implementation and python wrapper of the temporal stability measure. -
ROOT/python/tools
: contains scripts for evaluating segmentation.eval.py
: evaluate a technique and store results in HDF5 fileeval_view.py
: read and display evaluation from HDF5.visualize.py
: visualize segmentation results.
-
ROOT/python/lib/davis
: library package contains helper functions for parsing and evaluating DAVIS -
ROOT/data
:get_davis.sh
: download input images and annotations.
See source code for API documentation.
We provide a script to convenitently download the data. Simply execute: sh ROOT/data/get_data.sh
. Alternatively the dataset can be downloaded from the DAVIS Challenge website.
Please cite DAVIS
in your publications if it helps your research:
@inproceedings{Perazzi_CVPR_2016,
author = {Federico Perazzi and
Jordi Pont-Tuset and
Brian McWilliams and
Luc Van Gool and
Markus Gross and
Alexander Sorkine-Hornung},
title = {A Benchmark Dataset and Evaluation Methodology for Video Object Segmentation},
booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2016}
}
@article{Pont-Tuset_arXiv_2017,
author = {Jordi Pont-Tuset and
Federico Perazzi and
Sergi Caelles and
Pablo Arbel\'aez and
Alexander Sorkine-Hornung and
Luc {Van Gool}},
title = {The 2017 DAVIS Challenge on Video Object Segmentation},
journal = {arXiv:1704.00675},
year = {2017}
}
- Temporal stability measure (T)
- Per-attribute evaluation script
- Add usage examples