Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
环境: Ubuntu 22.04.2, python3.8 paddlepaddle-gpu 2.5.2 paddleslim 从release/2.5安装的
PaddleOCR git checkout release/2.7 git checkout 52198722e932a3e09c8a8a05a2267d01ff9d12b7
修改的代码: 因为报错, 所以修改了export_model.py和quant.py, 不确定修改的对不对
量化脚本 python deploy/slim/quantization/quant.py -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec.yml \ -o Global.pretrained_model='pretrain/ch_PP-OCRv4_rec_train/student.pdparams' \ Global.save_model_dir=output/rec_ppocr_v4_qat
python deploy/slim/quantization/export_model.py -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec.yml \ -o Global.checkpoints=output/rec_ppocr_v4_qat/best_accuracy \ Global.save_inference_dir=output/rec_ppocr_v4_qat_infer
export_model.py报错, 完整信息如下: [2023/12/22 06:56:25] ppocr INFO: Architecture : [2023/12/22 06:56:25] ppocr INFO: Backbone : [2023/12/22 06:56:25] ppocr INFO: name : PPLCNetV3 [2023/12/22 06:56:25] ppocr INFO: scale : 0.95 [2023/12/22 06:56:25] ppocr INFO: Head : [2023/12/22 06:56:25] ppocr INFO: head_list : [2023/12/22 06:56:25] ppocr INFO: CTCHead : [2023/12/22 06:56:25] ppocr INFO: Head : [2023/12/22 06:56:25] ppocr INFO: fc_decay : 1e-05 [2023/12/22 06:56:25] ppocr INFO: Neck : [2023/12/22 06:56:25] ppocr INFO: depth : 2 [2023/12/22 06:56:25] ppocr INFO: dims : 120 [2023/12/22 06:56:25] ppocr INFO: hidden_dims : 120 [2023/12/22 06:56:25] ppocr INFO: kernel_size : [1, 3] [2023/12/22 06:56:25] ppocr INFO: name : svtr [2023/12/22 06:56:25] ppocr INFO: use_guide : True [2023/12/22 06:56:25] ppocr INFO: NRTRHead : [2023/12/22 06:56:25] ppocr INFO: max_text_length : 25 [2023/12/22 06:56:25] ppocr INFO: nrtr_dim : 384 [2023/12/22 06:56:25] ppocr INFO: name : MultiHead [2023/12/22 06:56:25] ppocr INFO: Transform : None [2023/12/22 06:56:25] ppocr INFO: algorithm : SVTR_LCNet [2023/12/22 06:56:25] ppocr INFO: model_type : rec [2023/12/22 06:56:25] ppocr INFO: Eval : [2023/12/22 06:56:25] ppocr INFO: dataset : [2023/12/22 06:56:25] ppocr INFO: data_dir : ./train_data/ic15_data [2023/12/22 06:56:25] ppocr INFO: label_file_list : ['./train_data/ic15_data/rec_gt_test.txt'] [2023/12/22 06:56:25] ppocr INFO: name : SimpleDataSet [2023/12/22 06:56:25] ppocr INFO: transforms : [2023/12/22 06:56:25] ppocr INFO: DecodeImage : [2023/12/22 06:56:25] ppocr INFO: channel_first : False [2023/12/22 06:56:25] ppocr INFO: img_mode : BGR [2023/12/22 06:56:25] ppocr INFO: MultiLabelEncode : [2023/12/22 06:56:25] ppocr INFO: gtc_encode : NRTRLabelEncode [2023/12/22 06:56:25] ppocr INFO: RecResizeImg : [2023/12/22 06:56:25] ppocr INFO: image_shape : [3, 48, 320] [2023/12/22 06:56:25] ppocr INFO: KeepKeys : [2023/12/22 06:56:25] ppocr INFO: keep_keys : ['image', 'label_ctc', 'label_gtc', 'length', 'valid_ratio'] [2023/12/22 06:56:25] ppocr INFO: loader : [2023/12/22 06:56:25] ppocr INFO: batch_size_per_card : 128 [2023/12/22 06:56:25] ppocr INFO: drop_last : False [2023/12/22 06:56:25] ppocr INFO: num_workers : 4 [2023/12/22 06:56:25] ppocr INFO: shuffle : False [2023/12/22 06:56:25] ppocr INFO: Global : [2023/12/22 06:56:25] ppocr INFO: cal_metric_during_train : True [2023/12/22 06:56:25] ppocr INFO: character_dict_path : ppocr/utils/ppocr_keys_v1.txt [2023/12/22 06:56:25] ppocr INFO: checkpoints : output/rec_ppocr_v4_qat/best_accuracy [2023/12/22 06:56:25] ppocr INFO: debug : False [2023/12/22 06:56:25] ppocr INFO: distributed : False [2023/12/22 06:56:25] ppocr INFO: epoch_num : 1 [2023/12/22 06:56:25] ppocr INFO: eval_batch_step : [0, 2000] [2023/12/22 06:56:25] ppocr INFO: infer_img : doc/imgs_words/ch/word_1.jpg [2023/12/22 06:56:25] ppocr INFO: infer_mode : False [2023/12/22 06:56:25] ppocr INFO: log_smooth_window : 20 [2023/12/22 06:56:25] ppocr INFO: max_text_length : 25 [2023/12/22 06:56:25] ppocr INFO: pretrained_model : None [2023/12/22 06:56:25] ppocr INFO: print_batch_step : 10 [2023/12/22 06:56:25] ppocr INFO: save_epoch_step : 10 [2023/12/22 06:56:25] ppocr INFO: save_inference_dir : output/rec_ppocr_v4_qat_infer [2023/12/22 06:56:25] ppocr INFO: save_model_dir : ./output/rec_ppocr_v4 [2023/12/22 06:56:25] ppocr INFO: save_res_path : ./output/rec/predicts_ppocrv3.txt [2023/12/22 06:56:25] ppocr INFO: use_gpu : True [2023/12/22 06:56:25] ppocr INFO: use_space_char : True [2023/12/22 06:56:25] ppocr INFO: use_visualdl : False [2023/12/22 06:56:25] ppocr INFO: Loss : [2023/12/22 06:56:25] ppocr INFO: loss_config_list : [2023/12/22 06:56:25] ppocr INFO: CTCLoss : None [2023/12/22 06:56:25] ppocr INFO: NRTRLoss : None [2023/12/22 06:56:25] ppocr INFO: name : MultiLoss [2023/12/22 06:56:25] ppocr INFO: Metric : [2023/12/22 06:56:25] ppocr INFO: main_indicator : acc [2023/12/22 06:56:25] ppocr INFO: name : RecMetric [2023/12/22 06:56:25] ppocr INFO: Optimizer : [2023/12/22 06:56:25] ppocr INFO: beta1 : 0.9 [2023/12/22 06:56:25] ppocr INFO: beta2 : 0.999 [2023/12/22 06:56:25] ppocr INFO: lr : [2023/12/22 06:56:25] ppocr INFO: learning_rate : 0.001 [2023/12/22 06:56:25] ppocr INFO: name : Cosine [2023/12/22 06:56:25] ppocr INFO: warmup_epoch : 5 [2023/12/22 06:56:25] ppocr INFO: name : Adam [2023/12/22 06:56:25] ppocr INFO: regularizer : [2023/12/22 06:56:25] ppocr INFO: factor : 3e-05 [2023/12/22 06:56:25] ppocr INFO: name : L2 [2023/12/22 06:56:25] ppocr INFO: PostProcess : [2023/12/22 06:56:25] ppocr INFO: name : CTCLabelDecode [2023/12/22 06:56:25] ppocr INFO: Train : [2023/12/22 06:56:25] ppocr INFO: dataset : [2023/12/22 06:56:25] ppocr INFO: data_dir : ./train_data/ic15_data [2023/12/22 06:56:25] ppocr INFO: ds_width : False [2023/12/22 06:56:25] ppocr INFO: ext_op_transform_idx : 1 [2023/12/22 06:56:25] ppocr INFO: label_file_list : ['./train_data/ic15_data/rec_gt_train.txt'] [2023/12/22 06:56:25] ppocr INFO: name : MultiScaleDataSet [2023/12/22 06:56:25] ppocr INFO: transforms : [2023/12/22 06:56:25] ppocr INFO: DecodeImage : [2023/12/22 06:56:25] ppocr INFO: channel_first : False [2023/12/22 06:56:25] ppocr INFO: img_mode : BGR [2023/12/22 06:56:25] ppocr INFO: RecConAug : [2023/12/22 06:56:25] ppocr INFO: ext_data_num : 2 [2023/12/22 06:56:25] ppocr INFO: image_shape : [48, 320, 3] [2023/12/22 06:56:25] ppocr INFO: max_text_length : 25 [2023/12/22 06:56:25] ppocr INFO: prob : 0.5 [2023/12/22 06:56:25] ppocr INFO: RecAug : None [2023/12/22 06:56:25] ppocr INFO: MultiLabelEncode : [2023/12/22 06:56:25] ppocr INFO: gtc_encode : NRTRLabelEncode [2023/12/22 06:56:25] ppocr INFO: KeepKeys : [2023/12/22 06:56:25] ppocr INFO: keep_keys : ['image', 'label_ctc', 'label_gtc', 'length', 'valid_ratio'] [2023/12/22 06:56:25] ppocr INFO: loader : [2023/12/22 06:56:25] ppocr INFO: batch_size_per_card : 64 [2023/12/22 06:56:25] ppocr INFO: drop_last : True [2023/12/22 06:56:25] ppocr INFO: num_workers : 8 [2023/12/22 06:56:25] ppocr INFO: shuffle : True [2023/12/22 06:56:25] ppocr INFO: sampler : [2023/12/22 06:56:25] ppocr INFO: divided_factor : [8, 16] [2023/12/22 06:56:25] ppocr INFO: first_bs : 64 [2023/12/22 06:56:25] ppocr INFO: fix_bs : False [2023/12/22 06:56:25] ppocr INFO: is_training : True [2023/12/22 06:56:25] ppocr INFO: name : MultiScaleSampler [2023/12/22 06:56:25] ppocr INFO: scales : [[320, 32], [320, 48], [320, 64]] [2023/12/22 06:56:25] ppocr INFO: profiler_options : None [2023/12/22 06:56:25] ppocr INFO: train with paddle 2.5.2 and device Place(gpu:0) W1222 06:56:25.535755 1443969 gpu_resources.cc:119] Please NOTE: device: 0, GPU Compute Capability: 8.6, Driver API Version: 12.0, Runtime API Version: 11.8 W1222 06:56:25.536813 1443969 gpu_resources.cc:149] device: 0, cuDNN Version: 8.9. [2023/12/22 06:56:28] ppocr INFO: resume from output/rec_ppocr_v4_qat/best_accuracy [2023/12/22 06:56:28] ppocr INFO: Initialize indexs of datasets:['./train_data/ic15_data/rec_gt_test.txt'] eval model:: 100%|███████████████████████████████████████████eval model:: 100%|████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.59s/it] [2023/12/22 06:56:31] ppocr INFO: metric eval *** [2023/12/22 06:56:31] ppocr INFO: acc:0.9999950000249999 [2023/12/22 06:56:31] ppocr INFO: norm_edit_dis:1.0 [2023/12/22 06:56:31] ppocr INFO: fps:0.9990619883274952 Traceback (most recent call last): File "deploy/slim/quantization/export_model.py", line 178, in
main()
File "deploy/slim/quantization/export_model.py", line 172, in main
export_single_model(model, arch_config, save_path, logger, input_shape,
File "/dataset/zwq/work/opensource/PaddleOCR/tools/export_model.py", line 195, in export_single_model
layer.rep()
File "/dataset/zwq/work/opensource/PaddleOCR/ppocr/modeling/backbones/rec_lcnetv3.py", line 202, in rep
kernel, bias = self._get_kernel_bias()
File "/dataset/zwq/work/opensource/PaddleOCR/ppocr/modeling/backbones/rec_lcnetv3.py", line 221, in _get_kernel_bias
kernel_conv_1x1, bias_conv_1x1 = self._fuse_bn_tensor(self.conv_1x1)
File "/dataset/zwq/work/opensource/PaddleOCR/ppocr/modeling/backbones/rec_lcnetv3.py", line 242, in _fuse_bn_tensor
kernel = branch.conv.weight
File "/home/zwq/miniconda3/envs/paddle_env/lib/python3.8/site-packages/paddle/nn/layer/layers.py", line 1474, in getattr
return object.getattribute(self, name)
AttributeError: 'MAOutputScaleLayer' object has no attribute 'weight'