I am trying to make a CNN model . Training the image . Want to know that When we apply kernel on image and take out the features of images. That features are rotation invariant or we have to apply some rotation invariant techniques? . Few person on stack overflow says that max pooling does rotational invariance , some person says that there is rotational invariant CNN architecture . Give me solid reason that how CNN deal with rotational invariant pictures ? Elaborate the answer .

In machine learning , we do some features extraction techniques like SIFT , SURF etc. and apply some algorithm on it, their features are scale and rotation invariant . How about in CNN ?


1 Answer 1


With a standard CNN, features are not rotation invariant, and the are not rotation equivariant. They are translation equivariant, but not rotation equivariant.

If you would like the model to be rotation invariance, then there are fancy methods to provide that, and simple methods.

The fancy method is to use a rotation-equivariant neural network. There are many research papers on this subject. See, e.g., Deep Rotation Equivariant Network by Li et al., Learning Steerable Filters for Rotation Equivariant CNNs by Weiler et al., and many others.

The simple method is to use data augmentation. During training time, randomly rotate the input image before feeding it to the neural network. You might need to train the neural network for more epochs.

Data augmentation is a lot easier to implement, and my impression is that it gives results that are close to what can be achieved with the fancy methods. Therefore, I suggest you try data augmentation first.

  • $\begingroup$ Data Augmentation isn't too much time consuming ?. If there is 100 images of dataset and if we apply augmentation , it may apply on each image and if 5 times image rotates , then for 100 images it takes too much times , it may rotate for every different angle for each image $\endgroup$
    – Hamza
    Jan 21, 2021 at 8:15
  • $\begingroup$ @Hamza, No, data augmentation is fast. Training a neural network on 5 * 100 images is super super fast. Today it's typical to train neural networks on millions of images. I suggest you spend some time trying it out before rejecting it as too slow. On an unrelated note, I suspect it's unlikely you are going to get good results out of any model with only 100 images. $\endgroup$
    – D.W.
    Jan 21, 2021 at 8:44
  • $\begingroup$ Thanks , I got it . I am going to apply GAN on Logos of different brands . I have 100 images each class and every class(40 classes) has 100 images , it is my own custom dataset. I have applied my dataset on CNN . I know images are too small. Yeah ! $\endgroup$
    – Hamza
    Jan 21, 2021 at 10:20
  • $\begingroup$ Can you little bit explain about rotation equivariant , how it relates with rotation invariant ? $\endgroup$
    – Hamza
    Jan 21, 2021 at 11:39
  • $\begingroup$ @Hamza, read the papers, do some research, then ask a new question (and show your research) if you can't figure it out. There are many resources, and a Google search will turn up some of them. We expect you to do a significant amount of research before asking here. $\endgroup$
    – D.W.
    Jan 21, 2021 at 17:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.