All Projects → visinf → Dpp

visinf / Dpp

Licence: bsd-3-clause
Detail-Preserving Pooling in Deep Networks (CVPR 2018)

Labels

Projects that are alternatives of or similar to Dpp

Knn cuda
pytorch knn [cuda version]
Stars: ✭ 86 (-13.13%)
Mutual labels:  cuda
Deeppipe2
Deep Learning library using GPU(CUDA/cuBLAS)
Stars: ✭ 90 (-9.09%)
Mutual labels:  cuda
Fbtt Embedding
This is a Tensor Train based compression library to compress sparse embedding tables used in large-scale machine learning models such as recommendation and natural language processing. We showed this library can reduce the total model size by up to 100x in Facebook’s open sourced DLRM model while achieving same model quality. Our implementation is faster than the state-of-the-art implementations. Existing the state-of-the-art library also decompresses the whole embedding tables on the fly therefore they do not provide memory reduction during runtime of the training. Our library decompresses only the requested rows therefore can provide 10,000 times memory footprint reduction per embedding table. The library also includes a software cache to store a portion of the entries in the table in decompressed format for faster lookup and process.
Stars: ✭ 92 (-7.07%)
Mutual labels:  cuda
Deep Learning Boot Camp
A community run, 5-day PyTorch Deep Learning Bootcamp
Stars: ✭ 1,270 (+1182.83%)
Mutual labels:  cuda
Weighted softmax loss
Weighted Softmax Loss Layer for Caffe
Stars: ✭ 89 (-10.1%)
Mutual labels:  cuda
Matconvnet
MatConvNet: CNNs for MATLAB
Stars: ✭ 1,299 (+1212.12%)
Mutual labels:  cuda
Pytorch Emdloss
PyTorch 1.0 implementation of the approximate Earth Mover's Distance
Stars: ✭ 82 (-17.17%)
Mutual labels:  cuda
Supra
SUPRA: Software Defined Ultrasound Processing for Real-Time Applications - An Open Source 2D and 3D Pipeline from Beamforming to B-Mode
Stars: ✭ 96 (-3.03%)
Mutual labels:  cuda
Halloc
A fast and highly scalable GPU dynamic memory allocator
Stars: ✭ 89 (-10.1%)
Mutual labels:  cuda
Numer
Numeric Erlang - vector and matrix operations with CUDA. Heavily inspired by Pteracuda - https://github.com/kevsmith/pteracuda
Stars: ✭ 91 (-8.08%)
Mutual labels:  cuda
Minhashcuda
Weighted MinHash implementation on CUDA (multi-gpu).
Stars: ✭ 88 (-11.11%)
Mutual labels:  cuda
Deep Learning With Cats
Deep learning with cats (^._.^)
Stars: ✭ 1,290 (+1203.03%)
Mutual labels:  cuda
Elasticfusion
Real-time dense visual SLAM system
Stars: ✭ 1,298 (+1211.11%)
Mutual labels:  cuda
Python Opencv Cuda
custom opencv_contrib module which exposes opencv cuda optical flow methods with python bindings
Stars: ✭ 86 (-13.13%)
Mutual labels:  cuda
Region Conv
Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade
Stars: ✭ 95 (-4.04%)
Mutual labels:  cuda
Mpr
Reference implementation for "Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces" (SIGGRAPH 2020)
Stars: ✭ 84 (-15.15%)
Mutual labels:  cuda
Aurora
Minimal Deep Learning library is written in Python/Cython/C++ and Numpy/CUDA/cuDNN.
Stars: ✭ 90 (-9.09%)
Mutual labels:  cuda
Extending Jax
Extending JAX with custom C++ and CUDA code
Stars: ✭ 98 (-1.01%)
Mutual labels:  cuda
Pynvvl
A Python wrapper of NVIDIA Video Loader (NVVL) with CuPy for fast video loading with Python
Stars: ✭ 95 (-4.04%)
Mutual labels:  cuda
Tutorial Ubuntu 18.04 Install Nvidia Driver And Cuda And Cudnn And Build Tensorflow For Gpu
Ubuntu 18.04 How to install Nvidia driver + CUDA + CUDNN + build tensorflow for gpu step by step command line
Stars: ✭ 91 (-8.08%)
Mutual labels:  cuda

