diff --git a/doc/doc_ch/PP-OCRv3_introduction.md b/doc/doc_ch/PP-OCRv3_introduction.md index d31d0473a5952cd501331d80595c0766018d4a62..060639c799a8fd905d1ec5f4305d81ae0a4bed67 100644 --- a/doc/doc_ch/PP-OCRv3_introduction.md +++ b/doc/doc_ch/PP-OCRv3_introduction.md @@ -83,7 +83,7 @@ PP-OCRv3 识别模型在 PP-OCRv2 的基础上从8个策略上进一步优化, 基于上述策略,PP-OCRv3识别模型相比PP-OCRv2,在速度可比的情况下,精度进一步提升4.6%。 具体消融实验如下所示: -| id | 策略 | 模型大小 | 精度 | 速度(cpu + mkldnn)| +| ID | 策略 | 模型大小 | 精度 | 速度(CPU + MKLDNN)| |-----|-----|--------|----| --- | | 01 | PP-OCRv2 | 8M | 74.8% | 8.54ms | | 02 | SVTR_Tiny | 21M | 80.1% | 97ms | @@ -94,29 +94,36 @@ PP-OCRv3 识别模型在 PP-OCRv2 的基础上从8个策略上进一步优化, | 07 | + UDML | 12M | 78.4% | 7.6ms | | 08 | + UIM | 12M | 79.4% | 7.6ms | -注: 测试速度时,实验01-03输入图片尺寸均为(3,32,320),04-08输入图片尺寸均为(3,48,320) +注: 测试速度时,实验01-03输入图片尺寸均为(3,32,320),04-08输入图片尺寸均为(3,48,320)。在实际预测时,图像为变长输入,速度会有所变化。 下面具体介绍各策略的设计思路: 网络结构上,PP-OCRv3将base模型从CRNN替换成了[SVTR](https://arxiv.org/abs/2205.00159),SVTR证明了强大的单视觉模型(无需序列模型)即可高效准确完成文本识别任务,在中英文数据上均有优秀的表现。经过实验验证,SVTR_Tiny 在自建的 [中文数据集上](https://arxiv.org/abs/2109.03144) ,识别精度可以提升至80.1%,SVTR_Tiny 网络结构如下所示: - - -由于 MKLDNN 加速库支持的模型结构有限,SVTR 在CPU+MKLDNN上相比PP-OCRv2-baseline慢了10倍。 +
+ +
+由于 MKLDNN 加速库支持的模型结构有限,SVTR 在 CPU+MKLDNN 上相比 PP-OCRv2 慢了10倍。 -PP-OCRv3 期望在提升模型精度的同时,不带来额外的推理耗时。通过分析发现,SVTR_Tiny结构的主要耗时模块为Mixing Block,因此我们对 SVTR_Tiny 的结构进行了一系列优化(详细速度数据请参考下方消融实验表格): +PP-OCRv3 期望在提升模型精度的同时,不带来额外的推理耗时。通过分析发现,SVTR_Tiny 结构的主要耗时模块为 Mixing Block,因此我们对 SVTR_Tiny 的结构进行了一系列优化(详细速度数据请参考下方消融实验表格): -1. 将SVTR网络前半部分替换为PP-LCNet的前三个stage,保留4个 Global Mixing Block ,精度为76%,加速69%,网络结构如下所示: - +1. 将 SVTR 网络前半部分替换为 PP-LCNet 的前三个stage,保留4个 Global Mixing Block ,精度为76%,加速69%,网络结构如下所示: +
+ +
2. 将4个 Global Mixing Block 减小到2个,精度为72.9%,加速69%,网络结构如下所示: - +
+ +
3. 实验发现 Global Mixing Block 的预测速度与输入其特征的shape有关,因此后移 Global Mixing Block 的位置到池化层之后,精度下降为71.9%,速度超越 CNN-base 的PP-OCRv2-baseline 22%,网络结构如下所示: - +
+ +
具体消融实验如下所示: -| id | 策略 | 模型大小 | 精度 | 速度(cpu + mkldnn)| +| ID | 策略 | 模型大小 | 精度 | 速度(CPU + MKLDNN)| |-----|-----|--------|----| --- | | 01 | PP-OCRv2-baseline | 8M | 69.3% | 8.54ms | | 02 | SVTR_Tiny | 21M | 80.1% | 97ms | @@ -124,24 +131,28 @@ PP-OCRv3 期望在提升模型精度的同时,不带来额外的推理耗时 | 04 | SVTR_LCNet(G2) | 13M | 72.98% | 9.37ms | | 05 | SVTR_LCNet | 12M | 71.9% | 6.6ms | -注: 测试速度时,输入图片尺寸均为(3,32,320); PP-OCRv2-baseline 代表无蒸馏模型 +注: 测试速度时,输入图片尺寸均为(3,32,320); PP-OCRv2-baseline 代表没有借助蒸馏方法训练得到的模型 -为了提升模型精度同时不引入额外推理成本,PP-OCRv3参考GTC策略,使用Attention监督CTC训练,预测时完全去除Attention模块,在推理阶段不增加任何耗时, 精度提升3.8%,训练流程如下所示: - +为了提升模型精度同时不引入额外推理成本,PP-OCRv3 参考 GTC(Guided Training of CTC) 策略,使用 Attention 监督 CTC 训练,预测时完全去除 Attention 模块,在推理阶段不增加任何耗时, 精度提升3.8%,训练流程如下所示: +
+ +
在蒸馏策略方面: PP-OCRv3参考 [SSL](https://github.com/ku21fan/STR-Fewer-Labels) 设计了文本方向任务,训练了适用于文本识别的预训练模型,加速模型收敛过程,精度提升了0.6%; 使用UDML蒸馏策略,进一步提升精度1.5%,训练流程所示: - - +
+ +
数据增强方面: 1. 基于 [ConCLR](https://www.cse.cuhk.edu.hk/~byu/papers/C139-AAAI2022-ConCLR.pdf) 中的ConAug方法,设计了 RecConAug 数据增强方法,增强数据多样性,精度提升0.5%,增强可视化效果如下所示: - - +
+ +
2. 使用训练好的 SVTR_large 预测 120W 的 lsvt 无标注数据,取出其中得分大于0.95的数据,共得到81W识别数据加入到PP-OCRv3的训练数据中,精度提升1%。 diff --git a/doc/ppocr_v3/LCNet_SVTR.png b/doc/ppocr_v3/LCNet_SVTR.png index 6e8d3cecaa40559ca8834ea89a2cad9704de2c97..7f0d701d27502999fcee6d0872d02b9fe1554e3c 100644 Binary files a/doc/ppocr_v3/LCNet_SVTR.png and b/doc/ppocr_v3/LCNet_SVTR.png differ diff --git a/doc/ppocr_v3/svtr_g2.png b/doc/ppocr_v3/svtr_g2.png index 47a430b79f2f3d0ba9634c671131d3ccec7b791b..2573afafbbb6f5ad270320e45c7c3bdb47d8adc2 100644 Binary files a/doc/ppocr_v3/svtr_g2.png and b/doc/ppocr_v3/svtr_g2.png differ diff --git a/doc/ppocr_v3/svtr_g4.png b/doc/ppocr_v3/svtr_g4.png index 0900e4b2d2756731ac82a56dc2b0ef11e7285c03..f85d66d97f619d57edb4223a0996901050ea7959 100644 Binary files a/doc/ppocr_v3/svtr_g4.png and b/doc/ppocr_v3/svtr_g4.png differ diff --git a/doc/ppocr_v3/svtr_tiny.png b/doc/ppocr_v3/svtr_tiny.png index 0ea4cc7f058b9236d0c84b4a79e83315d8d5a58f..01e22e74b539b12072a677bc5081df92f81ef963 100644 Binary files a/doc/ppocr_v3/svtr_tiny.png and b/doc/ppocr_v3/svtr_tiny.png differ