Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_41840029
PaddleOCR
提交
22db537e
P
PaddleOCR
项目概览
weixin_41840029
/
PaddleOCR
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleOCR
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
22db537e
编写于
5月 20, 2022
作者:
Z
zhoujun
提交者:
GitHub
5月 20, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6352 from WenmuZhou/flk
add e2e metric and lite speed
上级
bd964172
7f1011d3
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
219 addition
and
55 deletion
+219
-55
applications/轻量级车牌识别.md
applications/轻量级车牌识别.md
+205
-41
tools/end2end/convert_ppocr_label.py
tools/end2end/convert_ppocr_label.py
+11
-5
tools/end2end/readme.md
tools/end2end/readme.md
+3
-9
未找到文件。
applications/车牌识别.md
→
applications/
轻量级
车牌识别.md
浏览文件 @
22db537e
...
...
@@ -17,21 +17,22 @@
-
[
4.2.3 CCPD车牌数据集fine-tune
](
#423-ccpd车牌数据集fine-tune
)
-
[
4.2.4 CCPD车牌数据集fine-tune+量化训练
](
#424-ccpd车牌数据集fine-tune量化训练
)
-
[
4.2.5 模型导出
](
#425-模型导出
)
-
[
4.3 串联推理
](
#43-串联推理
)
-
[
4.4 实验总结
](
#44-实验总结
)
-
[
4.3 计算End2End指标
](
#43-计算End2End指标
)
-
[
4.4 部署
](
#44-部署
)
-
[
4.5 实验总结
](
#45-实验总结
)
## 1. 项目介绍
车牌识别(Vehicle License Plate Recognition,VLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,在高速公路车辆管理,停车场管理和中得到广泛应用。
车牌识别(Vehicle License Plate Recognition,VLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,在高速公路车辆管理,停车场管理和
城市交通
中得到广泛应用。
结合我国国情,目前车牌识别技术的难点有:
本项目难点如下:
1.
车牌样式多。我国车牌颜色大致有四种:黄底黑字、蓝底白字、白底黑字、黑底白字;车牌格式包括民用车牌、武警车牌、军车车牌、外交车牌、特种车牌、消防车牌等等。
2.
车牌位置不固定。由于不同汽车品牌公司出产的汽车型号和外形各有不同,每辆车的车牌悬挂位置也不一样;
3.
图像质量差: 运动模糊,由于强光,反射或阴影造成的光照和对比度较差, 车牌(部分)遮挡;
4.
在车辆管理等场景场景对于模型速度有着一定限制。
1.
车牌在图像中的尺度差异大、在车辆上的悬挂位置不固定
2.
车牌图像质量层次不齐: 角度倾斜、图片模糊、光照不足、过曝等问题严重
3.
边缘和端测场景应用对模型大小有限制,推理速度有要求
针对以上问题, 本例选用
[
PP-OCRv3
](
../doc/doc_ch/PP-OCRv3_introduction.md
)
这一开源超轻量OCR系统进行车牌识别系统的开发。基于PP-OCRv3模型,在CCPD数据集达到99%的检测和94%的识别精度,模型大小12.8M(2.5M+10.3M)。基于量化对模型体积进行进一步压缩到5.8M(1M+4.8M), 同时推理速度提升x%。
针对以上问题, 本例选用
[
PP-OCRv3
](
../doc/doc_ch/PP-OCRv3_introduction.md
)
这一开源超轻量OCR系统进行车牌识别系统的开发。基于PP-OCRv3模型,在CCPD数据集达到99%的检测和94%的识别精度,模型大小12.8M(2.5M+10.3M)。基于量化对模型体积进行进一步压缩到5.8M(1M+4.8M), 同时推理速度提升25%。
aistudio项目链接:
[
基于PaddleOCR的轻量级车牌识别范例
](
https://aistudio.baidu.com/aistudio/projectdetail/3919091?contributionType=1
)
...
...
@@ -282,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:指向训练集图片存放目录
...
...
@@ -355,12 +356,14 @@ python3.7 deploy/slim/quantization/quant.py -c configs/det/ch_PP-OCRv3/ch_PP-OCR
量化后指标对比如下
|方案|hmeans| 模型大小 |预测速度(lite)|
|---|---|------|---|
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune|99%| 2.5M ||
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune+量化|98.91%| 1M ||
|方案|hmeans| 模型大小 | 预测速度(lite) |
|---|---|------|------------|
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune|99%| 2.5M | 223ms |
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune+量化|98.91%| 1M | 189ms |
可以看到通过量化训练在精度几乎无损的情况下,降低模型体积60%并且推理速度提升15%。
可以看到量化后能显著降低模型体积并且精度几乎无损
。
速度测试基于
[
PaddleOCR lite教程
](
../deploy/lite/readme_ch.md
)
完成
。
#### 4.1.4 模型导出
...
...
@@ -471,7 +474,7 @@ W0501 08:51:57.132315 11326 device_context.cc:465] device: 0, cuDNN Version: 7.6
从infer结果可以看到,车牌中的文字大部分都识别正确,只是多识别出了一个
`·`
。针对这种情况,有如下两种方案:
1.
直接通过后处理去掉多识别的
`·`
。
2.
进行
fine
tune。
2.
进行
fine-
tune。
#### 4.2.2 预训练模型直接预测+改动后处理
...
...
@@ -500,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:指向训练集图片存放目录
...
...
@@ -508,7 +511,7 @@ text = text.replace('·','')
3.
Eval.dataset.data_dir:指向测试集图片存放目录
4.
Eval.dataset.label_file_list:指向测试集标注文件
使用如下命令启动
fine
tune
使用如下命令启动
fine-
tune
```
bash
python tools/train.py
-c
configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml
-o
\
...
...
@@ -569,12 +572,14 @@ python3.7 deploy/slim/quantization/quant.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_
量化后指标对比如下
|方案| acc | 模型大小 |
预测速度(lite)
|
|---|--------|-------|---|
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune| 94.54% | 10.3M |
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune + 量化| 93.4% | 4.8M |
|方案| acc | 模型大小 |
预测速度(lite)
|
|---|--------|-------|---
---------
|
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune| 94.54% | 10.3M |
4.2ms |
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune + 量化| 93.4% | 4.8M |
1.8ms |
可以看到量化后能显著降低模型体积,但是由于识别数据过少,量化带来了1%的精度下降。
可以看到量化后能降低模型体积53%并且推理速度提升57%,但是由于识别数据过少,量化带来了1%的精度下降。
速度测试基于
[
PaddleOCR lite教程
](
../deploy/lite/readme_ch.md
)
完成。
#### 4.2.5 模型导出
...
...
@@ -593,10 +598,154 @@ python deploy/slim/quantization/export_model.py -c configs/rec/PP-OCRv3/ch_PP-OC
Global.save_inference_dir
=
output/CCPD/rec_quant/infer
```
### 4.3 串联推理
### 4.3 计算End2End指标
端到端指标可通过
[
PaddleOCR内置脚本
](
../tools/end2end/readme.md
)
进行计算,具体步骤如下:
检测模型和识别模型分别fine-tune并导出为inference模型之后,可以使用如下命令进行端到端推理并对结果进行可视化。
1.
导出模型
通过如下命令进行模型的导出。注意,量化模型导出时,需要配置eval数据集
```
bash
# 检测模型
# 预训练模型
python tools/export_model.py
-c
configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml
-o
\
Global.pretrained_model
=
models/ch_PP-OCRv3_det_distill_train/student.pdparams
\
Global.save_inference_dir
=
output/ch_PP-OCRv3_det_distill_train/infer
# 非量化模型
python tools/export_model.py
-c
configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml
-o
\
Global.pretrained_model
=
output/CCPD/det/best_accuracy.pdparams
\
Global.save_inference_dir
=
output/CCPD/det/infer
# 量化模型
python deploy/slim/quantization/export_model.py
-c
configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml
-o
\
Global.pretrained_model
=
output/CCPD/det_quant/best_accuracy.pdparams
\
Global.save_inference_dir
=
output/CCPD/det_quant/infer
\
Eval.dataset.data_dir
=
/home/aistudio/data/CCPD2020/ccpd_green
\
Eval.dataset.label_file_list
=[
/home/aistudio/data/CCPD2020/PPOCR/test/det.txt]
\
Eval.loader.num_workers
=
0
# 识别模型
# 预训练模型
python tools/export_model.py
-c
configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml
-o
\
Global.pretrained_model
=
models/ch_PP-OCRv3_rec_train/student.pdparams
\
Global.save_inference_dir
=
output/ch_PP-OCRv3_rec_train/infer
# 非量化模型
python tools/export_model.py
-c
configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml
-o
\
Global.pretrained_model
=
output/CCPD/rec/best_accuracy.pdparams
\
Global.save_inference_dir
=
output/CCPD/rec/infer
# 量化模型
python deploy/slim/quantization/export_model.py
-c
configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml
-o
\
Global.pretrained_model
=
output/CCPD/rec_quant/best_accuracy.pdparams
\
Global.save_inference_dir
=
output/CCPD/rec_quant/infer
\
Eval.dataset.data_dir
=
/home/aistudio/data/CCPD2020/PPOCR
\
Eval.dataset.label_file_list
=[
/home/aistudio/data/CCPD2020/PPOCR/test/rec.txt]
```
2.
用导出的模型对测试集进行预测
此处,分别使用PP-OCRv3预训练模型,fintune模型和量化模型对测试集的所有图像进行预测,命令如下:
```
bash
# 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/pretrain
# 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中英文超轻量检测预训练模型+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中英文超轻量检测预训练模型 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
```
3.
转换label并计算指标
将gt和上一步保存的预测结果转换为端对端评测需要的数据格式,并根据转换后的数据进行端到端指标计算
```
bash
python3 tools/end2end/convert_ppocr_label.py
--mode
=
gt
--label_path
=
/home/aistudio/data/CCPD2020/PPOCR/test/det.txt
--save_folder
=
end2end/gt
# PP-OCRv3中英文超轻量检测预训练模型,PP-OCRv3中英文超轻量识别预训练模型 结果转换和评估
python3 tools/end2end/convert_ppocr_label.py
--mode
=
pred
--label_path
=
infer/pretrain/system_results.txt
--save_folder
=
end2end/pretrain
python3 tools/end2end/eval_end2end.py end2end/gt end2end/pretrain
# PP-OCRv3中英文超轻量检测预训练模型,PP-OCRv3中英文超轻量识别预训练模型+后处理去掉多识别的`·` 结果转换和评估
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中英文超轻量检测预训练模型 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中英文超轻量检测预训练模型 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
```
日志如下:
```
bash
The convert label saved
in
end2end/gt
The convert label saved
in
end2end/pretrain
start testing...
hit, dt_count, gt_count 2 5988 5006
character_acc: 70.42%
avg_edit_dist_field: 2.37
avg_edit_dist_img: 2.37
precision: 0.03%
recall: 0.04%
fmeasure: 0.04%
The convert label saved
in
end2end/post
start testing...
hit, dt_count, gt_count 4224 5988 5006
character_acc: 81.59%
avg_edit_dist_field: 1.47
avg_edit_dist_img: 1.47
precision: 70.54%
recall: 84.38%
fmeasure: 76.84%
The convert label saved
in
end2end/fine-tune
start testing...
hit, dt_count, gt_count 4286 4898 5006
character_acc: 94.16%
avg_edit_dist_field: 0.47
avg_edit_dist_img: 0.47
precision: 87.51%
recall: 85.62%
fmeasure: 86.55%
The convert label saved
in
end2end/quant
start testing...
hit, dt_count, gt_count 4349 4951 5006
character_acc: 94.13%
avg_edit_dist_field: 0.47
avg_edit_dist_img: 0.47
precision: 87.84%
recall: 86.88%
fmeasure: 87.36%
```
各个方案端到端指标如下:
|det|rec|fmeasure|
|---|---|---|
|PP-OCRv3中英文超轻量检测预训练模型|PP-OCRv3中英文超轻量识别预训练模型|0.04%|
|PP-OCRv3中英文超轻量检测预训练模型|PP-OCRv3中英文超轻量识别预训练模型+后处理去掉多识别的
`·`
|76.84%|
|PP-OCRv3中英文超轻量检测预训练模型+fine-tune|PP-OCRv3中英文超轻量识别预训练模型+fine-tune|86.55%|
|PP-OCRv3中英文超轻量检测预训练模型+fine-tune+量化|PP-OCRv3中英文超轻量识别预训练模型+fine-tune+量化|87.36%|
从结果中可以看到对预训练模型不做修改,只根据场景下的具体情况进行后处理的修改就能大幅提升端到端指标到76.84%,在CCPD数据集上进行 fine-tune 后指标进一步提升到86.55%, 在经过量化训练之后,由于检测模型的recall变高,指标进一步提升到87.36%。
### 4.4 部署
-
基于 Paddle Inference 的python推理
检测模型和识别模型分别 fine-tune 并导出为inference模型之后,可以使用如下命令基于 Paddle Inference 进行端到端推理并对结果进行可视化。
```
bash
python tools/infer/predict_system.py
\
...
...
@@ -609,31 +758,46 @@ python tools/infer/predict_system.py \
![](
https://ai-studio-static-online.cdn.bcebos.com/76b6a0939c2c4cf49039b6563c4b28e241e11285d7464e799e81c58c0f7707a7
)
-
端侧部署
端侧部署我们采用基于 PaddleLite 的 cpp 推理。Paddle Lite是飞桨轻量化推理引擎,为手机、IOT端提供高效推理能力,并广泛整合跨平台硬件,为端侧部署及应用落地问题提供轻量化的部署方案。具体可参考
[
PaddleOCR lite教程
](
../dygraph/deploy/lite/readme_ch.md
)
### 4.
4
实验总结
### 4.
5
实验总结
我们分别使用PP-OCRv3中英文超轻量预训练模型在车牌数据集上进行了直接评估和
finetune 和finetune+量化3种方案的实验
,指标对比如下:
我们分别使用PP-OCRv3中英文超轻量预训练模型在车牌数据集上进行了直接评估和
fine-tune 和 fine-tune+量化3种方案的实验,并基于
[
PaddleOCR lite教程
](
../dygraph/deploy/lite/readme_ch.md
)
进行了速度测试
,指标对比如下:
-
检测
|方案|hmeans| 模型大小 |
预测速度(lite)
|
|---|---|------|---|
|PP-OCRv3中英文超轻量检测预训练模型直接预测|76.12%|2.5M|
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune|99%| 2.5M ||
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune+量化|98.91%| 1M ||
|方案|hmeans| 模型大小 |
预测速度(lite)
|
|---|---|------|---
---------
|
|PP-OCRv3中英文超轻量检测预训练模型直接预测|76.12%|2.5M|
233ms |
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune|99%| 2.5M |
233ms
|
|PP-OCRv3中英文超轻量检测预训练模型 fine-tune+量化|98.91%| 1M |
189ms
|
-
识别
|方案| acc | 模型大小 |预测速度(lite)|
|---|--------|-------|---|
|PP-OCRv3中英文超轻量识别预训练模型直接预测| 0% |10.3M||
|PP-OCRv3中英文超轻量识别预训练模型直接预测+后处理去掉多识别的
`·`
| 90.97% |10.3M||
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune| 94.54% | 10.3M ||
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune + 量化| 94.4% | 4.8M ||
|方案| acc | 模型大小 | 预测速度(lite) |
|---|--------|-------|------------|
|PP-OCRv3中英文超轻量识别预训练模型直接预测| 0% |10.3M| 4.2ms |
|PP-OCRv3中英文超轻量识别预训练模型直接预测+后处理去掉多识别的
`·`
| 90.97% |10.3M| 4.2ms |
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune| 94.54% | 10.3M | 4,2ms |
|PP-OCRv3中英文超轻量识别预训练模型 fine-tune + 量化| 94.4% | 4.8M | 1.8ms |
-
端到端指标如下:
| 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的情况下,在车牌数据集上也有一定的精度,经过 fine-tune 后能够极大的提升检测效果,精度达到99%。在使用量化训练后检测模型的精度几乎无损,并且模型大小压缩60%。
PP-OCRv3的
检测模型在未经过fine-tune的情况下,在车牌数据集上也有一定的精度,经过finetune后能够极大的提升检测效果,精度达到99%。在使用量化训练后检测模型的精度几乎无损,并且模型大小压缩60%
。
PP-OCRv3的
识别模型在未经过fine-tune的情况下,在车牌数据集上精度为0,但是经过分析可以知道,模型大部分字符都预测正确,但是会多预测一个特殊字符,去掉这个特殊字符后,精度达到90%。PP-OCRv3识别模型在经过 fine-tune 后识别精度进一步提升,达到94.4%。在使用量化训练后识别模型大小压缩53%,但是由于数据量多少,带来了1%的精度损失
。
PP-OCRv3的识别模型在未经过fine-tune的情况下,在车牌数据集上精度为0,但是经过分析可以知道,模型大部分字符都预测正确,但是会多预测一个特殊字符,去掉这个特殊字符后,精度达到90%。PP-OCRv3识别模型在经过finetune后识别精度进一步提升,达到94.4%。在使用量化训练后识别模型大小压缩53%,但是由于数据量多少,带来了1%的精度损失
。
从端到端结果中可以看到对预训练模型不做修改,只根据场景下的具体情况进行后处理的修改就能大幅提升端到端指标到76.84%,在CCPD数据集上进行 fine-tune 后指标进一步提升到86.55%, 在经过量化训练之后,由于检测模型的recall变高,指标进一步提升到87.36%并且模型大小降低54%
。
tools/end2end/convert_ppocr_label.py
浏览文件 @
22db537e
...
...
@@ -85,10 +85,16 @@ def convert_label(label_dir, mode="gt", save_dir="./save_results/"):
print
(
"The convert label saved in {}"
.
format
(
save_dir
))
if
__name__
==
"__main__"
:
def
parse_args
():
import
argparse
parser
=
argparse
.
ArgumentParser
(
description
=
"args"
)
parser
.
add_argument
(
"--label_path"
,
type
=
str
,
required
=
True
)
parser
.
add_argument
(
"--save_folder"
,
type
=
str
,
required
=
True
)
parser
.
add_argument
(
"--mode"
,
type
=
str
,
default
=
False
)
args
=
parser
.
parse_args
()
return
args
ppocr_label_gt
=
"/paddle/Datasets/chinese/test_set/Label_refine_310_V2.txt"
convert_label
(
ppocr_label_gt
,
"gt"
,
"./save_gt_310_V2/"
)
ppocr_label_gt
=
"./infer_results/ch_PPOCRV2_infer.txt"
convert_label
(
ppocr_label_gt_en
,
"pred"
,
"./save_PPOCRV2_infer/"
)
if
__name__
==
"__main__"
:
args
=
parse_args
()
convert_label
(
args
.
label_path
,
args
.
mode
,
args
.
save_folder
)
tools/end2end/readme.md
浏览文件 @
22db537e
...
...
@@ -23,19 +23,13 @@ all-sum-510/00224225.jpg [{"transcription": "超赞", "points": [[8.0, 48
**步骤二:**
将步骤一保存的数据转换为端对端评测需要的数据格式:
修改
`tools/convert_ppocr_label.py`
中的代码,convert_label函数中设置输入标签路径,Mode,保存标签路径等,对预测数据的GTlabel和预测结果的label格式进行转换。
```
ppocr_label_gt = "gt_label.txt"
convert_label(ppocr_label_gt, "gt", "./save_gt_label/")
修改
`tools/end2end/convert_ppocr_label.py`
中的代码,convert_label函数中设置输入标签路径,Mode,保存标签路径等,对预测数据的GTlabel和预测结果的label格式进行转换。
ppocr_label_gt = "./ch_PP-OCRv2_results/system_results.txt"
convert_label(ppocr_label_gt_en, "pred", "./save_PPOCRV2_infer/")
```
python3 tools/end2end/convert_ppocr_label.py --mode=gt --label_path=path/to/label_txt --save_folder=save_gt_label
运行
`convert_ppocr_label.py`
:
```
python3 tools/convert_ppocr_label.py
python3 tools/end2end/convert_ppocr_label.py --mode=pred --label_path=path/to/pred_txt --save_folder=save_PPOCRV2_infer
```
得到如下结果:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录