From 2e9468b763e6272bf04dbd3f56ffbe9731d4b5fc Mon Sep 17 00:00:00 2001 From: tink2123 Date: Thu, 14 May 2020 14:33:15 +0800 Subject: [PATCH 1/3] add words_img --- configs/rec/rec_icdar15_reader.yml | 4 +-- configs/rec/rec_icdar15_train.yml | 4 +-- doc/imgs_words/word_1.jpg | Bin 0 -> 12474 bytes doc/imgs_words/word_2.jpg | Bin 0 -> 6114 bytes doc/imgs_words/word_3.jpg | Bin 0 -> 7937 bytes doc/imgs_words/word_4.jpg | Bin 0 -> 6369 bytes doc/imgs_words/word_5.jpg | Bin 0 -> 18044 bytes doc/recognition.md | 38 +++++++++++++++-------------- tools/infer_rec.py | 1 - 9 files changed, 24 insertions(+), 23 deletions(-) create mode 100644 doc/imgs_words/word_1.jpg create mode 100644 doc/imgs_words/word_2.jpg create mode 100644 doc/imgs_words/word_3.jpg create mode 100644 doc/imgs_words/word_4.jpg create mode 100644 doc/imgs_words/word_5.jpg diff --git a/configs/rec/rec_icdar15_reader.yml b/configs/rec/rec_icdar15_reader.yml index f09a1ea72e..fd6227d594 100755 --- a/configs/rec/rec_icdar15_reader.yml +++ b/configs/rec/rec_icdar15_reader.yml @@ -2,12 +2,12 @@ TrainReader: reader_function: ppocr.data.rec.dataset_traversal,SimpleReader num_workers: 8 img_set_dir: ./train_data - label_file_path: ./train_data/rec_gt_train.txt + label_file_path: ./train_data/ic15_data/rec_gt_train.txt EvalReader: reader_function: ppocr.data.rec.dataset_traversal,SimpleReader img_set_dir: ./train_data - label_file_path: ./train_data/rec_gt_test.txt + label_file_path: ./train_data/ic15_data/rec_gt_test.txt TestReader: reader_function: ppocr.data.rec.dataset_traversal,SimpleReader diff --git a/configs/rec/rec_icdar15_train.yml b/configs/rec/rec_icdar15_train.yml index 9f94566971..6596fc3393 100755 --- a/configs/rec/rec_icdar15_train.yml +++ b/configs/rec/rec_icdar15_train.yml @@ -1,7 +1,7 @@ Global: algorithm: CRNN use_gpu: true - epoch_num: 3000 + epoch_num: 1000 log_smooth_window: 20 print_batch_step: 10 save_model_dir: ./output/rec_CRNN @@ -14,7 +14,7 @@ Global: character_type: en loss_type: ctc reader_yml: ./configs/rec/rec_icdar15_reader.yml - pretrain_weights: ./pretrain_models/CRNN/best_accuracy + pretrain_weights: ./pretrain_models/rec_mv3_none_bilstm_ctc/best_accuracy checkpoints: save_inference_dir: Architecture: diff --git a/doc/imgs_words/word_1.jpg b/doc/imgs_words/word_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb5451e15a5689663c9618ffc3432948777c087d GIT binary patch literal 12474 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 YJbO`6l`yx=Gm+TQPm(5)YTBRw*|*h`wEzGB literal 0 HcmV?d00001 diff --git a/doc/recognition.md b/doc/recognition.md index e733ba94d3..a715fa1ad7 100644 --- a/doc/recognition.md +++ b/doc/recognition.md @@ -39,12 +39,13 @@ train_data/train_0002.jpg 用科技让复杂的世界更简单 ``` |-train_data - |- rec_gt_train.txt - |- train_imags - |- train_001.jpg - |- train_002.jpg - |- train_003.jpg - | ... + |-ic15_data + |- rec_gt_train.txt + |- train_imags + |- train_001.jpg + |- train_002.jpg + |- train_003.jpg + | ... ``` - 评估集 @@ -53,12 +54,13 @@ train_data/train_0002.jpg 用科技让复杂的世界更简单 ``` |-train_data - |- rec_gt_eval.txt - |- eval_imags - |- eval_001.jpg - |- eval_002.jpg - |- eval_003.jpg - | ... + |-ic15_data + |- rec_gt_eval.txt + |- eval_imags + |- eval_001.jpg + |- eval_002.jpg + |- eval_003.jpg + | ... ``` - 字典 @@ -120,16 +122,16 @@ PaddleOCR 提供了训练好的中文模型,可以[下载](todo: add)进行快 默认预测图片存储在 `infer_img` 里,通过 `-o Global.checkpoints` 指定权重: ``` -python tools/infer_rec.py -c configs/rec/rec_chinese_lite_train.yml -o Global.checkpoints={path/to/weights}/best_accuracy +python tools/infer_rec.py -c configs/rec/rec_chinese_lite_train.yml -o Global.checkpoints={path/to/weights}/best_accuracy TestReader.infer_img=doc/imgs_word/word_1.jpg ``` +预测图片: +![](./doc/imgs_words/word_1.jpg) 得到输入图像的预测结果: ``` -infer_img: infer_img/328_4.jpg -# 字符在字典中的索引 -[1863 921 55 155 1863 4209 3344 486 914 1863 4918] -# 预测结果 -冷库专用冷冻液/载冷剂 +infer_img: doc/imgs_words/word_1.jpg + index: [2092 177 312 2503] + word : 韩国小馆 ``` diff --git a/tools/infer_rec.py b/tools/infer_rec.py index de7799d021..25bae1ca6c 100755 --- a/tools/infer_rec.py +++ b/tools/infer_rec.py @@ -37,7 +37,6 @@ def set_paddle_flags(**kwargs): from paddle import fluid # from ppocr.utils.utility import load_config, merge_config -from ppocr.data.reader_main import test_reader import program from paddle import fluid from ppocr.utils.utility import initial_logger From bbf449be7788283353113c55531a46ff3b6f65c4 Mon Sep 17 00:00:00 2001 From: xiaoting <31891223+tink2123@users.noreply.github.com> Date: Thu, 14 May 2020 14:36:22 +0800 Subject: [PATCH 2/3] Update recognition.md --- doc/recognition.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/recognition.md b/doc/recognition.md index a715fa1ad7..d0a6ac6ccc 100644 --- a/doc/recognition.md +++ b/doc/recognition.md @@ -126,7 +126,7 @@ python tools/infer_rec.py -c configs/rec/rec_chinese_lite_train.yml -o Global.ch ``` 预测图片: -![](./doc/imgs_words/word_1.jpg) +![](./imgs_words/word_1.jpg) 得到输入图像的预测结果: ``` From 8771042238c4ccb4b48223211c378da8c9075f44 Mon Sep 17 00:00:00 2001 From: xiaoting <31891223+tink2123@users.noreply.github.com> Date: Thu, 14 May 2020 14:36:47 +0800 Subject: [PATCH 3/3] Update recognition.md --- doc/recognition.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/recognition.md b/doc/recognition.md index d0a6ac6ccc..0f939c5846 100644 --- a/doc/recognition.md +++ b/doc/recognition.md @@ -127,6 +127,7 @@ python tools/infer_rec.py -c configs/rec/rec_chinese_lite_train.yml -o Global.ch 预测图片: ![](./imgs_words/word_1.jpg) + 得到输入图像的预测结果: ```