Viet-Anh on Software Logo

What is: Channel Shuffle?

SourceShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
Year2000
Data SourceCC BY-SA - https://paperswithcode.com

Channel Shuffle is an operation to help information flow across feature channels in convolutional neural networks. It was used as part of the ShuffleNet architecture.

If we allow a group convolution to obtain input data from different groups, the input and output channels will be fully related. Specifically, for the feature map generated from the previous group layer, we can first divide the channels in each group into several subgroups, then feed each group in the next layer with different subgroups.

The above can be efficiently and elegantly implemented by a channel shuffle operation: suppose a convolutional layer with gg groups whose output has g×ng \times n channels; we first reshape the output channel dimension into (g,n)\left(g, n\right), transposing and then flattening it back as the input of next layer. Channel shuffle is also differentiable, which means it can be embedded into network structures for end-to-end training.