commit
e20ad3a481
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/cls/mv3/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 1000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 1000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 2
|
||||
save_model_dir: ./output/ch_db_mv3/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 3000th iteration
|
||||
eval_batch_step: [3000, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/ch_PP-OCRv2_det_distill_train/best_accuracy
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 2
|
||||
save_model_dir: ./output/ch_db_mv3/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 3000th iteration
|
||||
eval_batch_step: [3000, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/MobileNetV3_large_x0_5_pretrained
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 2
|
||||
save_model_dir: ./output/ch_db_mv3/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 3000th iteration
|
||||
eval_batch_step: [3000, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/MobileNetV3_large_x0_5_pretrained
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/ch_db_mv3/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 400 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 400]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/student.pdparams
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 2
|
||||
save_model_dir: ./output/ch_db_mv3/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 3000th iteration
|
||||
eval_batch_step: [3000, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/MobileNetV3_large_x0_5_pretrained
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 2
|
||||
save_model_dir: ./output/ch_db_res18/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 3000th iteration
|
||||
eval_batch_step: [3000, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/ResNet18_vd_pretrained
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/db_mv3/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/MobileNetV3_large_x0_5_pretrained
|
||||
|
|
|
@ -5,8 +5,8 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/det_r50_vd/
|
||||
save_epoch_step: 1200
|
||||
# evaluation is run every 2000 iterations
|
||||
eval_batch_step: [0,2000]
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model: ./pretrain_models/ResNet50_vd_ssld_pretrained
|
||||
checkpoints:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/pgnet_r50_vd_totaltext/
|
||||
save_epoch_step: 10
|
||||
# evaluation is run every 0 iterationss after the 1000th iteration
|
||||
# evaluation is run every 1000 iterationss after the 0th iteration
|
||||
eval_batch_step: [ 0, 1000 ]
|
||||
cal_metric_during_train: False
|
||||
pretrained_model:
|
||||
|
|
|
@ -6,6 +6,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_mobile_pp-OCRv2
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: true
|
||||
pretrained_model:
|
||||
|
|
|
@ -6,6 +6,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_pp-OCRv2_distillation
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: true
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_chinese_common_v2.0
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_chinese_lite_v2.0
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,9 +5,8 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_arabic_lite
|
||||
save_epoch_step: 3
|
||||
eval_batch_step:
|
||||
- 0
|
||||
- 2000
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: true
|
||||
pretrained_model: null
|
||||
checkpoints: null
|
||||
|
|
|
@ -5,9 +5,8 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_cyrillic_lite
|
||||
save_epoch_step: 3
|
||||
eval_batch_step:
|
||||
- 0
|
||||
- 2000
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: true
|
||||
pretrained_model: null
|
||||
checkpoints: null
|
||||
|
|
|
@ -5,9 +5,8 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_devanagari_lite
|
||||
save_epoch_step: 3
|
||||
eval_batch_step:
|
||||
- 0
|
||||
- 2000
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: true
|
||||
pretrained_model: null
|
||||
checkpoints: null
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_en_number_lite
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_french_lite
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_german_lite
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_japan_lite
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_korean_lite
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
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
|
||||
|
|
|
@ -5,9 +5,8 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_latin_lite
|
||||
save_epoch_step: 3
|
||||
eval_batch_step:
|
||||
- 0
|
||||
- 2000
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: true
|
||||
pretrained_model: null
|
||||
checkpoints: null
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec_multi_language_lite
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/ic15/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/nrtr/
|
||||
save_epoch_step: 1
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/mv3_none_bilstm_ctc/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/mv3_none_none_ctc/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/rec_mv3_tps_bilstm_att/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/mv3_tps_bilstm_ctc/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/r34_vd_none_bilstm_ctc/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/r34_vd_none_none_ctc/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/b3_rare_r34_none_gru/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 10
|
||||
save_model_dir: ./output/rec/r34_vd_tps_bilstm_ctc/
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 2000 iterations
|
||||
# evaluation is run every 2000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 2000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -5,7 +5,7 @@ Global:
|
|||
print_batch_step: 5
|
||||
save_model_dir: ./output/rec/srn_new
|
||||
save_epoch_step: 3
|
||||
# evaluation is run every 5000 iterations after the 4000th iteration
|
||||
# evaluation is run every 5000 iterations after the 0th iteration
|
||||
eval_batch_step: [0, 5000]
|
||||
cal_metric_during_train: True
|
||||
pretrained_model:
|
||||
|
|
|
@ -230,6 +230,7 @@ python3 tools/infer/predict_det.py --det_algorithm="EAST" --det_model_dir="./out
|
|||
# 5. FAQ
|
||||
|
||||
Q1: 训练模型转inference 模型之后预测效果不一致?
|
||||
|
||||
**A**:此类问题出现较多,问题多是trained model预测时候的预处理、后处理参数和inference model预测的时候的预处理、后处理参数不一致导致的。以det_mv3_db.yml配置文件训练的模型为例,训练模型、inference模型预测结果不一致问题解决方式如下:
|
||||
- 检查[trained model预处理](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/configs/det/det_mv3_db.yml#L116),和[inference model的预测预处理](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/tools/infer/predict_det.py#L42)函数是否一致。算法在评估的时候,输入图像大小会影响精度,为了和论文保持一致,训练icdar15配置文件中将图像resize到[736, 1280],但是在inference model预测的时候只有一套默认参数,会考虑到预测速度问题,默认限制图像最长边为960做resize的。训练模型预处理和inference模型的预处理函数位于[ppocr/data/imaug/operators.py](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/ppocr/data/imaug/operators.py#L147)
|
||||
- 检查[trained model后处理](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/configs/det/det_mv3_db.yml#L51),和[inference 后处理参数](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/tools/infer/utility.py#L50)是否一致。
|
||||
|
|
|
@ -28,9 +28,9 @@ PGNet算法细节详见[论文](https://www.aaai.org/AAAI21Papers/AAAI-2885.Wang
|
|||
|
||||
### 性能指标
|
||||
|
||||
测试集: Total Text
|
||||
#### 测试集: Total Text
|
||||
|
||||
测试环境: NVIDIA Tesla V100-SXM2-16GB
|
||||
#### 测试环境: NVIDIA Tesla V100-SXM2-16GB
|
||||
|
||||
|PGNetA|det_precision|det_recall|det_f_score|e2e_precision|e2e_recall|e2e_f_score|FPS|下载|
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
|
|
|
@ -223,6 +223,7 @@ python3 tools/infer/predict_det.py --det_algorithm="EAST" --det_model_dir="./out
|
|||
## 5. FAQ
|
||||
|
||||
Q1: The prediction results of trained model and inference model are inconsistent?
|
||||
|
||||
**A**: Most of the problems are caused by the inconsistency of the pre-processing and post-processing parameters during the prediction of the trained model and the pre-processing and post-processing parameters during the prediction of the inference model. Taking the model trained by the det_mv3_db.yml configuration file as an example, the solution to the problem of inconsistent prediction results between the training model and the inference model is as follows:
|
||||
- Check whether the [trained model preprocessing](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/configs/det/det_mv3_db.yml#L116) is consistent with the prediction [preprocessing function of the inference model](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/tools/infer/predict_det.py#L42). When the algorithm is evaluated, the input image size will affect the accuracy. In order to be consistent with the paper, the image is resized to [736, 1280] in the training icdar15 configuration file, but there is only a set of default parameters when the inference model predicts, which will be considered To predict the speed problem, the longest side of the image is limited to 960 for resize by default. The preprocessing function of the training model preprocessing and the inference model is located in [ppocr/data/imaug/operators.py](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/ppocr/data/imaug/operators.py#L147)
|
||||
- Check whether the [post-processing of the trained model](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/configs/det/det_mv3_db.yml#L51) is consistent with the [post-processing parameters of the inference](https://github.com/PaddlePaddle/PaddleOCR/blob/c1ed243fb68d5d466258243092e56cbae32e2c14/tools/infer/utility.py#L50).
|
||||
|
|
|
@ -24,9 +24,9 @@ The results of detection and recognition are as follows:
|
|||

|
||||

|
||||
### Performance
|
||||
####Test set: Total Text
|
||||
#### Test set: Total Text
|
||||
|
||||
####Test environment: NVIDIA Tesla V100-SXM2-16GB
|
||||
#### Test environment: NVIDIA Tesla V100-SXM2-16GB
|
||||
|PGNetA|det_precision|det_recall|det_f_score|e2e_precision|e2e_recall|e2e_f_score|FPS|download|
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
|Paper|85.30|86.80|86.1|-|-|61.7|38.20 (size=640)|-|
|
||||
|
|
Loading…
Reference in New Issue