/ Machine Learning

Improving Convolutional Networks with Self-Calibrated Convolutions

Improving Convolutional Networks with Self-Calibrated Convolutions

SCNet

The official PyTorch implementation of CVPR 2020 paper "Improving Convolutional Networks with Self-Calibrated Convolutions"

we present a novel self-calibrated convolution that explicitly expands fields-of-view of each convolutional layer
through internal communications and hence enriches the
output features. In particular, unlike the standard convolutions that fuse spatial and channel-wise information using
small kernels (e.g., 3 × 3), our self-calibrated convolution
adaptively builds long-range spatial and inter-channel dependencies around each spatial location through a novel
self-calibration operation. Thus, it can help CNNs generate
more discriminative representations by explicitly incorporating richer information. Our self-calibrated convolution
design is simple and generic, and can be easily applied to
augment standard convolutional layers without introducing
extra parameters and complexity. Extensive experiments
demonstrate that when applying our self-calibrated convolution into different backbones, the baseline models can be
significantly improved in a variety of vision tasks, including image recognition, object detection, instance segmentation, and keypoint detection, with no need to change network architectures.

Figure 1: Diagram of self-calibrated convolution.

Useage

Requirement

PyTorch>=0.4.1

Examples

git clone https://github.com/backseason/SCNet.git

from scnet import scnet50
model = scnet50(pretrained=True)

Input image should be normalized as follows:

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                  std=[0.229, 0.224, 0.225])

(The pretrained model should be downloaded automatically by default.
You may also choose to download them manually by the links listed below.)

Pretrained models

model #Params MAdds FLOPs top-1 error top-5 error Link 1 Link 2
SCNet-50 25.56M 4.0G 7.9G 22.19 6.08 GoogleDrive BaiduYun pwd: 95p5
SCNet-101 44.57M 7.2G 14.4G 21.06 5.75 GoogleDrive BaiduYun pwd: 38oh

Applications (coming soon...)

Other applications such as Classification, Instance segmentation, Object detection, Semantic segmentation, and Human keypoint detection can be found on https://mmcheng.net/scconv/.

Citation

If you find this work or code is helpful in your research, please cite:

@inproceedings{liu2020scnet,
 title={Improving Convolutional Networks with Self-Calibrated Convolutions},
 author={Jiang-Jiang Liu and Qibin Hou and Ming-Ming Cheng and Changhu Wang and Jiashi Feng},
 booktitle={IEEE CVPR},
 year={2020},
}

Contact

If you have any questions, feel free to contact me via: j04.liu(at)gmail.com.

GitHub

Comments