- Text independent writer recognition using redundant writing patterns with contour-based orientation and curvature features.
- An improved online writer identification framework using codebook descriptors.
- Writer identification using texture features: A comparative study.
- Center Symmetric Local Binary Co-occurrence Pattern for Texture, Face and Bio-medical Image Retrieval
- The used dataset is IAM Handwriting Database.
- Refer to
experiments/dataset-exploration.ipynb
for dataset exploration.
- Remove document noise.
- Extract written part only.
- Segment out lines.
- LBP Texture Descriptors.
- GLCM Texture Descriptors.
- GLCM (CSLBCoP) Texture Descriptors.
- LPQ Texture Descriptors.
- PCA (or Truncated SVD) on extracted features.
- SVM.
- KNN.
- RF.
- LR.
- NB.
idlib/classifier
: contains code for different classifiers.idlib/dataset
: contains code for train and test dataloaders.idlib/feature_extractor
: contains code for different feature extractors.idlib/preprocessor
: contains code for form preparation.idlib/trainer
: contains code for training functions.idlib/test.py
: contains main test pipeline.idlib/train.py
: contains main train pipeline.run.py
: contains main driver function for system.
- Install dependencies from
requirements.txt
:pip3 install -r requirements.txt
- Run
run.py
:python run.py -dir /path/to/data/root/directory -mode complete-train
/path/to/data/root/directory
should contain formsA-D
, formsE-H
, formsI-Z
and ascii
folders from IAM Handwriting Database
.
- Run
run.py
:python run.py -dir /path/to/data/root/directory -mode sampled-train
/path/to/data/root/directory
should contain formsA-D
, formsE-H
, formsI-Z
and ascii
folders from IAM Handwriting Database
.
- Run
run.py
:python run.py -dir /path/to/test/data/root/directory -mode test
/path/to/test/data/root/directory
should contain data
folder containing test cases and should be of the following structure :
.
└── data
├── 01
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 02
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 03
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 04
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 05
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 06
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 07
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 08
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
├── 09
│ ├── 1
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 2
│ │ ├── 1.png
│ │ └── 2.png
│ ├── 3
│ │ ├── 1.png
│ │ └── 2.png
│ └── test.png
└── 10
├── 1
│ ├── 1.png
│ └── 2.png
├── 2
│ ├── 1.png
│ └── 2.png
├── 3
│ ├── 1.png
│ └── 2.png
└── test.png
After running the previous command, the code generates two text files results.txt
and time.txt
in the root directory next to data
folder.