diff --git a/README_ch.md b/README_ch.md index ae431bc1d..178de85e7 100644 --- a/README_ch.md +++ b/README_ch.md @@ -53,6 +53,7 @@ PP-ShiTu图像识别快速体验:[点击这里](./docs/zh_CN/quick_start/quick ## 文档教程 - [环境准备](docs/zh_CN/installation/install_paddleclas.md) - [PULC超轻量图像分类实用方案](docs/zh_CN/PULC/PULC_train.md) + - [超轻量图像分类快速体验](docs/zh_CN/PULC/PULC_quickstart.md) - [超轻量图像分类模型库](docs/zh_CN/PULC/PULC_model_list.md) - [PULC有人/无人分类模型](docs/zh_CN/PULC/PULC_person_exists.md) - [PULC人体属性识别模型](docs/zh_CN/PULC/PULC_person_attribute.md) diff --git a/docs/zh_CN/PULC/PULC_car_exists.md b/docs/zh_CN/PULC/PULC_car_exists.md index 46edd4eb2..7d76bc1c6 100644 --- a/docs/zh_CN/PULC/PULC_car_exists.md +++ b/docs/zh_CN/PULC/PULC_car_exists.md @@ -7,8 +7,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) - - [2.1 安装 paddleclas](#2.1) - - [2.2 预测](#2.2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -59,35 +60,56 @@ * `Tpr`指标的介绍可以参考 [3.2 小节](#3.2)的备注部分,延时是基于 Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 测试得到,开启 MKLDNN 加速策略,线程数为10。 * 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。 - - + + ## 2. 模型快速体验 + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` -使用如下命令快速安装 paddlepaddle, paddleclas +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas + +使用如下命令快速安装 paddleclas ``` -pip3 install paddlepaddle paddleclas +pip3 install paddleclas ``` - + + -### 2.2 预测 +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 * 使用命令行快速预测 ```bash -paddleclas --model_name=car_exists --infer_imgs=deploy/images/PULC/car_exists/objects365_00001507.jpeg +paddleclas --model_name=car_exists --infer_imgs=pulc_demo_imgs/car_exists/objects365_00001507.jpeg ``` 结果如下: ``` >>> result -class_ids: [1], scores: [0.9871138], label_names: ['contains_vehicle'], filename: deploy/images/PULC/car_exists/objects365_00001507.jpeg +class_ids: [1], scores: [0.9871138], label_names: ['contains_car'], filename: pulc_demo_imgs/car_exists/objects365_00001507.jpeg Predict complete! ``` @@ -98,7 +120,7 @@ Predict complete! ```python import paddleclas model = paddleclas.PaddleClas(model_name="car_exists") -result = model.predict(input_data="deploy/images/PULC/car_exists/objects365_00001507.jpeg") +result = model.predict(input_data="pulc_demo_imgs/car_exists/objects365_00001507.jpeg") print(next(result)) ``` @@ -106,8 +128,9 @@ print(next(result)) ``` >>> result -[{'class_ids': [1], 'scores': [0.9871138], 'label_names': ['contains_vehicle'], 'filename': 'deploy/images/PULC/car_exists/objects365_00001507.jpeg'}] +[{'class_ids': [1], 'scores': [0.9871138], 'label_names': ['contains_car'], 'filename': 'pulc_demo_imgs/car_exists/objects365_00001507.jpeg'}] ``` + @@ -411,10 +434,10 @@ python3.7 python/predict_cls.py -c configs/PULC/car_exists/inference_car_exists. ``` objects365_00001507.jpeg: class id(s): [1], score(s): [0.99], label_name(s): ['contains_car'] -objects365_00001521.jpeg: class id(s): [0], score(s): [0.99], label_name(s): ['nocar'] +objects365_00001521.jpeg: class id(s): [0], score(s): [0.99], label_name(s): ['no_car'] ``` -其中,`contains_car` 表示该图里存在车,`nocar` 表示该图里不存在车。 +其中,`contains_car` 表示该图里存在车,`no_car` 表示该图里不存在车。 diff --git a/docs/zh_CN/PULC/PULC_language_classification.md b/docs/zh_CN/PULC/PULC_language_classification.md index 8d35bc936..05b2c5eb4 100644 --- a/docs/zh_CN/PULC/PULC_language_classification.md +++ b/docs/zh_CN/PULC/PULC_language_classification.md @@ -4,8 +4,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) - - [2.1 安装 paddleclas](#2.1) - - [2.2 预测](#2.2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -58,52 +59,72 @@ ## 2. 模型快速体验 - + + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` + +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas 使用如下命令快速安装 paddleclas -``` +``` pip3 install paddleclas -``` +``` + + - +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 -### 2.2 预测 +* 使用命令行快速预测 -- 使用命令行快速预测 - -``` -paddleclas --model_name=language_classification --infer_imgs=deploy/images/PULC/language_classification/word_35404.png +```bash +paddleclas --model_name=language_classification --infer_imgs=pulc_demo_imgs/language_classification/word_35404.png ``` 结果如下: - ``` >>> result -class_ids: [4, 6], scores: [0.88672, 0.01434], label_names: ['japan', 'korean'], filename: deploy/images/PULC/language_classification/word_35404.png +class_ids: [4, 6], scores: [0.88672, 0.01434], label_names: ['japan', 'korean'], filename: pulc_demo_imgs/language_classification/word_35404.png Predict complete! ``` **备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹。 -- 在 Python 代码中预测 -``` +* 在 Python 代码中预测 +```python import paddleclas model = paddleclas.PaddleClas(model_name="language_classification") -result = model.predict(input_data="deploy/images/PULC/language_classification/word_35404.png") +result = model.predict(input_data="pulc_demo_imgs/language_classification/word_35404.png") print(next(result)) ``` -**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="language_classification", batch_size=2)`, 使用默认的代码返回结果示例如下: +**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="language_classification", batch_size=2)`, 使用默认的代码返回结果示例如下: ``` >>> result -[{'class_ids': [4, 6], 'scores': [0.88672, 0.01434], 'label_names': ['japan', 'korean'], 'filename': '/deploy/images/PULC/language_classification/word_35404.png'}] +[{'class_ids': [4, 6], 'scores': [0.88672, 0.01434], 'label_names': ['japan', 'korean'], 'filename': 'pulc_demo_imgs/language_classification/word_35404.png'}] ``` + ## 3. 模型训练、评估和预测 @@ -112,7 +133,7 @@ print(next(result)) ### 3.1 环境配置 -- 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 +* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 @@ -134,7 +155,7 @@ print(next(result)) `0` 表示阿拉伯语(arabic);`1` 表示中文繁体(chinese_cht);`2` 表示斯拉夫语(cyrillic);`3` 表示梵文(devanagari);`4` 表示日语(japan);`5` 表示卡纳达文(ka);`6` 表示韩语(korean);`7` 表示泰米尔文(ta);`8` 表示泰卢固文(te);`9` 表示拉丁语(latin)。 -在 Multi-lingual scene text detection and recognition 数据集中,仅包含了阿拉伯语、日语、韩语和拉丁语数据,这里分别将4个语种的数据各抽取120张作为本案例的训练数据,50张作为测试数据,以及30张作为补充数据和训练数据混合用于本案例的`SKL-UGI知识蒸馏策略`实验。 +在 Multi-lingual scene text detection and recognition 数据集中,仅包含了阿拉伯语、日语、韩语和拉丁语数据,这里分别将 4 个语种的数据各抽取 1600 张作为本案例的训练数据,300 张作为测试数据,以及 400 张作为补充数据和训练数据混合用于本案例的`SKL-UGI知识蒸馏策略`实验。 因此,对于本案例中的demo数据集,类别为: @@ -142,7 +163,7 @@ print(next(result)) 如果想要制作自己的多语种数据集,可以按照需求收集并整理自己任务中需要语种的数据,此处提供了经过上述方法处理好的demo数据,可以直接下载得到。 -**备注:**语种分类任务中的图片数据需要将整图中的文字区域抠取出来,仅仅使用文本行部分作为图片数据。 +**备注:** 语种分类任务中的图片数据需要将整图中的文字区域抠取出来,仅仅使用文本行部分作为图片数据。 进入 PaddleClas 目录。 @@ -172,13 +193,12 @@ cd ../ └── label_list.txt ``` -其中`img/`存放了4种语言总计800张数据。`train_list.txt`和`test_list.txt`分别为训练集和验证集的标签文件,`label_list.txt`是4类语言分类模型对应的类别列表,`SKL-UGI知识蒸馏策略`对应的训练标签文件为`train_list_for_distill.txt`。用这些图片可以快速体验本案例中模型的训练预测过程。 +其中`img/`存放了 4 种语言总计 9200 张数据。`train_list.txt`和`test_list.txt`分别为训练集和验证集的标签文件,`label_list.txt`是 4 类语言分类模型对应的类别列表,`SKL-UGI 知识蒸馏策略`对应的训练标签文件为`train_list_for_distill.txt`。用这些图片可以快速体验本案例中模型的训练预测过程。 ***备注:*** - 这里的`label_list.txt`是4类语种分类模型对应的类别列表,如果自己构造的数据集语种类别发生变化,需要自行调整。 - 如果想要自己构造训练集和验证集,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。 -- 当使用本文档中的demo数据集时,需要添加`-o Arch.class_num=4`来将模型的类别书指定为4。 @@ -191,9 +211,12 @@ export CUDA_VISIBLE_DEVICES=0,1,2,3 python3 -m paddle.distributed.launch \ --gpus="0,1,2,3" \ tools/train.py \ - -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml + -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml \ + -o Arch.class_num=4 ``` +- 由于本文档中的demo数据集的类别数量为 4,所以需要添加`-o Arch.class_num=4`来将模型的类别数量指定为4。 + ### 3.4 模型评估 @@ -203,7 +226,8 @@ python3 -m paddle.distributed.launch \ ```bash python3 tools/eval.py \ -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" \ + -o Arch.class_num=4 ``` 其中 `-o Global.pretrained_model="output/PPLCNet_x1_0/best_model"` 指定了当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。 @@ -217,7 +241,8 @@ python3 tools/eval.py \ ```bash python3 tools/infer.py \ -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" \ + -o Arch.class_num=4 ``` 输出结果如下: @@ -253,8 +278,9 @@ export CUDA_VISIBLE_DEVICES=0,1,2,3 python3 -m paddle.distributed.launch \ --gpus="0,1,2,3" \ tools/train.py \ - -c ./ppcls/configs/PULC/language_classification/PPLCNet/PPLCNet_x1_0.yaml \ - -o Arch.name=ResNet101_vd + -c ./ppcls/configs/PULC/language_classification/PPLCNet_x1_0.yaml \ + -o Arch.name=ResNet101_vd \ + -o Arch.class_num=4 ``` 当前教师模型最好的权重保存在`output/ResNet101_vd/best_model.pdparams`。 @@ -273,7 +299,8 @@ python3 -m paddle.distributed.launch \ --gpus="0,1,2,3" \ tools/train.py \ -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 \ + -o Arch.class_num=4 ``` 当前模型最好的权重保存在`output/DistillationModel/best_model_student.pdparams`。 diff --git a/docs/zh_CN/PULC/PULC_person_attribute.md b/docs/zh_CN/PULC/PULC_person_attribute.md index b7f09dd9f..e3f4d1369 100644 --- a/docs/zh_CN/PULC/PULC_person_attribute.md +++ b/docs/zh_CN/PULC/PULC_person_attribute.md @@ -7,6 +7,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -59,37 +62,55 @@ * 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。 - - -## 2. 模型快速体验 - ## 2. 模型快速体验 + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` -使用如下命令快速安装 paddlepaddle, paddleclas +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas + +使用如下命令快速安装 paddleclas ``` -pip3 install paddlepaddle paddleclas -``` - +pip3 install paddleclas +``` + + -### 2.2 预测 +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 * 使用命令行快速预测 ```bash -paddleclas --model_name=person_attribute --infer_imgs=deploy/images/PULC/person_attribute/090004.jpg +paddleclas --model_name=person_attribute --infer_imgs=pulc_demo_imgs/person_attribute/090004.jpg ``` 结果如下: ``` >>> result -待补充 +attributes: ['Male', 'Age18-60', 'Back', 'Glasses: False', 'Hat: False', 'HoldObjectsInFront: False', 'Backpack', 'Upper: LongSleeve UpperPlaid', 'Lower: Trousers', 'No boots'], output: [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1], filename: pulc_demo_imgs/person_attribute/090004.jpg +Predict complete! ``` **备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹。 @@ -99,7 +120,7 @@ paddleclas --model_name=person_attribute --infer_imgs=deploy/images/PULC/person_ ```python import paddleclas model = paddleclas.PaddleClas(model_name="person_attribute") -result = model.predict(input_data="deploy/images/PULC/person_attribute/090004.jpg") +result = model.predict(input_data="pulc_demo_imgs/person_attribute/090004.jpg") print(next(result)) ``` @@ -107,7 +128,7 @@ print(next(result)) ``` >>> result -待补充 +[{'attributes': ['Male', 'Age18-60', 'Back', 'Glasses: False', 'Hat: False', 'HoldObjectsInFront: False', 'Backpack', 'Upper: LongSleeve UpperPlaid', 'Lower: Trousers', 'No boots'], 'output': [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1], 'filename': 'pulc_demo_imgs/person_attribute/090004.jpg'}] ``` diff --git a/docs/zh_CN/PULC/PULC_person_exists.md b/docs/zh_CN/PULC/PULC_person_exists.md index cdfe92cab..fd6963b9d 100644 --- a/docs/zh_CN/PULC/PULC_person_exists.md +++ b/docs/zh_CN/PULC/PULC_person_exists.md @@ -7,8 +7,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) - - [2.1 安装 paddleclas](#2.1) - - [2.2 预测](#2.2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -66,28 +67,49 @@ ## 2. 模型快速体验 + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` -使用如下命令快速安装 paddlepaddle, paddleclas +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas + +使用如下命令快速安装 paddleclas ``` -pip3 install paddlepaddle paddleclas -``` - +pip3 install paddleclas +``` + + -### 2.2 预测 +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 * 使用命令行快速预测 ```bash -paddleclas --model_name=person_exists --infer_imgs=deploy/images/PULC/person_exists/objects365_01780782.jpg +paddleclas --model_name=person_exists --infer_imgs=pulc_demo_imgs/person_exists/objects365_01780782.jpg ``` 结果如下: ``` >>> result -class_ids: [0], scores: [0.9955421453341842], label_names: ['nobody'], filename: deploy/images/PULC/person_exists/objects365_01780782.jpg +class_ids: [0], scores: [0.9955421453341842], label_names: ['nobody'], filename: pulc_demo_imgs/person_exists/objects365_01780782.jpg Predict complete! ``` @@ -98,7 +120,7 @@ Predict complete! ```python import paddleclas model = paddleclas.PaddleClas(model_name="person_exists") -result = model.predict(input_data="deploy/images/PULC/person_exists/objects365_01780782.jpg") +result = model.predict(input_data="pulc_demo_imgs/person_exists/objects365_01780782.jpg") print(next(result)) ``` @@ -106,7 +128,7 @@ print(next(result)) ``` >>> result -[{'class_ids': [0], 'scores': [0.9955421453341842], 'label_names': ['nobody'], 'filename': 'PaddleClas/deploy/images/PULC/person_exists/objects365_01780782.jpg'}] +[{'class_ids': [0], 'scores': [0.9955421453341842], 'label_names': ['nobody'], 'filename': 'pulc_demo_imgs/person_exists/objects365_01780782.jpg'}] ``` diff --git a/docs/zh_CN/PULC/PULC_safety_helmet.md b/docs/zh_CN/PULC/PULC_safety_helmet.md index 976b9241a..a7f348beb 100644 --- a/docs/zh_CN/PULC/PULC_safety_helmet.md +++ b/docs/zh_CN/PULC/PULC_safety_helmet.md @@ -6,6 +6,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -58,52 +61,74 @@ * 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。 + ## 2. 模型快速体验 + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` + +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas 使用如下命令快速安装 paddleclas ``` -pip3 install paddlepaddle paddleclas -``` +pip3 install paddleclas +``` + + - - -### 2.2 预测 +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 * 使用命令行快速预测 ```bash -paddleclas --model_name=safety_helmet --infer_imgs=deploy/images/PULC/safety_helmet/safety_helmet_test_1.png +paddleclas --model_name=safety_helmet --infer_imgs=pulc_demo_imgs/safety_helmet/safety_helmet_test_1.png ``` 结果如下: ``` >>> result -class_ids: [1], scores: [0.9986255], label_names: ['unwearing_helmet'], filename: deploy/images/PULC/safety_helmet/safety_helmet_test_1.png +class_ids: [1], scores: [0.9986255], label_names: ['unwearing_helmet'], filename: pulc_demo_imgs/safety_helmet/safety_helmet_test_1.png Predict complete! ``` -**备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xxx` 中的字段即可,支持传入整个文件夹。 +**备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹。 + * 在 Python 代码中预测 ```python import paddleclas model = paddleclas.PaddleClas(model_name="safety_helmet") -result = model.predict(input_data="deploy/images/PULC/safety_helmet/safety_helmet_test_1.png") +result = model.predict(input_data="pulc_demo_imgs/safety_helmet/safety_helmet_test_1.png") print(next(result)) ``` -**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="safety_helmet", batch_size=2)`, 使用上述测试代码返回结果示例如下: +**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="safety_helmet", batch_size=2)`, 使用默认的代码返回结果示例如下: ``` >>> result -[{'class_ids': [1], 'scores': [0.9986255], 'label_names': ['unwearing_helmet'], 'filename': 'deploy/images/PULC/safety_helmet/safety_helmet_test_1.png'}] +[{'class_ids': [1], 'scores': [0.9986255], 'label_names': ['unwearing_helmet'], 'filename': 'pulc_demo_imgs/safety_helmet/safety_helmet_test_1.png'}] ``` @@ -114,7 +139,7 @@ print(next(result)) ### 3.1 环境配置 -* 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 +* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 @@ -349,7 +374,7 @@ cd ../ ```shell # 使用下面的命令使用 GPU 进行预测 -python3.7 python/predict_cls.py -c configs/PULC/safety_helmet/inference_safety_helmet.yaml +c # 使用下面的命令使用 CPU 进行预测 python3.7 python/predict_cls.py -c configs/PULC/safety_helmet/inference_safety_helmet.yaml -o Global.use_gpu=False ``` diff --git a/docs/zh_CN/PULC/PULC_text_image_orientation.md b/docs/zh_CN/PULC/PULC_text_image_orientation.md index 295cc2828..9b398b50d 100644 --- a/docs/zh_CN/PULC/PULC_text_image_orientation.md +++ b/docs/zh_CN/PULC/PULC_text_image_orientation.md @@ -4,8 +4,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) - - [2.1 安装 paddleclas](#2.1) - - [2.2 预测](#2.2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -57,50 +58,69 @@ ## 2. 模型快速体验 - + + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` + +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas 使用如下命令快速安装 paddleclas -``` +``` pip3 install paddleclas -``` +``` + + - +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 -### 2.2 预测 +* 使用命令行快速预测 -- 使用命令行快速预测 - -``` -paddleclas --model_name=text_image_orientation --infer_imgs=deploy/images/PULC/text_image_orientation/img_rot0_demo.jpg +```bash +paddleclas --model_name=text_image_orientation --infer_imgs=pulc_demo_imgs/text_image_orientation/img_rot0_demo.jpg ``` 结果如下: - ``` >>> result -class_ids: [0, 2], scores: [0.85615, 0.05046], label_names: ['0', '180'], filename: deploy/images/PULC/text_image_orientation/img_rot0_demo.jpg +class_ids: [0, 2], scores: [0.85615, 0.05046], label_names: ['0', '180'], filename: pulc_demo_imgs/text_image_orientation/img_rot0_demo.jpg Predict complete! ``` **备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹。 -- 在 Python 代码中预测 -``` +* 在 Python 代码中预测 +```python import paddleclas model = paddleclas.PaddleClas(model_name="text_image_orientation") -result = model.predict(input_data="deploy/images/PULC/text_image_orientation/img_rot0_demo.jpg") +result = model.predict(input_data="pulc_demo_imgs/text_image_orientation/img_rot0_demo.jpg") print(next(result)) ``` -**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="text_image_orientation", batch_size=2)`, 使用默认的代码返回结果示例如下: +**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="text_image_orientation", batch_size=2)`, 使用默认的代码返回结果示例如下: ``` >>> result -[{'class_ids': [0, 2], 'scores': [0.85615, 0.05046], 'label_names': ['0', '180'], 'filename': 'deploy/images/PULC/text_image_orientation/img_rot0_demo.jpg'}] +[{'class_ids': [0, 2], 'scores': [0.85615, 0.05046], 'label_names': ['0', '180'], 'filename': 'pulc_demo_imgs/text_image_orientation/img_rot0_demo.jpg'}] ``` @@ -111,7 +131,7 @@ print(next(result)) ### 3.1 环境配置 -- 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 +* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 @@ -209,7 +229,7 @@ python3 -m paddle.distributed.launch \ 验证集的最佳指标在0.99左右。 -**备注**:本文档中提到的训练指标均为在大规模内部数据上的训练指标,使用demo数据训练时,由于数据集规模较小且分布与大规模内部数据不同,无法达到该指标。可以进一步扩充自己的数据并且使用本案例中介绍的优化方法进行调优,从而达到更高的精度。 +**备注**:本文档中提到的训练指标均为在大规模内部数据上的训练指标,使用 demo 数据训练时,由于数据集规模较小且分布与大规模内部数据不同,无法达到该指标。可以进一步扩充自己的数据并且使用本案例中介绍的优化方法进行调优,从而达到更高的精度。 @@ -274,15 +294,15 @@ python3 -m paddle.distributed.launch \ -o Arch.name=ResNet101_vd ``` -验证集的最佳指标为0.996左右,当前教师模型最好的权重保存在`output/ResNet101_vd/best_model.pdparams`。 +验证集的最佳指标为 0.996 左右,当前教师模型最好的权重保存在`output/ResNet101_vd/best_model.pdparams`。 -**备注:** 训练ResNet101_vd模型需要的显存较多,如果机器显存不够,可以将学习率和 batch size 同时缩小一定的倍数进行训练。 +**备注:** 训练 ResNet101_vd 模型需要的显存较多,如果机器显存不够,可以将学习率和 batch size 同时缩小一定的倍数进行训练。如在命令后添加以下参数 `-o DataLoader.Train.sampler.batch_size=64`, `Optimizer.lr.learning_rate=0.1`。 #### 4.1.2 蒸馏训练 -配置文件`ppcls/configs/PULC/text_image_orientation/PPLCNet_x1_0_distillation.yaml`提供了`SKL-UGI知识蒸馏策略`的配置。该配置将`ResNet101_vd`当作教师模型,`PPLCNet_x1_0`当作学生模型,使用[3.2.2节](#3.2.2)中介绍的蒸馏数据作为新增的无标签数据。训练脚本如下: +配置文件`ppcls/configs/PULC/text_image_orientation/PPLCNet_x1_0_distillation.yaml`提供了`SKL-UGI 知识蒸馏策略`的配置。该配置将 `ResNet101_vd` 当作教师模型,`PPLCNet_x1_0` 当作学生模型,使用[3.2.2节](#3.2.2)中介绍的蒸馏数据作为新增的无标签数据。训练脚本如下: ```shell export CUDA_VISIBLE_DEVICES=0,1,2,3 diff --git a/docs/zh_CN/PULC/PULC_textline_orientation.md b/docs/zh_CN/PULC/PULC_textline_orientation.md index 390cf1c92..f443b5f34 100644 --- a/docs/zh_CN/PULC/PULC_textline_orientation.md +++ b/docs/zh_CN/PULC/PULC_textline_orientation.md @@ -7,6 +7,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -64,30 +67,50 @@ ## 2. 模型快速体验 - + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 -### 2.1 安装 paddleclas +```bash +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple +``` -使用如下命令快速安装 paddlepaddle, paddleclas +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas + +使用如下命令快速安装 paddleclas ``` -pip3 install paddlepaddle paddleclas -``` - +pip3 install paddleclas +``` + + -### 2.2 预测 +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 * 使用命令行快速预测 ```bash -paddleclas --model_name=textline_orientation --infer_imgs=deploy/images/PULC/textline_orientation/textline_orientation_test_0_0.png +paddleclas --model_name=textline_orientation --infer_imgs=pulc_demo_imgs/textline_orientation/textline_orientation_test_0_0.png ``` 结果如下: ``` >>> result -class_ids: [0], scores: [1.00], label_names: ['0_degree'], filename: deploy/images/PULC/textline_orientation/textline_orientation_test_0_0.png +class_ids: [0], scores: [1.0], label_names: ['0_degree'], filename: pulc_demo_imgs/textline_orientation/textline_orientation_test_0_0.png Predict complete! ``` @@ -98,18 +121,17 @@ Predict complete! ```python import paddleclas model = paddleclas.PaddleClas(model_name="textline_orientation") -result = model.predict(input_data="deploy/images/PULC/textline_orientation/textline_orientation_test_0_0.png") +result = model.predict(input_data="pulc_demo_imgs/textline_orientation/textline_orientation_test_0_0.png") print(next(result)) ``` -**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="person_exists", batch_size=2)`, 使用默认的代码返回结果示例如下: +**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="textline_orientation", batch_size=2)`, 使用默认的代码返回结果示例如下: ``` >>> result -[{'class_ids': [0], 'scores': [1.00], 'label_names': ['0_degree'], 'filename': 'deploy/images/PULC/textline_orientation/textline_orientation_test_0_0.png'}] +[{'class_ids': [0], 'scores': [1.0], 'label_names': ['0_degree'], 'filename': 'pulc_demo_imgs/textline_orientation/textline_orientation_test_0_0.png'}] ``` - ## 3. 模型训练、评估和预测 diff --git a/docs/zh_CN/PULC/PULC_traffic_sign.md b/docs/zh_CN/PULC/PULC_traffic_sign.md index b2faa7501..5c04bc5c6 100644 --- a/docs/zh_CN/PULC/PULC_traffic_sign.md +++ b/docs/zh_CN/PULC/PULC_traffic_sign.md @@ -7,6 +7,9 @@ - [1. 模型和应用场景介绍](#1) - [2. 模型快速体验](#2) + - [2.1 安装 paddlepaddle](#2.1) + - [2.2 安装 paddleclas](#2.2) + - [2.3 预测](#2.3) - [3. 模型训练、评估和预测](#3) - [3.1 环境配置](#3.1) - [3.2 数据准备](#3.2) @@ -63,28 +66,50 @@ ## 2. 模型快速体验 - -### 2.1 安装 paddleclas - -使用如下命令快速安装 paddlepaddle, paddleclas + +### 2.1 安装 paddlepaddle + +- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 ```bash -pip3 install paddlepaddle paddleclas +python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple ``` - -### 2.2 预测 +- 您的机器是CPU,请运行以下命令安装 + +```bash +python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +``` + +更多的版本需求,请参照[飞桨官网安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 + + + +### 2.2 安装 paddleclas + +使用如下命令快速安装 paddleclas + +``` +pip3 install paddleclas +``` + + + +### 2.3 预测 + +点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载 demo 数据并解压,然后在终端中切换到相应目录。 * 使用命令行快速预测 ```bash -paddleclas --model_name traffic_sign --infer_imgs deploy/images/PULC/traffic_sign/100999_83928.jpg +paddleclas --model_name=traffic_sign --infer_imgs=pulc_demo_imgs/traffic_sign/100999_83928.jpg ``` 结果如下: ``` >>> result -class_ids: [182, 179, 162, 128, 24], scores: [0.98623, 0.01255, 0.00022, 0.00021, 0.00012], label_names: ['pl110', 'pl100', 'pl120', 'p26', 'pm10'], filename: deploy/images/PULC/traffic_sign/100999_83928.jpg +class_ids: [182, 179, 162, 128, 24], scores: [0.98623, 0.01255, 0.00022, 0.00021, 0.00012], label_names: ['pl110', 'pl100', 'pl120', 'p26', 'pm10'], filename: pulc_demo_imgs/traffic_sign/100999_83928.jpg +Predict complete! ``` **备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹。 @@ -94,15 +119,15 @@ class_ids: [182, 179, 162, 128, 24], scores: [0.98623, 0.01255, 0.00022, 0.00021 ```python import paddleclas model = paddleclas.PaddleClas(model_name="traffic_sign") -result = model.predict(input_data="deploy/images/PULC/traffic_sign/100999_83928.jpg") +result = model.predict(input_data="pulc_demo_imgs/traffic_sign/100999_83928.jpg") print(next(result)) ``` -**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="person_exists", batch_size=2)`, 使用默认的代码返回结果示例如下: +**备注**:`model.predict()` 为可迭代对象(`generator`),因此需要使用 `next()` 函数或 `for` 循环对其迭代调用。每次调用将以 `batch_size` 为单位进行一次预测,并返回预测结果, 默认 `batch_size` 为 1,如果需要更改 `batch_size`,实例化模型时,需要指定 `batch_size`,如 `model = paddleclas.PaddleClas(model_name="traffic_sign", batch_size=2)`, 使用默认的代码返回结果示例如下: ``` -result -[{'class_ids': [182, 179, 162, 128, 24], 'scores': [0.98623, 0.01255, 0.00022, 0.00021, 0.00012], 'label_names': ['pl110', 'pl100', 'pl120', 'p26', 'pm10'], 'filename': 'deploy/images/PULC/traffic_sign/100999_83928.jpg'}] +>>> result +[{'class_ids': [182, 179, 162, 128, 24], 'scores': [0.98623, 0.01255, 0.00022, 0.00021, 0.00012], 'label_names': ['pl110', 'pl100', 'pl120', 'p26', 'pm10'], 'filename': 'pulc_demo_imgs/traffic_sign/100999_83928.jpg'}] ``` diff --git a/docs/zh_CN/PULC/PULC_train.md b/docs/zh_CN/PULC/PULC_train.md index 06142f19b..66a03cb38 100644 --- a/docs/zh_CN/PULC/PULC_train.md +++ b/docs/zh_CN/PULC/PULC_train.md @@ -24,7 +24,7 @@ 图像分类是计算机视觉的基础算法之一,是企业应用中最常见的算法,也是许多 CV 应用的重要组成部分。近年来,骨干网络模型发展迅速,ImageNet 的精度纪录被不断刷新。然而,这些模型在实用场景的表现有时却不尽如人意。一方面,精度高的模型往往体积大,运算慢,常常难以满足实际部署需求;另一方面,选择了合适的模型之后,往往还需要经验丰富的工程师进行调参,费时费力。PaddleClas 为了解决企业应用难题,让分类模型的训练和调参更加容易,总结推出了实用轻量图像分类解决方案(PULC, Practical Ultra Lightweight Classification)。PULC融合了骨干网络、数据增广、蒸馏等多种前沿算法,可以自动训练得到轻量且高精度的图像分类模型。 -PULC 方案在人、车、OCR等方向的多个场景中均验证有效,用超轻量模型就可实现与SwinTransformer模型接近的精度,预测速度提高 40+ 倍。 +PULC 方案在人、车、OCR等方向的多个场景中均验证有效,用超轻量模型就可实现与 SwinTransformer 模型接近的精度,预测速度提高 40+ 倍。