Convolutional Neural Network In PyTorch
Convolutional Neural Network is one of the main categories to do image classification and image recognition in neural networks. Scene labeling, objects detections, and face recognition, etc., are some of the areas where convolutional neural networks are widely used.
CNN takes an image as input, which is classified and process under a certain category such as dog, cat, lion, tiger, etc. The computer sees an image as an array of pixels and depends on the resolution of the image. Based on image resolution, it will see as h * w * d, where h= height w= width and d= dimension. For example, An RGB image is 6 * 6 * 3 array of the matrix, and the grayscale image is 4 * 4 * 1 array of the matrix.
In CNN, each input image will pass through a sequence of convolution layers along with pooling, fully connected layers, filters (Also known as kernels). After that, we will apply the Soft-max function to classify an object with probabilistic values 0 and 1.
Convolution Layer
Convolution layer is the first layer to extract features from an input image. By learning image features using a small square of input data, the convolutional layer preserves the relationship between pixels. It is a mathematical operation which takes two inputs such as image matrix and a kernel or filter.
- The dimension of the image matrix is h×w×d.
- The dimension of the filter is fh×fw×d.
- The dimension of the output is (h-fh+1)×(w-fw+1)×1.
Let’s start with consideration a 5*5 image whose pixel values are 0, 1, and filter matrix 3*3 as:
The convolution of 5*5 image matrix multiplies with 3*3 filter matrix is called “Features Map” and show as an output.
Convolution of an image with different filters can perform an operation such as blur, sharpen, and edge detection by applying filters.
Strides
Stride is the number of pixels which are shift over the input matrix. When the stride is equaled to 1, then we move the filters to 1 pixel at a time and similarly, if the stride is equaled to 2, then we move the filters to 2 pixels at a time. The following figure shows that the convolution would work with a stride of 2.
Padding
Padding plays a crucial role in building the convolutional neural network. If the image will get shrink and if we will take a neural network with 100’s of layers on it, it will give us a small image after filtered in the end.
If we take a three by three filter on top of a grayscale image and do the convolving then what will happen?
It is clear from the above picture that the pixel in the corner will only get covers one time, but the middle pixel will get covered more than once. It means that we have more information on that middle pixel, so there are two downsides:
- Shrinking outputs
- Losing information on the corner of the image.
To overcome this, we have introduced padding to an image. “Padding is an additional layer which can add to the border of an image.”
Pooling Layer
Pooling layer plays an important role in pre-processing of an image. Pooling layer reduces the number of parameters when the images are too large. Pooling is “downscaling” of the image obtained from the previous layers. It can be compared to shrinking an image to reduce its pixel density. Spatial pooling is also called downsampling or subsampling, which reduces the dimensionality of each map but retains the important information. There are the following types of spatial pooling:
Max Pooling
Max pooling is a sample-based discretization process. Its main objective is to downscale an input representation, reducing its dimensionality and allowing for the assumption to be made about features contained in the sub-region binned.
Max pooling is done by applying a max filter to non-overlapping sub-regions of the initial representation.
Average Pooling
Down-scaling will perform through average pooling by dividing the input into rectangular pooling regions and computing the average values of each region.
Syntax
layer = averagePooling2dLayer(poolSize) layer = averagePooling2dLayer(poolSize,Name,Value)
Sum Pooling
The sub-region for sum pooling or mean pooling are set exactly the same as for max-pooling but instead of using the max function we use sum or mean.
Fully Connected Layer
The fully connected layer is a layer in which the input from the other layers will be flattened into a vector and sent. It will transform the output into the desired number of classes by the network.
In the above diagram, the feature map matrix will be converted into the vector such as x1, x2, x3… xn with the help of fully connected layers. We will combine features to create a model and apply the activation function such as softmax or sigmoid to classify the outputs as a car, dog, truck, etc.