From 44a17b05a8331274a23934b4b6cd45cb850c76ef Mon Sep 17 00:00:00 2001 From: lvjian0706 <657300142@qq.com> Date: Thu, 9 Jun 2022 17:05:50 +0800 Subject: [PATCH] add_multilingual_text_image_orientation --- .../PULC/PULC_language_classification.md | 24 +++++++++---------- ...x1_0.yaml => MobileNetV3_small_x0_35.yaml} | 14 +++++------ 2 files changed, 19 insertions(+), 19 deletions(-) rename ppcls/configs/PULC/language_classification/{MobileNetV3_large_x1_0.yaml => MobileNetV3_small_x0_35.yaml} (92%) diff --git a/docs/zh_CN/PULC/PULC_language_classification.md b/docs/zh_CN/PULC/PULC_language_classification.md index 68780aa3..62ae6beb 100644 --- a/docs/zh_CN/PULC/PULC_language_classification.md +++ b/docs/zh_CN/PULC/PULC_language_classification.md @@ -37,18 +37,18 @@ 该案例提供了用户使用 PaddleClas 的超轻量图像分类方案(PULC,Practical Ultra Lightweight Classification)快速构建轻量级、高精度、可落地的语种分类模型。使用该方法训练得到的模型可以快速判断图片中的文字语种,该模型可以广泛应用于金融、政务等各种涉及多语种OCR处理的场景中。 -下表列出了语种分类模型的相关指标,前两行展现了使用 SwinTranformer_tiny 和 MobileNetV3_large_x1_0 作为 backbone 训练得到的模型的相关指标,第三行至第六行依次展现了替换 backbone 为 PPLCNet_x1_0、使用 SSLD 预训练模型、使用 SSLD 预训练模型 + EDA 策略、使用 SSLD 预训练模型 + EDA 策略 + SKL-UGI 知识蒸馏策略训练得到的模型的相关指标。其中替换 backbone 为 PPLCNet_x1_0时,将数据预处理时的输入尺寸变为[192,48],且网络的下采样stride调整为[2, [2, 1], [2, 1], [2, 1], [2, 1]]。 - -| 模型 | 精度 | 延时 | 存储 | 策略 | -| ---------------------- | --------- | -------- | ------- | ---------------------------------------------- | -| SwinTranformer_tiny | 98.12 | 89.09 | 107 | 使用ImageNet预训练模型 | -| MobileNetV3_large_x1_0 | 98.3 | 4.78 | 17 | 使用ImageNet预训练模型 | -| PPLCNet_x1_0 | 98.35 | 2.58 | 6.5 | 使用ImageNet预训练模型 | -| PPLCNet_x1_0 | 98.7 | 2.58 | 6.5 | 使用SSLD预训练模型 | -| PPLCNet_x1_0 | 99.12 | 2.58 | 6.5 | 使用SSLD预训练模型+EDA策略 | -| **PPLCNet_x1_0** | **99.26** | **2.58** | **6.5** | 使用SSLD预训练模型+EDA策略+SKL-UGI知识蒸馏策略 | - -从表中可以看出,backbone 为 SwinTranformer_tiny 时精度比较高,但是推理速度较慢。将 backboone 替换为轻量级模型 MobileNetV3_large_x1_0 后,精度和速度都有了提升。将 backbone 替换为 PPLCNet_x1_0 且调整预处理输入尺寸和网络的下采样stride时,精度较 MobileNetV3_large_x1_0 高0.05个百分点,同时速度提升 2 倍左右。在此基础上,使用 SSLD 预训练模型后,在不改变推理速度的前提下,精度可以提升 0.35 个百分点,进一步地,当融合EDA策略后,精度可以再提升 0.42 个百分点,最后,在使用 SKL-UGI 知识蒸馏后,精度可以继续提升 0.14 个百分点。此时,PPLCNet_x1_0 超过了 MobileNetV3_large_x1_0 和 SwinTranformer_tiny 模型的精度,并且速度有了明显提升。关于 PULC 的训练方法和推理部署方法将在下面详细介绍。 +下表列出了语种分类模型的相关指标,前两行展现了使用 SwinTranformer_tiny 和 MobileNetV3_small_x0_35 作为 backbone 训练得到的模型的相关指标,第三行至第六行依次展现了替换 backbone 为 PPLCNet_x1_0、使用 SSLD 预训练模型、使用 SSLD 预训练模型 + EDA 策略、使用 SSLD 预训练模型 + EDA 策略 + SKL-UGI 知识蒸馏策略训练得到的模型的相关指标。其中替换 backbone 为 PPLCNet_x1_0时,将数据预处理时的输入尺寸变为[192,48],且网络的下采样stride调整为[2, [2, 1], [2, 1], [2, 1], [2, 1]]。 + +| 模型 | 精度 | 延时 | 存储 | 策略 | +| ----------------------- | --------- | -------- | ------- | ---------------------------------------------- | +| SwinTranformer_tiny | 98.12 | 89.09 | 107 | 使用ImageNet预训练模型 | +| MobileNetV3_small_x0_35 | 95.92 | 2.98 | 17 | 使用ImageNet预训练模型 | +| PPLCNet_x1_0 | 98.35 | 2.58 | 6.5 | 使用ImageNet预训练模型 | +| PPLCNet_x1_0 | 98.7 | 2.58 | 6.5 | 使用SSLD预训练模型 | +| PPLCNet_x1_0 | 99.12 | 2.58 | 6.5 | 使用SSLD预训练模型+EDA策略 | +| **PPLCNet_x1_0** | **99.26** | **2.58** | **6.5** | 使用SSLD预训练模型+EDA策略+SKL-UGI知识蒸馏策略 | + +从表中可以看出,backbone 为 SwinTranformer_tiny 时精度比较高,但是推理速度较慢。将 backboone 替换为轻量级模型 MobileNetV3_small_x0_35 后,速度提升明显,但精度有了大幅下降。将 backbone 替换为 PPLCNet_x1_0 且调整预处理输入尺寸和网络的下采样stride时,速度略为提升,同时精度较 MobileNetV3_large_x1_0 高2.43个百分点。在此基础上,使用 SSLD 预训练模型后,在不改变推理速度的前提下,精度可以提升 0.35 个百分点,进一步地,当融合EDA策略后,精度可以再提升 0.42 个百分点,最后,在使用 SKL-UGI 知识蒸馏后,精度可以继续提升 0.14 个百分点。此时,PPLCNet_x1_0 超过了 SwinTranformer_tiny 模型的精度,并且速度有了明显提升。关于 PULC 的训练方法和推理部署方法将在下面详细介绍。 **备注:**关于PPLCNet的介绍可以参考[PPLCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PPLCNet paper](https://arxiv.org/abs/2109.15099)。 diff --git a/ppcls/configs/PULC/language_classification/MobileNetV3_large_x1_0.yaml b/ppcls/configs/PULC/language_classification/MobileNetV3_small_x0_35.yaml similarity index 92% rename from ppcls/configs/PULC/language_classification/MobileNetV3_large_x1_0.yaml rename to ppcls/configs/PULC/language_classification/MobileNetV3_small_x0_35.yaml index 36a6ef2c..ff6b9427 100644 --- a/ppcls/configs/PULC/language_classification/MobileNetV3_large_x1_0.yaml +++ b/ppcls/configs/PULC/language_classification/MobileNetV3_small_x0_35.yaml @@ -13,10 +13,11 @@ Global: # used for static mode and model export image_shape: [3, 224, 224] save_inference_dir: ./inference + start_eval_epoch: 20 # model architecture Arch: - name: MobileNetV3_large_x1_0 + name: MobileNetV3_small_x0_35 class_num: 10 pretrained: True @@ -36,11 +37,11 @@ Optimizer: momentum: 0.9 lr: name: Cosine - learning_rate: 0.8 + learning_rate: 1.3 warmup_epoch: 5 regularizer: name: 'L2' - coeff: 0.00002 + coeff: 0.00001 # data loader for train and eval @@ -58,7 +59,6 @@ DataLoader: size: 224 - RandFlipImage: flip_code: 1 - - AutoAugment: - NormalizeImage: scale: 1.0/255.0 mean: [0.485, 0.456, 0.406] @@ -71,7 +71,7 @@ DataLoader: drop_last: False shuffle: True loader: - num_workers: 4 + num_workers: 8 use_shared_memory: True Eval: @@ -98,11 +98,11 @@ DataLoader: drop_last: False shuffle: False loader: - num_workers: 4 + num_workers: 8 use_shared_memory: True Infer: - infer_imgs: deploy/images/PULC/language_classification/word_35404.png + infer_imgs: docs/images/inference_deployment/whl_demo.jpg batch_size: 10 transforms: - DecodeImage: -- GitLab