Skip to main content

DropBlock

build

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

  • Scheduled DropBlock
  • Get benchmark numbers
  • Extend the concept for 3D images

Metadata

Release files for dropblock 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dropblock 0.3.0
File Size Uploaded Provenance Actions
dropblock-0.3.0.tar.gz 4.1 kB Without provenance Details for dropblock-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dropblock 0.3.0
File Interpreter ABI Platform Actions
dropblock-0.3.0-py3-none-any.whl Python 3 none any Details for dropblock-0.3.0-py3-none-any.whl

Total release size: 9.5 kB

Release files / dropblock-0.3.0.tar.gz

Download URL dropblock-0.3.0.tar.gz
Size 4.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bdb016f36628ae69f0a4860614c84beb45873e5144a680485092485992a52617
BLAKE2b-256 checksum
How to use checksums
f468ccac0d2166ba6703bfcb4e1a19bb38f76cc677c70ccc85f1914167397f8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

Release files / dropblock-0.3.0-py3-none-any.whl

Download URL dropblock-0.3.0-py3-none-any.whl
Size 5.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98ce0a7c50f55ee31059e41b6d38cc6fd324eced729ac680265b00aafb1df0bf
BLAKE2b-256 checksum
How to use checksums
92baa2c6388f228045fa543f263923804e799b2e9d86b0517c5a53564ae0de3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

Security for dropblock 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page