Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Tensorflow-based CNN+LSTM trained with CTC-loss for OCR
| Date | Stars |
|---|---|
| 2026-07-24 | 502 |
| 2026-07-25 | 502 |
| 2026-07-28 | 502 |
| 2026-07-30 | 502 |
| 2026-08-06 | 502 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Overview This collection demonstrates how to construct and train a deep, bidirectional stacked LSTM using CNN features as input with CTC loss to perform robust word recognition. The model is a straightforward adaptation of Shi et al.'s CRNN architecture ([arXiv:1507.0571](https://arxiv.org/abs/1507.05717)). The provided code downloads and trains using Jaderberg et al.'s synthetic data ([IJCV 2016](http://dx.doi.org/10.1007/s11263-015-0823-z)), MJSynth. Notably, the model achieves a lower test word error rate (1.82%) than [CRNN]( https://github.com/bgshih/crnn) when trained and tested on case-insensitive, closed vocabulary MJSynth data. Written for Python 2.7. Requires TensorFlow >=1.10 (deprecation warnings exist for TF>1.10, but the code still works). The model and subsequent experiments are more fully described in [Weinman et al. (ICDAR 2019)](https://weinman.cs.grinnell.edu/pubs/weinman19deep.pdf) # Structure The model as built is a hybrid of Shi et al.'s CRNN architecture (arXiv:1507.0571) and the VGG deep convnet, which reduces the number of parameters by stacking pairs of small 3x3 kernels. In addition, the pooling is also limited in the horizontal direction to preserve resolution for character recognition. There must be at least one horizontal element per character. Assuming one starts with a 32x32 image, the dimensions at each level of filtering are as follows: | Layer | Op | KrnSz | Stride(v,h) | OutDim | H | W | PadOpt |:-----:|------|-------|:-----------:|--------|----|-----|-------------- | 1 | Conv | 3 | 1 | 64 | 30 | 30 | valid | 2 | Conv | 3 | 1 | 64 | 30 | 30 | same | | Pool | 2 | 2 | 64 | 15 | 15 | | 3 | Conv | 3 | 1 | 128 | 15 | 15 | same | 4 | Conv | 3 | 1 | 128 | 15 | 15 | same | | Pool | 2 | 2,1 | 128 | 7 | 14 | | 5 | Conv | 3 | 1 | 256 | 7 | 14 | same | 6 | Conv | 3 | 1 | 256 | 7 | 14 | same | | Pool | 2 | 2,1 | 256 | 3 | 13 | | 7 | Conv | 3 | 1 | 512 | 3 | 13 | same | 8 | Conv | 3 | 1 | 512 | 3 | 13 | same | | Pool | 3 | 3,1 | 512 | 1 | 13 | | 9 | LSTM | | | 512 | | | | 10 | LSTM | | | 512 | | | To accelerate training, a batch normalization layer is included before each pooling layer and ReLU non-linearities are used throughout. Other model details should be easily identifiable in the code. The default training mechanism uses the ADAM optimizer with learning rate decay. ## Differences from CRNN ### Deeper early convolutions The original CRNN uses a single 3x3 convolution in the first two conv/pool stages, while this network uses a paired sequence of 3x3 kernels. This change increases the theoretical receptive field of early stages of the network. As a tradeoff, we omit the computationally expensive 2x2x512 final convolutional layer of CRNN. In its place, this network vertically max pools over the remaining three rows of features to collapse to a single 512-dimensional feature vector at each horizontal location. The combination of these changes preserves the theoretical receptive field size of the final CNN layer, but reduces the number of convolution parameters to be learned by 15%. ### Padding Another important difference is the lack of zero-padding in the first convolutional layer, which can cause spurious strong filter responses around the border. By trimming the first convolution to valid regions, this model erodes the outermost pixel of values from the response filter maps (reducing height from 32 to 30 and reducing the width by two pixels). This approach seems preferable to requiring the network to learn to ignore strong Conv1 responses near the image edge (presumabl
Excerpt of 10,729 characters
Read on GitHub98
73
41
2
2
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:972d9a4be4afdf6a, topic:ocr, name:ocr, desc:ocr
matched fp:972d9a4be4afdf6a, topic:tensorflow