Merge branch 'PaddlePaddle:develop' into develop
commit
c43146f14f
17
README_ch.md
17
README_ch.md
|
@ -25,13 +25,8 @@ PP-ShiTu图像识别系统效果展示
|
|||
- 🔥️ 2022.6.15 发布PULC超轻量图像分类方案,CPU推理3ms,精度比肩SwinTransformer,覆盖人、车、OCR场景九大常见任务。
|
||||
- 2022.5.26 [飞桨产业实践范例直播课](http://aglc.cn/v-c4FAR),解读**超轻量重点区域人员出入管理方案**。
|
||||
- 2022.5.23 新增[人员出入管理范例库](https://aistudio.baidu.com/aistudio/projectdetail/4094475),具体内容可以在 AI Stuio 上体验。
|
||||
- 2022.5.20 上线[PP-HGNet](./docs/zh_CN/models/PP-HGNet.md), [PP-LCNet v2](./docs/zh_CN/models/PP-LCNetV2.md)。
|
||||
- 2022.5.20 上线[PP-HGNet](./docs/zh_CN/models/PP-HGNet.md), [PP-LCNetv2](./docs/zh_CN/models/PP-LCNetV2.md)。
|
||||
- 2022.4.21 新增 CVPR2022 oral论文 [MixFormer](https://arxiv.org/pdf/2204.02557.pdf) 相关[代码](https://github.com/PaddlePaddle/PaddleClas/pull/1820/files)。
|
||||
- 2022.1.27 全面升级文档;新增[PaddleServing C++ pipeline部署方式](./deploy/paddleserving)和[18M图像识别安卓部署Demo](./deploy/lite_shitu)。
|
||||
- 2021.11.1 发布[PP-ShiTu技术报告](https://arxiv.org/pdf/2111.00775.pdf),新增饮料识别demo。
|
||||
- 2021.10.23 发布轻量级图像识别系统PP-ShiTu,CPU上0.2s即可完成在10w+库的图像识别。
|
||||
[点击这里](./docs/zh_CN/quick_start/quick_start_recognition.md)立即体验。
|
||||
- 2021.09.17 发布PP-LCNet系列超轻量骨干网络模型, 在Intel CPU上,单张图像预测速度约5ms,ImageNet-1K数据集上Top1识别准确率达到80.82%,超越ResNet152的模型效果。PP-LCNet的介绍可以参考[论文](https://arxiv.org/pdf/2109.15099.pdf), 或者[PP-LCNet模型介绍](docs/zh_CN/models/PP-LCNet.md),相关指标和预训练权重可以从 [这里](docs/zh_CN/algorithm_introduction/ImageNet_models.md)下载。
|
||||
- [more](./docs/zh_CN/others/update_history.md)
|
||||
|
||||
## 特性
|
||||
|
@ -51,16 +46,16 @@ PP-ShiTu图像识别系统效果展示
|
|||
|
||||
## 快速体验
|
||||
|
||||
PULC超轻量图像分类方案快速体验:[点击这里](docs/zh_CN/PULC/PULC_person_exists.md)。
|
||||
PULC超轻量图像分类方案快速体验:[点击这里](docs/zh_CN/PULC/PULC_quickstart.md)
|
||||
|
||||
PP-ShiTu图像识别快速体验:[点击这里](./docs/zh_CN/quick_start/quick_start_recognition.md)。
|
||||
PP-ShiTu图像识别快速体验:[点击这里](./docs/zh_CN/quick_start/quick_start_recognition.md)
|
||||
|
||||
## 文档教程
|
||||
- [环境准备](docs/zh_CN/installation/install_paddleclas.md)
|
||||
- PULC超轻量图像分类实用方案 文档更新中
|
||||
- 超轻量图像分类模型库 文档更新中
|
||||
- [超轻量图像分类模型库](docs/zh_CN/installation/PULC_model_list.md)
|
||||
- [PULC有人/无人分类模型](docs/zh_CN/PULC/PULC_person_exists.md)
|
||||
- PULC人体属性识别模型 文档更新中
|
||||
- [PULC人体属性识别模型](docs/zh_CN/PULC/PULC_person_attribute.md)
|
||||
- [PULC佩戴安全帽分类模型](docs/zh_CN/PULC/PULC_safety_helmet.md)
|
||||
- [PULC交通标志分类模型](docs/zh_CN/PULC/PULC_traffic_sign.md)
|
||||
- [PULC车辆属性识别模型](docs/zh_CN/PULC/PULC_vehicle_attribute.md)
|
||||
|
@ -92,7 +87,7 @@ PP-ShiTu图像识别快速体验:[点击这里](./docs/zh_CN/quick_start/quick
|
|||
- 模型压缩 文档更新中
|
||||
- PP系列骨干网络模型
|
||||
- [PP-HGNet](docs/zh_CN/models/PP-HGNet.md)
|
||||
- [PP-LCNet v2](docs/zh_CN/models/PP-LCNetV2.md)
|
||||
- [PP-LCNetv2](docs/zh_CN/models/PP-LCNetV2.md)
|
||||
- [PP-LCNet](docs/zh_CN/models/PP-LCNet.md)
|
||||
- [SSLD半监督知识蒸馏方案](docs/zh_CN/advanced_tutorials/ssld.md)
|
||||
- 前沿算法
|
||||
|
|
|
@ -28,6 +28,6 @@ PostProcess:
|
|||
main_indicator: Topk
|
||||
Topk:
|
||||
topk: 2
|
||||
class_id_map_file: "../dataset/language_classification/label_list.txt"
|
||||
class_id_map_file: "../ppcls/utils/PULC_label_list/language_classification_label_list.txt"
|
||||
SavePreLabel:
|
||||
save_dir: ./pre_label/
|
||||
|
|
|
@ -30,6 +30,6 @@ PostProcess:
|
|||
main_indicator: Topk
|
||||
Topk:
|
||||
topk: 2
|
||||
class_id_map_file: "../dataset/text_image_orientation/label_list.txt"
|
||||
class_id_map_file: "../ppcls/utils/PULC_label_list/text_image_orientation_label_list.txt"
|
||||
SavePreLabel:
|
||||
save_dir: ./pre_label/
|
||||
|
|
|
@ -28,6 +28,6 @@ PostProcess:
|
|||
main_indicator: Topk
|
||||
Topk:
|
||||
topk: 1
|
||||
class_id_map_file: "../ppcls/utils/PULC/textline_orientation_label_list.txt"
|
||||
class_id_map_file: "../ppcls/utils/PULC_label_list/textline_orientation_label_list.txt"
|
||||
SavePreLabel:
|
||||
save_dir: ./pre_label/
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
Global:
|
||||
infer_imgs: "./images/PULC/vehicle_exists/objects365_00001507.jpeg"
|
||||
inference_model_dir: "./models/vehicle_exists_infer"
|
||||
batch_size: 1
|
||||
use_gpu: True
|
||||
enable_mkldnn: False
|
||||
cpu_num_threads: 10
|
||||
enable_benchmark: True
|
||||
use_fp16: False
|
||||
ir_optim: True
|
||||
use_tensorrt: False
|
||||
gpu_mem: 8000
|
||||
enable_profile: False
|
||||
|
||||
PreProcess:
|
||||
transform_ops:
|
||||
- ResizeImage:
|
||||
resize_short: 256
|
||||
- CropImage:
|
||||
size: 224
|
||||
- NormalizeImage:
|
||||
scale: 0.00392157
|
||||
mean: [0.485, 0.456, 0.406]
|
||||
std: [0.229, 0.224, 0.225]
|
||||
order: ''
|
||||
channel_num: 3
|
||||
- ToCHWImage:
|
||||
|
||||
PostProcess:
|
||||
main_indicator: ThreshOutput
|
||||
ThreshOutput:
|
||||
threshold: 0.5
|
||||
label_0: no_vehicle
|
||||
label_1: contains_vehicle
|
||||
SavePreLabel:
|
||||
save_dir: ./pre_label/
|
Binary file not shown.
After Width: | Height: | Size: 157 KiB |
Binary file not shown.
After Width: | Height: | Size: 178 KiB |
|
@ -1,12 +1,12 @@
|
|||
# PULC语种分类模型
|
||||
# PULC 语种分类模型
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 模型和应用场景介绍](#1)
|
||||
- [2. 模型快速体验](#2)
|
||||
- [1. 模型和应用场景介绍](#1)
|
||||
- [2. 模型快速体验](#2)
|
||||
- [2.1 安装 paddleclas](#2.1)
|
||||
- [2.2 预测](#2.2)
|
||||
- [3. 模型训练、评估和预测](#3)
|
||||
- [3. 模型训练、评估和预测](#3)
|
||||
- [3.1 环境配置](#3.1)
|
||||
- [3.2 数据准备](#3.2)
|
||||
- [3.2.1 数据集来源](#3.2.1)
|
||||
|
@ -73,14 +73,14 @@ pip3 install paddleclas
|
|||
- 使用命令行快速预测
|
||||
|
||||
```
|
||||
paddleclas --model_name=language_classification --infer_imgs=deploy/images/PULC/language_classification/img_rot0_demo.jpg
|
||||
paddleclas --model_name=language_classification --infer_imgs=deploy/images/PULC/language_classification/word_35404.png
|
||||
```
|
||||
|
||||
结果如下:
|
||||
|
||||
```
|
||||
>>> result
|
||||
class_ids: [4, 9], scores: [0.96809, 0.01001], label_names: ['japan', 'latin'], filename: deploy/images/PULC/language_classification/word_35404.png
|
||||
class_ids: [4, 6], scores: [0.88672, 0.01434], label_names: ['japan', 'korean'], filename: deploy/images/PULC/language_classification/word_35404.png
|
||||
Predict complete!
|
||||
```
|
||||
|
||||
|
@ -99,7 +99,7 @@ print(next(result))
|
|||
|
||||
```
|
||||
>>> result
|
||||
[{'class_ids': [4, 9], 'scores': [0.96809, 0.01001], 'label_names': ['japan', 'latin'], 'filename': 'deploy/images/PULC/language_classification/word_35404.png'}]
|
||||
[{'class_ids': [4, 6], 'scores': [0.88672, 0.01434], 'label_names': ['japan', 'korean'], 'filename': '/deploy/images/PULC/language_classification/word_35404.png'}]
|
||||
```
|
||||
|
||||
<a name="3"></a>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# PULC 模型库
|
||||
|
||||
------
|
||||
|
||||
此处提供了 PULC 模型库的相关指标和模型的下载链接,其中预训练模型可以用来微调训练,推理模型可以直接用来预测和部署。
|
||||
|
||||
|
||||
|模型名称|模型简介|模型精度 |模型大小|推理耗时|下载地址|
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| person_exists |[PULC有人/无人分类模型](PULC_person_exists.md)| 95.60 |6.5M|2.58ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/person_exists_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/person_exists_pretrained.pdparams)|
|
||||
| person_attribute |[PULC人体属性识别模型](PULC_person_attribute.md)| 78.59 |6.6M|2.01ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/person_attribute_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/person_attribute_pretrained.pdparams)|
|
||||
| safety_helmet |[PULC佩戴安全帽分类模型](PULC_safety_helmet.md)| 99.38 |6.5M|2.03ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/safety_helmet_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/safety_helmet_pretrained.pdparams)|
|
||||
| traffic_sign |[PULC交通标志分类模型](PULC_traffic_sign.md)| 98.35 |8.2M|2.10ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/traffic_sign_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/traffic_sign_pretrained.pdparams)|
|
||||
| vehicle_attribute |[PULC车辆属性识别模型](PULC_vehicle_attribute.md)| 90.81 |7.2M|2.36ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/vehicle_attribute_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/vehicle_attribute_pretrained.pdparams)|
|
||||
| vehicle_exists |PULC有车/无车分类模型 | 95.72 | 6.6M | 2.38ms |[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/vehicle_exists_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/vehicle_exists_pretrained.pdparams)|
|
||||
| text_image_orientation |[PULC含文字图像方向分类模型](PULC_text_image_orientation.md)| 99.06 | 6.5M | 2.16ms |[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/text_image_orientation_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/text_image_orientation_pretrained.pdparams)|
|
||||
| textline_orientation |[PULC文本行方向分类模型](PULC_textline_orientation.md)| 96.01 |6.5M|2.72ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/textline_orientation_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/textline_orientation_pretrained.pdparams)|
|
||||
| language_classification |[PULC语种分类模型](PULC_language_classification.md)| 99.26 |6.5M|2.58ms|[推理模型](https://paddleclas.bj.bcebos.com/models/PULC/inference/language_classification_infer.tar) / [预训练模型](https://paddleclas.bj.bcebos.com/models/PULC/pretrained/language_classification_pretrained.pdparams)|
|
||||
|
||||
|
||||
**备注:**
|
||||
|
||||
* 以上所有的模型的 backbone 均为 PPLCNet_x1_0,部分模型大小不同是由于分类的输出大小不同导致的,推理耗时是基于Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 测试得到,其中测试过程开启 MKLDNN 加速策略,线程数为10。速度测试过程会有轻微波动。
|
||||
|
||||
* person_exists、safety_helmet、vehicle_exists 的评测指标为 TprAtFpr,person_attribute、vehicle_attribute的评测指标为ma、traffic_sign、text_image_orientation、textline_orientation、language_classification的评测指标为Top-1 Acc。
|
|
@ -0,0 +1,111 @@
|
|||
# PULC 快速体验
|
||||
|
||||
------
|
||||
|
||||
本文主要介绍PaddleClas whl包对 PULC 系列模型的快速使用。
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 安装](#1)
|
||||
- [1.1 安装PaddlePaddle](#11)
|
||||
- [1.2 安装PaddleClas whl包](#12)
|
||||
- [2. 快速体验](#2)
|
||||
- [2.1 命令行使用](#2.1)
|
||||
- [2.2 Python脚本使用](#2.2)
|
||||
- [3.小结](#3)
|
||||
|
||||
<a name="1"></a>
|
||||
|
||||
## 1. 安装
|
||||
|
||||
<a name="1.1"></a>
|
||||
|
||||
### 1.1 安装 PaddlePaddle
|
||||
|
||||
- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
|
||||
|
||||
```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)中的说明进行操作。
|
||||
|
||||
<a name="1.2"></a>
|
||||
|
||||
### 1.2 安装 PaddleClas whl 包
|
||||
|
||||
```bash
|
||||
pip install paddleclas
|
||||
```
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
## 2. 快速体验
|
||||
|
||||
PaddleClas 提供了一系列测试图片,里边包含人、车、OCR等方向的多个场景大的demo数据。点击[这里](https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip)下载并解压,然后在终端中切换到相应目录。
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
### 2.1 命令行使用
|
||||
|
||||
```
|
||||
cd /path/to/pulc_demo_imgs
|
||||
```
|
||||
|
||||
使用命令行预测:
|
||||
|
||||
```bash
|
||||
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: pulc_demo_imgs/person_exists/objects365_01780782.jpg
|
||||
Predict complete!
|
||||
```
|
||||
|
||||
若预测结果为 `nobody`,表示该图中没有人,若预测结果为 `someone`,则表示该图中有人。此处预测结果为 `nobody`,表示该图中没有人。
|
||||
|
||||
**备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹,如需要替换模型,更改 `--model_name` 中的模型名字即可,模型名字可以参考[模型库](./PULC_model_list.md)。
|
||||
|
||||
<a name="2.2"></a>
|
||||
|
||||
### 2.2 Python 脚本使用
|
||||
|
||||
此处提供了在 python 脚本中使用 PULC 有人/无人分类模型预测的例子。
|
||||
|
||||
```python
|
||||
import paddleclas
|
||||
model = paddleclas.PaddleClas(model_name="person_exists")
|
||||
result = model.predict(input_data="pulc_demo_imgs/person_exists/objects365_01780782.jpg")
|
||||
print(next(result))
|
||||
```
|
||||
|
||||
打印的结果如下:
|
||||
|
||||
```
|
||||
>>> result
|
||||
[{'class_ids': [0], 'scores': [0.9955421453341842], 'label_names': ['nobody'], 'filename': 'pulc_demo_imgs/person_exists/objects365_01780782.jpg'}]
|
||||
```
|
||||
|
||||
**备注**:`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_name`, `model_name`,可以参考[模型库](./PULC_model_list.md)。
|
||||
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
## 3. 小结
|
||||
|
||||
通过本节内容,相信您已经熟练掌握 PaddleClas whl 包的 PULC 模型使用方法并获得了初步效果。
|
||||
|
||||
PULC 方法产出的系列模型在人、车、OCR等方向的多个场景中均验证有效,用超轻量模型就可实现与 SwinTransformer 模型接近的精度,预测速度提高 40+ 倍。并且打通数据、模型训练、压缩和推理部署全流程,您可以参考[文档教程](./PULC_train.md),正式开启 PULC 的体验之旅。
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
# PULC含文字图像方向分类模型
|
||||
# PULC 含文字图像方向分类模型
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 模型和应用场景介绍](#1)
|
||||
- [2. 模型快速体验](#2)
|
||||
- [1. 模型和应用场景介绍](#1)
|
||||
- [2. 模型快速体验](#2)
|
||||
- [2.1 安装 paddleclas](#2.1)
|
||||
- [2.2 预测](#2.2)
|
||||
|
||||
- [3. 模型训练、评估和预测](#3)
|
||||
- [3. 模型训练、评估和预测](#3)
|
||||
- [3.1 环境配置](#3.1)
|
||||
- [3.2 数据准备](#3.2)
|
||||
- [3.2.1 数据集来源](#3.2.1)
|
||||
|
|
|
@ -78,13 +78,13 @@ pip3 install paddlepaddle paddleclas
|
|||
* 使用命令行快速预测
|
||||
|
||||
```bash
|
||||
paddleclas --model_name traffic_sign --infer_imgs PaddleClas/deploy/images/PULC/traffic_sign/100999_83928.jpg
|
||||
paddleclas --model_name traffic_sign --infer_imgs 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: PaddleClas/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: deploy/images/PULC/traffic_sign/100999_83928.jpg
|
||||
```
|
||||
|
||||
**备注**: 更换其他预测的数据时,只需要改变 `--infer_imgs=xx` 中的字段即可,支持传入整个文件夹。
|
||||
|
@ -94,7 +94,7 @@ 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="PaddleClas/deploy/images/PULC/traffic_sign/100999_83928.jpg")
|
||||
result = model.predict(input_data="deploy/images/PULC/traffic_sign/100999_83928.jpg")
|
||||
print(next(result))
|
||||
```
|
||||
|
||||
|
@ -102,7 +102,7 @@ print(next(result))
|
|||
|
||||
```
|
||||
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': 'PaddleClas/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': 'deploy/images/PULC/traffic_sign/100999_83928.jpg'}]
|
||||
```
|
||||
|
||||
<a name="3"></a>
|
||||
|
|
|
@ -47,9 +47,9 @@
|
|||
| Res2Net200_vd_26w_4s | 91.36 | 79.46 | 293 | 使用ImageNet预训练模型 |
|
||||
| ResNet50 | 89.98 | 12.83 | 92 | 使用ImageNet预训练模型 |
|
||||
| MobileNetV3_small_x0_35 | 87.41 | 2.91 | 2.8 | 使用ImageNet预训练模型 |
|
||||
| PPLCNet_x1_0 | 89.57 | 2.36 | 8.2 | 使用ImageNet预训练模型 |
|
||||
| PPLCNet_x1_0 | 90.07 | 2.36 | 8.2 | 使用SSLD预训练模型 |
|
||||
| PPLCNet_x1_0 | 90.59 | 2.36 | 8.2 | 使用SSLD预训练模型+EDA策略|
|
||||
| PPLCNet_x1_0 | 89.57 | 2.36 | 7.2 | 使用ImageNet预训练模型 |
|
||||
| PPLCNet_x1_0 | 90.07 | 2.36 | 7.2 | 使用SSLD预训练模型 |
|
||||
| PPLCNet_x1_0 | 90.59 | 2.36 | 7.2 | 使用SSLD预训练模型+EDA策略|
|
||||
| <b>PPLCNet_x1_0<b> | <b>90.81<b> | <b>2.36<b> | <b>8.2<b> | 使用SSLD预训练模型+EDA策略+SKL-UGI知识蒸馏策略|
|
||||
|
||||
从表中可以看出,backbone 为 Res2Net200_vd_26w_4s 时精度较高,但是推理速度较慢。将 backbone 替换为轻量级模型 MobileNetV3_small_x0_35 后,速度可以大幅提升,但是精度下降明显。将 backbone 替换为 PPLCNet_x1_0 时,精度提升 2.16%,同时速度也提升 23% 左右。在此基础上,使用 SSLD 预训练模型后,在不改变推理速度的前提下,精度可以提升约 0.5%,进一步地,当融合EDA策略后,精度可以再提升 0.52%,最后,在使用 SKL-UGI 知识蒸馏后,精度可以继续提升 0.23%。此时,PPLCNet_x1_0 的精度与 Res2Net200_vd_26w_4s 仅相差0.55%,但是速度快32倍。关于 PULC 的训练方法和推理部署方法将在下面详细介绍。
|
||||
|
@ -79,13 +79,13 @@ pip3 install paddlepaddle paddleclas
|
|||
* 使用命令行快速预测
|
||||
|
||||
```bash
|
||||
paddleclas --model_name vehicle_attribute --infer_imgs PaddleClas/deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg
|
||||
paddleclas --model_name vehicle_attribute --infer_imgs deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg
|
||||
```
|
||||
|
||||
结果如下:
|
||||
```
|
||||
>>> result
|
||||
attributes: Color: (yellow, prob: 0.9893476963043213), Type: (hatchback, prob: 0.9734097719192505), output: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], filename: PaddleClas/deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg
|
||||
attributes: Color: (yellow, prob: 0.9893476963043213), Type: (hatchback, prob: 0.9734097719192505), output: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], filename: deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg
|
||||
ppcls INFO: Predict complete!
|
||||
```
|
||||
|
||||
|
@ -96,7 +96,7 @@ ppcls INFO: Predict complete!
|
|||
```python
|
||||
import paddleclas
|
||||
model = paddleclas.PaddleClas(model_name="vehicle_attribute")
|
||||
result = model.predict(input_data="PaddleClas/deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg")
|
||||
result = model.predict(input_data="deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg")
|
||||
print(next(result))
|
||||
```
|
||||
|
||||
|
@ -104,7 +104,7 @@ print(next(result))
|
|||
|
||||
```
|
||||
result
|
||||
[{'attributes': 'Color: (yellow, prob: 0.9893476963043213), Type: (hatchback, prob: 0.9734097719192505)', 'output': [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 'filename': 'PaddleClas/deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg'}]
|
||||
[{'attributes': 'Color: (yellow, prob: 0.9893476963043213), Type: (hatchback, prob: 0.9734097719192505)', 'output': [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 'filename': 'deploy/images/PULC/vehicle_attribute/0002_c002_00030670_0.jpg'}]
|
||||
```
|
||||
|
||||
<a name="3"></a>
|
||||
|
|
|
@ -178,7 +178,7 @@ IMN_MODEL_SERIES = {
|
|||
PULC_MODEL_BASE_DOWNLOAD_URL = "https://paddleclas.bj.bcebos.com/models/PULC/{}_infer.tar"
|
||||
PULC_MODELS = [
|
||||
"person_exists", "person_attribute", "safety_helmet", "traffic_sign",
|
||||
"vehicle_exists", "vehicle_attr", "textline_orientation",
|
||||
"vehicle_exists", "vehicle_attribute", "textline_orientation",
|
||||
"text_image_orientation", "language_classification"
|
||||
]
|
||||
|
||||
|
@ -247,8 +247,10 @@ def init_config(model_type, model_name, inference_model_dir, **kwargs):
|
|||
cfg.PostProcess.Topk.class_id_map_file = kwargs[
|
||||
"class_id_map_file"]
|
||||
else:
|
||||
cfg.PostProcess.Topk.class_id_map_file = os.path.relpath(
|
||||
class_id_map_file_path = os.path.relpath(
|
||||
cfg.PostProcess.Topk.class_id_map_file, "../")
|
||||
cfg.PostProcess.Topk.class_id_map_file = os.path.join(
|
||||
__dir__, class_id_map_file_path)
|
||||
if "VehicleAttribute" in cfg.PostProcess:
|
||||
if "color_threshold" in kwargs and kwargs["color_threshold"]:
|
||||
cfg.PostProcess.VehicleAttribute.color_threshold = kwargs[
|
||||
|
|
|
@ -121,7 +121,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/language_classification_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/language_classification_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -132,7 +132,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/language_classification_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/language_classification_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -152,7 +152,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/language_classification_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/language_classification_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
@ -161,4 +161,4 @@ Metric:
|
|||
topk: [1, 2]
|
||||
Eval:
|
||||
- TopkAcc:
|
||||
topk: [1, 2]
|
||||
topk: [1, 2]
|
||||
|
|
|
@ -131,7 +131,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/language_classification_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/language_classification_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -152,7 +152,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/language_classification_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/language_classification_label_list.txt
|
||||
|
||||
Metric:
|
||||
Eval:
|
||||
|
|
|
@ -121,7 +121,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/text_image_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/text_image_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -132,7 +132,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/text_image_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/text_image_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -152,7 +152,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/text_image_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/text_image_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
@ -161,4 +161,4 @@ Metric:
|
|||
topk: [1, 2]
|
||||
Eval:
|
||||
- TopkAcc:
|
||||
topk: [1, 2]
|
||||
topk: [1, 2]
|
||||
|
|
|
@ -135,7 +135,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/text_image_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/text_image_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -149,7 +149,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 2
|
||||
class_id_map_file: ppcls/utils/PULC/text_image_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/text_image_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Eval:
|
||||
|
|
|
@ -123,7 +123,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 1
|
||||
class_id_map_file: ppcls/utils/PULC/textline_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -132,7 +132,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 1
|
||||
class_id_map_file: ppcls/utils/PULC/textline_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -121,7 +121,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 1
|
||||
class_id_map_file: ppcls/utils/PULC/textline_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -150,7 +150,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 1
|
||||
class_id_map_file: ppcls/utils/PULC/textline_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -133,7 +133,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 1
|
||||
class_id_map_file: ppcls/utils/PULC/textline_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -153,7 +153,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 1
|
||||
class_id_map_file: ppcls/utils/PULC/textline_orientation_label_list.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -120,7 +120,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 5
|
||||
class_id_map_file: dataset/traffic_sign/label_name_id.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/traffic_sign_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -137,7 +137,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 5
|
||||
class_id_map_file: dataset/traffic_sign/label_name_id.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/traffic_sign_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -160,7 +160,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 5
|
||||
class_id_map_file: dataset/traffic_sign/label_name_id.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/traffic_sign_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -138,7 +138,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 5
|
||||
class_id_map_file: dataset/traffic_sign/label_name_id.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/traffic_sign_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -157,7 +157,7 @@ Infer:
|
|||
PostProcess:
|
||||
name: Topk
|
||||
topk: 5
|
||||
class_id_map_file: dataset/traffic_sign/label_name_id.txt
|
||||
class_id_map_file: ppcls/utils/PULC_label_list/traffic_sign_label_list.txt
|
||||
|
||||
Metric:
|
||||
Train:
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
0 0
|
||||
1 90
|
||||
2 180
|
||||
3 270
|
Loading…
Reference in New Issue