Home

Awesome

D²Conv3D: Dynamic Dilated Convolutions for Object Segmentation in Videos

This repository contains the implementation for

D²Conv3D: Dynamic Dilated Convolutions for Object Segmentation in Videos" by Christian Schmidt, Ali Athar, Sabarinath Mahadevan, and Bastian Leibe.

WACV 2022 | Paper

Setup

Setup the environment with conda env create --file env.yaml. Then compile and install the cuda operators via

pushd ops/dconv-native
python setup.py install
popd

# For faster depthwise 3D convolutions (optional)
# Packages code from this pull request https://github.com/pytorch/pytorch/pull/51027
# probably not necessary beginning with PyTorch 1.9
pushd ops/fast-depthwise-conv3d
python setup.py install
popd

If conda installs torchvision 0.2.2, you can upgrade after the environment is set up with pip install --upgrade torchvision to the newest version.

If ffmpeg/libopenh264.so.5 are missing in your conda env, try:

cd <path-to-your-conda-env>/lib/
ln -s libopenh264.so libopenh264.so.5

You can set the environment variable DATA to point to the directory where DAVIS is located, or modify config/paths/default.yaml. These paths should be absolute. See config/defaults.py for all configuration options.

By default, backbone weights are expected in ./saved_models/backbones . Download the backbone weights (ir-CSN-152, pretrained on Sports1M, finetuned on Kinetics) from this site and put it in the backone folder. You can convert these weights with the convert_csn_weights.py script:

python convert_csn_weights.py <path-to-downloaded-weights>.pkl <arch>

where <arch>is one of resnet50_csn_ir, resnet152_csn_ir, resnet152_csn_ip, depending on what want to convert.

Running the code

Example run scripts are provided in run_scripts. Set the environment variable SOURCE_DIR to the path to this repository. The scripts use as many GPUs as are available; we ran our experiments on two V100. To train, simply run one of these scripts:

bash run_scripts/xyz.sh

To test after training, run

bash run_scripts/xyz.sh test
# With a certain checkpoint
WEIGHTS=<path-to-checkpoint> bash run_scripts/xyz.sh test

By default, the results are saved in runs/<run>/results_5/vos/ with a temporal gap of 5 and runs/<run>/results_1/vos/ for dense evaluation. To compute the J&F scores, use the DAVIS evaluation package adapted for DAVIS-16 as described here.