/CRNN

Convolutional recurrent neural network for scene text recognition or OCR in Keras

Primary LanguagePythonMIT LicenseMIT

CRNN

Keras implementation of Convolutional Recurrent Neural Network for text recognition

There are two models available in this implementation. One is based on the original CRNN model, and the other one includes a spatial transformer network layer to rectify the text. However, the performance does not differ very much, so it is up to you which model you choose.

Training

You can use the Synth90k dataset to train the model, but you can also use your own data. If you use your own data, you will have to rewrite the code that loads the data accordingly to the structure of your data. To download the Synth90k dataset, go to this page and download the MJSynth dataset.

Either put the Synth90k dataset in data/Synth90k or specify the path to the dataset using the --base_dir argument. The base directory should include a lot of subdirectories with Synth90k data, annotation files for training, validation, and test data, a file listing paths to all images in the dataset, and a lexicon file.

Use the --model argument to specify which of the two available models you want to use. The default model is CRNN with STN layer. See config.py for details.

Run the train.py script to perform training, and use the arguments accordingly to your setup.

Execution example

python train.py --batch_size 512 --gpus 0 1 2 3 --nb_workers 12

You can resume training by setting --resume_training to True and defining the path to the model you want to resume training, --load_model_path.

A pretrained model is available here.

Evaluation

Use eval.py to perform evaluation. You can either classify a single image or pass a directory with images that you want to classify. You also have to specify the path to a trained model.

Execution example

python eval.py --model_path result/001/model.hdf5 --data_path path/to/your/data

Requirements

TensorFlow 1.X (tested with 1.5 but I think it should work with other 1.X versions too) Keras 2.1.5

The code uses a standalone Keras installation with TF backend. It does not use Keras included in TF.