  In recent years, convolutional neural network has shown good performance in
many image processing and computer vision tasks. However, a standard CNN model
is not invariant to image rotations. In fact, even slight rotation of an input
image will seriously degrade its performance. This shortcoming precludes the
use of CNN in some practical scenarios. Thus, in this paper, we focus on
designing convolutional layer with good rotation invariance. Specifically,
based on a simple rotation-invariant coordinate system, we propose a new
convolutional operation, called Rotation-Invariant Coordinate Convolution
(RIC-C). Without additional trainable parameters and data augmentation, RIC-C
is naturally invariant to arbitrary rotations around the input center.
Furthermore, we find the connection between RIC-C and deformable convolution,
and propose a simple but efficient approach to implement RIC-C using Pytorch.
By replacing all standard convolutional layers in a CNN with the corresponding
RIC-C, a RIC-CNN can be derived. Using MNIST dataset, we first evaluate the
rotation invariance of RIC-CNN and compare its performance with most of
existing rotation-invariant CNN models. It can be observed that RIC-CNN
achieves the state-of-the-art classification on the rotated test dataset of
MNIST. Then, we deploy RIC-C to VGG, ResNet and DenseNet, and conduct the
classification experiments on two real image datasets. Also, a shallow CNN and
the corresponding RIC-CNN are trained to extract image patch descriptors, and
we compare their performance in patch verification. These experimental results
again show that RIC-C can be easily used as drop in replacement for standard
convolutions, and greatly enhances the rotation invariance of CNN models
designed for different applications.
