diff --git "a/applications/\350\275\246\347\211\214\350\257\206\345\210\253.md" "b/applications/\350\275\246\347\211\214\350\257\206\345\210\253.md" index bc368a6a35fde1f407b4ba3882c76a49298122e8..24115f6714d40185e3ebb8670b2d27d011bd4be5 100644 --- "a/applications/\350\275\246\347\211\214\350\257\206\345\210\253.md" +++ "b/applications/\350\275\246\347\211\214\350\257\206\345\210\253.md" @@ -283,7 +283,7 @@ python tools/eval.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o \ 2. Global.eval_batch_step: 模型多少step评估一次,这里设为从第0个step开始没隔772个step评估一次,772为一个epoch总的step数。 2. 优化器相关: 1. Optimizer.lr.name: 学习率衰减器设为常量 Const - 2. Optimizer.lr.learning_rate: 做finetune实验,学习率需要设置的比较小,此处学习率设为配置文件中的0.05倍 + 2. Optimizer.lr.learning_rate: 做 fine-tune 实验,学习率需要设置的比较小,此处学习率设为配置文件中的0.05倍 3. Optimizer.lr.warmup_epoch: warmup_epoch设为0 3. 数据集相关: 1. Train.dataset.data_dir:指向训练集图片存放目录 @@ -363,6 +363,8 @@ python3.7 deploy/slim/quantization/quant.py -c configs/det/ch_PP-OCRv3/ch_PP-OCR 可以看到通过量化训练在精度几乎无损的情况下,降低模型体积60%并且推理速度提升15%。 +速度测试基于[PaddleOCR lite教程](../deploy/lite/readme_ch.md)完成。 + #### 4.1.4 模型导出 使用如下命令可以将训练好的模型进行导出 @@ -472,7 +474,7 @@ W0501 08:51:57.132315 11326 device_context.cc:465] device: 0, cuDNN Version: 7.6 从infer结果可以看到,车牌中的文字大部分都识别正确,只是多识别出了一个`·`。针对这种情况,有如下两种方案: 1. 直接通过后处理去掉多识别的`·`。 -2. 进行finetune。 +2. 进行 fine-tune。 #### 4.2.2 预训练模型直接预测+改动后处理 @@ -501,7 +503,7 @@ text = text.replace('·','') 2. Global.eval_batch_step: 模型多少step评估一次,这里设为从第0个step开始没隔45个step评估一次,45为一个epoch总的step数。 2. 优化器相关 1. Optimizer.lr.name: 学习率衰减器设为常量 Const - 2. Optimizer.lr.learning_rate: 做finetune实验,学习率需要设置的比较小,此处学习率设为配置文件中的0.05倍 + 2. Optimizer.lr.learning_rate: 做 fine-tune 实验,学习率需要设置的比较小,此处学习率设为配置文件中的0.05倍 3. Optimizer.lr.warmup_epoch: warmup_epoch设为0 3. 数据集相关 1. Train.dataset.data_dir:指向训练集图片存放目录 @@ -509,7 +511,7 @@ text = text.replace('·','') 3. Eval.dataset.data_dir:指向测试集图片存放目录 4. Eval.dataset.label_file_list:指向测试集标注文件 -使用如下命令启动finetune +使用如下命令启动 fine-tune ```bash python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o \ @@ -577,6 +579,8 @@ python3.7 deploy/slim/quantization/quant.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_ 可以看到量化后能降低模型体积53%并且推理速度提升57%,但是由于识别数据过少,量化带来了1%的精度下降。 +速度测试基于[PaddleOCR lite教程](../deploy/lite/readme_ch.md)完成。 + #### 4.2.5 模型导出 使用如下命令可以将训练好的模型进行导出。 @@ -670,10 +674,10 @@ python3 tools/infer/predict_system.py --det_model_dir=output/ch_PP-OCRv3_det_dis # PP-OCRv3中英文超轻量检测预训练模型,PP-OCRv3中英文超轻量识别预训练模型+后处理去掉多识别的`·` python3 tools/infer/predict_system.py --det_model_dir=output/ch_PP-OCRv3_det_distill_train/infer --rec_model_dir=output/ch_PP-OCRv3_rec_train/infer --image_dir=/home/aistudio/data/CCPD2020/ccpd_green/test/ --draw_img_save_dir=infer/post -# PP-OCRv3中英文超轻量检测预训练模型+finetune,PP-OCRv3中英文超轻量识别预训练模型+finetune -python3 tools/infer/predict_system.py --det_model_dir=output/CCPD/det/infer --rec_model_dir=output/CCPD/rec/infer --image_dir=/home/aistudio/data/CCPD2020/ccpd_green/test/ --draw_img_save_dir=infer/finetune +# PP-OCRv3中英文超轻量检测预训练模型+fine-tune,PP-OCRv3中英文超轻量识别预训练模型+fine-tune +python3 tools/infer/predict_system.py --det_model_dir=output/CCPD/det/infer --rec_model_dir=output/CCPD/rec/infer --image_dir=/home/aistudio/data/CCPD2020/ccpd_green/test/ --draw_img_save_dir=infer/fine-tune -# PP-OCRv3中英文超轻量检测预训练模型finetune+量化,PP-OCRv3中英文超轻量识别预训练模型finetune+量化 结果转换和评估 +# PP-OCRv3中英文超轻量检测预训练模型 fine-tune +量化,PP-OCRv3中英文超轻量识别预训练模型 fine-tune +量化 结果转换和评估 python3 tools/infer/predict_system.py --det_model_dir=output/CCPD/det_quant/infer --rec_model_dir=output/CCPD/rec_quant/infer --image_dir=/home/aistudio/data/CCPD2020/ccpd_green/test/ --draw_img_save_dir=infer/quant ``` @@ -692,11 +696,11 @@ python3 tools/end2end/eval_end2end.py end2end/gt end2end/pretrain python3 tools/end2end/convert_ppocr_label.py --mode=pred --label_path=infer/post/system_results.txt --save_folder=end2end/post python3 tools/end2end/eval_end2end.py end2end/gt end2end/post -# PP-OCRv3中英文超轻量检测预训练模型finetune,PP-OCRv3中英文超轻量识别预训练模型finetune 结果转换和评估 -python3 tools/end2end/convert_ppocr_label.py --mode=pred --label_path=infer/finetune/system_results.txt --save_folder=end2end/finetune -python3 tools/end2end/eval_end2end.py end2end/gt end2end/finetune +# PP-OCRv3中英文超轻量检测预训练模型 fine-tune,PP-OCRv3中英文超轻量识别预训练模型 fine-tune 结果转换和评估 +python3 tools/end2end/convert_ppocr_label.py --mode=pred --label_path=infer/fine-tune/system_results.txt --save_folder=end2end/fine-tune +python3 tools/end2end/eval_end2end.py end2end/gt end2end/fine-tune -# PP-OCRv3中英文超轻量检测预训练模型finetune+量化,PP-OCRv3中英文超轻量识别预训练模型finetune+量化 结果转换和评估 +# PP-OCRv3中英文超轻量检测预训练模型 fine-tune +量化,PP-OCRv3中英文超轻量识别预训练模型 fine-tune +量化 结果转换和评估 python3 tools/end2end/convert_ppocr_label.py --mode=pred --label_path=infer/quant/system_results.txt --save_folder=end2end/quant python3 tools/end2end/eval_end2end.py end2end/gt end2end/quant ``` @@ -722,7 +726,7 @@ avg_edit_dist_img: 1.47 precision: 70.54% recall: 84.38% fmeasure: 76.84% -The convert label saved in end2end/finetune +The convert label saved in end2end/fine-tune start testing... hit, dt_count, gt_count 4286 4898 5006 character_acc: 94.16% @@ -748,14 +752,14 @@ fmeasure: 87.36% |---|---|---| |PP-OCRv3中英文超轻量检测预训练模型|PP-OCRv3中英文超轻量识别预训练模型|0.04%| |PP-OCRv3中英文超轻量检测预训练模型|PP-OCRv3中英文超轻量识别预训练模型+后处理去掉多识别的`·`|76.84%| -|PP-OCRv3中英文超轻量检测预训练模型+finetune|PP-OCRv3中英文超轻量识别预训练模型+finetune|86.55%| -|PP-OCRv3中英文超轻量检测预训练模型+finetune+量化|PP-OCRv3中英文超轻量识别预训练模型+finetune+量化|87.36%| +|PP-OCRv3中英文超轻量检测预训练模型+fine-tune|PP-OCRv3中英文超轻量识别预训练模型+fine-tune|86.55%| +|PP-OCRv3中英文超轻量检测预训练模型+fine-tune+量化|PP-OCRv3中英文超轻量识别预训练模型+fine-tune+量化|87.36%| -从结果中可以看到对预训练模型不做修改,只根据场景下的具体情况进行后处理的修改就能大幅提升端到端指标到76.84%,在CCPD数据集上进行finetune后指标进一步提升到86.55%, 在经过量化训练之后,由于检测模型的recall变高,指标进一步提升到87.36%。 +从结果中可以看到对预训练模型不做修改,只根据场景下的具体情况进行后处理的修改就能大幅提升端到端指标到76.84%,在CCPD数据集上进行 fine-tune 后指标进一步提升到86.55%, 在经过量化训练之后,由于检测模型的recall变高,指标进一步提升到87.36%。 ### 4.5 实验总结 -我们分别使用PP-OCRv3中英文超轻量预训练模型在车牌数据集上进行了直接评估和finetune 和finetune+量化3种方案的实验,指标对比如下: +我们分别使用PP-OCRv3中英文超轻量预训练模型在车牌数据集上进行了直接评估和 fine-tune 和 fine-tune+量化3种方案的实验,并基于[PaddleOCR lite教程](../dygraph/deploy/lite/readme_ch.md)进行了速度测试,指标对比如下: - 检测 @@ -777,17 +781,17 @@ fmeasure: 87.36% - 端到端指标如下: -|det|rec|fmeasure|模型大小|预测速度(lite) | -|---|---|---|---|---| -|PP-OCRv3中英文超轻量检测预训练模型|PP-OCRv3中英文超轻量识别预训练模型|0.04%|12.8M|298ms| -|PP-OCRv3中英文超轻量检测预训练模型|PP-OCRv3中英文超轻量识别预训练模型+后处理去掉多识别的`·`|76.84%|12.8M|298ms| -|PP-OCRv3中英文超轻量检测预训练模型+finetune|PP-OCRv3中英文超轻量识别预训练模型+finetune|86.55%|12.8M|298ms| -|PP-OCRv3中英文超轻量检测预训练模型+finetune+量化|PP-OCRv3中英文超轻量识别预训练模型+finetune+量化|87.36%|5.8M|224ms| +| det | rec |fmeasure|模型大小|预测速度(lite) | +|-----------------------------------|------------------------------------|---|---|---| +| PP-OCRv3中英文超轻量检测预训练模型 | PP-OCRv3中英文超轻量识别预训练模型 |0.04%|12.8M|298ms| +| PP-OCRv3中英文超轻量检测预训练模型 | PP-OCRv3中英文超轻量识别预训练模型+后处理去掉多识别的`·` |76.84%|12.8M|298ms| +| PP-OCRv3中英文超轻量检测预训练模型+fine-tune | PP-OCRv3中英文超轻量识别预训练模型+fine-tune |86.55%|12.8M|298ms| +| PP-OCRv3中英文超轻量检测预训练模型+fine-tune+量化 | PP-OCRv3中英文超轻量识别预训练模型+fine-tune+量化 |87.36%|5.8M|224ms| *结论* -PP-OCRv3的检测模型在未经过fine-tune的情况下,在车牌数据集上也有一定的精度,经过finetune后能够极大的提升检测效果,精度达到99%。在使用量化训练后检测模型的精度几乎无损,并且模型大小压缩60%。 +PP-OCRv3的检测模型在未经过fine-tune的情况下,在车牌数据集上也有一定的精度,经过 fine-tune 后能够极大的提升检测效果,精度达到99%。在使用量化训练后检测模型的精度几乎无损,并且模型大小压缩60%。 -PP-OCRv3的识别模型在未经过fine-tune的情况下,在车牌数据集上精度为0,但是经过分析可以知道,模型大部分字符都预测正确,但是会多预测一个特殊字符,去掉这个特殊字符后,精度达到90%。PP-OCRv3识别模型在经过finetune后识别精度进一步提升,达到94.4%。在使用量化训练后识别模型大小压缩53%,但是由于数据量多少,带来了1%的精度损失。 +PP-OCRv3的识别模型在未经过fine-tune的情况下,在车牌数据集上精度为0,但是经过分析可以知道,模型大部分字符都预测正确,但是会多预测一个特殊字符,去掉这个特殊字符后,精度达到90%。PP-OCRv3识别模型在经过 fine-tune 后识别精度进一步提升,达到94.4%。在使用量化训练后识别模型大小压缩53%,但是由于数据量多少,带来了1%的精度损失。 -从端到端结果中可以看到对预训练模型不做修改,只根据场景下的具体情况进行后处理的修改就能大幅提升端到端指标到76.84%,在CCPD数据集上进行finetune后指标进一步提升到86.55%, 在经过量化训练之后,由于检测模型的recall变高,指标进一步提升到87.36%并且模型大小降低54%。 +从端到端结果中可以看到对预训练模型不做修改,只根据场景下的具体情况进行后处理的修改就能大幅提升端到端指标到76.84%,在CCPD数据集上进行 fine-tune 后指标进一步提升到86.55%, 在经过量化训练之后,由于检测模型的recall变高,指标进一步提升到87.36%并且模型大小降低54%。