All Projects → miguelvr → Dropblock

miguelvr / Dropblock

Licence: mit
Implementation of DropBlock: A regularization method for convolutional networks in PyTorch.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Dropblock

Svhn Cnn
Google Street View House Number(SVHN) Dataset, and classifying them through CNN
Stars: ✭ 44 (-90.56%)
Mutual labels:  convolutional-neural-networks, dropout
Colorization Pytorch
PyTorch reimplementation of Interactive Deep Colorization
Stars: ✭ 449 (-3.65%)
Mutual labels:  convolutional-neural-networks
Computer Vision
Programming Assignments and Lectures for Stanford's CS 231: Convolutional Neural Networks for Visual Recognition
Stars: ✭ 408 (-12.45%)
Mutual labels:  convolutional-neural-networks
Arl Eegmodels
This is the Army Research Laboratory (ARL) EEGModels Project: A Collection of Convolutional Neural Network (CNN) models for EEG signal classification, using Keras and Tensorflow
Stars: ✭ 422 (-9.44%)
Mutual labels:  convolutional-neural-networks
Deepface
Deep Learning Models for Face Detection/Recognition/Alignments, implemented in Tensorflow
Stars: ✭ 409 (-12.23%)
Mutual labels:  convolutional-neural-networks
O Cnn
O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis
Stars: ✭ 432 (-7.3%)
Mutual labels:  convolutional-neural-networks
Graphwaveletneuralnetwork
A PyTorch implementation of "Graph Wavelet Neural Network" (ICLR 2019)
Stars: ✭ 404 (-13.3%)
Mutual labels:  convolutional-neural-networks
Robustness
Corruption and Perturbation Robustness (ICLR 2019)
Stars: ✭ 463 (-0.64%)
Mutual labels:  convolutional-neural-networks
Spatio Temporal Paper List
Spatio-temporal modeling 论文列表(主要是graph convolution相关)
Stars: ✭ 447 (-4.08%)
Mutual labels:  convolutional-neural-networks
Deepconvsep
Deep Convolutional Neural Networks for Musical Source Separation
Stars: ✭ 424 (-9.01%)
Mutual labels:  convolutional-neural-networks
Tensorflow Tutorial
Tensorflow tutorial from basic to hard, 莫烦Python 中文AI教学
Stars: ✭ 4,122 (+784.55%)
Mutual labels:  dropout
Multi Class Text Classification Cnn
Classify Kaggle Consumer Finance Complaints into 11 classes. Build the model with CNN (Convolutional Neural Network) and Word Embeddings on Tensorflow.
Stars: ✭ 410 (-12.02%)
Mutual labels:  convolutional-neural-networks
Numpycnn
Building Convolutional Neural Networks From Scratch using NumPy
Stars: ✭ 436 (-6.44%)
Mutual labels:  convolutional-neural-networks
Deep Convolution Stock Technical Analysis
Uses Deep Convolutional Neural Networks (CNNs) to model the stock market using technical analysis. Predicts the future trend of stock selections.
Stars: ✭ 407 (-12.66%)
Mutual labels:  convolutional-neural-networks
Food Recipe Cnn
food image to recipe with deep convolutional neural networks.
Stars: ✭ 448 (-3.86%)
Mutual labels:  convolutional-neural-networks
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+727.47%)
Mutual labels:  convolutional-neural-networks
Slimming
Learning Efficient Convolutional Networks through Network Slimming, In ICCV 2017.
Stars: ✭ 414 (-11.16%)
Mutual labels:  convolutional-neural-networks
Lifting From The Deep Release
Implementation of "Lifting from the Deep: Convolutional 3D Pose Estimation from a Single Image"
Stars: ✭ 425 (-8.8%)
Mutual labels:  convolutional-neural-networks
Cnn lstm ctc ocr
Tensorflow-based CNN+LSTM trained with CTC-loss for OCR
Stars: ✭ 464 (-0.43%)
Mutual labels:  convolutional-neural-networks
Pba
Efficient Learning of Augmentation Policy Schedules
Stars: ✭ 461 (-1.07%)
Mutual labels:  convolutional-neural-networks

DropBlock

build Downloads

Implementation of DropBlock: A regularization method for convolutional networks in PyTorch.

Abstract

Deep neural networks often work well when they are over-parameterized and trained with a massive amount of noise and regularization, such as weight decay and dropout. Although dropout is widely used as a regularization technique for fully connected layers, it is often less effective for convolutional layers. This lack of success of dropout for convolutional layers is perhaps due to the fact that activation units in convolutional layers are spatially correlated so information can still flow through convolutional networks despite dropout. Thus a structured form of dropout is needed to regularize convolutional networks. In this paper, we introduce DropBlock, a form of structured dropout, where units in a contiguous region of a feature map are dropped together. We found that applying DropBlock in skip connections in addition to the convolution layers increases the accuracy. Also, gradually increasing number of dropped units during training leads to better accuracy and more robust to hyperparameter choices. Extensive experiments show that DropBlock works better than dropout in regularizing convolutional networks. On ImageNet classification, ResNet-50 architecture with DropBlock achieves 78.13% accuracy, which is more than 1.6% improvement on the baseline. On COCO detection, DropBlock improves Average Precision of RetinaNet from 36.8% to 38.4%.

Installation

Install directly from PyPI:

pip install dropblock

or the bleeding edge version from github:

pip install git+https://github.com/miguelvr/dropblock.git#egg=dropblock

NOTE: Implementation and tests were done in Python 3.6, if you have problems with other versions of python please open an issue.

Usage

For 2D inputs (DropBlock2D):

import torch
from dropblock import DropBlock2D

# (bsize, n_feats, height, width)
x = torch.rand(100, 10, 16, 16)

drop_block = DropBlock2D(block_size=3, drop_prob=0.3)
regularized_x = drop_block(x)

For 3D inputs (DropBlock3D):

import torch
from dropblock import DropBlock3D

# (bsize, n_feats, depth, height, width)
x = torch.rand(100, 10, 16, 16, 16)

drop_block = DropBlock3D(block_size=3, drop_prob=0.3)
regularized_x = drop_block(x)

Scheduled Dropblock:

import torch
from dropblock import DropBlock2D, LinearScheduler

# (bsize, n_feats, depth, height, width)
loader = [torch.rand(20, 10, 16, 16) for _ in range(10)]

drop_block = LinearScheduler(
                DropBlock2D(block_size=3, drop_prob=0.),
                start_value=0.,
                stop_value=0.25,
                nr_steps=5
            )

probs = []
for x in loader:
    drop_block.step()
    regularized_x = drop_block(x)
    probs.append(drop_block.dropblock.drop_prob)
    
print(probs)

The drop probabilities will be:

>>> [0.    , 0.0625, 0.125 , 0.1875, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]

The user should include the step() call at the start of the batch loop, or at the the start of a model's forward call.

Check examples/resnet-cifar10.py to see an implementation example.

Implementation details

We use drop_prob instead of keep_prob as a matter of preference, and to keep the argument consistent with pytorch's dropout. Regardless, everything else should work similarly to what is described in the paper.

Benchmark

Refer to BENCHMARK.md

Reference

[Ghiasi et al., 2018] DropBlock: A regularization method for convolutional networks

TODO

  • [x] Scheduled DropBlock
  • [x] Get benchmark numbers
  • [x] Extend the concept for 3D images
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].