Convolutional Recurrent Neural Network (CRNN) for image-based sequence recognition.
Lua
2,102
21 commits
updated Mar 4, 2019
This software implements the Convolutional Recurrent Neural Network (CRNN), a combination of CNN, RNN and CTC loss for image-based sequence recognition tasks, such as scene text recognition and OCR. For details, please refer to our paper http://arxiv.org/abs/1507.05717.
UPDATE Mar 14, 2017 A Docker file has been added to the project. Thanks to @varun-suresh.
UPDATE May 1, 2017 A PyTorch port has been made by @meijieru.
UPDATE Jun 19, 2017 For an end-to-end text detector+recognizer, check out the CTPN+CRNN implementation by @AKSHAYUBHAT.
The software has only been tested on Ubuntu 14.04 (x64). CUDA-enabled GPUs are required. To build the project, first install the latest versions of Torch7, fblualib and LMDB. Please follow their installation instructions respectively. On Ubuntu, lmdb can be installed by apt-get install liblmdb-dev.
To build the project, go to src/ and execute sh build_cpp.sh to build the C++ code. If successful, a file named libcrnn.so should be produced in the src/ directory.
A demo program can be found in src/demo.lua. Before running the demo, download a pretrained model from here. Put the downloaded model file crnn_demo_model.t7 into directory model/crnn_demo/. Then launch the demo by:
th demo.lua
The demo reads an example image and recognizes its text content.
Example image:

Expected output:
Loading model...
Model loaded from ../model/crnn_demo/model.t7
Recognized text: available (raw: a-----v--a-i-l-a-bb-l-e---)
Another example:

Recognized text: shakeshack (raw: ss-h-a--k-e-ssh--aa-c--k--)
The pretrained model can be used for lexicon-free and lexicon-based recognition tasks. Refer to the functions recognizeImageLexiconFree and recognizeImageWithLexicion in file utilities.lua for details.
Follow the following steps to train a new model on your own dataset.
tool/create_dataset.py. Refer to the function createDataset for details (need to pip install lmdb first).model/. For example, model/foo_model. Then create
configuraton file config.lua under the model directory. You can copy model/crnn_demo/config.lua and do modifications.src/ and execute th main_train.lua ../models/foo_model/. Model snapshots and logging file will be saved into the model directory.docker build -t crnn_docker .nvidia-docker run -it crnn_docker.Please cite the following paper if you are using the code/model in your research paper.
@article{ShiBY17,
author = {Baoguang Shi and
Xiang Bai and
Cong Yao},
title = {An End-to-End Trainable Neural Network for Image-Based Sequence Recognition
and Its Application to Scene Text Recognition},
journal = {{IEEE} Trans. Pattern Anal. Mach. Intell.},
volume = {39},
number = {11},
pages = {2298--2304},
year = {2017}
}
The authors would like to thank the developers of Torch7, TH++, lmdb-lua-ffi and char-rnn.
Please let me know if you encounter any issues.
434 followers · starred Nov 2016
528 followers · starred Oct 2020
936 followers · starred Nov 2017
86 followers · starred Mar 2023
Convolutional Recurrent Neural Network (CRNN) for image-based sequence recognition.
Lua
2,102
21 commits
updated Mar 4, 2019
This software implements the Convolutional Recurrent Neural Network (CRNN), a combination of CNN, RNN and CTC loss for image-based sequence recognition tasks, such as scene text recognition and OCR. For details, please refer to our paper http://arxiv.org/abs/1507.05717.
UPDATE Mar 14, 2017 A Docker file has been added to the project. Thanks to @varun-suresh.
UPDATE May 1, 2017 A PyTorch port has been made by @meijieru.
UPDATE Jun 19, 2017 For an end-to-end text detector+recognizer, check out the CTPN+CRNN implementation by @AKSHAYUBHAT.
The software has only been tested on Ubuntu 14.04 (x64). CUDA-enabled GPUs are required. To build the project, first install the latest versions of Torch7, fblualib and LMDB. Please follow their installation instructions respectively. On Ubuntu, lmdb can be installed by apt-get install liblmdb-dev.
To build the project, go to src/ and execute sh build_cpp.sh to build the C++ code. If successful, a file named libcrnn.so should be produced in the src/ directory.
A demo program can be found in src/demo.lua. Before running the demo, download a pretrained model from here. Put the downloaded model file crnn_demo_model.t7 into directory model/crnn_demo/. Then launch the demo by:
th demo.lua
The demo reads an example image and recognizes its text content.
Example image:

Expected output:
Loading model...
Model loaded from ../model/crnn_demo/model.t7
Recognized text: available (raw: a-----v--a-i-l-a-bb-l-e---)
Another example:

Recognized text: shakeshack (raw: ss-h-a--k-e-ssh--aa-c--k--)
The pretrained model can be used for lexicon-free and lexicon-based recognition tasks. Refer to the functions recognizeImageLexiconFree and recognizeImageWithLexicion in file utilities.lua for details.
Follow the following steps to train a new model on your own dataset.
tool/create_dataset.py. Refer to the function createDataset for details (need to pip install lmdb first).model/. For example, model/foo_model. Then create
configuraton file config.lua under the model directory. You can copy model/crnn_demo/config.lua and do modifications.src/ and execute th main_train.lua ../models/foo_model/. Model snapshots and logging file will be saved into the model directory.docker build -t crnn_docker .nvidia-docker run -it crnn_docker.Please cite the following paper if you are using the code/model in your research paper.
@article{ShiBY17,
author = {Baoguang Shi and
Xiang Bai and
Cong Yao},
title = {An End-to-End Trainable Neural Network for Image-Based Sequence Recognition
and Its Application to Scene Text Recognition},
journal = {{IEEE} Trans. Pattern Anal. Mach. Intell.},
volume = {39},
number = {11},
pages = {2298--2304},
year = {2017}
}
The authors would like to thank the developers of Torch7, TH++, lmdb-lua-ffi and char-rnn.
Please let me know if you encounter any issues.
434 followers · starred Nov 2016
528 followers · starred Oct 2020
936 followers · starred Nov 2017
86 followers · starred Mar 2023