[English](README_en.md) | 简体中文
# SlimOCR模型库
## 模型
PaddleSlim对[PaddleOCR]()发布的模型进行了压缩,产出了如下一系列小模型:
序号 |
任务 |
模型 |
压缩策略[3][4] |
精度(自建中文数据集) |
耗时[1](ms) |
整体耗时[2](ms) |
加速比 |
整体模型大小(M) |
压缩比例 |
下载链接 |
0 |
检测 |
MobileNetV3_DB |
无 |
61.7 |
224 |
375 |
- |
8.6 |
- |
|
识别 |
MobileNetV3_CRNN |
无 |
62.0 |
9.52 |
|
1 |
检测 |
SlimTextDet |
PACT量化训练 |
62.1 |
195 |
348 |
8% |
2.8 |
67.82% |
|
识别 |
SlimTextRec |
PACT量化训练 |
61.48 |
8.6 |
|
2 |
检测 |
SlimTextDet_quat_pruning |
剪裁+PACT量化训练 |
60.86 |
142 |
288 |
30% |
2.8 |
67.82% |
|
识别 |
SlimTextRec |
PACT量化训练 |
61.48 |
8.6 |
|
3 |
检测 |
SlimTextDet_pruning |
剪裁 |
61.57 |
138 |
295 |
27% |
2.9 |
66.28% |
|
识别 |
SlimTextRec |
PACT量化训练 |
61.48 |
8.6 |
|
**注意**:
- [1] 耗时评测环境为:骁龙855芯片+PaddleLite。
- [2] 整体耗时不等于检测耗时加识别耗时的原因是:识别模型的耗时为单个检测框的耗时,一张图片可能会有多个检测框。
- [3] 参考下面关于[OCR量化的说明](#OCR量化说明)。
- [4] 参考下面关于[OCR剪裁的说明](#OCR剪裁说明)。
## OCR量化说明
待补充
分别针对检测和识别模型说明以下内容:
1. PACT量化所选参数:包括量化算法参数、训练轮数、优化器选择、学习率等信息
2. 跳过了哪些层
更多量化教程请参考[OCR模型量化压缩教程]()
## OCR剪裁说明
### 敏感度分析
在对OCR文字检测模型进行裁剪敏感度分析时,分析对象为除depthwise convolution外的所有普通卷积层,裁剪的criterion被设置为'geometry_median',pruned_ratios推荐设置为[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]。
### 裁剪与finetune
裁剪时通过之前的敏感度分析文件决定每个网络层的裁剪比例。在具体实现时,为了尽可能多的保留从图像中提取的低阶特征,我们跳过了backbone中靠近输入的4个卷积层。同样,为了减少由于裁剪导致的模型性能损失,我们通过之间敏感度分析所获得敏感度表,挑选出了一些冗余较少,对裁剪较为敏感[网络层](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/slim/prune/pruning_and_finetune.py#L41),并在之后的裁剪过程中选择避开这些网络层。裁剪过后finetune的过程沿用OCR检测模型原始的训练策略。
更多OCR剪裁教程请参考[OCR模剪裁压缩教程](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/slim/prune/README.md)