# Characters Recognition
A Chinese characters recognition repository based on convolutional recurrent networks.
## Performance
#### Recognize characters in pictures
## Dev Environments
1. WIN 10 or Ubuntu 16.04
2. **PyTorch 1.2.0 (may fix ctc loss)** with cuda 10.0
3. yaml
4. easydict
5. tensorboardX
### Data
#### Synthetic Chinese String Dataset
1. Download the dataset in [here](https://pan.baidu.com/s/1ufYbnZAZ1q0AlK7yZ08cvQ)
2. Edit **lib/config/360CC_config.yaml** DATA:ROOT to you image path
```angular2html
DATASET:
ROOT: 'to/your/images/path'
```
3. Put *char_std_5990.txt* in **lib/dataset/txt/**
4. Download the labels in [here](https://pan.baidu.com/s/1rd4tm0sCq5fFgB2ziUxcrA) (password: w877)
5. And put *train.txt* and *test.txt* in **lib/dataset/txt/**
eg. test.txt
```
20456343_4045240981.jpg 89 201 241 178 19 94 19 22 26 656
20457281_3395886438.jpg 120 1061 2 376 78 249 272 272 120 1061
...
```
#### Your own data
1. Edit **lib/config/OWN_config.yaml** DATA:ROOT to you image path
```angular2html
DATASET:
ROOT: 'to/your/images/path'
```
2. And put your *train_own.txt* and *test_own.txt* in **lib/dataset/txt/**
eg. test_own.txt
```
20456343_4045240981.jpg 你好啊!祖国!
20457281_3395886438.jpg 晚安啊!世界!
...
```
**note**: fixed-length supported. yet you can modify dataloader to support random length.
## Train
```angular2html
[run] python train.py --cfg lib/config/360CC_config.yaml
```
#### loss curve
```angular2html
[run] cd output/360CC/crnn/xxxx-xx-xx-xx-xx/
[run] tensorboard --logdir log
```
#### loss overview
## Demo
```angular2html
[run] python demo.py --image_path images/test.png --checkpoints output/checkpoints/mixed_second_finetune_acc_97P7.pth
```
## References
- https://github.com/meijieru/crnn.pytorch
- https://github.com/HRNet