From 2b68ae333a2e1ecf0b09f56ebadbae797db50f2d Mon Sep 17 00:00:00 2001
From: baiyfbupt <me@ethanbai.com>
Date: Sat, 19 Sep 2020 16:35:54 +0800
Subject: [PATCH] refine slim readme

---
 deploy/slim/quantization/README.md    | 134 ++++++++++++++++++++-
 deploy/slim/quantization/README_en.md | 167 ++++++++++++++++++++++++++
 2 files changed, 298 insertions(+), 3 deletions(-)
 create mode 100755 deploy/slim/quantization/README_en.md

diff --git a/deploy/slim/quantization/README.md b/deploy/slim/quantization/README.md
index f7d87c83..d1aa3d71 100755
--- a/deploy/slim/quantization/README.md
+++ b/deploy/slim/quantization/README.md
@@ -1,21 +1,148 @@
 > 运行示例前请先安装1.2.0或更高版本PaddleSlim
 
+
 # 模型量化压缩教程
 
+压缩结果:
+<table>
+<thead>
+  <tr>
+    <th>序号</th>
+    <th>任务</th>
+    <th>模型</th>
+    <th>压缩策略</th>
+    <th>精度(自建中文数据集)</th>
+    <th>耗时(ms)</th>
+    <th>整体耗时(ms)</th>
+    <th>加速比</th>
+    <th>整体模型大小(M)</th>
+    <th>压缩比例</th>
+    <th>下载链接</th>
+  </tr>
+</thead>
+<tbody>
+  <tr>
+    <td rowspan="2">0</td>
+    <td>检测</td>
+    <td>MobileNetV3_DB</td>
+    <td>æ— </td>
+    <td>61.7</td>
+    <td>224</td>
+    <td rowspan="2">375</td>
+    <td rowspan="2">-</td>
+    <td rowspan="2">8.6</td>
+    <td rowspan="2">-</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>识别</td>
+    <td>MobileNetV3_CRNN</td>
+    <td>æ— </td>
+    <td>62.0</td>
+    <td>9.52</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td rowspan="2">1</td>
+    <td>检测</td>
+    <td>SlimTextDet</td>
+    <td>PACT量化训练</td>
+    <td>62.1</td>
+    <td>195</td>
+    <td rowspan="2">348</td>
+    <td rowspan="2">8%</td>
+    <td rowspan="2">2.8</td>
+    <td rowspan="2">67.82%</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>识别</td>
+    <td>SlimTextRec</td>
+    <td>PACT量化训练</td>
+    <td>61.48</td>
+    <td>8.6</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td rowspan="2">2</td>
+    <td>检测</td>
+    <td>SlimTextDet_quat_pruning</td>
+    <td>剪裁+PACT量化训练</td>
+    <td>60.86</td>
+    <td>142</td>
+    <td rowspan="2">288</td>
+    <td rowspan="2">30%</td>
+    <td rowspan="2">2.8</td>
+    <td rowspan="2">67.82%</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>识别</td>
+    <td>SlimTextRec</td>
+    <td>PACT量化训练</td>
+    <td>61.48</td>
+    <td>8.6</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td rowspan="2">3</td>
+    <td>检测</td>
+    <td>SlimTextDet_pruning</td>
+    <td>剪裁</td>
+    <td>61.57</td>
+    <td>138</td>
+    <td rowspan="2">295</td>
+    <td rowspan="2">27%</td>
+    <td rowspan="2">2.9</td>
+    <td rowspan="2">66.28%</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>识别</td>
+    <td>SlimTextRec</td>
+    <td>PACT量化训练</td>
+    <td>61.48</td>
+    <td>8.6</td>
+    <td></td>
+  </tr>
+</tbody>
+</table>
+
+
+
 ## 概述
 
