An implementation of ShuffleNet in PyTorch. ShuffleNet is an efficient convolutional neural network architecture for mobile devices. According to the paper, it outperforms Google's MobileNet by a small percentage.
In one sentence, ShuffleNet is a ResNet-like model that uses residual blocks (called ShuffleUnits), with the main innovation being the use of pointwise, or 1x1, group convolutions as opposed to normal pointwise convolutions. See paper for more details.
Clone the repo:
git clone https://github.com/Randl/ShuffleNet.git
pip install -r requirements.txtUse the model defined in model.py:
from model import ShuffleNet
# running on MNIST
net = ShuffleNet(num_classes=10, in_channels=1)or just run ImageNet example:
python imagenet.py --dataroot "/path/to/imagenet/"The ShuffleNet implementation has been briefly tested (and is tested now )on the ImageNet dataset and achieves ~43% accuracy after 35 epochs. I'm working on acquiring weights for different setups now.
One epoch takes approximetely half an hour on a single 1080 Ti.