An implementation of ShuffleNet introduced in TensorFlow. According to the authors, ShuffleNet
is a computationally efficient CNN architecture designed specifically
for mobile devices with very limited computing power. It outperforms Google MobileNet by
small error percentage at much lower FLOPs.
The paper uses the group convolution operator. However, that operator
is not implemented in TensorFlow backend. So, I implemented the
operator using graph operations.
The paper has achieved 140 MFLOPs using the vanilla version. Using
the group convolution operator implemented in TensorFlow, I have
achieved approximately 270 MFLOPs. The paper counts
multiplication+addition as one unit, so roughly dividing 270 by two, I
have achieved what the paper proposes.
To calculate the FLOPs in TensorFlow, make sure to set the batch size
equal to 1, and execute the following line when the model is loaded
into memory.