+复杂的模型有利于提高模型的性能,但也导致模型中存在一定冗余,模型量化将全精度缩减到定点数减少这种冗余,达到减少模型计算复杂度,提高模型推理性能的目的。
+
 该示例使用PaddleSlim提供的[量化压缩API](https://paddlepaddle.github.io/PaddleSlim/api/quantization_api/)对OCR模型进行压缩。
 在阅读该示例前,建议您先了解以下内容:
 
 - [OCR模型的常规训练方法](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/detection.md)
-- [PaddleSlim使用文档](https://paddlepaddle.github.io/PaddleSlim/)
+- [PaddleSlim使用文档](https://paddleslim.readthedocs.io/zh_CN/latest/index.html)
+
+
 
 ## 安装PaddleSlim
-可按照[PaddleSlim使用文档](https://paddlepaddle.github.io/PaddleSlim/)中的步骤安装PaddleSlim。
 
+```bash
+git clone https://github.com/PaddlePaddle/PaddleSlim.git
+
+cd Paddleslim
+
+python setup.py install
+```
+
+
+
+## 获取预训练模型
+
+[识别预训练模型下载地址]()
+
+[检测预训练模型下载地址]()
 
 
 ## 量化训练
+加载预训练模型后,在定义好量化策略后即可对模型进行量化。量化相关功能的使用具体细节见:[模型量化](https://paddleslim.readthedocs.io/zh_CN/latest/api_cn/quantization_api.html)
 
 进入PaddleOCR根目录,通过以下命令对模型进行量化:
 
@@ -25,10 +152,11 @@ python deploy/slim/quantization/quant.py -c configs/det/det_mv3_db.yml -o Global
 
 
 
+
 ## 导出模型
 
 在得到量化训练保存的模型后,我们可以将其导出为inference_model,用于预测部署:
 
 ```bash
-python deploy/slim/quantization/export_model.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=output/quant_model/best_accuracy Global.save_model_dir=./output/quant_model
+python deploy/slim/quantization/export_model.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=output/quant_model/best_accuracy Global.save_model_dir=./output/quant_inference_model
 ```
diff --git a/deploy/slim/quantization/README_en.md b/deploy/slim/quantization/README_en.md
new file mode 100755
index 00000000..4b8a2b23
--- /dev/null
+++ b/deploy/slim/quantization/README_en.md
@@ -0,0 +1,167 @@
+\> PaddleSlim 1.2.0 or higher version should be installed before runing this example.
+
+
+
+# Model compress tutorial (Quantization)
+
+Compress results:
+<table>
+<thead>
+  <tr>
+    <th>ID</th>
+    <th>Task</th>
+    <th>Model</th>
+    <th>Compress Strategy</th>
+    <th>Criterion(Chinese dataset)</th>
+    <th>Inference Time(ms)</th>
+    <th>Inference Time(Total model)(ms)</th>
+    <th>Acceleration Ratio</th>
+    <th>Model Size(MB)</th>
+    <th>Commpress Ratio</th>
+    <th>Download Link</th>
+  </tr>
+</thead>
+<tbody>
+  <tr>
+    <td rowspan="2">0</td>
+    <td>Detection</td>
+    <td>MobileNetV3_DB</td>
+    <td>None</td>
+    <td>61.7</td>
+    <td>224</td>
+    <td rowspan="2">375</td>
+    <td rowspan="2">-</td>
+    <td rowspan="2">8.6</td>
+    <td rowspan="2">-</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Recognition</td>
+    <td>MobileNetV3_CRNN</td>
+    <td>None</td>
+    <td>62.0</td>
+    <td>9.52</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td rowspan="2">1</td>
+    <td>Detection</td>
+    <td>SlimTextDet</td>
+    <td>PACT Quant Aware Training</td>
+    <td>62.1</td>
+    <td>195</td>
+    <td rowspan="2">348</td>
+    <td rowspan="2">8%</td>
+    <td rowspan="2">2.8</td>
+    <td rowspan="2">67.82%</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Recognition</td>
+    <td>SlimTextRec</td>
+    <td>PACT Quant Aware Training</td>
+    <td>61.48</td>
+    <td>8.6</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td rowspan="2">2</td>
+    <td>Detection</td>
+    <td>SlimTextDet_quat_pruning</td>
+    <td>Pruning+PACT Quant Aware Training</td>
+    <td>60.86</td>
+    <td>142</td>
+    <td rowspan="2">288</td>
+    <td rowspan="2">30%</td>
+    <td rowspan="2">2.8</td>
+    <td rowspan="2">67.82%</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Recognition</td>
+    <td>SlimTextRec</td>
+    <td>PPACT Quant Aware Training</td>
+    <td>61.48</td>
+    <td>8.6</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td rowspan="2">3</td>
+    <td>Detection</td>
+    <td>SlimTextDet_pruning</td>
+    <td>Pruning</td>
+    <td>61.57</td>
+    <td>138</td>
+    <td rowspan="2">295</td>
+    <td rowspan="2">27%</td>
+    <td rowspan="2">2.9</td>
+    <td rowspan="2">66.28%</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Recognition</td>
+    <td>SlimTextRec</td>
+    <td>PACT Quant Aware Training</td>
+    <td>61.48</td>
+    <td>8.6</td>
+    <td></td>
+  </tr>
+</tbody>
+</table>
+
+
+
+## Overview
+
+Generally, a more complex model would achive better performance in the task, but it also leads to some redundancy in the model. Quantization is a technique that reduces this redundancyby reducing the full precision data to a fixed number, so as to reduce model calculation complexity and improve model inference performance.
+
+This example uses PaddleSlim provided [APIs of Quantization](https://paddlepaddle.github.io/PaddleSlim/api/quantization_api/) to compress the OCR model.
+
+It is recommended that you could understand following pages before reading this example,:
+
+
+
+- [The training strategy of OCR model](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/detection.md)
+
+- [PaddleSlim Document](https://paddlepaddle.github.io/PaddleSlim/api/quantization_api/)
+
+
+
+## Install PaddleSlim
+
+```bash
+git clone https://github.com/PaddlePaddle/PaddleSlim.git
+
+cd Paddleslim
+
+python setup.py install
+
+```
+
+
+## Download Pretrain Model
+
+[Download link of Detection pretrain model]()
+
+[Download link of recognization pretrain model]()
+
+
+## Quan-Aware Training
+
+After loading the pre training model, the model can be quantified after defining the quantization strategy. For specific details of quantization method, see:[Model Quantization](https://paddleslim.readthedocs.io/zh_CN/latest/api_cn/quantization_api.html)
+
+Enter the PaddleOCR root directory,perform model quantization with the following command:
+
+```bash
+python deploy/slim/prune/sensitivity_anal.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights=./deploy/slim/prune/pretrain_models/det_mv3_db/best_accuracy Global.test_batch_size_per_card=1
+```
+
+
+
+## Export inference model
+
+After getting the model after pruning and finetuning we, can export it as inference_model for predictive deployment:
+
+```bash
+python deploy/slim/quantization/export_model.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=output/quant_model/best_accuracy Global.save_model_dir=./output/quant_inference_model
+```
-- 
GitLab