iduta/pyconv
Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition (https://arxiv.org/pdf/2006.11538.pdf)
repo name | iduta/pyconv |
repo link | https://github.com/iduta/pyconv |
homepage | |
language | Python |
size (curr.) | 202 kB |
stars (curr.) | 89 |
created | 2020-06-20 |
license | MIT License |
Pyramidal Convolution
This is a PyTorch implementation of “Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition” paper:
@article{duta2020pyramidal,
author = {Ionut Cosmin Duta and Li Liu and Fan Zhu and Ling Shao},
title = {Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition},
journal = {arXiv preprint arXiv:2006.11538},
year = {2020},
}
The models trained on ImageNet can be found here.
PyConv is able to provide improved recognition capabilities over the baseline (see the paper for details).
The accuracy on ImageNet (using the default training settings):
Network | 50-layers | 101-layers | 152-layers |
---|---|---|---|
ResNet | 76.12% (model) | 78.00% (model) | 78.45% (model) |
PyConvHGResNet | 78.48% (model) | 79.22% (model) | 79.36% (model) |
PyConvResNet | 77.88% (model) | 79.01% (model) | 79.52% (model) |
The accuracy on ImageNet can be significantly improved using more complex training settings (for instance, using additional data augmentation (CutMix), increase bach size to 1024, learning rate of 0.4, 300 epochs and use mixed precision to speed-up training):
Network | test crop: 224×224 | test crop: 320×320 | |
---|---|---|---|
PyConvResNet-50 (+augment) | 79.44 | 80.59 | (model) |
PyConvResNet-101 (+augment) | 80.58 | 81.49 | (model) |
Requirements
Install PyTorch and ImageNet dataset following the official PyTorch ImageNet training code.
A fast alternative (without the need to install PyTorch and other deep learning libraries) is to use NVIDIA-Docker, we used this container image.
Training
To train a model (for instance, PyConvResNet with 50 layers) using DataParallel run main.py
;
you need also to provide result_path
(the directory path where to save the results
and logs) and the --data
(the path to the ImageNet dataset):
result_path=/your/path/to/save/results/and/logs/
mkdir -p ${result_path}
python main.py \
--data /your/path/to/ImageNet/dataset/ \
--result_path ${result_path} \
--arch pyconvresnet \
--model_depth 50
To train using Multi-processing Distributed Data Parallel Training follow the instructions in the official PyTorch ImageNet training code.