Detail Preserving Pooling in Torch

This repository contains the code for DPP introduced in the following paper:
Detail-Preserving Pooling in Deep Networks (CVPR 2018)
Faraz Saeedan1, Nicolas Weber1,2*, Michael Goesele1,3*, and Stefan Roth1
1TU Darmstadt (VISINF & GCC), 2NEC Laboratories Europe, 3Oculus Research
*Work carried out while at TU Darmstadt

Citation

If you find DPP useful in your research, please cite:

@inproceedings{saeedan2018dpp,
  title={Detail-preserving pooling in deep networks},
  author={Saeedan, Faraz and Weber, Nicolas and Goesele, Michael and Roth, Stefan},
  booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
  year={2018}
}

Requirements

  • This code is built on fb.resnet.torch. Check that repository for requirements and preparations.
  • In addition you need the nnlr package installed in Torch.

Install

  1. Install the visinf package first. This package will give you access to all the models that were used in the paper: Symmetric, asymmetric, full, lite, with and without stochasticity. Please check the reference paper for a description of these variants.

  2. Clone the repository:

    git clone https://github.com/visinf/dpp.git 
    
  3. Follow one of the recipes below or try your own.

Usage

For training, simply run main.lua. By default, the script runs ResNet-110 with $DPP sym lite$ on CIFAR10 with 1 GPU and 2 data-loader threads. To run the models used in CIFAR10 experiments try:

    th main.lua -data [imagenet-folder with train and val folders] -netType resnetdpp -poolingType DPP_sym_lite -save [folder to save results] -stochasticity 'false' -manualSeed xyz
    th main.lua -data [imagenet-folder with train and val folders] -netType resnetdpp -poolingType DPP_asym_lite -save [folder to save results] -stochasticity 'false' -manualSeed xyz
    th main.lua -data [imagenet-folder with train and val folders] -netType resnetdpp -poolingType DPP_sym_full -save [folder to save results] -stochasticity 'false' -manualSeed xyz
    th main.lua -data [imagenet-folder with train and val folders] -netType resnetdpp -poolingType DPP_asym_full -save [folder to save results] -stochasticity 'false' -manualSeed xyz
    th main.lua -data [imagenet-folder with train and val folders] -netType resnetdpp -poolingType DPP_sym_lite -save [folder to save results] -stochasticity 'true' -manualSeed xyz

replace xyz with your desired random number generator seed.

To train ResNets on ImageNet try:

    th main.lua -depth 50 -batchSize 85 -nGPU 4 -nThreads 8 -shareGradInput true -data [imagenet-folder] -dataset imagenet -LR 0.033 -netType resnetdpp -poolingType DPP_sym_lite

or

    th main.lua -depth 101 -batchSize 85 -nGPU 4 -nThreads 8 -shareGradInput true -data [imagenet-folder] -dataset imagenet -LR 0.033 -netType resnetdpp -poolingType DPP_sym_lite

Different implementations of DPP

There are two different implementation codes of DPP available in the Visinf package:

  1. Black-box implementation: For this implementation we have derived closed form equations for the forward and backward passes of the inverse bilateral pooling component of DPP and implemented them in CUDA. visinf.SpatialInverseBilateralPooling gives access to this implementation, which is very fast and memory efficient. This version can be used for large-scale experiments such as ImageNet, but gives very little insight into various elements inside the block and modifying them is difficult and requires re-deriving and implementing the gradients w.r.t. parameters and inputs.

  2. Implementation based on nngraph: This version is made up of a number of Torch primitive blocks connected to each other in a graph. The internals of the block can be understood easily, examined, and altered if need be. This version is fast but not memory efficient for large image sizes. The memory overhead for CIFAR-sized experiments is moderate.

Contact

If you have further questions or discussions write an email to [email protected]

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].