## 3 Methods
### Deep Learning for Image Classification Task
The convolutional layer is effective in learning features that are invariant to shifts in the input, reducing model complexity and improving model generalization. The size, stride, and padding of the filters can be adjusted to control the spatial dimensions of the output feature maps. By using multiple convolutional layers, the model can learn hierarchical representations of the input data, making it effective for tasks such as image classification and object detection. A convolution layer consists of a set of \(F\) filters known as _depth_. The weights of the filters are \(W^{f}\in\mathbb{R}^{a\times b}\), \(f=1,\ldots,\ F\). These weights generate feature map, \(Y^{f}\in\mathbb{R}^{n^{\prime}\times m^{\prime}}\) from an input matrix \(X\in\mathbb{R}^{n\times m}\) as per the given convolution  
\[Y^{f}_{i,j}=\sum_{k=0}^{a-1}\sum_{l=0}^{b-1}W^{f}_{a-k,b-l}\cdot X_{1+s(i-1)-k,\ 1+s(j-1)-l}, \tag{20}\]  
where \(s\) is called _stride_ with value \(\geq 1\), \(n^{\prime}=1+(n+a-2)/s\) and \(m^{\prime}=1+(m+b-2)/s\). It is assumed \(X\) is zero-padded which denotes, \(X_{i,j}=0\) for all \(i\
otin[1,n]\) and \(j\
otin[1,m]\). Furthermore, in image processing, \(X\) is usually a three-dimensional tensor; therefore, the weights are three-dimensional as well and applies on all input channels simultaneously. After obtaining the feature maps from a convolution layer, a _pooling layer_ performs downsampling on the feature maps obtained from the previous convolution layer. The purpose of pooling is to reduce the spatial dimensions of the feature maps, making the network more computationally efficient, and invariant to translations in the input image. Therefore, the pooling layers partitions \(Y\) into \(p\times p\) regions with values representing the most important information from the set and computes a single output value using pooling techniques such as max-pooling and average-pooling, which, respectively, take the maximum or average value from the features in the pooling window as the output before passing it to the next layer. The _activation function_ (non-linearity layer) in CNN introduces non-linearity into the network, which benefits the stacking of multiple layers in a network. The activation function is typically applied to each element of the input vector and is used to determine the output of the network, often in a binary format, such as 0 or 1. The resulting non-linearity enables deep neural networks to model complex, non-linear systems and provides a powerful tool for pattern recognition tasks. Previously, _tanh_ and _sigmoid_ activation functions were popular; however, with the understanding that most data are centered around zero, newer techniques, such as rectified linear units (ReLU) and exponential linear units (ELU), have become prevalent because they offer non-linear behavior near zero [66; 67]. A _fully connected layer_ (also known as a dense layer) in CNN is connected to all neurons in the previous layer and next layer. It takes the output from the convolutional layers and applies a matrix multiplication operation, followed by a bias offset, to produce a final prediction for the image classification. The final layer in CNN is usually a fully connected layer, which produces a vector of values, each representing a probability for a given class (category that data sample belongs to). More details on CNN can be referred to in [8]. Augmentation Techniques: Improving the generalization of the model and mitigating the overfitting problem is a major challenge in the deep learning field, including in CNN models. Data augmentation is a method that addresses this challenge by improving the sufficiency and diversity of the training data. It is used to artificially expand the size of the training dataset by generating modified versions of images in the dataset, creating a more diverse and comprehensive representation of the real-world data. The goal is to make the model more robust to variations in the data and reduce overfitting by increasing the diversity of the training set.