/bengali-handwriting

Bronze medal solution for the "Bengali.AI Handwritten Grapheme Classification" Kaggle competition

Primary LanguagePythonMIT LicenseMIT

Bengali.AI Handwritten Grapheme Classification Bronze Medal Solution

About The Project


Competition image

This is my solution to the Bengali.AI Handwritten Grapheme Classification competition. I used a DenseNet-121 that receives a one-channel image and outputs 3 separate classifiers for the grapheme root, vowel diacritics, and consonant diacritics, respectively. The MixUp augmentation is used to improve the performance.

Result: Macro-average recall score of 0.9319 in the private leaderboard. Ranked 182 out of 2059 teams (bronze medal region).

Getting Started

To get a local copy up and running, follow these simple example steps.

Prerequisites

  • PyTorch (version 1.3.0)

    Install using Anaconda:

    conda install pytorch=1.3.0 -c pytorch

Installation

  1. Clone the repo

    git clone https://github.com/stephenllh/bengali_character.git
  2. Change directory

    cd bengali_character
  3. Install packages

    pip install requirements.txt

Usage

  1. Change directory

    cd bengali_character
  2. Create a directory called input

    mkdir input
    cd input
  3. Download the dataset into the folder

    • Option 1: Use Kaggle API
      • pip install kaggle
      • kaggle competitions download -c bengaliai-cv19
    • Option 2: Download the dataset from the competition website.
  4. Run the training script

    cd ..
    python train.py
  5. (Optional) Run the inference script

    python inference.py

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Stephen Lau - Email - Twitter - Kaggle

Project Link: https://github.com/stephenllh/bengali_handwriting