/DCNv2

Deformable Convolutional Networks v2 with Pytorch

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Deformable Convolutional Networks V2 with Pytorch 1.1 or higher version

Made changes to replace the deprecated THC API with ATen API, to support Pytorch 1.1 or higher version.
Did experiments, it works well at least with Pytorch 1.11 and 1.12.

Build

    ./make.sh         # build
    python testcpu.py    # run examples and gradient check on cpu
    python testcuda.py   # run examples and gradient check on gpu 

Note

Now the master branch is for pytorch 1.x, you can switch back to pytorch 0.4 with,

git checkout pytorch_0.4

Known Issues:

  • Gradient check w.r.t offset (solved)
  • Backward is not reentrant (minor)

This is an adaption of the official Deformable-ConvNets.

Update: all gradient check passes with double precision.

Another issue is that it raises RuntimeError: Backward is not reentrant. However, the error is very small (<1e-7 for float <1e-15 for double), so it may not be a serious problem (?)

Please post an issue or PR if you have any comments.