How to use
- run
python genImg.py
to generate the train images intrain/
, validation set intest/
and the file name shall has the format of00000001_name.png
, the number of process is set to16
. cd standard
orcd warpCTC
- run
python lstm_ocr.py
to training
Notice that,
- standard : use
tf.nn.ctc_loss
to calculate the ctc loss - warpCTC : please install the warpCTC tensorflow_binding first
Dependency
- python 3
- tensorflow 1.0.1
- captcha
- (optional) warpCTC tensorflow_binding
Some details
Notice that, sufficient amount of data is a must, otherwise, the network cannot converge.
Some tools and parameters can be found in utils_*.py
some parameters need to be fined tune:
- learning rate
- decay step & decay rate (notice that, uncomment the learing rate decay part of code if it is commented)
- image_width
- image_height
if you want to use your own data and use pipline to read data, the height of the image shall be the same, besides, the suffix of the image shall be png
or you can modify the code in utils_*.py
fromtf.image.decode_png
to anything you need. However, if you read all your images at one time using OpenCV(default in my code), then this is not a problem.
Result
After adding more training data
The accurary can be more than 95%
Read this blog for more details and this blog for how to
use tf.nn.ctc_loss
or warpCTC