提交 5da10645 编写于 作者: L lvjian0706

add_multilingual_text_image_orientation

上级 aae51ea7
Global: Global:
infer_imgs: "./images/PULC/multilingual/word_35404.png" infer_imgs: "./images/PULC/language_classification/word_35404.png"
inference_model_dir: "./models/multilingual_infer" inference_model_dir: "./models/language_classification_infer"
batch_size: 1 batch_size: 1
use_gpu: True use_gpu: True
enable_mkldnn: False enable_mkldnn: False
...@@ -28,6 +28,6 @@ PostProcess: ...@@ -28,6 +28,6 @@ PostProcess:
main_indicator: Topk main_indicator: Topk
Topk: Topk:
topk: 2 topk: 2
class_id_map_file: "../dataset/multilingual/label_list.txt" class_id_map_file: "../dataset/language_classification/label_list.txt"
SavePreLabel: SavePreLabel:
save_dir: ./pre_label/ save_dir: ./pre_label/
# PULC多语言分类模型 # PULC语种分类模型
## 目录 ## 目录
...@@ -33,9 +33,9 @@ ...@@ -33,9 +33,9 @@
## 1. 模型和应用场景介绍 ## 1. 模型和应用场景介绍
该案例提供了用户使用 PaddleClas 的超轻量图像分类方案(PULC,Practical Ultra Lightweight Classification)快速构建轻量级、高精度、可落地的多语言分类模型。使用该方法训练得到的模型可以快速判断图片中的文字语种,该模型可以广泛应用于金融、政务等各种涉及多语言OCR处理的场景中。 该案例提供了用户使用 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 和 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]]。
| 模型 | 精度 | 延时 | 存储 | 策略 | | 模型 | 精度 | 延时 | 存储 | 策略 |
| ---------------------- | --------- | -------- | ------- | ---------------------------------------------- | | ---------------------- | --------- | -------- | ------- | ---------------------------------------------- |
...@@ -74,9 +74,9 @@ ...@@ -74,9 +74,9 @@
#### 3.2.1 数据集来源 #### 3.2.1 数据集来源
[第1节](#1)中提供的模型使用内部数据训练得到,该数据集暂时不方便公开。这里基于 [Multi-lingual scene text detection and recognition](https://rrc.cvc.uab.es/?ch=15&com=downloads) 开源数据集构造了一个多语demo数据集,用于体验本案例的预测过程。 [第1节](#1)中提供的模型使用内部数据训练得到,该数据集暂时不方便公开。这里基于 [Multi-lingual scene text detection and recognition](https://rrc.cvc.uab.es/?ch=15&com=downloads) 开源数据集构造了一个多语demo数据集,用于体验本案例的预测过程。
![](../../images/PULC/docs/multilingual_original_data.png) ![](../../images/PULC/docs/language_classification_original_data.png)
<a name="3.2.2"></a> <a name="3.2.2"></a>
...@@ -88,9 +88,9 @@ ...@@ -88,9 +88,9 @@
在 Multi-lingual scene text detection and recognition 数据集中,仅包含了阿拉伯语、日语、韩语和拉丁语数据,这里分别将4个语种的数据各抽取100张作为本案例的demo数据,并赋予对应的标签。 在 Multi-lingual scene text detection and recognition 数据集中,仅包含了阿拉伯语、日语、韩语和拉丁语数据,这里分别将4个语种的数据各抽取100张作为本案例的demo数据,并赋予对应的标签。
如果想要制作自己的多语言数据集,可以按照需求收集并整理自己任务中需要语言的数据,此处提供了经过上述方法处理好的demo数据,可以直接下载得到。 如果想要制作自己的多语种数据集,可以按照需求收集并整理自己任务中需要语种的数据,此处提供了经过上述方法处理好的demo数据,可以直接下载得到。
**备注:**多语言分类任务中的图片数据需要将整图中的文字区域抠取出来,仅仅使用文本行部分作为图片数据。 **备注:**语种分类任务中的图片数据需要将整图中的文字区域抠取出来,仅仅使用文本行部分作为图片数据。
进入 PaddleClas 目录。 进入 PaddleClas 目录。
...@@ -98,16 +98,16 @@ ...@@ -98,16 +98,16 @@
cd path_to_PaddleClas cd path_to_PaddleClas
``` ```
进入 `dataset/` 目录,下载并解压多语场景的demo数据。 进入 `dataset/` 目录,下载并解压多语场景的demo数据。
```shell ```shell
cd dataset cd dataset
wget https://paddleclas.bj.bcebos.com/data/cls_demo/multilingual_demo.tar wget https://paddleclas.bj.bcebos.com/data/cls_demo/language_classification_demo.tar
tar -xf multilingual_demo.tar tar -xf language_classification_demo.tar
cd ../ cd ../
``` ```
执行上述命令后,`dataset/`下存在`multilingual_demo`目录,该目录中具有以下数据: 执行上述命令后,`dataset/`下存在`language_classification_demo`目录,该目录中具有以下数据:
``` ```
├── img ├── img
...@@ -118,25 +118,25 @@ cd ../ ...@@ -118,25 +118,25 @@ cd ../
└── label_list.txt └── label_list.txt
``` ```
其中`img/`存放了4种语言的400张测试数据。`label.txt`为图片对应的的标签文件,`label_list.txt`是10类语言分类模型对应的类别列表,用这些图片可以快速体验本案例中模型的预测过程。 其中`img/`存放了4种语种的400张测试数据。`label.txt`为图片对应的的标签文件,`label_list.txt`是10类语种分类模型对应的类别列表,用这些图片可以快速体验本案例中模型的预测过程。
***备注:*** ***备注:***
- 这里的`label_list.txt`是10类语言分类模型对应的类别列表,如果自己构造的数据集语言类别发生变化,需要自行调整。 - 这里的`label_list.txt`是10类语种分类模型对应的类别列表,如果自己构造的数据集语种类别发生变化,需要自行调整。
- 如果想要自己构造训练集和验证集,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) - 如果想要自己构造训练集和验证集,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明)
<a name="3.3"></a> <a name="3.3"></a>
### 3.3 模型训练 ### 3.3 模型训练
`ppcls/configs/PULC/multilingual/PPLCNet_x1_0.yaml`中提供了基于该场景的训练配置,可以通过如下脚本启动训练: `ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml`中提供了基于该场景的训练配置,可以通过如下脚本启动训练:
```shell ```shell
export CUDA_VISIBLE_DEVICES=0,1,2,3 export CUDA_VISIBLE_DEVICES=0,1,2,3
python3 -m paddle.distributed.launch \ python3 -m paddle.distributed.launch \
--gpus="0,1,2,3" \ --gpus="0,1,2,3" \
tools/train.py \ tools/train.py \
-c ./ppcls/configs/PULC/multilingual/PPLCNet_x1_0.yaml -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml
``` ```
<a name="3.4"></a> <a name="3.4"></a>
...@@ -147,7 +147,7 @@ python3 -m paddle.distributed.launch \ ...@@ -147,7 +147,7 @@ python3 -m paddle.distributed.launch \
```bash ```bash
python3 tools/eval.py \ python3 tools/eval.py \
-c ./ppcls/configs/PULC/multilingual/PPLCNet_x1_0.yaml \ -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml \
-o Global.pretrained_model="output/PPLCNet_x1_0/best_model" -o Global.pretrained_model="output/PPLCNet_x1_0/best_model"
``` ```
...@@ -161,21 +161,21 @@ python3 tools/eval.py \ ...@@ -161,21 +161,21 @@ python3 tools/eval.py \
```bash ```bash
python3 tools/infer.py \ python3 tools/infer.py \
-c ./ppcls/configs/PULC/multilingual/PPLCNet_x1_0.yaml \ -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml \
-o Global.pretrained_model="output/PPLCNet_x1_0/best_model" -o Global.pretrained_model="output/PPLCNet_x1_0/best_model"
``` ```
输出结果如下: 输出结果如下:
``` ```
[{'class_ids': [4, 9], 'scores': [0.96809, 0.01001], 'file_name': 'deploy/images/PULC/multilingual/word_35404.png', 'label_names': ['japan', 'latin']}] [{'class_ids': [4, 9], 'scores': [0.96809, 0.01001], 'file_name': 'deploy/images/PULC/language_classification/word_35404.png', 'label_names': ['japan', 'latin']}]
``` ```
***备注:*** ***备注:***
- 其中 `-o Global.pretrained_model="output/PPLCNet_x1_0/best_model"` 指定了当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。 - 其中 `-o Global.pretrained_model="output/PPLCNet_x1_0/best_model"` 指定了当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。
- 默认是对 `deploy/images/PULC/multilingual/word_35404.png` 进行预测,此处也可以通过增加字段 `-o Infer.infer_imgs=xxx` 对其他图片预测。 - 默认是对 `deploy/images/PULC/language_classification/word_35404.png` 进行预测,此处也可以通过增加字段 `-o Infer.infer_imgs=xxx` 对其他图片预测。
- 预测输出为top2的预测结果,`japan` 表示该图中文字语言识别为日语,`latin` 表示该图中文字语言识别为拉丁语。 - 预测输出为top2的预测结果,`japan` 表示该图中文字语种识别为日语,`latin` 表示该图中文字语种识别为拉丁语。
<a name="4"></a> <a name="4"></a>
...@@ -191,14 +191,14 @@ SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方 ...@@ -191,14 +191,14 @@ SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方
#### 4.1.1 教师模型训练 #### 4.1.1 教师模型训练
复用`ppcls/configs/PULC/multilingual/PPLCNet/PPLCNet_x1_0.yaml`中的超参数,训练教师模型,训练脚本如下: 复用`ppcls/configs/PULC/language_classification/PPLCNet/PPLCNet_x1_0.yaml`中的超参数,训练教师模型,训练脚本如下:
```shell ```shell
export CUDA_VISIBLE_DEVICES=0,1,2,3 export CUDA_VISIBLE_DEVICES=0,1,2,3
python3 -m paddle.distributed.launch \ python3 -m paddle.distributed.launch \
--gpus="0,1,2,3" \ --gpus="0,1,2,3" \
tools/train.py \ tools/train.py \
-c ./ppcls/configs/PULC/multilingual/PPLCNet/PPLCNet_x1_0.yaml \ -c ./ppcls/configs/PULC/language_classification/PPLCNet/PPLCNet_x1_0.yaml \
-o Arch.name=ResNet101_vd -o Arch.name=ResNet101_vd
``` ```
...@@ -210,14 +210,14 @@ python3 -m paddle.distributed.launch \ ...@@ -210,14 +210,14 @@ python3 -m paddle.distributed.launch \
#### 4.1.2 蒸馏训练 #### 4.1.2 蒸馏训练
配置文件`ppcls/configs/PULC/multilingual/PPLCNet_x1_0_distillation.yaml`提供了`SKL-UGI知识蒸馏策略`的配置。该配置将`ResNet101_vd`当作教师模型,`PPLCNet_x1_0`当作学生模型,使用[3.2.2节](#3.2.2)中介绍的蒸馏数据作为新增的无标签数据。训练脚本如下: 配置文件`ppcls/configs/PULC/language_classification/PPLCNet_x1_0_distillation.yaml`提供了`SKL-UGI知识蒸馏策略`的配置。该配置将`ResNet101_vd`当作教师模型,`PPLCNet_x1_0`当作学生模型,使用[3.2.2节](#3.2.2)中介绍的蒸馏数据作为新增的无标签数据。训练脚本如下:
```shell ```shell
export CUDA_VISIBLE_DEVICES=0,1,2,3 export CUDA_VISIBLE_DEVICES=0,1,2,3
python3 -m paddle.distributed.launch \ python3 -m paddle.distributed.launch \
--gpus="0,1,2,3" \ --gpus="0,1,2,3" \
tools/train.py \ tools/train.py \
-c ./ppcls/configs/PULC/multilingual/PPLCNet_x1_0_distillation.yaml \ -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0_distillation.yaml \
-o Arch.models.0.Teacher.pretrained=output/ResNet101_vd/best_model -o Arch.models.0.Teacher.pretrained=output/ResNet101_vd/best_model
``` ```
...@@ -251,15 +251,15 @@ Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端 ...@@ -251,15 +251,15 @@ Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端
```bash ```bash
python3 tools/export_model.py \ python3 tools/export_model.py \
-c ./ppcls/configs/PULC/multilingual/PPLCNet_x1_0.yaml \ -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml \
-o Global.pretrained_model=output/DistillationModel/best_model_student \ -o Global.pretrained_model=output/DistillationModel/best_model_student \
-o Global.save_inference_dir=deploy/models/PPLCNet_x1_0_multilingual_infer -o Global.save_inference_dir=deploy/models/PPLCNet_x1_0_language_classification_infer
``` ```
执行完该脚本后会在`deploy/models/`下生成`PPLCNet_x1_0_multilingual_infer`文件夹,`models` 文件夹下应有如下文件结构: 执行完该脚本后会在`deploy/models/`下生成`PPLCNet_x1_0_language_classification_infer`文件夹,`models` 文件夹下应有如下文件结构:
``` ```
├── PPLCNet_x1_0_multilingual_infer ├── PPLCNet_x1_0_language_classification_infer
│ ├── inference.pdiparams │ ├── inference.pdiparams
│ ├── inference.pdiparams.info │ ├── inference.pdiparams.info
│ └── inference.pdmodel │ └── inference.pdmodel
...@@ -276,13 +276,13 @@ python3 tools/export_model.py \ ...@@ -276,13 +276,13 @@ python3 tools/export_model.py \
``` ```
cd deploy/models cd deploy/models
# 下载inference 模型并解压 # 下载inference 模型并解压
wget https://paddleclas.bj.bcebos.com/models/PULC/multilingual_infer.tar && tar -xf multilingual_infer.tar wget https://paddleclas.bj.bcebos.com/models/PULC/language_classification_infer.tar && tar -xf language_classification_infer.tar
``` ```
解压完毕后,`models` 文件夹下应有如下文件结构: 解压完毕后,`models` 文件夹下应有如下文件结构:
``` ```
├── multilingual_infer ├── language_classification_infer
│ ├── inference.pdiparams │ ├── inference.pdiparams
│ ├── inference.pdiparams.info │ ├── inference.pdiparams.info
│ └── inference.pdmodel │ └── inference.pdmodel
...@@ -302,13 +302,13 @@ wget https://paddleclas.bj.bcebos.com/models/PULC/multilingual_infer.tar && tar ...@@ -302,13 +302,13 @@ wget https://paddleclas.bj.bcebos.com/models/PULC/multilingual_infer.tar && tar
cd ../ cd ../
``` ```
运行下面的命令,对图像 `./images/PULC/multilingual/word_35404.png` 进行整图文字方向分类。 运行下面的命令,对图像 `./images/PULC/language_classification/word_35404.png` 进行整图文字方向分类。
```shell ```shell
# 使用下面的命令使用 GPU 进行预测 # 使用下面的命令使用 GPU 进行预测
python3.7 python/predict_cls.py -c configs/PULC/multilingual/inference_multilingual.yaml python3.7 python/predict_cls.py -c configs/PULC/language_classification/inference_language_classification.yaml
# 使用下面的命令使用 CPU 进行预测 # 使用下面的命令使用 CPU 进行预测
python3.7 python/predict_cls.py -c configs/PULC/multilingual/inference_multilingual.yaml -o Global.use_gpu=False python3.7 python/predict_cls.py -c configs/PULC/language_classification/inference_language_classification.yaml -o Global.use_gpu=False
``` ```
输出结果如下。 输出结果如下。
...@@ -317,7 +317,7 @@ python3.7 python/predict_cls.py -c configs/PULC/multilingual/inference_multiling ...@@ -317,7 +317,7 @@ python3.7 python/predict_cls.py -c configs/PULC/multilingual/inference_multiling
word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): ['japan', 'korean'] word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): ['japan', 'korean']
``` ```
其中,输出为top2的预测结果,`japan` 表示该图中文字语言为日语,`korean` 表示该图中文字语言为韩语。 其中,输出为top2的预测结果,`japan` 表示该图中文字语种为日语,`korean` 表示该图中文字语种为韩语。
<a name="6.2.2"></a> <a name="6.2.2"></a>
...@@ -327,7 +327,7 @@ word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): [ ...@@ -327,7 +327,7 @@ word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): [
```shell ```shell
# 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False # 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False
python3.7 python/predict_cls.py -c configs/PULC/multilingual/inference_multilingual.yaml -o Global.infer_imgs="./images/PULC/multilingual/" python3.7 python/predict_cls.py -c configs/PULC/language_classification/inference_language_classification.yaml -o Global.infer_imgs="./images/PULC/language_classification/"
``` ```
终端中会输出该文件夹内所有图像的分类结果,如下所示。 终端中会输出该文件夹内所有图像的分类结果,如下所示。
...@@ -338,7 +338,7 @@ word_20.png: class id(s): [0, 4], score(s): [0.91, 0.02], label_name(s): ['ar ...@@ -338,7 +338,7 @@ word_20.png: class id(s): [0, 4], score(s): [0.91, 0.02], label_name(s): ['ar
word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): ['japan', 'korean'] word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): ['japan', 'korean']
``` ```
其中,输出为top2的预测结果,`japan` 表示该图中文字语言为日语,`latin` 表示该图中文字语言为拉丁语,`arabic` 表示该图中文字语言为阿拉伯语,`korean` 表示该图中文字语言为韩语。 其中,输出为top2的预测结果,`japan` 表示该图中文字语种为日语,`latin` 表示该图中文字语种为拉丁语,`arabic` 表示该图中文字语种为阿拉伯语,`korean` 表示该图中文字语种为韩语。
<a name="6.3"></a> <a name="6.3"></a>
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
## 1. 模型和应用场景介绍 ## 1. 模型和应用场景介绍
图片拍摄过程中,有时为了拍摄更清晰,会将拍摄设备进行旋转,导致得到的图片也是不同方向的。此时,标准的OCR流程无法很好地应对这些数据。利用图像分类技术,可以预先判断含文字图像的方向,并将其进行方向调整,从而提高OCR处理的准确性。该案例提供了用户使用 PaddleClas 的超轻量图像分类方案(PULC,Practical Ultra Lightweight Classification)快速构建轻量级、高精度、可落地的含文字图像方向的分类模型。该模型可以广泛应用于金融、政务等行业的旋转图片的OCR处理场景中。 诸如文档扫描、证照拍摄等过程中,有时为了拍摄更清晰,会将拍摄设备进行旋转,导致得到的图片也是不同方向的。此时,标准的OCR流程无法很好地应对这些数据。利用图像分类技术,可以预先判断含文字图像的方向,并将其进行方向调整,从而提高OCR处理的准确性。该案例提供了用户使用 PaddleClas 的超轻量图像分类方案(PULC,Practical Ultra Lightweight Classification)快速构建轻量级、高精度、可落地的含文字图像方向的分类模型。该模型可以广泛应用于金融、政务等行业的旋转图片的OCR处理场景中。
下表列出了判断含文字图像方向分类模型的相关指标,前两行展现了使用 SwinTranformer_tiny 和 MobileNetV3_large_x1_0 作为 backbone 训练得到的模型的相关指标,第三行至第五行依次展现了替换 backbone 为 PPLCNet_x1_0、使用 SSLD 预训练模型、使用 SHAS 超参数搜索策略训练得到的模型的相关指标。 下表列出了判断含文字图像方向分类模型的相关指标,前两行展现了使用 SwinTranformer_tiny 和 MobileNetV3_large_x1_0 作为 backbone 训练得到的模型的相关指标,第三行至第五行依次展现了替换 backbone 为 PPLCNet_x1_0、使用 SSLD 预训练模型、使用 SHAS 超参数搜索策略训练得到的模型的相关指标。
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
#### 3.2.1 数据集来源 #### 3.2.1 数据集来源
[第1节](#1)中提供的模型使用内部数据训练得到,该数据集暂时不方便公开。这里基于 [ICDAR2019 ArT](https://ai.baidu.com/broad/introduction?dataset=art)[ICDAR2015](https://rrc.cvc.uab.es/?ch=4&com=introduction) 两个公开数据集构造了一个小规模含文字图像方向分类数据集,用于体验本案例。 [第1节](#1)中提供的模型使用内部数据训练得到,该数据集暂时不方便公开。这里基于 [XFUND](https://github.com/doc-analysis/XFUND)[ICDAR2015](https://rrc.cvc.uab.es/?ch=4&com=introduction) 两个公开数据集构造了一个小规模含文字图像方向分类数据集,用于体验本案例。
![](../../images/PULC/docs/text_image_orientation_original_data.png) ![](../../images/PULC/docs/text_image_orientation_original_data.png)
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
在公开数据集的基础上经过后处理即可得到本案例需要的数据,具体处理方法如下: 在公开数据集的基础上经过后处理即可得到本案例需要的数据,具体处理方法如下:
考虑到原始图片的分辨率较高,模型训练时间较长,这里将所有数据预先进行了缩放处理,在保持长宽比不变的前提下,将短边缩放到384。然后将数据进行顺时针旋转处理,分别生成90度、180度和270度的合成数据。其中,将 ICDAR2019 ArT 生成的40664张数据按照 9:1 的比例随机划分成了训练集和验证集, ICDAR2015 生成的6000张数据作为`SKL-UGI知识蒸馏策略`实验中的补充数据。 考虑到原始图片的分辨率较高,模型训练时间较长,这里将所有数据预先进行了缩放处理,在保持长宽比不变的前提下,将短边缩放到384。然后将数据进行顺时针旋转处理,分别生成90度、180度和270度的合成数据。其中,将 XFUND 生成的796张数据按照 9:1 的比例随机划分成了训练集和验证集, ICDAR2015 生成的6000张数据作为`SKL-UGI知识蒸馏策略`实验中的补充数据。
处理后的数据集部分数据可视化如下: 处理后的数据集部分数据可视化如下:
...@@ -101,12 +101,12 @@ cd path_to_PaddleClas ...@@ -101,12 +101,12 @@ cd path_to_PaddleClas
```shell ```shell
cd dataset cd dataset
wget https://paddleclas.bj.bcebos.com/data/cls_demo/text_image_orientation.tar wget https://paddleclas.bj.bcebos.com/data/cls_demo/text_image_orientation_demo.tar
tar -xf text_image_orientation.tar tar -xf text_image_orientation_demo.tar
cd ../ cd ../
``` ```
执行上述命令后,`dataset/`下存在`text_image_orientation`目录,该目录中具有以下数据: 执行上述命令后,`dataset/`下存在`text_image_orientation_demo`目录,该目录中具有以下数据:
``` ```
├── img_0 ├── img_0
......
...@@ -48,8 +48,8 @@ DataLoader: ...@@ -48,8 +48,8 @@ DataLoader:
Train: Train:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/train_list.txt cls_label_path: ./dataset/language_classification/train_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -77,8 +77,8 @@ DataLoader: ...@@ -77,8 +77,8 @@ DataLoader:
Eval: Eval:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/test_list.txt cls_label_path: ./dataset/language_classification/test_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -102,7 +102,7 @@ DataLoader: ...@@ -102,7 +102,7 @@ DataLoader:
use_shared_memory: True use_shared_memory: True
Infer: Infer:
infer_imgs: deploy/images/PULC/multilingual/word_35404.png infer_imgs: deploy/images/PULC/language_classification/word_35404.png
batch_size: 10 batch_size: 10
transforms: transforms:
- DecodeImage: - DecodeImage:
...@@ -121,7 +121,7 @@ Infer: ...@@ -121,7 +121,7 @@ Infer:
PostProcess: PostProcess:
name: Topk name: Topk
topk: 2 topk: 2
class_id_map_file: dataset/multilingual/label_list.txt class_id_map_file: dataset/language_classification/label_list.txt
Metric: Metric:
Train: Train:
......
...@@ -52,8 +52,8 @@ DataLoader: ...@@ -52,8 +52,8 @@ DataLoader:
Train: Train:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/train_list.txt cls_label_path: ./dataset/language_classification/train_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -92,8 +92,8 @@ DataLoader: ...@@ -92,8 +92,8 @@ DataLoader:
Eval: Eval:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/test_list.txt cls_label_path: ./dataset/language_classification/test_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -115,7 +115,7 @@ DataLoader: ...@@ -115,7 +115,7 @@ DataLoader:
use_shared_memory: True use_shared_memory: True
Infer: Infer:
infer_imgs: deploy/images/PULC/multilingual/word_35404.png infer_imgs: deploy/images/PULC/language_classification/word_35404.png
batch_size: 10 batch_size: 10
transforms: transforms:
- DecodeImage: - DecodeImage:
...@@ -132,7 +132,7 @@ Infer: ...@@ -132,7 +132,7 @@ Infer:
PostProcess: PostProcess:
name: Topk name: Topk
topk: 2 topk: 2
class_id_map_file: dataset/multilingual/label_list.txt class_id_map_file: dataset/language_classification/label_list.txt
Metric: Metric:
Train: Train:
......
...@@ -72,8 +72,8 @@ DataLoader: ...@@ -72,8 +72,8 @@ DataLoader:
Train: Train:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/train_list_for_distill.txt cls_label_path: ./dataset/language_classification/train_list_for_distill.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -112,8 +112,8 @@ DataLoader: ...@@ -112,8 +112,8 @@ DataLoader:
Eval: Eval:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/test_list.txt cls_label_path: ./dataset/language_classification/test_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -135,7 +135,7 @@ DataLoader: ...@@ -135,7 +135,7 @@ DataLoader:
use_shared_memory: True use_shared_memory: True
Infer: Infer:
infer_imgs: deploy/images/PULC/multilingual/word_35404.png infer_imgs: deploy/images/PULC/language_classification/word_35404.png
batch_size: 10 batch_size: 10
transforms: transforms:
- DecodeImage: - DecodeImage:
...@@ -152,7 +152,7 @@ Infer: ...@@ -152,7 +152,7 @@ Infer:
PostProcess: PostProcess:
name: Topk name: Topk
topk: 2 topk: 2
class_id_map_file: dataset/multilingual/label_list.txt class_id_map_file: dataset/language_classification/label_list.txt
Metric: Metric:
Train: Train:
......
...@@ -52,8 +52,8 @@ DataLoader: ...@@ -52,8 +52,8 @@ DataLoader:
Train: Train:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/train_list.txt cls_label_path: ./dataset/language_classification/train_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -92,8 +92,8 @@ DataLoader: ...@@ -92,8 +92,8 @@ DataLoader:
Eval: Eval:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/test_list.txt cls_label_path: ./dataset/language_classification/test_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -115,7 +115,7 @@ DataLoader: ...@@ -115,7 +115,7 @@ DataLoader:
use_shared_memory: True use_shared_memory: True
Infer: Infer:
infer_imgs: deploy/images/PULC/multilingual/word_35404.png infer_imgs: deploy/images/PULC/language_classification/word_35404.png
batch_size: 10 batch_size: 10
transforms: transforms:
- DecodeImage: - DecodeImage:
...@@ -132,7 +132,7 @@ Infer: ...@@ -132,7 +132,7 @@ Infer:
PostProcess: PostProcess:
name: Topk name: Topk
topk: 2 topk: 2
class_id_map_file: dataset/multilingual/label_list.txt class_id_map_file: dataset/language_classification/label_list.txt
Metric: Metric:
Train: Train:
......
...@@ -54,8 +54,8 @@ DataLoader: ...@@ -54,8 +54,8 @@ DataLoader:
Train: Train:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/train_list.txt cls_label_path: ./dataset/language_classification/train_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -104,8 +104,8 @@ DataLoader: ...@@ -104,8 +104,8 @@ DataLoader:
Eval: Eval:
dataset: dataset:
name: ImageNetDataset name: ImageNetDataset
image_root: ./dataset/multilingual/ image_root: ./dataset/language_classification/
cls_label_path: ./dataset/multilingual/test_list.txt cls_label_path: ./dataset/language_classification/test_list.txt
transform_ops: transform_ops:
- DecodeImage: - DecodeImage:
to_rgb: True to_rgb: True
...@@ -131,7 +131,7 @@ DataLoader: ...@@ -131,7 +131,7 @@ DataLoader:
use_shared_memory: True use_shared_memory: True
Infer: Infer:
infer_imgs: deploy/images/PULC/multilingual/word_35404.png infer_imgs: deploy/images/PULC/language_classification/word_35404.png
batch_size: 10 batch_size: 10
transforms: transforms:
- DecodeImage: - DecodeImage:
...@@ -152,7 +152,7 @@ Infer: ...@@ -152,7 +152,7 @@ Infer:
PostProcess: PostProcess:
name: Topk name: Topk
topk: 2 topk: 2
class_id_map_file: dataset/multilingual/label_list.txt class_id_map_file: dataset/language_classification/label_list.txt
Metric: Metric:
Eval: Eval:
......
base_config_file: ppcls/configs/PULC/multilingual/PPLCNet_x1_0_search.yaml base_config_file: ppcls/configs/PULC/language_classification/PPLCNet_x1_0_search.yaml
distill_config_file: ppcls/configs/PULC/multilingual/PPLCNet_x1_0_distillation.yaml distill_config_file: ppcls/configs/PULC/language_classification/PPLCNet_x1_0_distillation.yaml
gpus: 0,1,2,3 gpus: 0,1,2,3
output_dir: output/search_multilingual output_dir: output/search_language_classification
search_times: 1 search_times: 1
search_dict: search_dict:
- search_key: lrs - search_key: lrs
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册