Fashion Classifier

Using Convolutional Neural Network to accurately classify clothing and other fashion items from their images.

The Neural Network is trained on a dataset consisting of 60,000 Training and 10,000 Testing dataset in the form of Black and White image pixel points of dimensions [28 x 28]. After training and optimizing the model using variety of techniques, the final Neural model was able to reach an accuracy of 94.42% and a test accuracy of 91.8%. Click here to visualise the classification.

Tools Used

  • Jupiter Notebook - for coding and visualizing the data

Packages used

  • Pandas - for Manipulation of data frames
  • Numpy - for Statistical analysis
  • Matplot - for Data visualization
  • Seaburn - for Statistical Data visualization
  • SKLearn - for splitting the testing-training dataset
  • Keras - Neural network library for deploying the Neural Network

Source of Training data-set

  • FashionMNIST dataset containing 60,000 training and 10,000 testing Image data in Black and White format.
  • Advanced dataset containing images with texture, patterns and color data for further training.

Methodology for Training the Neural Network

  • Convolution of the Raw Image data using Kernals/Feature Detectors for feature extraction, thereby prioritizing the imporatant highlights of the image.
  • Deploying Rectified Linear Units (RELU) Activation Function to add non-linearity in the feature map.
  • Pooling/Down-sampling to reduce the feature map dimensionality. Here Maxpooling is used to improve the computational efficiency while preserving the features.
  • Finaly Flattening out the down-sampled data into long single dimensional array of values.

Improving the accuracy of the model by

  • Adding more feature detectors/kernals.
  • Using Dropout thereby decreasing the co-dependency of the neuron, hence introducing more generalization.
  • By increasing the Epoch count.

Accuracy Obtained

After deploying the above mentioned optimization techniques, the following accuracy rates where obtained.

  • 32 kernal without dropout:
    • Accuracy : 0.9585
    • Test Accuracy: 0.912
  • 64 kernal without dropout
    • Accuracy : 0.9641
    • Test Accuracy : 0.915
  • 64 kernal with dropout
    • Accuracy : 0.9442
    • Test Accuracy : 0.918