I have added the Jupyter notebook for code, and the deployement files in the repo.
I trained a CNN Model with Convolution , Max Pooling and Flattening in the end, each of these steps play a significant role in classification of the image,and feature extraction
A convolutional layer carries out the filtering step to extract particular features through filters.
Max pooling is done to help over-fitting by providing an abstracted form of the representation. As well, it reduces the computational cost by reducing the number of parameters to learn
Flattening is converting the data into a long 1-D array it forms an input to the next layer, it is simply a single long feature vector.