From 7eeef5933c359258b02835ca5e06b406dd6de407 Mon Sep 17 00:00:00 2001 From: tink2123 Date: Wed, 9 Dec 2020 11:56:37 +0000 Subject: [PATCH] update multi dic and export --- .../rec_en_number_lite_train.yml | 4 +- .../multi_language/rec_french_lite_train.yml | 8 +-- .../multi_language/rec_german_lite_train.yml | 4 +- .../multi_language/rec_japan_lite_train.yml | 4 +- .../multi_language/rec_korean_lite_train.yml | 4 +- deploy/cpp_infer/src/ocr_cls.cpp | 2 +- deploy/cpp_infer/src/ocr_det.cpp | 2 +- deploy/cpp_infer/src/ocr_rec.cpp | 4 +- ppocr/utils/dict/en_dict.txt | 63 +++++++++++++++++++ ppocr/utils/dict/french_dict.txt | 3 +- ppocr/utils/dict/german_dict.txt | 3 +- ppocr/utils/dict/japan_dict.txt | 3 +- ppocr/utils/dict/korean_dict.txt | 5 +- tools/export_model.py | 29 ++++----- tools/infer/utility.py | 12 ++-- 15 files changed, 105 insertions(+), 45 deletions(-) create mode 100644 ppocr/utils/dict/en_dict.txt diff --git a/configs/rec/multi_language/rec_en_number_lite_train.yml b/configs/rec/multi_language/rec_en_number_lite_train.yml index 70d825e6..cee05121 100644 --- a/configs/rec/multi_language/rec_en_number_lite_train.yml +++ b/configs/rec/multi_language/rec_en_number_lite_train.yml @@ -1,5 +1,5 @@ Global: - use_gpu: true + use_gpu: True epoch_num: 500 log_smooth_window: 20 print_batch_step: 10 @@ -15,7 +15,7 @@ Global: use_visualdl: False infer_img: # for data or label process - character_dict_path: ppocr/utils/dict/ic15_dict.txt + character_dict_path: ppocr/utils/dict/en_dict.txt character_type: ch max_text_length: 25 infer_mode: False diff --git a/configs/rec/multi_language/rec_french_lite_train.yml b/configs/rec/multi_language/rec_french_lite_train.yml index 0e8f4eb3..63378d38 100644 --- a/configs/rec/multi_language/rec_french_lite_train.yml +++ b/configs/rec/multi_language/rec_french_lite_train.yml @@ -1,5 +1,5 @@ Global: - use_gpu: true + use_gpu: True epoch_num: 500 log_smooth_window: 20 print_batch_step: 10 @@ -9,9 +9,9 @@ Global: eval_batch_step: [0, 2000] # if pretrained_model is saved in static mode, load_static_weights must set to True cal_metric_during_train: True - pretrained_model: + pretrained_model: checkpoints: - save_inference_dir: + save_inference_dir: use_visualdl: False infer_img: # for data or label process @@ -19,7 +19,7 @@ Global: character_type: french max_text_length: 25 infer_mode: False - use_space_char: True + use_space_char: False Optimizer: diff --git a/configs/rec/multi_language/rec_german_lite_train.yml b/configs/rec/multi_language/rec_german_lite_train.yml index 9978a21e..1651510c 100644 --- a/configs/rec/multi_language/rec_german_lite_train.yml +++ b/configs/rec/multi_language/rec_german_lite_train.yml @@ -1,5 +1,5 @@ Global: - use_gpu: true + use_gpu: True epoch_num: 500 log_smooth_window: 20 print_batch_step: 10 @@ -19,7 +19,7 @@ Global: character_type: german max_text_length: 25 infer_mode: False - use_space_char: True + use_space_char: False Optimizer: diff --git a/configs/rec/multi_language/rec_japan_lite_train.yml b/configs/rec/multi_language/rec_japan_lite_train.yml index 938d377e..bb47584e 100644 --- a/configs/rec/multi_language/rec_japan_lite_train.yml +++ b/configs/rec/multi_language/rec_japan_lite_train.yml @@ -1,5 +1,5 @@ Global: - use_gpu: true + use_gpu: True epoch_num: 500 log_smooth_window: 20 print_batch_step: 10 @@ -19,7 +19,7 @@ Global: character_type: japan max_text_length: 25 infer_mode: False - use_space_char: True + use_space_char: False Optimizer: diff --git a/configs/rec/multi_language/rec_korean_lite_train.yml b/configs/rec/multi_language/rec_korean_lite_train.yml index 7b070c44..77f15524 100644 --- a/configs/rec/multi_language/rec_korean_lite_train.yml +++ b/configs/rec/multi_language/rec_korean_lite_train.yml @@ -1,5 +1,5 @@ Global: - use_gpu: true + use_gpu: True epoch_num: 500 log_smooth_window: 20 print_batch_step: 10 @@ -19,7 +19,7 @@ Global: character_type: korean max_text_length: 25 infer_mode: False - use_space_char: True + use_space_char: False Optimizer: diff --git a/deploy/cpp_infer/src/ocr_cls.cpp b/deploy/cpp_infer/src/ocr_cls.cpp index 40debaa7..2c85712b 100644 --- a/deploy/cpp_infer/src/ocr_cls.cpp +++ b/deploy/cpp_infer/src/ocr_cls.cpp @@ -81,7 +81,7 @@ cv::Mat Classifier::Run(cv::Mat &img) { void Classifier::LoadModel(const std::string &model_dir) { AnalysisConfig config; - config.SetModel(model_dir + "/model", model_dir + "/params"); + config.SetModel(model_dir + ".pdmodel", model_dir + ".pdiparams"); if (this->use_gpu_) { config.EnableUseGpu(this->gpu_mem_, this->gpu_id_); diff --git a/deploy/cpp_infer/src/ocr_det.cpp b/deploy/cpp_infer/src/ocr_det.cpp index 1e1aaa1b..ef6f96a2 100644 --- a/deploy/cpp_infer/src/ocr_det.cpp +++ b/deploy/cpp_infer/src/ocr_det.cpp @@ -18,7 +18,7 @@ namespace PaddleOCR { void DBDetector::LoadModel(const std::string &model_dir) { AnalysisConfig config; - config.SetModel(model_dir + "/model", model_dir + "/params"); + config.SetModel(model_dir + ".pdmodel", model_dir + ".pdiparams"); if (this->use_gpu_) { config.EnableUseGpu(this->gpu_mem_, this->gpu_id_); diff --git a/deploy/cpp_infer/src/ocr_rec.cpp b/deploy/cpp_infer/src/ocr_rec.cpp index 009b6b75..335d201b 100644 --- a/deploy/cpp_infer/src/ocr_rec.cpp +++ b/deploy/cpp_infer/src/ocr_rec.cpp @@ -103,7 +103,7 @@ void CRNNRecognizer::Run(std::vector>> boxes, void CRNNRecognizer::LoadModel(const std::string &model_dir) { AnalysisConfig config; - config.SetModel(model_dir + "/model", model_dir + "/params"); + config.SetModel(model_dir + ".pdmodel", model_dir + ".pdiparams"); if (this->use_gpu_) { config.EnableUseGpu(this->gpu_mem_, this->gpu_id_); @@ -186,4 +186,4 @@ cv::Mat CRNNRecognizer::GetRotateCropImage(const cv::Mat &srcimage, } } -} // namespace PaddleOCR \ No newline at end of file +} // namespace PaddleOCR diff --git a/ppocr/utils/dict/en_dict.txt b/ppocr/utils/dict/en_dict.txt new file mode 100644 index 00000000..6fbd99f4 --- /dev/null +++ b/ppocr/utils/dict/en_dict.txt @@ -0,0 +1,63 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + diff --git a/ppocr/utils/dict/french_dict.txt b/ppocr/utils/dict/french_dict.txt index a74c60ad..e8f657db 100644 --- a/ppocr/utils/dict/french_dict.txt +++ b/ppocr/utils/dict/french_dict.txt @@ -132,4 +132,5 @@ j ³ Å $ -# \ No newline at end of file +# + diff --git a/ppocr/utils/dict/german_dict.txt b/ppocr/utils/dict/german_dict.txt index ba9d472a..af0b01eb 100644 --- a/ppocr/utils/dict/german_dict.txt +++ b/ppocr/utils/dict/german_dict.txt @@ -123,4 +123,5 @@ z â å æ -é \ No newline at end of file +é + diff --git a/ppocr/utils/dict/japan_dict.txt b/ppocr/utils/dict/japan_dict.txt index 926979bc..339d4b89 100644 --- a/ppocr/utils/dict/japan_dict.txt +++ b/ppocr/utils/dict/japan_dict.txt @@ -4395,4 +4395,5 @@ z y z ~ -・ \ No newline at end of file +・ + diff --git a/ppocr/utils/dict/korean_dict.txt b/ppocr/utils/dict/korean_dict.txt index 77ae5c30..a13899f1 100644 --- a/ppocr/utils/dict/korean_dict.txt +++ b/ppocr/utils/dict/korean_dict.txt @@ -179,7 +179,7 @@ z с т я - +​ ’ “ ” @@ -3684,4 +3684,5 @@ z 立 茶 切 -宅 \ No newline at end of file +宅 + diff --git a/tools/export_model.py b/tools/export_model.py index cf568884..46a8a8b8 100755 --- a/tools/export_model.py +++ b/tools/export_model.py @@ -39,26 +39,12 @@ def parse_args(): return parser.parse_args() -class Model(paddle.nn.Layer): - def __init__(self, model): - super(Model, self).__init__() - self.pre_model = model - - # Please modify the 'shape' according to actual needs - @to_static(input_spec=[ - paddle.static.InputSpec( - shape=[None, 3, 640, 640], dtype='float32') - ]) - def forward(self, inputs): - x = self.pre_model(inputs) - return x - - def main(): FLAGS = parse_args() config = load_config(FLAGS.config) logger = get_logger() # build post process + post_process_class = build_post_process(config['PostProcess'], config['Global']) @@ -71,9 +57,16 @@ def main(): init_model(config, model, logger) model.eval() - model = Model(model) - save_path = '{}/{}'.format(FLAGS.output_path, - config['Architecture']['model_type']) + save_path = '{}/{}/inference'.format(FLAGS.output_path, + config['Architecture']['model_type']) + infer_shape = [3, 32, 100] if config['Architecture'][ + 'model_type'] != "det" else [3, 640, 640] + model = to_static( + model, + input_spec=[ + paddle.static.InputSpec( + shape=[None] + infer_shape, dtype='float32') + ]) paddle.jit.save(model, save_path) logger.info('inference model is saved to {}'.format(save_path)) diff --git a/tools/infer/utility.py b/tools/infer/utility.py index ee1f954d..75b725a7 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -100,8 +100,8 @@ def create_predictor(args, mode, logger): if model_dir is None: logger.info("not find {} model file path {}".format(mode, model_dir)) sys.exit(0) - model_file_path = model_dir + "/model" - params_file_path = model_dir + "/params" + model_file_path = model_dir + ".pdmodel" + params_file_path = model_dir + ".pdiparams" if not os.path.exists(model_file_path): logger.info("not find model file path {}".format(model_file_path)) sys.exit(0) @@ -230,10 +230,10 @@ def draw_ocr_box_txt(image, box[2][1], box[3][0], box[3][1] ], outline=color) - box_height = math.sqrt((box[0][0] - box[3][0]) ** 2 + (box[0][1] - box[3][ - 1]) ** 2) - box_width = math.sqrt((box[0][0] - box[1][0]) ** 2 + (box[0][1] - box[1][ - 1]) ** 2) + box_height = math.sqrt((box[0][0] - box[3][0])**2 + (box[0][1] - box[3][ + 1])**2) + box_width = math.sqrt((box[0][0] - box[1][0])**2 + (box[0][1] - box[1][ + 1])**2) if box_height > 2 * box_width: font_size = max(int(box_width * 0.9), 10) font = ImageFont.truetype(font_path, font_size, encoding="utf-8") -- GitLab