All Projects → hangg7 → Deformable Kernels

hangg7 / Deformable Kernels

Licence: mit
Deforming kernels to adapt towards object deformation. In ICLR 2020.

Projects that are alternatives of or similar to Deformable Kernels

Graphvite
GraphVite: A General and High-performance Graph Embedding System
Stars: ✭ 865 (+421.08%)
Mutual labels:  representation-learning, cuda
Nccl Tests
NCCL Tests
Stars: ✭ 166 (+0%)
Mutual labels:  cuda
Kube Secret Syncer
A Kubernetes operator to sync secrets from AWS Secrets Manager
Stars: ✭ 154 (-7.23%)
Mutual labels:  operator
Cx db8
a contextual, biasable, word-or-sentence-or-paragraph extractive summarizer powered by the latest in text embeddings (Bert, Universal Sentence Encoder, Flair)
Stars: ✭ 164 (-1.2%)
Mutual labels:  cuda
Rmm
RAPIDS Memory Manager
Stars: ✭ 154 (-7.23%)
Mutual labels:  cuda
Egress Operator
A Kubernetes operator to produce egress gateway Envoy pods and control access to them with network policies
Stars: ✭ 164 (-1.2%)
Mutual labels:  operator
Compactcnncascade
A binary library for very fast face detection using compact CNNs.
Stars: ✭ 152 (-8.43%)
Mutual labels:  cuda
Nats Streaming Operator
NATS Streaming Operator
Stars: ✭ 167 (+0.6%)
Mutual labels:  operator
Jcuda
JCuda - Java bindings for CUDA
Stars: ✭ 165 (-0.6%)
Mutual labels:  cuda
Console
Management UI for MinIO and MinIO operator
Stars: ✭ 159 (-4.22%)
Mutual labels:  operator
Khiva
An open-source library of algorithms to analyse time series in GPU and CPU.
Stars: ✭ 161 (-3.01%)
Mutual labels:  cuda
3dunderworld Sls Gpu cpu
A structured light scanner
Stars: ✭ 157 (-5.42%)
Mutual labels:  cuda
Multi Gpu Programming Models
Examples demonstrating available options to program multiple GPUs in a single node or a cluster
Stars: ✭ 165 (-0.6%)
Mutual labels:  cuda
Cumf als
CUDA Matrix Factorization Library with Alternating Least Square (ALS)
Stars: ✭ 154 (-7.23%)
Mutual labels:  cuda
Sporco
Sparse Optimisation Research Code
Stars: ✭ 164 (-1.2%)
Mutual labels:  cuda
Dsmnet
Domain-invariant Stereo Matching Networks
Stars: ✭ 153 (-7.83%)
Mutual labels:  cuda
Clojurecuda
Clojure library for CUDA development
Stars: ✭ 158 (-4.82%)
Mutual labels:  cuda
Primitiv
A Neural Network Toolkit.
Stars: ✭ 164 (-1.2%)
Mutual labels:  cuda
Floor
A C++ Compute/Graphics Library and Toolchain enabling same-source CUDA/Host/Metal/OpenCL/Vulkan C++ programming and execution.
Stars: ✭ 166 (+0%)
Mutual labels:  cuda
Quda
QUDA is a library for performing calculations in lattice QCD on GPUs.
Stars: ✭ 166 (+0%)
Mutual labels:  cuda

Deformable Kernels [ICLR 2020] [Website]

Deformable Kernels: Adapting Effective Receptive Fields for Object Deformation
Hang Gao*, Xizhou Zhu*, Steve Lin, Jifeng Dai.
In ICLR, 2020.

This repository contains official implementation of deformable kernels.

Table of contents

  1. Customized operators for deformable kernels, along with its variants.
  2. Instructions to use our operators.
  3. Results on ImageNet & COCO benchmarks, with pretrained models for reproduction.
  4. Training and evaluation code.

(0) Getting started

PyTorch

  • Get CUDA 10.1 installed on your machine.
  • Install PyTorch (pytorch.org).
  • conda env create -f environment.yml.

Apex

  • Install Apex from its official repo. This will require CUDA 10.1 to work with the latest pytorch version (which is pytorch=1.3.1 as being tested against). It is used for fast mix-precision inference and should work out of the box.

Compile our operators

# assume at project root
(
cd deformable_kernels/ops/deform_kernel;
pip install -e .;
)

(1) Customized operators

This repo includes all deformable kernel variants described in our paper, namely:

  • Global Deformable Kernels;
  • Local Deformable Kernels;
  • Local Deformable Kernels integrating with Deformable Convolutions;

Instead of learning offsets on image space, we propose to deform and resample on kernel space. This enables powerful dynamic inference capacity. For more technical details, please refer to their definitions.

We also provide implementations on our rivalries, namely:

Please refer to their module definitions under deformable_kernels/modules folder.

(2) Quickstart

The following snippet constructs the deformable kernels we used for our experiments

from deformable_kernels.modules import (
    GlobalDeformKernel2d,
    DeformKernel2d,
    DeformKernelConv2d,
)

# global DK with scope size 2, kernel size 1, stride 1, padding 0, depthwise convolution.
gdk = GlobalDeformKernel2d((2, 2), [inplanes], [inplanes], groups=[inplanes])
# (local) DK with scope size 4, kernel size 3, stride 1, padding 1, depthwise convolution.
dk = DeformKernel2d((4, 4), [inplanes], [inplanes], 3, 1, 1, groups=[inplanes])
# (local) DK integrating with dcn, with kernel & image offsets separately learnt.
dkc = DeformKernelConv2d((4, 4), [inplanes], [inplanes], 3, 1, 1, groups=[inplanes]).

Note that all of our customized operators only support depthwise convolutions now, mainly because that efficiently resampling kernels at runtime is extremely slow if we orthogonally compute over each channel. We are trying to loose this requirement by iterating our CUDA implementation. Any contribuitions are welcome!

(3) Results & pretrained models

Under construction.

(4) Training & evaluation code

Under construction.

(A) License

This project is released under the MIT license.

(B) Citation & Contact

If you find this repo useful for your research, please consider citing this bibtex:

@article{gao2019deformable,
  title={Deformable Kernels: Adapting Effective Receptive Fields for Object Deformation},
  author={Gao, Hang and Zhu, Xizhou and Lin, Steve and Dai, Jifeng},
  journal={arXiv preprint arXiv:1910.02940},
  year={2019}
}

Please contact Hang Gao <hangg AT eecs DOT berkeley DOT com> and Xizhou Zhu <ezra0408 AT mail.ustc DOT edu DOT cn> with any comments or feedback.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].