Improved Residual Networks
This is a PyTorch implementation of "Improved Residual Networks for Image and Video Recognition" paper:
@article{duta2020improved,
author = {Ionut Cosmin Duta and Li Liu and Fan Zhu and Ling Shao},
title = {Improved Residual Networks for Image and Video Recognition},
journal = {arXiv preprint arXiv:2004.04989},
year = {2020},
}
The models trained on ImageNet can be found here.
The iResNet (improved residual network) is able to improve the baseline (ResNet) in terms of recognition performance without increasing the number of parameters and computational costs. The iResNet is very effective in training very deep models (see the paper for details).
The accuracy on ImageNet (using the default training settings):
Network | 50-layers | 101-layers | 152-layers | 200-layers |
---|---|---|---|---|
ResNet | 76.12% (model) | 78.00% (model) | 78.45% (model) | 77.55% (model) |
iResnet | 77.31% (model) | 78.64% (model) | 79.34% (model) | 79.48% (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, iResNet 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 iresnet \
--model_depth 50
To train using Multi-processing Distributed Data Parallel Training follow the instructions in the official PyTorch ImageNet training code.