Skip to content

Skribix classifies hand-drawn sketches into object categories using robust feature extraction and traditional ML techniques such as KNN, SVM, Decision Trees, Naive Bayes, and Perceptron.

License

Notifications You must be signed in to change notification settings

Rathodyashraj/Skribix-1

Repository files navigation

Skribix

Skribix focuses on hand-drawn sketch recognition. It leverages machine learning and deep learning techniques to classify sketches into various object categories. The project is designed to provide an easy-to-use interface for training and testing models on sketch datasets.

Make your sketches here - Skribix - Handdrawn sketch recognition

Versioning

  • skribix_v1: Utilizes 250 classes of images for image recognition.
  • skribix_v2: A scaled-down version with 15 handpicked classes of images for improved accuracy and performance.

Features

  • Classification of hand-drawn sketches into multiple object categories.
  • Implementation of various machine learning algorithms:
    • KNN
    • SVM
    • Decision Trees
    • Naive Bayes
    • ANN
    • CNN
  • Robust feature extraction techniques for enhanced accuracy.
  • Easy-to-use interface for training and testing models.
  • Modular structure for extensibility.

Installation

  1. Clone the repository:
    git clone https://github.com/Sahil-1918912/Skribix.git
  2. Navigate to the project directory:
    cd Skribix-2
  3. Install the required dependencies:
    pip install -r requirements.txt

Project Structure

    skribix/
    ├── backend_api   
    │   ├── api.ipynb
    │   ├── api.py
    │   └── test.ipynb         
    ├── frontend   
    │   ├── public
    │   └── src
    │        ├── assets
    │        │      └── react.svg
    │        ├── App.css
    │        ├── App.jsx
    │        ├── DrawingTool.jsx
    │        ├── index.css
    │        └── main.jsx
    ├── skribix_v1 
    │   ├── feature extraction   
    │   └── models  
    ├── skribix_v2   
    │   ├── ann model  
    │   ├── bayesian_model
    │   ├── best model
    │   ├── clustering
    │   ├── cnn model 
    │   ├── edge_detection
    │   ├── feature extraction
    │   ├── feature_extraction_smooth
    │   ├── ImageDataGenerator
    │   ├── knn
    │   ├── knn model
    │   ├── sketches
    │   └── svm model
    ├── web page 
    │   └── index.html               
    ├── .gitignore         
    ├── LICENSE                  
    ├── README.md
    └── requirements.txt

Usage

Backend

  1. Start the backend API:
    python backend_api/api.py
  2. Test the backend using the provided Jupyter Notebook:
    jupyter notebook backend_api/test.ipynb

Frontend

  1. Navigate to the frontend directory:
    cd frontend
  2. Install frontend dependencies:
    npm install
  3. Start the development server:
    npm run dev

Training Models

  1. Train a model using one of the supported algorithms:
    python skribix_v2/<algorithm_directory>/train.py --data <path_to_dataset>
    Replace <algorithm_directory> with the desired algorithm directory.

Testing Models

  1. Test a trained model:
    python skribix_v2/<algorithm_directory>/test.py --model <path_to_model> --data <path_to_test_data>
    Replace <algorithm_directory> with the desired algorithm directory.

Models Used

  • PCA + Naive Bayes
  • PCA + KNN
  • ANN (Artificial Neural Network)
  • CNN (Convolutional Neural Network)
  • K-Means + KNN
  • Mean-Shift Clustering + KNN
  • GMM + KNN
  • SVM
  • K-Means + SVM
  • PCA + SVM

Dataset

You can use publicly available sketch datasets such as:

  1. How Do Humans Sketch Objects?

  2. Hand-picked Dataset: skribix_v2/sketches
    Custom Feature Extraction: The project includes cutomized features extracted manuall and stored in .npy file format. These files contain preprocessed data specifically tailored for training and testing particular models.
    .npy file directories -

  • skribix_v2/feature extraction
  • skribix_v2/feature_extraction_smooth
  • skribix_v2/edge_detection
  • skribix_v2/IMageDataGenerator

References

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Skribix classifies hand-drawn sketches into object categories using robust feature extraction and traditional ML techniques such as KNN, SVM, Decision Trees, Naive Bayes, and Perceptron.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •