merge release_2.5
commit
133ea4f7be
110
README_ch.md
110
README_ch.md
|
@ -29,22 +29,18 @@
|
|||
<img src="https://user-images.githubusercontent.com/11568925/189877049-d17ddcea-22d2-44ab-91fe-36d12af3add8.png" width = "200" height = "200"/>
|
||||
</div>
|
||||
|
||||
- 🔥️ 2022.9.13发布[PP-ShiTuV2](./docs/zh_CN/PPShiTu/PPShiTuV2_introduction.md),recall1精度提升8个点,覆盖[20+识别场景](./docs/zh_CN/introduction/ppshitu_application_scenarios.md),新增[库管理工具](./deploy/shitu_index_manager/),[Android Demo](./docs/zh_CN/quick_start/quick_start_recognition.md)全新体验。
|
||||
|
||||
- 🔥️ 2022.9.13发布[PP-ShiTuV2](docs/zh_CN/models/PP-ShiTu/README.md),recall1精度提升8个点,覆盖[20+识别场景](docs/zh_CN/deployment/PP-ShiTu/application_scenarios.md),新增[库管理工具](./deploy/shitu_index_manager/),[Android Demo](./docs/zh_CN/quick_start/quick_start_recognition.md)全新体验。
|
||||
- 2022.9.4 新增[生鲜产品自主结算范例库](./docs/zh_CN/samples/Fresh_Food_Recogniiton/README.md),具体内容可以在AI Studio上体验。
|
||||
|
||||
- 2022.6.15 发布[PULC超轻量图像分类实用方案](docs/zh_CN/PULC/PULC_train.md),CPU推理3ms,精度比肩SwinTransformer,覆盖人、车、OCR场景九大常见任务。
|
||||
|
||||
- 2022.6.15 发布[PULC超轻量图像分类实用方案](docs/zh_CN/training/PULC.md),CPU推理3ms,精度比肩SwinTransformer,覆盖人、车、OCR场景九大常见任务。
|
||||
- 2022.5.23 新增[人员出入管理范例库](https://aistudio.baidu.com/aistudio/projectdetail/4094475),具体内容可以在 AI Studio 上体验。
|
||||
- 2022.5.20 上线[PP-HGNet](./docs/zh_CN/models/ImageNet1k/PP-HGNet.md), [PP-LCNetv2](./docs/zh_CN/models/ImageNet1k/PP-LCNetV2.md)。
|
||||
- [more](docs/zh_CN/version_history.md)
|
||||
|
||||
- 2022.5.20 上线[PP-HGNet](./docs/zh_CN/models/PP-HGNet.md), [PP-LCNetv2](./docs/zh_CN/models/PP-LCNetV2.md)。
|
||||
|
||||
- [more](./docs/zh_CN/others/update_history.md)
|
||||
|
||||
## 特性
|
||||
|
||||
PaddleClas发布了[PP-HGNet](docs/zh_CN/models/PP-HGNet.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)等算法,
|
||||
并支持多种图像分类、识别相关算法,在此基础上打造[PULC超轻量图像分类方案](docs/zh_CN/PULC/PULC_quickstart.md)和[PP-ShiTu图像识别系统](./docs/zh_CN/quick_start/quick_start_recognition.md)。
|
||||
PaddleClas发布了[PP-HGNet](docs/zh_CN/models/ImageNet1k/PP-HGNet.md)、[PP-LCNetv2](docs/zh_CN/models/ImageNet1k/PP-LCNetV2.md)、 [PP-LCNet](docs/zh_CN/models/ImageNet1k/PP-LCNet.md)和[SSLD半监督知识蒸馏方案](docs/zh_CN/training/advanced/ssld.md)等算法,
|
||||
并支持多种图像分类、识别相关算法,在此基础上打造[PULC超轻量图像分类方案](docs/zh_CN/quick_start/PULC.md)和[PP-ShiTu图像识别系统](./docs/zh_CN/quick_start/quick_start_recognition.md)。
|
||||

|
||||
|
||||
|
||||
|
@ -59,7 +55,7 @@ PaddleClas发布了[PP-HGNet](docs/zh_CN/models/PP-HGNet.md)、[PP-LCNetv2](docs
|
|||
|
||||
## 快速体验
|
||||
|
||||
PULC超轻量图像分类方案快速体验:[点击这里](docs/zh_CN/PULC/PULC_quickstart.md)
|
||||
PULC超轻量图像分类方案快速体验:[点击这里](docs/zh_CN/quick_start/PULC.md)
|
||||
|
||||
PP-ShiTu图像识别快速体验:[点击这里](./docs/zh_CN/quick_start/quick_start_recognition.md)
|
||||
|
||||
|
@ -75,66 +71,66 @@ PP-ShiTuV2 Android Demo APP,可扫描如下二维码,下载体验
|
|||
|
||||
- 基于PP-ShiTu v2的生鲜品自助结算: [点击这里](./docs/zh_CN/samples/Fresh_Food_Recogniiton/README.md)
|
||||
- 基于PULC人员出入视频管理: [点击这里](./docs/zh_CN/samples/Personnel_Access/README.md)
|
||||
- 基于 PP-ShiTu 的智慧商超商品识别:[点击这里](./docs/zh_CN/Goods_Recognition/README.md)
|
||||
- 基于 PP-ShiTu 的智慧商超商品识别:[点击这里](./docs/zh_CN/samples/Goods_Recognition/README.md)
|
||||
- 基于PP-ShiTu电梯内电瓶车入室识别:[点击这里](./docs/zh_CN/samples//Electromobile_In_Elevator_Detection/README.md)
|
||||
|
||||
## 文档教程
|
||||
- [环境准备](docs/zh_CN/installation/install_paddleclas.md)
|
||||
- [PP-ShiTuV2图像识别系统介绍](./docs/zh_CN/PPShiTu/PPShiTuV2_introduction.md)
|
||||
- [环境准备](docs/zh_CN/installation.md)
|
||||
- [PP-ShiTuV2图像识别系统介绍](docs/zh_CN/models/PP-ShiTu/README.md)
|
||||
- [图像识别快速体验](docs/zh_CN/quick_start/quick_start_recognition.md)
|
||||
- [20+应用场景库](docs/zh_CN/introduction/ppshitu_application_scenarios.md)
|
||||
- [20+应用场景库](docs/zh_CN/deployment/PP-ShiTu/application_scenarios.md)
|
||||
- 子模块算法介绍及模型训练
|
||||
- [主体检测](./docs/zh_CN/image_recognition_pipeline/mainbody_detection.md)
|
||||
- [特征提取模型](./docs/zh_CN/image_recognition_pipeline/feature_extraction.md)
|
||||
- [向量检索](./docs/zh_CN/image_recognition_pipeline/vector_search.md)
|
||||
- [哈希编码](docs/zh_CN/image_recognition_pipeline/deep_hashing.md)
|
||||
- [主体检测](docs/zh_CN/training/PP-ShiTu/mainbody_detection.md)
|
||||
- [特征提取模型](docs/zh_CN/training/PP-ShiTu/feature_extraction.md)
|
||||
- [向量检索](docs/zh_CN/deployment/PP-ShiTu/vector_search.md)
|
||||
- [哈希编码](docs/zh_CN/training/PP-ShiTu/deep_hashing.md)
|
||||
- PipeLine 推理部署
|
||||
- [基于python预测引擎推理](docs/zh_CN/inference_deployment/python_deploy.md#2)
|
||||
- [基于python预测引擎推理](docs/zh_CN/deployment/image_classification/python.md#2)
|
||||
- [基于C++预测引擎推理](deploy/cpp_shitu/readme.md)
|
||||
- [服务化部署](docs/zh_CN/inference_deployment/recognition_serving_deploy.md)
|
||||
- [端侧部署](docs/zh_CN/inference_deployment/lite_shitu.md)
|
||||
- [库管理工具](docs/zh_CN/inference_deployment/shitu_gallery_manager.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)
|
||||
- [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)
|
||||
- [PULC有车/无车分类模型](docs/zh_CN/PULC/PULC_car_exists.md)
|
||||
- [PULC含文字图像方向分类模型](docs/zh_CN/PULC/PULC_text_image_orientation.md)
|
||||
- [PULC文本行方向分类模型](docs/zh_CN/PULC/PULC_textline_orientation.md)
|
||||
- [PULC语种分类模型](docs/zh_CN/PULC/PULC_language_classification.md)
|
||||
- [模型训练](docs/zh_CN/PULC/PULC_train.md)
|
||||
- [服务化部署](docs/zh_CN/deployment/PP-ShiTu/paddle_serving.md)
|
||||
- [端侧部署](docs/zh_CN/deployment/PP-ShiTu/paddle_lite.md)
|
||||
- [库管理工具](docs/zh_CN/deployment/PP-ShiTu/gallery_manager.md)
|
||||
- [PULC超轻量图像分类实用方案](docs/zh_CN/training/PULC.md)
|
||||
- [超轻量图像分类快速体验](docs/zh_CN/quick_start/PULC.md)
|
||||
- [超轻量图像分类模型库](docs/zh_CN/models/PULC/model_list.md)
|
||||
- [PULC有人/无人分类模型](docs/zh_CN/models/PULC/PULC_person_exists.md)
|
||||
- [PULC人体属性识别模型](docs/zh_CN/models/PULC/PULC_person_attribute.md)
|
||||
- [PULC佩戴安全帽分类模型](docs/zh_CN/models/PULC/PULC_safety_helmet.md)
|
||||
- [PULC交通标志分类模型](docs/zh_CN/models/PULC/PULC_traffic_sign.md)
|
||||
- [PULC车辆属性识别模型](docs/zh_CN/models/PULC/PULC_vehicle_attribute.md)
|
||||
- [PULC有车/无车分类模型](docs/zh_CN/models/PULC/PULC_car_exists.md)
|
||||
- [PULC含文字图像方向分类模型](docs/zh_CN/models/PULC/PULC_text_image_orientation.md)
|
||||
- [PULC文本行方向分类模型](docs/zh_CN/models/PULC/PULC_textline_orientation.md)
|
||||
- [PULC语种分类模型](docs/zh_CN/models/PULC/PULC_language_classification.md)
|
||||
- [模型训练](docs/zh_CN/training/PULC.md)
|
||||
- 推理部署
|
||||
- [基于python预测引擎推理](docs/zh_CN/inference_deployment/python_deploy.md#1)
|
||||
- [基于C++预测引擎推理](docs/zh_CN/inference_deployment/cpp_deploy.md)
|
||||
- [服务化部署](docs/zh_CN/inference_deployment/classification_serving_deploy.md)
|
||||
- [端侧部署](docs/zh_CN/inference_deployment/paddle_lite_deploy.md)
|
||||
- [Paddle2ONNX模型转化与预测](deploy/paddle2onnx/readme.md)
|
||||
- [基于python预测引擎推理](docs/zh_CN/deployment/image_classification/python.md#1)
|
||||
- [基于C++预测引擎推理](docs/zh_CN/deployment/image_classification/cpp/linux.md)
|
||||
- [服务化部署](docs/zh_CN/deployment/image_classification/paddle_serving.md)
|
||||
- [端侧部署](docs/zh_CN/deployment/image_classification/paddle_lite.md)
|
||||
- [Paddle2ONNX模型转化与预测](docs/zh_CN/deployment/image_classification/paddle2onnx.md)
|
||||
- [模型压缩](deploy/slim/README.md)
|
||||
- PP系列骨干网络模型
|
||||
- [PP-HGNet](docs/zh_CN/models/PP-HGNet.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)
|
||||
- [PP-HGNet](docs/zh_CN/models/ImageNet1k/PP-HGNet.md)
|
||||
- [PP-LCNetv2](docs/zh_CN/models/ImageNet1k/PP-LCNetV2.md)
|
||||
- [PP-LCNet](docs/zh_CN/models/ImageNet1k/PP-LCNet.md)
|
||||
- [SSLD半监督知识蒸馏方案](docs/zh_CN/training/advanced/ssld.md)
|
||||
- 前沿算法
|
||||
- [骨干网络和预训练模型库](docs/zh_CN/algorithm_introduction/ImageNet_models.md)
|
||||
- [骨干网络和预训练模型库](docs/zh_CN/models/ImageNet1k/model_list.md)
|
||||
- [度量学习](docs/zh_CN/algorithm_introduction/metric_learning.md)
|
||||
- [ReID](./docs/zh_CN/algorithm_introduction/reid.md)
|
||||
- [模型压缩](docs/zh_CN/algorithm_introduction/model_prune_quantization.md)
|
||||
- [ReID](./docs/zh_CN/algorithm_introduction/ReID.md)
|
||||
- [模型压缩](docs/zh_CN/algorithm_introduction/prune_quantization.md)
|
||||
- [模型蒸馏](docs/zh_CN/algorithm_introduction/knowledge_distillation.md)
|
||||
- [数据增强](docs/zh_CN/advanced_tutorials/DataAugmentation.md)
|
||||
- [数据增强](docs/zh_CN/training/config_discription/data_augmentation.md)
|
||||
- [产业实用范例库](docs/zh_CN/samples)
|
||||
- [30分钟快速体验图像分类](docs/zh_CN/quick_start/quick_start_classification_new_user.md)
|
||||
- FAQ
|
||||
- [图像识别精选问题](docs/zh_CN/faq_series/faq_2021_s2.md)
|
||||
- [图像分类精选问题](docs/zh_CN/faq_series/faq_selected_30.md)
|
||||
- [图像分类FAQ第一季](docs/zh_CN/faq_series/faq_2020_s1.md)
|
||||
- [图像分类FAQ第二季](docs/zh_CN/faq_series/faq_2021_s1.md)
|
||||
- [图像分类FAQ第三季](docs/zh_CN/faq_series/faq_2022_s1.md)
|
||||
- [社区贡献指南](./docs/zh_CN/advanced_tutorials/how_to_contribute.md)
|
||||
- [图像识别精选问题](docs/zh_CN/FAQ/faq_2021_s2.md)
|
||||
- [图像分类精选问题](docs/zh_CN/FAQ/faq_selected_30.md)
|
||||
- [图像分类FAQ第一季](docs/zh_CN/FAQ/faq_2020_s1.md)
|
||||
- [图像分类FAQ第二季](docs/zh_CN/FAQ/faq_2021_s1.md)
|
||||
- [图像分类FAQ第三季](docs/zh_CN/FAQ/faq_2022_s1.md)
|
||||
- [社区贡献指南](docs/zh_CN/community/how_to_contribute.md)
|
||||
- [许可证书](#许可证书)
|
||||
- [贡献代码](#贡献代码)
|
||||
|
||||
|
@ -147,7 +143,7 @@ PP-ShiTuV2 Android Demo APP,可扫描如下二维码,下载体验
|
|||
</div>
|
||||
|
||||
|
||||
PP-ShiTuV2是一个实用的轻量级通用图像识别系统,主要由主体检测、特征学习和向量检索三个模块组成。该系统从骨干网络选择和调整、损失函数的选择、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型裁剪量化多个方面,采用多种策略,对各个模块的模型进行优化,PP-ShiTuV2相比V1,Recall1提升近8个点。更多细节请参考[PP-ShiTuV2详细介绍](./docs/zh_CN/PPShiTu/PPShiTuV2_introduction.md)。
|
||||
PP-ShiTuV2是一个实用的轻量级通用图像识别系统,主要由主体检测、特征学习和向量检索三个模块组成。该系统从骨干网络选择和调整、损失函数的选择、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型裁剪量化多个方面,采用多种策略,对各个模块的模型进行优化,PP-ShiTuV2相比V1,Recall1提升近8个点。更多细节请参考[PP-ShiTuV2详细介绍](docs/zh_CN/models/PP-ShiTu/README.md)。
|
||||
|
||||
<a name="识别效果展示"></a>
|
||||
|
||||
|
@ -216,7 +212,7 @@ PaddleClas提供了覆盖人、车、OCR场景九大常见任务的分类模型
|
|||
<a name="贡献代码"></a>
|
||||
## 贡献代码
|
||||
我们非常欢迎你为PaddleClas贡献代码,也十分感谢你的反馈。
|
||||
如果想为PaddleCLas贡献代码,可以参考[贡献指南](./docs/zh_CN/advanced_tutorials/how_to_contribute.md)。
|
||||
如果想为PaddleCLas贡献代码,可以参考[贡献指南](docs/zh_CN/community/how_to_contribute.md)。
|
||||
|
||||
- 非常感谢[nblib](https://github.com/nblib)修正了PaddleClas中RandErasing的数据增广配置文件。
|
||||
- 非常感谢[chenpy228](https://github.com/chenpy228)修正了PaddleClas文档中的部分错别字。
|
||||
|
|
|
@ -68,18 +68,18 @@ Quick experience of **P**ractical **U**ltra **L**ight-weight image **C**lassific
|
|||
- [Install PaddleClas Environment](./docs/en/installation/install_paddleclas_en.md)
|
||||
- [PP-ShiTuV2 Image Recognition Systems Introduction](./docs/en/PPShiTu/PPShiTuV2_introduction.md)
|
||||
- [Image Recognition Quick Start](docs/en/quick_start/quick_start_recognition_en.md)
|
||||
- [20+ application scenarios](docs/zh_CN/introduction/ppshitu_application_scenarios.md)
|
||||
- [20+ application scenarios](docs/zh_CN/deployment/PP-ShiTu/application_scenarios.md)
|
||||
- Submodule Introduction and Model Training
|
||||
- [Mainbody Detection](./docs/zh_CN/image_recognition_pipeline/mainbody_detection.md)
|
||||
- [Mainbody Detection](docs/zh_CN/training/PP-ShiTu/mainbody_detection.md)
|
||||
- [Feature Extraction](./docs/en/image_recognition_pipeline/feature_extraction_en.md)
|
||||
- [Vector Search](./docs/en/image_recognition_pipeline/vector_search_en.md)
|
||||
- [Hash Encoding](./docs/zh_CN/image_recognition_pipeline/deep_hashing.md)
|
||||
- [Hash Encoding](docs/zh_CN/training/PP-ShiTu/deep_hashing.md)
|
||||
- PipeLine Inference and Deployment
|
||||
- [Python Inference](docs/en/inference_deployment/python_deploy_en.md)
|
||||
- [C++ Inference](deploy/cpp_shitu/readme_en.md)
|
||||
- [Serving Deployment](docs/en/inference_deployment/recognition_serving_deploy_en.md)
|
||||
- [Lite Deployment](docs/en/inference_deployment/paddle_lite_deploy_en.md)
|
||||
- [Shitu Gallery Manager Tool](docs/zh_CN/inference_deployment/shitu_gallery_manager.md)
|
||||
- [Shitu Gallery Manager Tool](docs/zh_CN/deployment/PP-ShiTu/gallery_manager.md)
|
||||
- [Practical Ultra Light-weight image Classification solutions](./docs/en/PULC/PULC_train_en.md)
|
||||
- [PULC Quick Start](docs/en/PULC/PULC_quickstart_en.md)
|
||||
- [PULC Model Zoo](docs/en/PULC/PULC_model_list_en.md)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../docs/zh_CN/deployment/PP-ShiTu/cpp.md
|
|
@ -38,7 +38,7 @@ The following table lists the relevant metric obtained by PP-ShiTuV2 with compar
|
|||
| :--------- | :------------------------------------------------ | :------- |
|
||||
| | | recall@1 |
|
||||
| PP-ShiTuV1 | 64(30+34)MB | 66.8% |
|
||||
| PP-ShiTuV2 | 49(30+19) | 73.8% |
|
||||
| PP-ShiTuV2 | 49(30+19)MB | 73.8% |
|
||||
|
||||
**Note:**
|
||||
- For the introduction of recall and mAP metric, please refer to [Retrieval Metric](../algorithm_introduction/reid.md).
|
||||
|
|
|
@ -176,14 +176,14 @@ Model training mainly includes the starting training and restoring training from
|
|||
**Notice:**
|
||||
The online evaluation method is used by default in the configuration file. If you want to speed up the training, you can turn off the online evaluation function, just add `-o Global.eval_during_train=False` after the above scripts.
|
||||
|
||||
After training, the final model files `latest.pdparams`, `best_model.pdarams` and the training log file `train.log` will be generated in the output directory. Among them, `best_model` saves the best model under the current evaluation index, and `latest` is used to save the latest generated model, which is convenient to resume training from the checkpoint when training task is interrupted. Training can be resumed from a checkpoint by adding `-o Global.checkpoint="path_to_resume_checkpoint"` to the end of the above training scripts, as shown below.
|
||||
After training, the final model files `latest.pdparams`, `best_model.pdarams` and the training log file `train.log` will be generated in the output directory. Among them, `best_model` saves the best model under the current evaluation index, and `latest` is used to save the latest generated model, which is convenient to resume training from the checkpoint when training task is interrupted. Training can be resumed from a checkpoint by adding `-o Global.checkpoints="path_to_resume_checkpoint"` to the end of the above training scripts, as shown below.
|
||||
|
||||
- Single machine and single card checkpoint recovery training
|
||||
```shell
|
||||
export CUDA_VISIBLE_DEVICES=0
|
||||
python3.7 tools/train.py \
|
||||
-c ./ppcls/configs/GeneralRecognitionV2/GeneralRecognitionV2_PPLCNetV2_base.yaml \
|
||||
-o Global.checkpoint="output/RecModel/latest"
|
||||
-o Global.checkpoints="output/RecModel/latest"
|
||||
```
|
||||
- Single-machine multi-card checkpoint recovery training
|
||||
```shell
|
||||
|
@ -191,7 +191,7 @@ After training, the final model files `latest.pdparams`, `best_model.pdarams` an
|
|||
python3.7 -m paddle.distributed.launch --gpus="0,1,2,3" \
|
||||
tools/train.py \
|
||||
-c ./ppcls/configs/GeneralRecognitionV2/GeneralRecognitionV2_PPLCNetV2_base.yaml \
|
||||
-o Global.checkpoint="output/RecModel/latest"
|
||||
-o Global.checkpoints="output/RecModel/latest"
|
||||
```
|
||||
|
||||
<a name="5.3"></a>
|
||||
|
|
|
@ -33,7 +33,7 @@ ResNet_va 至 vd 的结构如下图所示,ResNet 最早提出时为 va 结构
|
|||
**A**:
|
||||
|
||||
ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度几乎不变的情况下,精度有非常明显的提升,因此推荐大家使用 ResNet_vd 系列模型。
|
||||
[ResNet 及其 vd 系列模型文档](../models/ResNet_and_vd.md)中给出了 batch size=4 的情况下,在 T4 GPU 上,不同模型的的预测耗时、FLOPs、Params 与精度的变化曲线,可以根据自己自己的实际部署场景中的需求,去选择合适的模型,如果希望模型存储大小尽可能小或者预测速度尽可能快,则可以使用 ResNet18_vd 模型,如果希望获得尽可能高的精度,则建议使用 ResNet152_vd 或者 ResNet200_vd 模型。更多关于 ResNet 系列模型的介绍可以参考文档:[ResNet 及其 vd 系列模型文档](../models/ResNet_and_vd.md)。
|
||||
[ResNet 及其 vd 系列模型文档](../models/ImageNet1k/ResNet_and_vd.md)中给出了 batch size=4 的情况下,在 T4 GPU 上,不同模型的的预测耗时、FLOPs、Params 与精度的变化曲线,可以根据自己自己的实际部署场景中的需求,去选择合适的模型,如果希望模型存储大小尽可能小或者预测速度尽可能快,则可以使用 ResNet18_vd 模型,如果希望获得尽可能高的精度,则建议使用 ResNet152_vd 或者 ResNet200_vd 模型。更多关于 ResNet 系列模型的介绍可以参考文档:[ResNet 及其 vd 系列模型文档](../models/ImageNet1k/ResNet_and_vd.md)。
|
||||
|
||||
* 精度-预测速度变化曲线
|
||||
|
||||
|
@ -55,7 +55,7 @@ ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度
|
|||
### Q1.7 大卷积核一定可以带来正向收益吗?
|
||||
|
||||
**A**: 不一定,将网络中的所有卷积核都增大未必会带来性能的提升,甚至会有有损性能,在论文 [MixConv: Mixed Depthwise Convolutional Kernels](https://arxiv.org/abs/1907.09595)
|
||||
中指出,在一定范围内提升卷积核大小对精度的提升有正向作用,但是超出后会有损精度。所以考虑到模型的大小、计算量等问题,一般不选用大的卷积核去设计网络。同时,在 [PP-LCNet](../models/PP-LCNet.md) 文章中,也有关于大卷积核的实验。
|
||||
中指出,在一定范围内提升卷积核大小对精度的提升有正向作用,但是超出后会有损精度。所以考虑到模型的大小、计算量等问题,一般不选用大的卷积核去设计网络。同时,在 [PP-LCNet](../models/ImageNet1k/PP-LCNet.md) 文章中,也有关于大卷积核的实验。
|
||||
|
||||
<a name="2"></a>
|
||||
## 第 2 期
|
||||
|
@ -88,7 +88,7 @@ ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度
|
|||
|
||||
### Q2.5 PaddleClas 中提供了很多 ssld 模型,其应用的价值是?
|
||||
|
||||
**A**: PaddleClas 中提供了很多 ssld 预训练模型,其通过半监督知识蒸馏的方法获得了更好的预训练权重,在迁移任务或者下游视觉任务中,无须替换结构文件、只需要替换精度更高的 ssld 预训练模型即可提升精度,如在 PaddleSeg 中,[HRNet](https://github.com/PaddlePaddle/PaddleSeg/blob/release/v0.7.0/docs/model_zoo.md) 使用了 ssld 预训练模型的权重后,精度大幅度超越业界同样的模型的精度,在 PaddleDetection 中,[PP-YOLO](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/ppyolo/README_cn.md) 使用了 ssld 预训练权重后,在较高的 baseline 上仍有进一步的提升。使用 ssld 预训练权重做分类的迁移表现也很抢眼,在 [SSLD 蒸馏策略](../advanced_tutorials/knowledge_distillation.md) 部分介绍了知识蒸馏对于分类任务迁移的收益。
|
||||
**A**: PaddleClas 中提供了很多 ssld 预训练模型,其通过半监督知识蒸馏的方法获得了更好的预训练权重,在迁移任务或者下游视觉任务中,无须替换结构文件、只需要替换精度更高的 ssld 预训练模型即可提升精度,如在 PaddleSeg 中,[HRNet](https://github.com/PaddlePaddle/PaddleSeg/blob/release/v0.7.0/docs/model_zoo.md) 使用了 ssld 预训练模型的权重后,精度大幅度超越业界同样的模型的精度,在 PaddleDetection 中,[PP-YOLO](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/ppyolo/README_cn.md) 使用了 ssld 预训练权重后,在较高的 baseline 上仍有进一步的提升。使用 ssld 预训练权重做分类的迁移表现也很抢眼,在 [SSLD 蒸馏策略](../training/advanced/knowledge_distillation.md) 部分介绍了知识蒸馏对于分类任务迁移的收益。
|
||||
|
||||
|
||||
<a name="3"></a>
|
||||
|
@ -96,13 +96,13 @@ ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度
|
|||
|
||||
### Q3.1: DenseNet 模型相比于 ResNet 有什么改进呢?有哪些特点或者应用场景呢?
|
||||
|
||||
**A**: DenseNet 相比于 ResNet,设计了一个更激进的密集连接机制,通过考虑特征重用和旁路的设置,进一步减少了参数量,而且从一定程度上缓解了梯度弥散的问题,因为引入了更加密集的连接,因此模型更容易训练,而且具有一定的正则化效果。在数据量不是很多的图像分类场景中,DenseNet 是一个不错的选择。更多关于 DenseNet 的介绍与系列模型可以参考 [DenseNet 模型文档](../models/DPN_DenseNet.md)。
|
||||
**A**: DenseNet 相比于 ResNet,设计了一个更激进的密集连接机制,通过考虑特征重用和旁路的设置,进一步减少了参数量,而且从一定程度上缓解了梯度弥散的问题,因为引入了更加密集的连接,因此模型更容易训练,而且具有一定的正则化效果。在数据量不是很多的图像分类场景中,DenseNet 是一个不错的选择。更多关于 DenseNet 的介绍与系列模型可以参考 [DenseNet 模型文档](../models/ImageNet1k/DPN_DenseNet.md)。
|
||||
|
||||
|
||||
|
||||
### Q3.2: DPN 网络相比于 DenseNet 有哪些改进呢?
|
||||
|
||||
**A**:DPN 的全称是 Dual Path Networks,即双通道网络。该网络是由 DenseNet 和 ResNeXt 结合的一个网络,其证明了 DenseNet 能从靠前的层级中提取到新的特征,而 ResNeXt 本质上是对之前层级中已提取特征的复用。作者进一步分析发现,ResNeXt 对特征有高复用率,但冗余度低,DenseNet 能创造新特征,但冗余度高。结合二者结构的优势,作者设计了 DPN 网络。最终 DPN 网络在同样 FLOPS 和参数量下,取得了比 ResNeXt 与 DenseNet 更好的结果。更多关于 DPN 的介绍与系列模型可以参考 [DPN 模型文档](../models/DPN_DenseNet.md)。
|
||||
**A**:DPN 的全称是 Dual Path Networks,即双通道网络。该网络是由 DenseNet 和 ResNeXt 结合的一个网络,其证明了 DenseNet 能从靠前的层级中提取到新的特征,而 ResNeXt 本质上是对之前层级中已提取特征的复用。作者进一步分析发现,ResNeXt 对特征有高复用率,但冗余度低,DenseNet 能创造新特征,但冗余度高。结合二者结构的优势,作者设计了 DPN 网络。最终 DPN 网络在同样 FLOPS 和参数量下,取得了比 ResNeXt 与 DenseNet 更好的结果。更多关于 DPN 的介绍与系列模型可以参考 [DPN 模型文档](../models/ImageNet1k/DPN_DenseNet.md)。
|
||||
|
||||
|
||||
### Q3.3: 怎么使用多个模型进行预测融合呢?
|
||||
|
@ -276,7 +276,7 @@ Cosine_decay 和 piecewise_decay 的学习率变化曲线如下图所示,容
|
|||
|
||||
**A**:一般来说,数据集的规模对性能影响至关重要,但是图片的标注往往比较昂贵,所以有标注的图片数量往往比较稀少,在这种情况下,数据的增广尤为重要。在训练 ImageNet-1k 的标准数据增广中,主要使用了 Random_Crop 与 Random_Flip 两种数据增广方式,然而,近些年,越来越多的数据增广方式被提出,如 cutout、mixup、cutmix、AutoAugment 等。实验表明,这些数据的增广方式可以有效提升模型的精度。具体到数据集来说:
|
||||
|
||||
- ImageNet-1k:下表列出了 ResNet50 在 8 种不同的数据增广方式的表现,可以看出,相比 baseline,所有的数据增广方式均有收益,其中 cutmix 是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](../advanced_tutorials/DataAugmentation.md)。
|
||||
- ImageNet-1k:下表列出了 ResNet50 在 8 种不同的数据增广方式的表现,可以看出,相比 baseline,所有的数据增广方式均有收益,其中 cutmix 是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](../training/config_discription/data_augmentation.md)。
|
||||
|
||||
| 模型 | 数据增广方式 | Test top-1 |
|
||||
|:--:|:--:|:--:|
|
||||
|
@ -314,7 +314,7 @@ Cosine_decay 和 piecewise_decay 的学习率变化曲线如下图所示,容
|
|||
|
||||
- 挖掘相关数据:用在现有数据集上训练饱和的模型去对相关的数据做预测,将置信度较高的数据打 label 后加入训练集进一步训练,如此循环操作,可进一步提升模型的精度。
|
||||
|
||||
- 知识蒸馏:可以先使用一个较大的模型在该数据集上训练一个精度较高的 teacher model,然后使用该 teacher model 去教导一个 Student model,其中,Student model 即为目标模型。PaddleClas 提供了百度自研的 SSLD 知识蒸馏方案,即使在 ImageNet-1k 这么有挑战的分类任务上,其也能稳定提升 3% 以上。SSLD 知识蒸馏的的章节请参考 [**SSLD 知识蒸馏**](../advanced_tutorials/knowledge_distillation.md)。
|
||||
- 知识蒸馏:可以先使用一个较大的模型在该数据集上训练一个精度较高的 teacher model,然后使用该 teacher model 去教导一个 Student model,其中,Student model 即为目标模型。PaddleClas 提供了百度自研的 SSLD 知识蒸馏方案,即使在 ImageNet-1k 这么有挑战的分类任务上,其也能稳定提升 3% 以上。SSLD 知识蒸馏的的章节请参考 [**SSLD 知识蒸馏**](../training/advanced/knowledge_distillation.md)。
|
||||
|
||||
|
||||
<a name="6"></a>
|
|
@ -71,7 +71,7 @@
|
|||
|
||||
### Q2.4: 移动端或嵌入式端上哪些网络具有优势?
|
||||
|
||||
建议使用移动端系列的网络,网络详情可以参考[移动端系列网络结构介绍](../models/Mobile.md)。如果任务的速度更重要,可以考虑 MobileNetV3 系列,如果模型大小更重要,可以根据移动端系列网络结构介绍中的 StorageSize-Accuracy 来确定具体的结构。
|
||||
建议使用移动端系列的网络,网络详情可以参考[移动端系列网络结构介绍](../models/ImageNet1k/Mobile.md)。如果任务的速度更重要,可以考虑 MobileNetV3 系列,如果模型大小更重要,可以根据移动端系列网络结构介绍中的 StorageSize-Accuracy 来确定具体的结构。
|
||||
|
||||
### Q2.5: 既然移动端网络非常快,为什么还要使用诸如 ResNet 这样参数量和计算量较大的网络?
|
||||
|
|
@ -72,7 +72,7 @@ w_t+1 = w_t - v_t+1
|
|||
**A**:主体检测这块的输出数量是可以通过配置文件配置的。在配置文件中 Global.threshold 控制检测的阈值,小于该阈值的检测框被舍弃,Global.max_det_results 控制最大返回的结果数,这两个参数共同决定了输出检测框的数量。
|
||||
|
||||
#### Q1.4.2 训练主体检测模型的数据是如何选择的?换成更小的模型会有损精度吗?
|
||||
**A**:训练数据是在 COCO、Object365、RPC、LogoDet 等公开数据集中随机抽取的子集。目前我们在 2.3 版本中推出了超轻量的主体检测模型,具体信息可以参考[主体检测](../image_recognition_pipeline/mainbody_detection.md#2-模型选择)。关于主体检测模型的更多信息请参考[主体检测](../image_recognition_pipeline/mainbody_detection.md)。
|
||||
**A**:训练数据是在 COCO、Object365、RPC、LogoDet 等公开数据集中随机抽取的子集。目前我们在 2.3 版本中推出了超轻量的主体检测模型,具体信息可以参考[主体检测](../training/PP-ShiTu/mainbody_detection.md#2-模型选择)。关于主体检测模型的更多信息请参考[主体检测](../training/PP-ShiTu/mainbody_detection.md)。
|
||||
|
||||
#### Q1.4.3: 目前使用的主体检测模型检测在某些场景中会有误检?
|
||||
**A**:目前的主体检测模型训练时使用了 COCO、Object365、RPC、LogoDet 等公开数据集,如果被检测数据是类似工业质检等于常见类别差异较大的数据,需要基于目前的检测模型重新微调训练。
|
||||
|
@ -182,7 +182,7 @@ PaddlePaddle is installed successfully! Let's start deep learning with PaddlePad
|
|||
**A**:如果使用的是 release/2.2 分支,建议更新为 release/2.3 分支,在 release/2.3 分支中,我们使用 faiss 检索模块替换了 Möbius 检索模型,具体可以参考[向量检索教程](../../../deploy/vector_search/README.md)。如仍存在问题,可以在用户微信群中联系我们,也可以在 GitHub 提 issue。
|
||||
|
||||
#### Q2.4.2: 识别模型怎么在预训练模型的基础上进行微调训练?
|
||||
**A**:识别模型的微调训练和分类模型的微调训练类似,识别模型可以加载商品的预训练模型,训练过程可以参考[识别模型训练](../../zh_CN/models_training/recognition.md),后续我们也会持续细化这块的文档。
|
||||
**A**:识别模型的微调训练和分类模型的微调训练类似,识别模型可以加载商品的预训练模型,训练过程可以参考[识别模型训练](../training/metric_learning/training.md),后续我们也会持续细化这块的文档。
|
||||
|
||||
#### Q2.4.3: 训练 metric learning 时,每个 epoch 中,无法跑完所有 mini-batch,为什么?
|
||||
**A**:在训练 metric learning 时,使用的 Sampler 是 DistributedRandomIdentitySampler,该 Sampler 不会采样全部的图片,导致会让每一个 epoch 采样的数据不是所有的数据,所以无法跑完显示的 mini-batch 是正常现象。该问题在 release/2.3 分支已经优化,请更新到 release/2.3 使用。
|
|
@ -32,7 +32,7 @@
|
|||
>>
|
||||
* Q: 怎样根据自己的任务选择合适的模型进行训练?
|
||||
* A: 如果希望在服务器部署,或者希望精度尽可能地高,对模型存储大小或者预测速度的要求不是很高,那么推荐使用 ResNet_vd、Res2Net_vd、DenseNet、Xception 等适合于服务器端的系列模型;如果希望在移动端侧部署,则推荐使用 MobileNetV3、GhostNet
|
||||
等适合于移动端的系列模型。同时,我们推荐在选择模型的时候可以参考[模型库](../algorithm_introduction/ImageNet_models.md)中的速度-精度指标图。
|
||||
等适合于移动端的系列模型。同时,我们推荐在选择模型的时候可以参考[模型库](../models/ImageNet1k/model_list.md)中的速度-精度指标图。
|
||||
|
||||
>>
|
||||
* Q: 如何进行参数初始化,什么样的初始化可以加快模型收敛?
|
||||
|
@ -126,7 +126,7 @@
|
|||
|
||||
>>
|
||||
* Q: 数据量不足的情况下,目前有哪些常见的数据增广方法来增加训练样本的丰富度呢?
|
||||
* A: PaddleClas 中将目前比较常见的数据增广方法分为了三大类,分别是图像变换类、图像裁剪类和图像混叠类,图像变换类主要包括 AutoAugment 和 RandAugment,图像裁剪类主要包括 CutOut、RandErasing、HideAndSeek 和 GridMask,图像混叠类主要包括 Mixup 和 Cutmix,更详细的关于数据增广的介绍可以参考:[数据增广章节](../algorithm_introduction/DataAugmentation.md)。
|
||||
* A: PaddleClas 中将目前比较常见的数据增广方法分为了三大类,分别是图像变换类、图像裁剪类和图像混叠类,图像变换类主要包括 AutoAugment 和 RandAugment,图像裁剪类主要包括 CutOut、RandErasing、HideAndSeek 和 GridMask,图像混叠类主要包括 Mixup 和 Cutmix,更详细的关于数据增广的介绍可以参考:[数据增广章节](../algorithm_introduction/data_augmentation.md)。
|
||||
>>
|
||||
* Q: 对于遮挡情况比较常见的图像分类场景,该使用什么数据增广方法去提升模型的精度呢?
|
||||
* A: 在训练的过程中可以尝试对训练集使用 CutOut、RandErasing、HideAndSeek 和 GridMask 等裁剪类数据增广方法,让模型也能够不止学习到显著区域,也能关注到非显著性区域,从而在遮挡的情况下,也能较好地完成识别任务。
|
||||
|
@ -214,7 +214,7 @@
|
|||
|
||||
>>
|
||||
* Q: 怎么在 windows 上或者 cpu 上面模型训练呢?
|
||||
* A: 可以参考[开始使用教程](../models_training/classification.md),详细介绍了在 Linux、Windows、CPU 等环境中进行模型训练、评估与预测的教程。
|
||||
* A: 可以参考[开始使用教程](../training/single_label_classification/training.md),详细介绍了在 Linux、Windows、CPU 等环境中进行模型训练、评估与预测的教程。
|
||||
>>
|
||||
* Q: 怎样在模型训练的时候使用 label smoothing 呢?
|
||||
* A: 可以在配置文件中的 `Loss` 字段下进行设置,如下所示,`epsilon=0.1` 表示设置该值为 0.1,若不设置 `epsilon` 字段,则不使用 `label smoothing`。
|
|
@ -1,22 +0,0 @@
|
|||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
|
||||
#SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@ -1,53 +0,0 @@
|
|||
# 识别模型转分类模型
|
||||
|
||||
PaddleClas 提供了 `gallery2fc.py` 工具,帮助大家将识别模型转为分类模型。目前该工具仅支持转换量化后模型,因此建议使用 PaddleClas 提供的 `general_PPLCNet_x2_5_pretrained_v1.0_quant` 预训练模型,该模型为量化后的通用识别模型,backbone 为 PPLCNet_x2_5。
|
||||
|
||||
如需使用其他模型,关于量化的具体操作请参考文档 [模型量化](./model_prune_quantization.md)。
|
||||
|
||||
## 一、模型转换说明
|
||||
|
||||
### 1.1 准备底库数据、预训练模型
|
||||
|
||||
#### 1. 底库数据集
|
||||
|
||||
首先需要准备好底库数据,下面以 PaddleClas 提供的饮料数据集(drink_dataset_v1.0)为例进行说明,饮料数据集获取方法:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/
|
||||
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar
|
||||
tar -xf drink_dataset_v1.0.tar
|
||||
```
|
||||
|
||||
饮料数据集的底库图片路径为 `drink_dataset_v1.0/gallery/`,底库图片列表可在 `drink_dataset_v1.0/gallery/drink_label.txt` 中查看,关于底库数据格式说明,请参考文档[数据集格式说明](../data_preparation/recognition_dataset.md#1-数据集格式说明)。
|
||||
|
||||
#### 2. 预训练模型
|
||||
|
||||
在开始转换模型前,需要准备好预训练模型,下面以量化后的 `general_PPLCNet_x2_5` 模型为例,下载预训练模型:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/pretrained/
|
||||
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/pretrain/general_PPLCNet_x2_5_pretrained_v1.0_quant.pdparams
|
||||
```
|
||||
|
||||
### 1.2 准备配置文件
|
||||
|
||||
在进行模型转换时,需要通过配置文件定义所需参数,本例中所用配置文件为 `ppcls/configs/GeneralRecognition/Gallery2FC_PPLCNet_x2_5.yaml`,对于配置文件字段的说明,如下所示:
|
||||
|
||||
* Global:
|
||||
* pretrained_model: 预训练模型路径,无需包含 `.pdparams` 后缀名;
|
||||
* image_shape: 模型输入数据尺寸,无需包含 batch size 维度;
|
||||
* save_inference_dir: 转换后模型的保存路径;
|
||||
* Arch: 模型结构相关定义,可参考 [配置说明](../models_training/config_description.md#3-%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9E%8B);
|
||||
* IndexProcess: 底库数据集相关定义
|
||||
* image_root: 底库数据集路径;
|
||||
* data_file: 底库数据集列表文件路径;
|
||||
|
||||
### 1.3 模型转换
|
||||
|
||||
在完成上述准备工作后,即可进行模型转换,命令如下所示:
|
||||
|
||||
```python
|
||||
python ppcls/utils/gallery2fc.py -c ppcls/configs/GeneralRecognition/Gallery2FC_PPLCNet_x2_5.yaml
|
||||
```
|
||||
|
||||
在上述命令执行完成后,转换并导出的模型保存在目录 `./inference/general_PPLCNet_x2_5_quant/` 下。在推理部署时,需要注意的是,模型的输出结果通常有多个,应选取分类结果作为模型输出,需要注意区分。
|
|
@ -1,13 +0,0 @@
|
|||
高级教程
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
DataAugmentation.md
|
||||
knowledge_distillation.md
|
||||
model_prune_quantization.md
|
||||
code_overview.md
|
||||
how_to_contribute.md
|
||||
|
||||
|
|
@ -320,31 +320,31 @@
|
|||
|
||||
##### 4.2.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考基于 Visual Studio 2019 Community CMake 编译指南完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考基于 Visual Studio 2019 Community CMake 编译指南完成相应的预测库编译和模型预测工作。
|
||||
|
||||
#### 4.3 服务化部署
|
||||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考Paddle Serving 代码仓库。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/recognition_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../deployment/PP-ShiTu/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
#### 4.4 端侧部署
|
||||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考Paddle Lite 代码仓库。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
#### 4.5 Paddle2ONNX 模型转换与预测
|
||||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考Paddle2ONNX 代码仓库。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
||||
|
||||
### 5. 总结
|
||||
|
||||
#### 5.1 方法总结与对比
|
||||
|
||||
上述算法能快速地迁移至多数的ReID模型中(参考 [PP-ShiTuV2](../PPShiTu/PPShiTuV2_introduction.md) ),能进一步提升ReID模型的性能,
|
||||
上述算法能快速地迁移至多数的ReID模型中(参考 [PP-ShiTuV2](../models/PP-ShiTu/README.md) ),能进一步提升ReID模型的性能,
|
||||
|
||||
#### 5.2 使用建议/FAQ
|
||||
|
|
@ -240,7 +240,7 @@ Mixup 是最先提出的图像混叠增广方案,其原理简单、方便实
|
|||
|
||||
![][test_cutmix]
|
||||
|
||||
关于数据增强相关的实战部分实参考[数据增强实战](../advanced_tutorials/DataAugmentation.md)。
|
||||
关于数据增强相关的实战部分实参考[数据增强实战](../training/config_discription/data_augmentation.md)。
|
||||
|
||||
|
||||
## 参考文献
|
|
@ -55,7 +55,7 @@ LCDSH是一种局部约束深度监督哈希算法。该方案通过学习图像
|
|||
`DSHSD`: ppcls/configs/DeepHash/DSHSD.yaml
|
||||
`LCDSH`: ppcls/configs/DeepHash/LCDSH.yaml
|
||||
|
||||
具体训练方法,请参考[分类模型训练文档](../models_training/classification.md)
|
||||
具体训练方法,请参考[分类模型训练文档](../training/single_label_classification/training.md)
|
||||
|
||||
<a name='4'></a>
|
||||
## 4. 总结及建议
|
|
@ -46,12 +46,12 @@ CIFAR-10 数据集由 10 个类的 60000 个彩色图像组成,图像分辨率
|
|||
<a name="2.2"></a>
|
||||
### 2.2 模型准备
|
||||
|
||||
在数据确定后,模型往往决定了最终算法精度的上限,在图像分类领域,经典的模型层出不穷,PaddleClas 提供了 36 个系列共 175 个 ImageNet 预训练模型。具体的精度、速度等指标请参考[骨干网络和预训练模型库](./ImageNet_models.md)。
|
||||
在数据确定后,模型往往决定了最终算法精度的上限,在图像分类领域,经典的模型层出不穷,PaddleClas 提供了 36 个系列共 175 个 ImageNet 预训练模型。具体的精度、速度等指标请参考[骨干网络和预训练模型库](../models/ImageNet1k/model_list.md)。
|
||||
|
||||
<a name="2.3"></a>
|
||||
### 2.3 模型训练
|
||||
|
||||
在准备好数据、模型后,便可以开始迭代模型并更新模型的参数。经过多次迭代最终可以得到训练好的模型来做图像分类任务。图像分类的训练过程需要很多经验,涉及很多超参数的设置,PaddleClas 提供了一些列的[训练调优方法](../models_training/train_strategy.md),可以快速助你获得高精度的模型。
|
||||
在准备好数据、模型后,便可以开始迭代模型并更新模型的参数。经过多次迭代最终可以得到训练好的模型来做图像分类任务。图像分类的训练过程需要很多经验,涉及很多超参数的设置,PaddleClas 提供了一些列的[训练调优方法](../training/single_label_classification/training_strategy.md),可以快速助你获得高精度的模型。
|
||||
|
||||
<a name="2.4"></a>
|
||||
### 2.4 模型评估
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
算法介绍
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
image_classification.md
|
||||
metric_learning.md
|
||||
knowledge_distillation.md
|
||||
model_prune_quantization.md
|
||||
ImageNet_models.md
|
||||
DataAugmentation.md
|
|
@ -16,19 +16,16 @@
|
|||
- Metric Learning——更鲁棒的检索特征
|
||||
- Logo识别等方向延展
|
||||
- [超轻量图像识别系统概览](https://aistudio.baidu.com/aistudio/education/lessonvideo/1890318)
|
||||
- 图像识别技术选型策略
|
||||
- 图像识别技术选型策略
|
||||
- 推理速度提升8倍的秘籍
|
||||
- 四大典型行业应用案例
|
||||
- 四大典型行业应用案例
|
||||
- [SOTA模型炼丹秘诀](https://aistudio.baidu.com/aistudio/education/lessonvideo/1890323)
|
||||
- CPU定制模型PP-LCNet优化思路
|
||||
- Vison Transformer模型的应用拓展
|
||||
- [商品识别产业痛点剖析](https://aistudio.baidu.com/aistudio/education/lessonvideo/1896890)
|
||||
- 特征提取技术详解
|
||||
- 向量快速检索揭秘
|
||||
- 向量快速检索揭秘
|
||||
- [手把手教你玩转图像识别](https://aistudio.baidu.com/aistudio/education/lessonvideo/1911507)
|
||||
- 产业应用十问十答
|
||||
- 产业应用十问十答
|
||||
- 智能零售下的应用案例
|
||||
- 识别系统快速落地方案
|
||||
|
||||
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file only contains a selection of the most common options. For a full
|
||||
# list see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#
|
||||
# import os
|
||||
# import sys
|
||||
# sys.path.insert(0, os.path.abspath('.'))
|
||||
import sphinx_rtd_theme
|
||||
from recommonmark.parser import CommonMarkParser
|
||||
#import sphinx-markdown-tables
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'PaddleClas'
|
||||
copyright = '2021, PaddleClas'
|
||||
author = 'PaddleClas'
|
||||
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = '2.3.0'
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
source_parsers = {
|
||||
'.md': CommonMarkParser,
|
||||
}
|
||||
source_suffix = ['.rst', '.md']
|
||||
extensions = [
|
||||
'recommonmark',
|
||||
'sphinx_markdown_tables'
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = 'zh_CN'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = "sphinx_rtd_theme"
|
||||
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
|
@ -1,8 +0,0 @@
|
|||
数据准备
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
recognition_dataset.md
|
||||
classification_dataset.md
|
|
@ -58,7 +58,7 @@ PP-ShiTu对原数据集进行了`Gallery`库和`Query`库划分,并生成了
|
|||
<a name="2.1 环境配置"></a>
|
||||
|
||||
### 2.1 环境配置
|
||||
- 安装:请先参考文档[环境准备](../installation/install_paddleclas.md)配置PaddleClas运行环境
|
||||
- 安装:请先参考文档[环境准备](../../installation.md)配置PaddleClas运行环境
|
||||
- 进入`deploy`运行目录,本部分所有内容与命令均需要在`deploy`目录下运行,可以通过下面命令进入`deploy`目录。
|
||||
```shell
|
||||
cd deploy
|
||||
|
@ -176,7 +176,7 @@ python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.u
|
|||
其中`bbox`表示检测出的主体所在位置,`rec_docs`表示索引库中与检测框最为相似的类别,`rec_scores`表示对应的置信度。
|
||||
检测的可视化结果也保存在`output`文件夹下,对于本张图像,识别结果可视化如下所示。
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="2.4.2 基于文件夹的批量识别"></a>
|
||||
|
|
@ -361,6 +361,6 @@ cd ..
|
|||
|
||||
## 4. 使用自己模型
|
||||
|
||||
使用自己训练的模型,可以参考[模型导出](../../docs/zh_CN/inference_deployment/export_model.md),导出`inference model`,用于模型预测。
|
||||
使用自己训练的模型,可以参考[模型导出](../export_model.md),导出`inference model`,用于模型预测。
|
||||
|
||||
同时注意修改`yaml`文件中具体参数。
|
|
@ -130,7 +130,7 @@ pip install psutil
|
|||
|
||||
### 2.2 模型及数据准备
|
||||
|
||||
请按照[PP-ShiTu快速体验](../quick_start/quick_start_recognition.md#2.2.1)中下载及准备inference model,并修改好`${PaddleClas}/deploy/configs/inference_drink.yaml`的相关参数,同时准备好数据集。在具体使用时,请替换好自己的数据集及模型文件。
|
||||
请按照[PP-ShiTu快速体验](../../quick_start/quick_start_recognition.md#2.2.1)中下载及准备inference model,并修改好`${PaddleClas}/deploy/configs/inference_drink.yaml`的相关参数,同时准备好数据集。在具体使用时,请替换好自己的数据集及模型文件。
|
||||
|
||||
```shell
|
||||
cd ${PaddleClas}/deploy/shitu_index_manager
|
|
@ -1,4 +1,4 @@
|
|||
简体中文 | [English](../../en/inference_deployment/recognition_serving_deploy_en.md)
|
||||
简体中文 | [English](../../../en/inference_deployment/recognition_serving_deploy_en.md)
|
||||
|
||||
# 识别模型服务化部署
|
||||
|
||||
|
@ -188,7 +188,7 @@ python3.7 -m pip install paddle-serving-server-gpu==0.7.0.post112 # GPU with CUD
|
|||
pipeline_http_client.py # http方式发送pipeline预测请求的脚本
|
||||
pipeline_rpc_client.py # rpc方式发送pipeline预测请求的脚本
|
||||
recognition_web_service.py # 启动pipeline服务端的脚本
|
||||
readme.md # 识别模型服务化部署文档
|
||||
paddle2onnx.md # 识别模型服务化部署文档
|
||||
run_cpp_serving.sh # 启动C++ Pipeline Serving部署的脚本
|
||||
test_cpp_serving_client.py # rpc方式发送C++ Pipeline serving预测请求的脚本
|
||||
```
|
||||
|
@ -225,7 +225,7 @@ python3.7 -m pip install paddle-serving-server-gpu==0.7.0.post112 # GPU with CUD
|
|||
# 一键编译安装Serving server、设置 SERVING_BIN
|
||||
source ./build_server.sh python3.7
|
||||
```
|
||||
**注:** [build_server.sh](../build_server.sh#L55-L62) 所设定的路径可能需要根据实际机器上的环境如CUDA、python版本等作一定修改,然后再编译;如果执行 `build_server.sh` 过程中遇到非网络原因的报错,则可以手动将脚本中的命令逐条复制到终端执行。
|
||||
**注:** [build_server.sh](../../../../deploy/paddleserving/build_server.sh#L55-L62) 所设定的路径可能需要根据实际机器上的环境如CUDA、python版本等作一定修改,然后再编译;如果执行 `build_server.sh` 过程中遇到非网络原因的报错,则可以手动将脚本中的命令逐条复制到终端执行。
|
||||
|
||||
- C++ Serving使用的输入输出格式与Python不同,因此需要执行以下命令,将4个文件复制到下的文件覆盖掉[3.1](#31-模型转换)得到文件夹中的对应4个prototxt文件。
|
||||
```shell
|
|
@ -0,0 +1,82 @@
|
|||
# Python 预测推理
|
||||
|
||||
首先请参考文档[环境准备](../../installation.md)配置运行环境。
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. PP-ShiTu模型推理](#1)
|
||||
- [1.1 主体检测模型推理](#1.1)
|
||||
- [1.2 特征提取模型推理](#1.2)
|
||||
- [1.3 PP-ShiTu PipeLine推理](#1.3)
|
||||
|
||||
<a name="1"></a>
|
||||
|
||||
## 1. PP-ShiTu模型推理
|
||||
|
||||
PP-ShiTu整个Pipeline包含三部分:主体检测、特征提取模型、特征检索。其中主体检测模型、特征提取模型可以单独推理使用。单独使用主体检测详见[主体检测模型推理](#2.1),特征提取模型单独推理详见[特征提取模型推理](#2.2), PP-ShiTu整体推理详见[PP-ShiTu PipeLine推理](#2.3)。
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
### 1.1 主体检测模型推理
|
||||
|
||||
进入 PaddleClas 的 `deploy` 目录下:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/deploy
|
||||
```
|
||||
|
||||
准备 PaddleClas 提供的主体检测 inference 模型:
|
||||
|
||||
```shell
|
||||
mkdir -p models
|
||||
# 下载通用检测 inference 模型并解压
|
||||
wget -nc -P ./models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar
|
||||
tar -xf ./models/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar -C ./models/
|
||||
```
|
||||
|
||||
使用以下命令进行预测:
|
||||
|
||||
```shell
|
||||
python3.7 python/predict_det.py -c configs/inference_det.yaml
|
||||
```
|
||||
|
||||
在配置文件 `configs/inference_det.yaml` 中有以下字段用于配置预测参数:
|
||||
* `Global.infer_imgs`:待预测的图片文件路径;
|
||||
* `Global.use_gpu`: 是否使用 GPU 预测,默认为 `True`。
|
||||
|
||||
<a name="2.2"></a>
|
||||
|
||||
### 1.2 特征提取模型推理
|
||||
|
||||
下面以商品图片的特征提取为例,介绍特征提取模型推理。首先进入 PaddleClas 的 `deploy` 目录下:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/deploy
|
||||
```
|
||||
|
||||
准备 PaddleClas 提供的商品特征提取 inference 模型:
|
||||
|
||||
```shell
|
||||
mkdir -p models
|
||||
# 下载商品特征提取 inference 模型并解压
|
||||
wget -nc -P ./models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/PP-ShiTuV2/general_PPLCNetV2_base_pretrained_v1.0_infer.tar
|
||||
tar -xf ./models/general_PPLCNetV2_base_pretrained_v1.0_infer.tar -C ./models/
|
||||
```
|
||||
|
||||
使用以下命令进行预测:
|
||||
|
||||
```shell
|
||||
python3.7 python/predict_rec.py -c configs/inference_rec.yaml
|
||||
```
|
||||
|
||||
上述预测命令可以得到一个 512 维的特征向量,直接输出在在命令行中。
|
||||
|
||||
在配置文件 `configs/inference_rec.yaml` 中有以下字段用于配置预测参数:
|
||||
* `Global.infer_imgs`:待预测的图片文件路径;
|
||||
* `Global.use_gpu`: 是否使用 GPU 预测,默认为 `True`。
|
||||
|
||||
<a name="1.3"></a>
|
||||
|
||||
### 1.3 PP-ShiTu PipeLine推理
|
||||
|
||||
主体检测、特征提取和向量检索的串联预测,可以参考[图像识别快速开始](../../quick_start/quick_start_recognition.md)。
|
|
@ -11,7 +11,7 @@
|
|||
- [2.2 识别模型调优](#2.2)
|
||||
- [3.模型加速](#3)
|
||||
|
||||
在[PP-ShiTu快速开始](../quick_start/quick_start_recognition.md)中,主要展示了`PP-ShiTu`的快速开始demo。那么本文档主要介绍,如何将`PP-ShiTu`应用到自己的需求中,及如何继续调优,优化识别效果。具体可以分成以下三种情况
|
||||
在[PP-ShiTu快速开始](../../quick_start/quick_start_recognition.md)中,主要展示了`PP-ShiTu`的快速开始demo。那么本文档主要介绍,如何将`PP-ShiTu`应用到自己的需求中,及如何继续调优,优化识别效果。具体可以分成以下三种情况
|
||||
|
||||
- 直接使用官方模型
|
||||
- 根据需求对模型进行调优
|
||||
|
@ -35,7 +35,7 @@
|
|||
|
||||
### 1.1 下载官方模型及数据准备
|
||||
|
||||
模型下载及pipline 运行详见[图像识别快速开始](../quick_start/quick_start_recognition.md)
|
||||
模型下载及pipline 运行详见[图像识别快速开始](../../quick_start/quick_start_recognition.md)
|
||||
|
||||
下载模型后,要准备相应的数据,即所迁移应用的具体数据,数据量根据实际情况,自行决定,但是不能太少,会影响精度。将准备的数据分成两部分:1)建库图像(gallery),2)测试图像。其中建库数据无需过多,但需保证每个类别包含此类别物体不同角度的图像,建议每个类别至少5张图,请根据实际情况,具体调节。
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
|||
|
||||
对于加入检索的数据,每个类别尽量准备此类别的各角度的图像,丰富类别信息。准备的图像只能包含此类别,同时图像背景尽可能的少、简单。即将要加入检索根据标注的包围框信息,裁剪出bbox图像作为新的要加入的图像,以提高检索库的图像质量。
|
||||
|
||||
收集好图像后,数据整理及建库流程详见[图像识别快速开始](../quick_start/quick_start_recognition.md)中`3.2 建立新的索引库`
|
||||
收集好图像后,数据整理及建库流程详见[图像识别快速开始](../../quick_start/quick_start_recognition.md)中`3.2 建立新的索引库`
|
||||
|
||||
<a name="1.3"></a>
|
||||
|
||||
|
@ -77,12 +77,12 @@
|
|||
|
||||
在使用官方模型后,如果不满足精度需求,则可以参考此部分文档,进行模型调优
|
||||
|
||||
因为要对模型进行训练,所以收集自己的数据集。数据准备及相应格式请参考:[特征提取文档](../image_recognition_pipeline/feature_extraction.md)中 `4.1数据准备`部分、[识别数据集说明](../data_preparation/recognition_dataset.md)。值得注意的是,此部分需要准备大量的数据,以保证识别模型效果。训练配置文件参考:[通用识别模型配置文件](../../../ppcls/configs/GeneralRecognition/GeneralRecognition_PPLCNet_x2_5.yaml),训练方法参考:[识别模型训练](../models_training/recognition.md)
|
||||
因为要对模型进行训练,所以收集自己的数据集。数据准备及相应格式请参考:[特征提取文档](../../training/PP-ShiTu/feature_extraction.md)中 `4.1数据准备`部分、[识别数据集说明](../../training/metric_learning/dataset.md)。值得注意的是,此部分需要准备大量的数据,以保证识别模型效果。训练配置文件参考:[通用识别模型配置文件](../../../../ppcls/configs/GeneralRecognition/GeneralRecognition_PPLCNet_x2_5.yaml),训练方法参考:[识别模型训练](../../training/metric_learning/training.md)
|
||||
|
||||
- 数据增强:根据实际情况选择不同数据增强方法。如:实际应用中数据遮挡比较严重,建议添加`RandomErasing`增强方法。详见[数据增强文档](./DataAugmentation.md)
|
||||
- 换不同的`backbone`,一般来说,越大的模型,特征提取能力更强。不同`backbone`详见[模型介绍](../algorithm_introduction/ImageNet_models.md)
|
||||
- 选择不同的`Metric Learning`方法。不同的`Metric Learning`方法,对不同的数据集效果可能不太一样,建议尝试其他`Loss`,详见[Metric Learning](../algorithm_introduction/metric_learning.md)
|
||||
- 采用蒸馏方法,对小模型进行模型能力提升,详见[模型蒸馏](../algorithm_introduction/knowledge_distillation.md)
|
||||
- 数据增强:根据实际情况选择不同数据增强方法。如:实际应用中数据遮挡比较严重,建议添加`RandomErasing`增强方法。详见[数据增强文档](../../training/config_discription/data_augmentation.md)
|
||||
- 换不同的`backbone`,一般来说,越大的模型,特征提取能力更强。不同`backbone`详见[模型介绍](../../models/ImageNet1k/model_list.md)
|
||||
- 选择不同的`Metric Learning`方法。不同的`Metric Learning`方法,对不同的数据集效果可能不太一样,建议尝试其他`Loss`,详见[Metric Learning](../../algorithm_introduction/metric_learning.md)
|
||||
- 采用蒸馏方法,对小模型进行模型能力提升,详见[模型蒸馏](../../algorithm_introduction/knowledge_distillation.md)
|
||||
- 增补数据集。针对错误样本,添加badcase数据
|
||||
|
||||
模型训练完成后,参照[1.2 检索库更新](#1.2)进行检索库更新。同时,对整个pipeline进行测试,如果精度不达预期,则重复此步骤。
|
||||
|
@ -94,4 +94,4 @@
|
|||
模型加速主要以下几种方法:
|
||||
|
||||
- 替换小模型:一般来说,越小的模型预测速度相对越快
|
||||
- 模型裁剪、量化:请参考文档[模型压缩](./model_prune_quantization.md),压缩配置文件修改请参考[slim相关配置文件](../../../ppcls/configs/slim/)。
|
||||
- 模型裁剪、量化:请参考文档[模型压缩](../../training/advanced/prune_quantization.md),压缩配置文件修改请参考[slim相关配置文件](../../../../ppcls/configs/slim/)。
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
值得注意的是,为了更好是适配性,目前版本,`PaddleClas` 中暂时**只使用 CPU 进行向量检索**。
|
||||
|
||||

|
||||

|
||||
|
||||
如上图中所示,向量检索部分,在整个 `PP-ShiTu` 系统中有两部分内容
|
||||
|
||||
|
@ -127,7 +127,7 @@ IndexProcess:
|
|||
### 4.2 检索配置文件参数
|
||||
|
||||
|
||||
将检索的过程融合到 `PP-ShiTu` 的整体流程中,请参考 [README](../../../README_ch.md) 中 `PP-ShiTu 图像识别系统介绍` 部分。检索具体使用操作请参考[识别快速开始文档](../quick_start/quick_start_recognition.md)。
|
||||
将检索的过程融合到 `PP-ShiTu` 的整体流程中,请参考 [README](../../../../README_ch.md) 中 `PP-ShiTu 图像识别系统介绍` 部分。检索具体使用操作请参考[识别快速开始文档](../../quick_start/quick_start_recognition.md)。
|
||||
|
||||
其中,检索部分配置如下,整体检索配置文件,请参考 `deploy/configs/inference_*.yaml` 文件。
|
||||
|
||||
|
@ -145,4 +145,4 @@ IndexProcess:
|
|||
|
||||
- `return_k`: 检索结果返回 `k` 个结果
|
||||
- `score_thres`: 检索匹配的阈值
|
||||
- `hamming_radius`: 汉明距离半径。此参数只有在使用二值特征模型,`dist_type`设置为`hamming`时才能生效。具体二值特征模型使用方法请参考[哈希编码](./deep_hashing.md)
|
||||
- `hamming_radius`: 汉明距离半径。此参数只有在使用二值特征模型,`dist_type`设置为`hamming`时才能生效。具体二值特征模型使用方法请参考[哈希编码](../../training/PP-ShiTu/deep_hashing.md)
|
|
@ -17,7 +17,7 @@ PaddlePaddle 支持导出 inference 模型用于部署推理场景,相比于
|
|||
<a name="1"></a>
|
||||
## 1. 环境准备
|
||||
|
||||
首先请参考文档文档[环境准备](../installation/install_paddleclas.md)配置运行环境。
|
||||
首先请参考文档文档[环境准备](../installation.md)配置运行环境。
|
||||
|
||||
<a name="2"></a>
|
||||
## 2. 分类模型导出
|
||||
|
@ -46,7 +46,7 @@ python tools/export_model.py \
|
|||
<a name="3"></a>
|
||||
## 3. 主体检测模型导出
|
||||
|
||||
主体检测模型的导出,可以参考[主体检测介绍](../image_recognition_pipeline/mainbody_detection.md)。
|
||||
主体检测模型的导出,可以参考[主体检测介绍](../training/PP-ShiTu/mainbody_detection.md)。
|
||||
|
||||
<a name="4"></a>
|
||||
## 4. 识别模型导出
|
||||
|
@ -91,9 +91,16 @@ python3 tools/export_model.py \
|
|||
|
||||
导出的 inference 模型文件可用于预测引擎进行推理部署,根据不同的部署方式/平台,可参考:
|
||||
|
||||
* [Python 预测](./inference/python_deploy.md)
|
||||
* [C++ 预测](./inference/cpp_deploy.md)(目前仅支持分类模型)
|
||||
* [Python Whl 预测](./inference/whl_deploy.md)(目前仅支持分类模型)
|
||||
* [PaddleHub Serving 部署](./deployment/paddle_hub_serving_deploy.md)(目前仅支持分类模型)
|
||||
* [PaddleServing 部署](./deployment/paddle_serving_deploy.md)
|
||||
* [PaddleLite 部署](./deployment/paddle_lite_deploy.md)(目前仅支持分类模型)
|
||||
图像分类模型部署:
|
||||
* [Python 预测](./image_classification/python.md)
|
||||
* [C++ 预测](./image_classification/cpp/linux.md)
|
||||
* [Python Whl 预测](./image_classification/whl.md)(目前仅支持分类模型)
|
||||
* [PaddleHub Serving 部署](./image_classification/paddle_hub.md)(目前仅支持分类模型)
|
||||
* [PaddleServing 部署](./image_classification/paddle_serving.md)
|
||||
* [PaddleLite 部署](./image_classification/paddle_lite.md)
|
||||
|
||||
PP-ShiTu 部署:
|
||||
* [Python 预测](./PP-ShiTu/python.md)
|
||||
* [C++ 预测](./PP-ShiTu/cpp.md)
|
||||
* [PaddleServing 部署](./PP-ShiTu/paddle_serving.md)
|
||||
* [PaddleLite 部署](./PP-ShiTu/paddle_lite.md)
|
|
@ -25,7 +25,7 @@
|
|||
- Linux 环境,推荐使用 docker。
|
||||
- Windows 环境,目前支持基于 `Visual Studio 2019 Community` 进行编译;此外,如果您希望通过生成 `sln 解决方案` 的方式进行编译,可以参考该文档:[https://zhuanlan.zhihu.com/p/145446681](https://zhuanlan.zhihu.com/p/145446681)
|
||||
|
||||
* 该文档主要介绍基于 Linux 环境下的 PaddleClas C++ 预测流程,如果需要在 Windows 环境下使用预测库进行 C++ 预测,具体编译方法请参考 [Windows 下编译教程](./cpp_deploy_on_windows.md)。
|
||||
* 该文档主要介绍基于 Linux 环境下的 PaddleClas C++ 预测流程,如果需要在 Windows 环境下使用预测库进行 C++ 预测,具体编译方法请参考 [Windows 下编译教程](windows.md)。
|
||||
|
||||
<a name="1.1"></a>
|
||||
### 1.1 编译 opencv 库
|
||||
|
@ -255,7 +255,7 @@ make
|
|||
<a name="3.1"></a>
|
||||
### 3.1 准备 inference model
|
||||
|
||||
首先需要准备 inference model,关于将模型导出为 inference model 的具体步骤,可以参考 [模型导出](./export_model.md) 文档。假设导出的预测模型文件放在 `./inference` 目录下,则目录结构如下。
|
||||
首先需要准备 inference model,关于将模型导出为 inference model 的具体步骤,可以参考 [模型导出](../../export_model.md) 文档。假设导出的预测模型文件放在 `./inference` 目录下,则目录结构如下。
|
||||
|
||||
```
|
||||
inference/
|
||||
|
@ -293,6 +293,6 @@ sh tools/run.sh
|
|||
|
||||
* 最终屏幕上会输出结果,如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||
其中 `class id` 表示置信度最高的类别对应的 id,score 表示图片属于该类别的概率。
|
|
@ -61,19 +61,19 @@ paddle_inference_install_dir
|
|||
|
||||
1. 打开 Visual Studio 2019 Community,点击 `继续但无需代码`
|
||||
|
||||

|
||||

|
||||
|
||||
2. 点击:`文件`->`打开`->`CMake`
|
||||
|
||||

|
||||

|
||||
|
||||
选择项目代码所在路径,并打开 `CMakeList.txt`:
|
||||
|
||||

|
||||

|
||||
|
||||
3. 点击:`项目`->`CMake 设置`
|
||||
|
||||

|
||||

|
||||
|
||||
4. 请设置以下参数的值
|
||||
|
||||
|
@ -102,13 +102,13 @@ paddle_inference_install_dir
|
|||
* `PADDLE_LIB`:该路径下需要有 `CMakeCache.txt` 文件,一般为 `paddle_inference_install_dir/`。
|
||||
* 在使用 `CPU` 版预测库时,请不要勾选 `WITH_GPU` - `保存到 JSON`。
|
||||
|
||||

|
||||

|
||||
|
||||
设置完成后,点击上图中 `保存并生成 CMake 缓存以加载变量`。
|
||||
|
||||
5. 点击`生成`->`全部生成`
|
||||
|
||||

|
||||

|
||||
|
||||
在编译完成后,会生成可执行文件 `clas_system.exe`。并且,如未设置 `DCONFIG_LIB` 与 `DCLS_LIB`,则会在 `.\lib\` 目录下生成 `config lib` 和 `cls lib` 两个静态链接库文件(`libconfig.a`、`libcls.a`)。类似地,你也可以仅编译生成 `config lib` 和 `cls lib` 两个静态链接库文件,只需打开路径为 `D:\projects\PaddleClas\deploy\cpp\lib\CMakeList.txt` 的 `CMake` 文件并进行编译即可,具体参考[2. 使用 Visual Studio 2019 编译](#2),完成编译后,同样可在 `.\lib\` 目录下生成静态链接库文件,静态链接库文件可用于二次开发。
|
||||
|
||||
|
@ -118,7 +118,7 @@ paddle_inference_install_dir
|
|||
<a name='3.1'></a>
|
||||
### 3.1 准备 inference model
|
||||
|
||||
首先需要准备 inference model,关于将模型导出为 inference model 的具体步骤,可以参考 [模型导出](./export_model.md) 文档。假设导出的预测模型文件放在 `./inference` 目录下,则目录结构如下。
|
||||
首先需要准备 inference model,关于将模型导出为 inference model 的具体步骤,可以参考 [模型导出](../../export_model.md) 文档。假设导出的预测模型文件放在 `./inference` 目录下,则目录结构如下。
|
||||
|
||||
```
|
||||
inference/
|
|
@ -0,0 +1,67 @@
|
|||
# paddle2onnx 模型转化与预测
|
||||
|
||||
## 目录
|
||||
|
||||
- [paddle2onnx 模型转化与预测](#paddle2onnx-模型转化与预测)
|
||||
- [1. 环境准备](#1-环境准备)
|
||||
- [2. 模型转换](#2-模型转换)
|
||||
- [3. onnx 预测](#3-onnx-预测)
|
||||
|
||||
## 1. 环境准备
|
||||
|
||||
需要准备 Paddle2ONNX 模型转化环境,和 ONNX 模型预测环境。
|
||||
|
||||
Paddle2ONNX 支持将 PaddlePaddle inference 模型格式转化到 ONNX 模型格式,算子目前稳定支持导出 ONNX Opset 9~11。
|
||||
更多细节可参考 [Paddle2ONNX](https://github.com/PaddlePaddle/Paddle2ONNX#paddle2onnx)
|
||||
|
||||
- 安装 Paddle2ONNX
|
||||
```shell
|
||||
python3.7 -m pip install paddle2onnx
|
||||
```
|
||||
|
||||
- 安装 ONNX 推理引擎
|
||||
```shell
|
||||
python3.7 -m pip install onnxruntime
|
||||
```
|
||||
下面以 ResNet50_vd 为例,介绍如何将 PaddlePaddle inference 模型转换为 ONNX 模型,并基于 ONNX 引擎预测。
|
||||
|
||||
## 2. 模型转换
|
||||
|
||||
- ResNet50_vd inference模型下载
|
||||
|
||||
```shell
|
||||
cd deploy
|
||||
mkdir models && cd models
|
||||
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/ResNet50_vd_infer.tar && tar xf ResNet50_vd_infer.tar
|
||||
cd ..
|
||||
```
|
||||
|
||||
- 模型转换
|
||||
|
||||
使用 Paddle2ONNX 将 Paddle 静态图模型转换为 ONNX 模型格式:
|
||||
```shell
|
||||
paddle2onnx --model_dir=./models/ResNet50_vd_infer/ \
|
||||
--model_filename=inference.pdmodel \
|
||||
--params_filename=inference.pdiparams \
|
||||
--save_file=./models/ResNet50_vd_infer/inference.onnx \
|
||||
--opset_version=10 \
|
||||
--enable_onnx_checker=True
|
||||
```
|
||||
|
||||
转换完毕后,生成的ONNX 模型 `inference.onnx` 会被保存在 `./models/ResNet50_vd_infer/` 路径下
|
||||
|
||||
## 3. onnx 预测
|
||||
|
||||
执行如下命令:
|
||||
```shell
|
||||
python3.7 python/predict_cls.py \
|
||||
-c configs/inference_cls.yaml \
|
||||
-o Global.use_onnx=True \
|
||||
-o Global.use_gpu=False \
|
||||
-o Global.inference_model_dir=./models/ResNet50_vd_infer
|
||||
```
|
||||
|
||||
结果如下:
|
||||
```
|
||||
ILSVRC2012_val_00000010.jpeg: class id(s): [153, 204, 229, 332, 155], score(s): [0.69, 0.10, 0.02, 0.01, 0.01], label_name(s): ['Maltese dog, Maltese terrier, Maltese', 'Lhasa, Lhasa apso', 'Old English sheepdog, bobtail', 'Angora, Angora rabbit', 'Shih-Tzu']
|
||||
```
|
|
@ -1,4 +1,4 @@
|
|||
简体中文 | [English](../../en/inference_deployment/paddle_hub_serving_deploy_en.md)
|
||||
简体中文 | [English](../../../en/inference_deployment/paddle_hub_serving_deploy_en.md)
|
||||
|
||||
# 基于 PaddleHub Serving 的服务部署
|
||||
|
||||
|
@ -54,7 +54,7 @@ python3.7 -m pip install paddlehub==2.1.0 --upgrade -i https://pypi.tuna.tsinghu
|
|||
"inference_model_dir": "../inference/"
|
||||
```
|
||||
* 模型文件(包括 `.pdmodel` 与 `.pdiparams`)的名称必须为 `inference`。
|
||||
* 我们提供了大量基于 ImageNet-1k 数据集的预训练模型,模型列表及下载地址详见[模型库概览](../algorithm_introduction/ImageNet_models.md),也可以使用自己训练转换好的模型。
|
||||
* 我们提供了大量基于 ImageNet-1k 数据集的预训练模型,模型列表及下载地址详见[模型库概览](../../models/ImageNet1k/model_list.md),也可以使用自己训练转换好的模型。
|
||||
|
||||
|
||||
<a name="4"></a>
|
||||
|
@ -236,4 +236,4 @@ list: 返回结果
|
|||
'class_id_map_file':
|
||||
```
|
||||
|
||||
为了避免不必要的延时以及能够以 batch_size 进行预测,数据预处理逻辑(包括 `resize`、`crop` 等操作)均在客户端完成,因此需要在 [PaddleClas/deploy/hubserving/test_hubserving.py#L41-L47](../../../deploy/hubserving/test_hubserving.py#L41-L47) 以及 [PaddleClas/deploy/hubserving/test_hubserving.py#L51-L76](../../../deploy/hubserving/test_hubserving.py#L51-L76) 中修改数据预处理逻辑相关代码。
|
||||
为了避免不必要的延时以及能够以 batch_size 进行预测,数据预处理逻辑(包括 `resize`、`crop` 等操作)均在客户端完成,因此需要在 [PaddleClas/deploy/hubserving/test_hubserving.py#L41-L47](../../../../deploy/hubserving/test_hubserving.py#L41-L47) 以及 [PaddleClas/deploy/hubserving/test_hubserving.py#L51-L76](../../../../deploy/hubserving/test_hubserving.py#L51-L76) 中修改数据预处理逻辑相关代码。
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
本教程将介绍基于[Paddle Lite](https://github.com/PaddlePaddle/Paddle-Lite) 在移动端部署PaddleClas分类模型的详细步骤。
|
||||
|
||||
Paddle Lite是飞桨轻量化推理引擎,为手机、IOT端提供高效推理能力,并广泛整合跨平台硬件,为端侧部署及应用落地问题提供轻量化的部署方案。如果希望直接测试速度,可以参考[Paddle-Lite移动端benchmark测试教程](../../docs/zh_CN/extension/paddle_mobile_inference.md)。
|
||||
Paddle Lite是飞桨轻量化推理引擎,为手机、IOT端提供高效推理能力,并广泛整合跨平台硬件,为端侧部署及应用落地问题提供轻量化的部署方案。如果希望直接测试速度,可以参考[Paddle-Lite移动端benchmark测试教程](../../models/ImageNet1k/paddle_lite_benchmark.md)。
|
||||
|
||||
---
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
简体中文 | [English](../../en/inference_deployment/classification_serving_deploy_en.md)
|
||||
简体中文 | [English](../../../en/inference_deployment/classification_serving_deploy_en.md)
|
||||
|
||||
# 分类模型服务化部署
|
||||
|
||||
|
@ -141,7 +141,7 @@ classification_web_service.py # 启动pipeline服务端的脚本
|
|||
config.yml # 启动pipeline服务的配置文件
|
||||
pipeline_http_client.py # http方式发送pipeline预测请求的脚本
|
||||
pipeline_rpc_client.py # rpc方式发送pipeline预测请求的脚本
|
||||
readme.md # 分类模型服务化部署文档
|
||||
paddle2onnx.md # 分类模型服务化部署文档
|
||||
run_cpp_serving.sh # 启动C++ Serving部署的脚本
|
||||
test_cpp_serving_client.py # rpc方式发送C++ serving预测请求的脚本
|
||||
```
|
||||
|
@ -182,7 +182,7 @@ test_cpp_serving_client.py # rpc方式发送C++ serving预测请求的脚本
|
|||
# 一键编译安装Serving server、设置 SERVING_BIN
|
||||
source ./build_server.sh python3.7
|
||||
```
|
||||
**注:**[build_server.sh](../../../deploy/paddleserving/build_server.sh#L55-L62)所设定的路径可能需要根据实际机器上的环境如CUDA、python版本等作一定修改,然后再编译;如果执行`build_server.sh`过程中遇到非网络原因的报错,则可以手动将脚本中的命令逐条复制到终端执行。
|
||||
**注:**[build_server.sh](../../../../deploy/paddleserving/build_server.sh#L55-L62)所设定的路径可能需要根据实际机器上的环境如CUDA、python版本等作一定修改,然后再编译;如果执行`build_server.sh`过程中遇到非网络原因的报错,则可以手动将脚本中的命令逐条复制到终端执行。
|
||||
|
||||
- 修改客户端文件 `ResNet50_vd_client/serving_client_conf.prototxt` ,将 `feed_type:` 后的字段改为20,将第一个 `shape:` 后的字段改为1并删掉其余的 `shape` 字段。
|
||||
```log
|
||||
|
@ -194,9 +194,9 @@ test_cpp_serving_client.py # rpc方式发送C++ serving预测请求的脚本
|
|||
shape: 1
|
||||
}
|
||||
```
|
||||
- 修改 [`test_cpp_serving_client`](../../../deploy/paddleserving/test_cpp_serving_client.py) 的部分代码
|
||||
1. 修改 [`load_client_config`](../../../deploy/paddleserving/test_cpp_serving_client.py#L28) 处的代码,将 `load_client_config` 后的路径改为 `ResNet50_vd_client/serving_client_conf.prototxt` 。
|
||||
2. 修改 [`feed={"inputs": image}`](../../../deploy/paddleserving/test_cpp_serving_client.py#L45) 处的代码,将 `inputs` 改为与 `ResNet50_vd_client/serving_client_conf.prototxt` 中 `feed_var` 字段下面的 `name` 一致。由于部分模型client文件中的 `name` 为 `x` 而不是 `inputs` ,因此使用这些模型进行C++ Serving部署时需要注意这一点。
|
||||
- 修改 [`test_cpp_serving_client`](../../../../deploy/paddleserving/test_cpp_serving_client.py) 的部分代码
|
||||
1. 修改 [`load_client_config`](../../../../deploy/paddleserving/test_cpp_serving_client.py#L28) 处的代码,将 `load_client_config` 后的路径改为 `ResNet50_vd_client/serving_client_conf.prototxt` 。
|
||||
2. 修改 [`feed={"inputs": image}`](../../../../deploy/paddleserving/test_cpp_serving_client.py#L45) 处的代码,将 `inputs` 改为与 `ResNet50_vd_client/serving_client_conf.prototxt` 中 `feed_var` 字段下面的 `name` 一致。由于部分模型client文件中的 `name` 为 `x` 而不是 `inputs` ,因此使用这些模型进行C++ Serving部署时需要注意这一点。
|
||||
|
||||
- 启动服务:
|
||||
```shell
|
|
@ -0,0 +1,38 @@
|
|||
# Python 预测推理
|
||||
|
||||
首先请参考文档[环境准备](../../installation.md)配置运行环境。
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 图像分类模型推理](#1)
|
||||
|
||||
<a name="1"></a>
|
||||
|
||||
## 1. 图像分类推理
|
||||
|
||||
首先请参考文档[模型导出](../export_model.md)准备 inference 模型,然后进入 PaddleClas 的 `deploy` 目录下:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/deploy
|
||||
```
|
||||
|
||||
使用以下命令进行预测:
|
||||
|
||||
```shell
|
||||
python3.7 python/predict_cls.py -c configs/inference_cls.yaml
|
||||
```
|
||||
|
||||
在配置文件 `configs/inference_cls.yaml` 中有以下字段用于配置预测参数:
|
||||
* `Global.infer_imgs`:待预测的图片文件(夹)路径;
|
||||
* `Global.inference_model_dir`:inference 模型文件所在文件夹的路径,该文件夹下需要有文件 `inference.pdmodel` 和 `inference.pdiparams` 两个文件;
|
||||
* `Global.use_gpu`:是否使用 GPU 预测,默认为 `True`;
|
||||
* `Global.enable_mkldnn`:是否启用 `MKL-DNN` 加速库,默认为 `False`。注意 `enable_mkldnn` 与 `use_gpu` 同时为 `True` 时,将忽略 `enable_mkldnn`,而使用 GPU 预测;
|
||||
* `Global.use_fp16`:是否启用 `FP16`,默认为 `False`;
|
||||
* `Global.use_tensorrt`:是否使用 TesorRT 预测引擎,默认为 `False`;
|
||||
* `PreProcess`:用于数据预处理配置;
|
||||
* `PostProcess`:由于后处理配置;
|
||||
* `PostProcess.Topk.class_id_map_file`:数据集 label 的映射文件,默认为 `../ppcls/utils/imagenet1k_label_list.txt`,该文件为 PaddleClas 所使用的 ImageNet 数据集 label 映射文件。
|
||||
|
||||
**注意**:
|
||||
* 如果使用 VisionTransformer 系列模型,如 `DeiT_***_384`, `ViT_***_384` 等,请注意模型的输入数据尺寸,该类模型需要修改参数: `PreProcess.resize_short=384`, `PreProcess.resize=384`。
|
||||
* 如果你希望提升评测模型速度,使用 GPU 评测时,建议开启 TensorRT 加速预测,使用 CPU 评测时,建议开启 MKL-DNN 加速预测。
|
|
@ -39,14 +39,14 @@ python3 setup.py install
|
|||
## 2. 快速开始
|
||||
* 使用 `ResNet50` 模型,以下图(`PaddleClas/docs/images/inference_deployment/whl_demo.jpg`)为例进行说明。
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
* 在 Python 代码中使用
|
||||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='ResNet50')
|
||||
infer_imgs='docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs='docs/images/deployment/whl_demo.jpg'
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
@ -91,7 +91,7 @@ Predict complete!
|
|||
|
||||
* 命令行中
|
||||
```bash
|
||||
paddleclas --model_name=ViT_base_patch16_384 --infer_imgs='docs/images/inference_deployment/whl_demo.jpg' --resize_short=384 --crop_size=384
|
||||
paddleclas --model_name=ViT_base_patch16_384 --infer_imgs='docs/images/deployment/whl_demo.jpg' --resize_short=384 --crop_size=384
|
||||
```
|
||||
|
||||
* Python 代码中
|
||||
|
@ -123,14 +123,14 @@ paddleclas -h
|
|||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='ResNet50')
|
||||
infer_imgs = 'docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs = 'docs/images/deployment/whl_demo.jpg'
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
||||
* CLI
|
||||
```bash
|
||||
paddleclas --model_name='ResNet50' --infer_imgs='docs/images/inference_deployment/whl_demo.jpg'
|
||||
paddleclas --model_name='ResNet50' --infer_imgs='docs/images/deployment/whl_demo.jpg'
|
||||
```
|
||||
|
||||
<a name="4.3"></a>
|
||||
|
@ -141,14 +141,14 @@ paddleclas --model_name='ResNet50' --infer_imgs='docs/images/inference_deploymen
|
|||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(inference_model_dir='./inference/')
|
||||
infer_imgs = 'docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs = 'docs/images/deployment/whl_demo.jpg'
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
||||
* CLI
|
||||
```bash
|
||||
paddleclas --inference_model_dir='./inference/' --infer_imgs='docs/images/inference_deployment/whl_demo.jpg'
|
||||
paddleclas --inference_model_dir='./inference/' --infer_imgs='docs/images/deployment/whl_demo.jpg'
|
||||
```
|
||||
|
||||
<a name="4.4"></a>
|
||||
|
@ -197,7 +197,7 @@ paddleclas --model_name='ResNet50' --infer_imgs='https://raw.githubusercontent.c
|
|||
import cv2
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='ResNet50')
|
||||
infer_imgs = cv2.imread("docs/images/inference_deployment/whl_demo.jpg")[:, :, ::-1]
|
||||
infer_imgs = cv2.imread("docs/images/deployment/whl_demo.jpg")[:, :, ::-1]
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
@ -243,12 +243,12 @@ class_id<space>class_name<\n>
|
|||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='ResNet50', class_id_map_file='./ppcls/utils/imagenet1k_label_list.txt')
|
||||
infer_imgs = 'docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs = 'docs/images/deployment/whl_demo.jpg'
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
||||
* CLI
|
||||
```bash
|
||||
paddleclas --model_name='ResNet50' --infer_imgs='docs/images/inference_deployment/whl_demo.jpg' --class_id_map_file='./ppcls/utils/imagenet1k_label_list.txt'
|
||||
paddleclas --model_name='ResNet50' --infer_imgs='docs/images/deployment/whl_demo.jpg' --class_id_map_file='./ppcls/utils/imagenet1k_label_list.txt'
|
||||
```
|
|
@ -1,10 +0,0 @@
|
|||
FAQ系列
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
faq_2021_s2.md
|
||||
faq_2021_s1.md
|
||||
faq_2020_s1.md
|
||||
faq_selected_30.md
|
|
@ -1,9 +0,0 @@
|
|||
图像识别流程
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
mainbody_detection.md
|
||||
feature_extraction.md
|
||||
vector_search.md
|
|
@ -1,18 +0,0 @@
|
|||
欢迎使用PaddleClas图像分类库!
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
introduction/index
|
||||
installation/index
|
||||
quick_start/index
|
||||
image_recognition_pipeline/index
|
||||
data_preparation/index
|
||||
models_training/index
|
||||
inference_deployment/index
|
||||
models/index
|
||||
algorithm_introduction/index
|
||||
advanced_tutorials/index
|
||||
others/index
|
||||
faq_series/index
|
|
@ -1,17 +0,0 @@
|
|||
推理部署
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
export_model.md
|
||||
python_deploy.md
|
||||
cpp_deploy.md
|
||||
paddle_serving_deploy.md
|
||||
paddle_hub_serving_deploy.md
|
||||
paddle_lite_deploy.md
|
||||
whl_deploy.md
|
||||
cpp_deploy_on_windows.md
|
||||
|
||||
|
||||
|
|
@ -1,114 +0,0 @@
|
|||
# Python 预测推理
|
||||
|
||||
首先请参考文档[环境准备](../installation/install_paddleclas.md)配置运行环境。
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 图像分类模型推理](#1)
|
||||
- [2. PP-ShiTu模型推理](#2)
|
||||
- [2.1 主体检测模型推理](#2.1)
|
||||
- [2.2 特征提取模型推理](#2.2)
|
||||
- [2.3 PP-ShiTu PipeLine推理](#2.3)
|
||||
|
||||
<a name="1"></a>
|
||||
|
||||
## 1. 图像分类推理
|
||||
|
||||
首先请参考文档[模型导出](./export_model.md)准备 inference 模型,然后进入 PaddleClas 的 `deploy` 目录下:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/deploy
|
||||
```
|
||||
|
||||
使用以下命令进行预测:
|
||||
|
||||
```shell
|
||||
python3.7 python/predict_cls.py -c configs/inference_cls.yaml
|
||||
```
|
||||
|
||||
在配置文件 `configs/inference_cls.yaml` 中有以下字段用于配置预测参数:
|
||||
* `Global.infer_imgs`:待预测的图片文件(夹)路径;
|
||||
* `Global.inference_model_dir`:inference 模型文件所在文件夹的路径,该文件夹下需要有文件 `inference.pdmodel` 和 `inference.pdiparams` 两个文件;
|
||||
* `Global.use_gpu`:是否使用 GPU 预测,默认为 `True`;
|
||||
* `Global.enable_mkldnn`:是否启用 `MKL-DNN` 加速库,默认为 `False`。注意 `enable_mkldnn` 与 `use_gpu` 同时为 `True` 时,将忽略 `enable_mkldnn`,而使用 GPU 预测;
|
||||
* `Global.use_fp16`:是否启用 `FP16`,默认为 `False`;
|
||||
* `Global.use_tensorrt`:是否使用 TesorRT 预测引擎,默认为 `False`;
|
||||
* `PreProcess`:用于数据预处理配置;
|
||||
* `PostProcess`:由于后处理配置;
|
||||
* `PostProcess.Topk.class_id_map_file`:数据集 label 的映射文件,默认为 `../ppcls/utils/imagenet1k_label_list.txt`,该文件为 PaddleClas 所使用的 ImageNet 数据集 label 映射文件。
|
||||
|
||||
**注意**:
|
||||
* 如果使用 VisionTransformer 系列模型,如 `DeiT_***_384`, `ViT_***_384` 等,请注意模型的输入数据尺寸,该类模型需要修改参数: `PreProcess.resize_short=384`, `PreProcess.resize=384`。
|
||||
* 如果你希望提升评测模型速度,使用 GPU 评测时,建议开启 TensorRT 加速预测,使用 CPU 评测时,建议开启 MKL-DNN 加速预测。
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
## 2. PP-ShiTu模型推理
|
||||
|
||||
PP-ShiTu整个Pipeline包含三部分:主体检测、特征提取模型、特征检索。其中主体检测模型、特征提取模型可以单独推理使用。单独使用主体检测详见[主体检测模型推理](#2.1),特征提取模型单独推理详见[特征提取模型推理](#2.2), PP-ShiTu整体推理详见[PP-ShiTu PipeLine推理](#2.3)。
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
### 2.1 主体检测模型推理
|
||||
|
||||
进入 PaddleClas 的 `deploy` 目录下:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/deploy
|
||||
```
|
||||
|
||||
准备 PaddleClas 提供的主体检测 inference 模型:
|
||||
|
||||
```shell
|
||||
mkdir -p models
|
||||
# 下载通用检测 inference 模型并解压
|
||||
wget -nc -P ./models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar
|
||||
tar -xf ./models/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar -C ./models/
|
||||
```
|
||||
|
||||
使用以下命令进行预测:
|
||||
|
||||
```shell
|
||||
python3.7 python/predict_det.py -c configs/inference_det.yaml
|
||||
```
|
||||
|
||||
在配置文件 `configs/inference_det.yaml` 中有以下字段用于配置预测参数:
|
||||
* `Global.infer_imgs`:待预测的图片文件路径;
|
||||
* `Global.use_gpu`: 是否使用 GPU 预测,默认为 `True`。
|
||||
|
||||
<a name="2.2"></a>
|
||||
|
||||
### 2.2 特征提取模型推理
|
||||
|
||||
下面以商品图片的特征提取为例,介绍特征提取模型推理。首先进入 PaddleClas 的 `deploy` 目录下:
|
||||
|
||||
```shell
|
||||
cd PaddleClas/deploy
|
||||
```
|
||||
|
||||
准备 PaddleClas 提供的商品特征提取 inference 模型:
|
||||
|
||||
```shell
|
||||
mkdir -p models
|
||||
# 下载商品特征提取 inference 模型并解压
|
||||
wget -nc -P ./models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/PP-ShiTuV2/general_PPLCNetV2_base_pretrained_v1.0_infer.tar
|
||||
tar -xf ./models/general_PPLCNetV2_base_pretrained_v1.0_infer.tar -C ./models/
|
||||
```
|
||||
|
||||
使用以下命令进行预测:
|
||||
|
||||
```shell
|
||||
python3.7 python/predict_rec.py -c configs/inference_rec.yaml
|
||||
```
|
||||
|
||||
上述预测命令可以得到一个 512 维的特征向量,直接输出在在命令行中。
|
||||
|
||||
在配置文件 `configs/inference_det.yaml` 中有以下字段用于配置预测参数:
|
||||
* `Global.infer_imgs`:待预测的图片文件路径;
|
||||
* `Global.use_gpu`: 是否使用 GPU 预测,默认为 `True`。
|
||||
|
||||
<a name="2.3"></a>
|
||||
|
||||
### 2.3. PP-ShiTu PipeLine推理
|
||||
|
||||
主体检测、特征提取和向量检索的串联预测,可以参考[图像识别快速开始](../quick_start/quick_start_recognition.md)。
|
|
@ -1,8 +0,0 @@
|
|||
安装
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
install_paddle.md
|
||||
install_paddleclas.md
|
|
@ -1,20 +0,0 @@
|
|||
## PaddleClas 功能特性
|
||||
|
||||
飞桨图像识别套件 PaddleClas 是飞桨为工业界和学术界所准备的一个图像识别任务的工具集,助力使用者训练出更好的视觉模型和应用落地。具体地,它包含以下几个核心特性。
|
||||
|
||||
|
||||
- 实用的图像识别系统:集成了目标检测、特征学习、图像检索等模块,广泛适用于各类图像识别任务。
|
||||
提供商品识别、车辆识别、 logo 识别和动漫人物识别等 4 个场景应用示例。
|
||||
|
||||
- 丰富的预训练模型库:提供了 36 个系列共 175 个 ImageNet 预训练模型,其中 7 个精选系列模型支持结构快速修改。
|
||||
|
||||
- 全面易用的特征学习组件:集成 arcmargin, triplet loss 等 12 度量学习方法,通过配置文件即可随意组合切换。
|
||||
|
||||
- SSLD 知识蒸馏: 14 个分类预训练模型,精度普遍提升 3% 以上;其中 ResNet50_vd 模型在 ImageNet-1k 数据集上的 Top-1 精度达到了 84.0%,Res2Net200_vd 预训练模型 Top-1 精度高达 85.1% 。
|
||||
|
||||
- 数据增广:支持 AutoAugment 、 Cutout 、 Cutmix 等 8 种数据增广算法详细介绍、代码复现和在统一实验环境下的效果评估。
|
||||
|
||||
|
||||

|
||||
|
||||
更多关于图像识别快速体验、算法详解、模型训练评估与预测部署方法,请参考[首页 README 文档教程](../../../README_ch.md)。
|
|
@ -1,8 +0,0 @@
|
|||
介绍
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
function_intro.md
|
||||
more_demo/index
|
|
@ -1,53 +0,0 @@
|
|||
## 动漫人物图片识别效果图
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069080-a821e0b7-8a10-4946-bf05-ff093cc16064.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069100-7539d292-1bd8-4655-8a6d-d1f2238bd618.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069103-f91359d4-1197-4a6e-b2f7-434c76a6b704.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069108-ad54ae1d-610d-4cfa-9cd6-8ee8d280d61d.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069114-3c771434-84a8-4e58-961e-d35edfbfe5ef.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069119-e8d85be5-da87-4125-ae8b-9fd4cac139d9.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069124-98c30894-4837-4f2f-8399-3d3ebadfd0a1.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069125-a9edf115-33a1-48bf-9e4f-7edbc4269a1e.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069129-98553a25-00e2-4f0f-9b44-dfc4e4f6b6d1.png " width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069131-f7649bb2-255c-4725-a635-799b8b4d815a.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069135-acb69b89-55db-41ac-9846-e2536ef3d955.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069137-1f0abfdb-6608-432e-bd40-c8e1ab86ef8b.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069140-18c6a439-f117-498d-9cdb-ade71cc2c248.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069145-80452f86-afcf-42b5-8423-328cca9e4750.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069154-63a25c1c-b448-44c2-8baf-eb31952c5476.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069156-1b881c6b-5680-4f9a-aef1-2491af50675d.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069161-8759f3d4-8456-43ea-bf54-99a646d5a109.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069167-937aa847-c661-431c-b3dc-5a3c890b31cd.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069170-43d0dce4-6c62-485d-adf4-364c8467c251.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069175-70bc9e50-b833-4a2a-8a3f-c0775dac49c2.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069179-d01f8a0f-4383-4b08-b064-4e6bb006e745.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069184-d423a84c-c9dd-4125-9dc7-397cae21efc9.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069188-fc4deb80-38a2-4c50-9a29-30cee4c8e374.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069193-77a19ee8-b1e2-4c27-9016-3440a1547470.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069196-5f050524-ac08-4831-89f5-9e9e3ce085c1.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069200-4f963171-c790-4f43-8ca3-2e701ad3731c.jpeg" width = "400" /> </div>
|
|
@ -1,11 +0,0 @@
|
|||
介绍
|
||||
================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
cartoon.md
|
||||
logo.md
|
||||
more_demo.md
|
||||
product.md
|
||||
vehicle.md
|
|
@ -1,65 +0,0 @@
|
|||
## 商标图片识别效果图
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096687-5b562e2d-0653-4be6-861d-1936a4440df2.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096698-4b95eb4b-6638-47dc-ae48-7b40744a31ba.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096701-4a4b2bd9-85f2-4d55-be4b-be6ab5e0fb81.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096706-ef4ad024-7284-4cb3-975a-779fd06b96f5.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096710-620b0495-cc83-4501-a104-dfe20afb53d2.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096713-48e629aa-c637-4603-b005-18570fa94d6d.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096715-709957f2-50bb-4edb-a6e4-e7d5601872c7.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096717-a74744cc-4fb8-4e78-b1cb-20409582ca52.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096721-d4af003c-7945-4591-9e47-4e428dc2628c.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096726-460af6ab-8595-4fb4-9960-4c66b18bee1e.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096728-81494000-92b5-40ad-a6a7-606dae3548a3.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096731-2e980977-9ee6-4e29-bdf7-8397820f70e8.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096732-7d425b45-6b04-4984-948d-278da13dd802.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096735-a9c85c14-5965-4529-a235-ce00035bd7ab.jpg " width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096736-3182efc6-ba43-4cde-9397-88a131f4fed8.jpg " width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096737-91e6fa24-1eb5-4aba-9271-5a3722cbe35b.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096740-f440f89b-5f95-493a-b087-00c7cd3481ef.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096747-31b924e3-ffb2-45ab-872e-4ff923ed04f1.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096752-1f98c937-5d83-4c29-b495-01971b5fb258.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096756-a994c7e2-b9e7-40ba-9934-78c10666217b.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096757-879749e0-9e04-4d1e-a07b-6a4322975a84.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096761-5b682ce8-4f83-4fbb-bfb7-df749912aa8b.png " width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096767-e8f701eb-d0e8-4304-b031-e2bff8c199f3.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096778-ec2ad374-b9fc-427e-9e8b-8e5d2afc6394.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096783-9ec5e04d-19e3-463d-ad9d-7a26202bbb9c.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096788-44f04979-18ca-4ba6-b833-7489b344ffff.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096791-6989451e-157c-4101-8b54-7578b05eb7c9.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096796-cc4477cf-016c-4b19-86c3-61824704ecf5.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096798-ba33ee0d-45b8-48ad-a8fa-14cd643a6976.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096805-e29a2ba8-4785-4ca6-9e0d-596fad6ce8dc.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096812-7d8c57a5-fbae-4496-8144-3b40ac74fef0.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096816-50f0ac3d-f2eb-4011-a34e-58e2e215b7b0.jpg " width = "400" /> </div>
|
|
@ -1,40 +0,0 @@
|
|||
## 识别效果展示
|
||||
- 商品识别
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277277-7b29f596-35f6-4f00-8d2b-0ef0be57a090.jpg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277291-f7d2b2a1-5790-4f5b-a0e6-f5c52d04a69a.jpg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277300-8ce0d5ce-e0ca-46ea-bb9a-74df0df66ae3.jpg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277308-14a097bd-2bcd-41ce-a9e6-5e9cd0bd8b08.jpg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277311-208ae574-a708-46e2-a41e-c639322913b1.jpg" width = "400" /> </div>
|
||||
|
||||
[更多效果图](product.md)
|
||||
|
||||
|
||||
- 动漫人物识别
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069108-ad54ae1d-610d-4cfa-9cd6-8ee8d280d61d.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069100-7539d292-1bd8-4655-8a6d-d1f2238bd618.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140069080-a821e0b7-8a10-4946-bf05-ff093cc16064.jpeg" width = "400" /> </div>
|
||||
|
||||
[更多效果图](cartoon.md)
|
||||
|
||||
|
||||
- logo识别
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096687-5b562e2d-0653-4be6-861d-1936a4440df2.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096701-4a4b2bd9-85f2-4d55-be4b-be6ab5e0fb81.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096706-ef4ad024-7284-4cb3-975a-779fd06b96f5.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096713-48e629aa-c637-4603-b005-18570fa94d6d.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096752-1f98c937-5d83-4c29-b495-01971b5fb258.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140096767-e8f701eb-d0e8-4304-b031-e2bff8c199f3.jpeg" width = "400" /> </div>
|
||||
|
||||
|
||||
[更多效果图](logo.md)
|
||||
|
||||
|
||||
- 车辆识别
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243899-c60f0a51-db9b-438a-9f2d-0d2893c200bb.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243905-7eeb938d-d88f-4540-a667-06e08dcf1f55.jpeg" width = "400" /> </div>
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243911-735a6ec0-a624-4965-b3cd-2b9f52fa8d65.jpeg" width = "400" /> </div>
|
||||
|
||||
[更多效果图](vehicle.md)
|
|
@ -1,179 +0,0 @@
|
|||
## 商品图片识别效果图
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277277-7b29f596-35f6-4f00-8d2b-0ef0be57a090.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277287-7bdad02a-8e3c-4e04-861c-95a5dae1f3c6.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277291-f7d2b2a1-5790-4f5b-a0e6-f5c52d04a69a.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277294-80aaab94-5109-41be-97f8-3ada73118963.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277296-2a8d7846-cd2e-454e-8b72-46233da09451.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277300-8ce0d5ce-e0ca-46ea-bb9a-74df0df66ae3.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277302-25c973eb-f9aa-42ce-b9e9-66cee738c241.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277303-3d3460da-c6aa-4994-b585-17bc9f3df504.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277306-20cbef71-cc58-4ae1-965b-4806e82988a9.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277308-14a097bd-2bcd-41ce-a9e6-5e9cd0bd8b08.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277309-be092d1c-6513-472c-8b7f-685f4353ae5b.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277311-208ae574-a708-46e2-a41e-c639322913b1.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277314-72901737-5ef5-4a23-820b-1db58c5e6ca0.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277318-aef4080c-24f2-4d92-be3c-45b500b75584.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277320-8046d0df-1256-41ce-a8d6-6d2c1292462c.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277321-e3864473-6a8e-485f-81f2-562b902d6cff.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277324-0aacc27f-699a-437b-bac0-4a20c90b47b1.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277328-8d28f754-8645-4c05-a9a6-0312bbe2f890.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277333-59da1513-e7e5-455c-ab73-7a3162216923.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277335-454c0423-5398-4348-aaab-e2652fd08999.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277338-a7d09c28-1b86-4cf5-bd79-99d51c5b5311.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277343-9c456d21-8018-4cd5-9c0b-cc7c087fac69.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277345-2ef780f1-d7c9-4cf2-a370-f220a052eb71.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277347-baa4b870-7fca-4d4c-8528-fad720270024.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277351-e0691080-ede4-49ae-9075-d36a41cebf25.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277354-509f8f85-f171-44e9-8ca1-4c3cae77b5fb.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277357-39d572b8-60ee-44db-9e0e-2c0ea2be2ed3.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277359-6caf33f6-2a38-48e5-b349-f4dd1ef2566b.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277362-260daa87-1db7-4f89-ba9c-1b32876fd3b6.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277366-14cfd2f9-d044-4288-843e-463a1816163e.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277368-b0e96341-e030-4e4d-8010-6f7c3bc94d2f.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277370-1f26e4e5-9988-4427-a035-44bfd9d472d6.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277372-27e60b60-cd5c-4b05-ae38-2e9524c627f3.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277374-bd292bb2-e1f9-4d5f-aa49-d67ac571d01b.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277377-b0b8cdb9-8196-4598-ae47-b615914bf6bf.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277382-fc89d18a-a57b-4331-adbb-bda3584fb122.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277386-d676467c-9846-4051-8192-b3e089d01cdc.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277390-83f66d3f-c415-47e6-b651-6b51fbe59bbf.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277394-9895d654-3163-4dd9-882c-ac5a893e2ad3.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277396-9e5e3aa3-6d9e-40ab-a325-2edea452156d.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277399-b92e2092-eabd-45c8-bf36-b2e238167892.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277404-285f943a-de70-48b8-9545-53e229b7350d.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277406-0b7ec434-f064-4985-80f3-c00735b3e32d.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277408-4f9b8b19-42c2-4ba4-bf6d-b95ababe0313.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277409-6df0faf7-71b7-4c9a-a875-36ae7ee7129d.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277411-9c2b364a-749d-465e-a85d-29a69e9ff3ef.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277413-c54a462c-dd3b-4ad0-985d-ef0ec1f216ec.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277414-6d922055-cd59-4f84-b5b6-651209d6336a.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277417-78e1322e-4039-4232-b217-1be4f207f804.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277419-181822a3-bae6-4c4f-9959-59e991c2df6c.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277422-76f09d84-cb47-4332-aa88-a12458cd8993.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277424-a72203b5-1a99-4464-a39c-245f7a891f25.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277429-521ac9a6-e4c3-4c74-9c5b-8e8dd6cddf34.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277433-4f9fb9c8-7930-4303-b54e-a6eace347923.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277434-f3aa3565-a2c5-4c1c-ab44-930a8b073b5f.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277437-90cf1cd7-6a62-4ac4-ac85-3aa534e50cee.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277439-54e168bc-9518-429e-9e97-cb9ca5e811c9.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277441-a3c277d7-c889-4556-b74a-400cadf8b771.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277442-22a0cd38-acd8-4b5a-8e59-c4bea852fb79.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277444-ea662034-c17f-47ba-9ea3-694d3cb0c880.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277448-a71f4a0a-c3cc-4432-a803-843b7c65307f.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277449-0b3a2e98-3e09-4bd6-be32-c35f44154e8a.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277452-e36ccc63-8e39-4973-a336-4ace855d25e6.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277454-bddd9527-b189-4771-ab9e-52085db5a44d.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277455-7ea277ba-bc75-48db-9567-40e1acb56f02.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277460-0f5ee4dc-5ece-45d5-8ef9-666f1be41b76.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277461-37cab773-6341-4c91-b1f4-780d530eab3b.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277465-8f53ef9d-0465-4a90-afac-b1dd3c970b72.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277467-655ddabe-cbe0-4d1f-a30e-c2965428e8d7.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277470-4587e905-3fc8-4dad-84ee-0844ba4d2474.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277473-a155944f-efe3-492a-babc-2f3fe700a99b.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277475-c95ab821-f5ae-427a-8721-8991f9c7f29f.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277479-55b59855-2ed6-4526-9481-6b92b25fef97.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277484-556f0e4c-007b-4f6a-b21f-c485f630cbcb.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277486-a39eb069-bc13-415e-b936-ba294216dfac.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277487-80952841-6a76-4fb3-8049-fe15ce8f7cfb.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277491-e892a6a8-6f9a-46c7-83e0-261cfb92d276.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277494-520f483e-654d-4399-9684-1fcd9778b76e.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277496-54b1ada5-e6a6-4654-a8a6-739511cec750.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277500-ff7e2afd-9cd7-484a-bd1e-362226f5197f.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277501-94489261-bea5-4492-bf3e-98cc8aaa7a7f.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277504-567a32bc-a573-4154-a9cd-6acbec923768.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277506-e893d4d5-43ce-4df1-9f08-3cdf6a8c7e2c.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277509-5766629f-bb92-4552-b34a-647e29b9a89b.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277511-8821708b-09f0-4aab-86dd-40ae3794697a.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277515-ed6a0dff-bd91-4233-a9af-e2744df7c7e0.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277519-1883d6a1-9348-4514-8924-dde27dd38704.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277524-b9d8515c-4df2-410a-b4a6-da098cb9da61.jpg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140277526-52a9c666-a799-4921-b371-41d97d7d9242.jpg" width = "400" /> </div>
|
|
@ -1,33 +0,0 @@
|
|||
## 车辆图片识别效果图
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243899-c60f0a51-db9b-438a-9f2d-0d2893c200bb.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243904-fdbe2e01-dc7c-449a-8e9e-baea4f85fee4.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243905-7eeb938d-d88f-4540-a667-06e08dcf1f55.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243908-c7f1e3ea-92a7-429b-888c-732b9ec5398f.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243911-735a6ec0-a624-4965-b3cd-2b9f52fa8d65.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243913-baec489a-5463-472b-b5d1-418bcd4eb978.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243916-f50dfcdd-2d5f-48f9-876f-dbc05f4afa30.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243920-7a65ec82-8312-421e-985a-c394f11af28f.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243922-458e6dca-fb80-4baf-951e-9651080dc242.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243926-5df3036b-9ea1-441c-b30a-b4f847df25ab.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243927-7673d94a-fbb0-4a92-a3f3-c879a432a7db.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243928-91082855-c5a7-4a3f-aeea-7a2e51e43183.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243929-88fe7efa-b212-4105-af2f-2248a6cb2877.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243933-49e71d02-8228-40ec-99b2-3ed862bf4ba5.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243935-530fbfa3-0d34-4d9d-bd59-2fde5659f7e5.jpeg" width = "400" /> </div>
|
||||
|
||||
<div align="center"> <img src="https://user-images.githubusercontent.com/12560511/140243940-d289fc7d-d343-4aa5-a807-9ce09a241ccd.jpeg" width = "400" /> </div>
|
|
@ -1,37 +0,0 @@
|
|||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
|
||||
set SOURCEDIR=source
|
||||
set BUILDDIR=build
|
||||
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.https://www.sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
|
||||
:end
|
||||
popd
|
|
@ -22,7 +22,7 @@ DLA(Deep Layer Aggregation)。 视觉识别需要丰富的表示形式,其范
|
|||
| DLA46x_c | 1.1 | 0.5 | 64.36 | 86.01 |
|
||||
| DLA60 | 22.0 | 4.2 | 76.10 | 92.92 |
|
||||
| DLA60x | 17.4 | 3.5 | 77.53 | 93.78 |
|
||||
| DLA60x_c | 1.3 | 0.6 | 66.45 | 87.54 |
|
||||
| DLA60x_c | 1.3 | 0.6 | 66.45 | 87.54 |
|
||||
| DLA102 | 33.3 | 7.2 | 78.93 | 94.52 |
|
||||
| DLA102x | 26.4 | 5.9 | 78.10 | 94.00 |
|
||||
| DLA102x2 | 41.4 | 9.3 | 78.85 | 94.45 |
|
||||
|
@ -42,4 +42,4 @@ DLA(Deep Layer Aggregation)。 视觉识别需要丰富的表示形式,其范
|
|||
| DLA46_c | 224 | 256 | 1.06 | 2.08 | 3.23 |
|
||||
| DLA60 | 224 | 256 | 2.78 | 5.36 | 8.29 |
|
||||
| DLA60x_c | 224 | 256 | 1.79 | 3.68 | 5.19 |
|
||||
| DLA60x | 224 | 256 | 5.98 | 9.24 | 12.52 |
|
||||
| DLA60x | 224 | 256 | 5.98 | 9.24 | 12.52 |
|
|
@ -15,13 +15,13 @@ DPN 的全称是 Dual Path Networks,即双通道网络。该网络是由 Dense
|
|||
|
||||
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
目前 PaddleClas 开源的这两类模型的预训练模型一共有 10 个,其指标如上图所示,可以看到,在相同的 FLOPS 和参数量下,相比 DenseNet,DPN 拥有更高的精度。但是由于 DPN 有更多的分支,所以其推理速度要慢于 DenseNet。由于 DenseNet264 的网络层数最深,所以该网络是 DenseNet 系列模型中参数量最大的网络,DenseNet161 的网络的宽度最大,导致其是该系列中网络中计算量最大、精度最高的网络。从推理速度来看,计算量大且精度高的的 DenseNet161 比 DenseNet264 具有更快的速度,所以其比 DenseNet264 具有更大的优势。
|
||||
|
|
@ -16,13 +16,13 @@ ResNeXt 是 facebook 于 2016 年提出的一种对 ResNet 的改进版网络。
|
|||
|
||||
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
目前 PaddleClas 开源的这两类模型的预训练模型一共有 14 个。从上图中可以看出 EfficientNet 系列网络优势非常明显,ResNeXt101_wsl 系列模型由于用到了更多的数据,最终的精度也更高。EfficientNet_B0_Small 是去掉了 SE_block 的 EfficientNet_B0,其具有更快的推理速度。
|
||||
|
|
@ -14,13 +14,13 @@ HRNet 是 2019 年由微软亚洲研究院提出的一种全新的神经网络
|
|||
|
||||
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
目前 PaddleClas 开源的这类模型的预训练模型一共有 7 个,其指标如图所示,其中 HRNet_W48_C 指标精度异常的原因可能是因为网络训练的正常波动。
|
||||
|
|
@ -32,4 +32,3 @@ HarDNet(Harmonic DenseNet)是 2019 年由国立清华大学提出的一种
|
|||
| HarDNet85 | 224 | 256 | 6.24 | 14.85 | 20.57 |
|
||||
| HarDNet39_ds | 224 | 256 | 1.40 | 2.30 | 3.33 |
|
||||
| HarDNet68_ds | 224 | 256 | 2.26 | 3.34 | 5.06 |
|
||||
|
|
@ -22,13 +22,13 @@ InceptionV4 是 2016 年由 Google 设计的新的神经网络,当时残差结
|
|||
|
||||
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
上图反映了 Xception 系列和 InceptionV4 的精度和其他指标的关系。其中 Xception_deeplab 与论文结构保持一致,Xception 是 PaddleClas 的改进模型,在预测速度基本不变的情况下,精度提升约 0.6%。关于该改进模型的详细介绍正在持续更新中,敬请期待。
|
||||
|
|
@ -21,13 +21,13 @@ MobileNetV3 是 Google 于 2019 年提出的一种基于 NAS 的新的轻量级
|
|||
|
||||
GhostNet 是华为于 2020 年提出的一种全新的轻量化网络结构,通过引入 ghost module,大大减缓了传统深度网络中特征的冗余计算问题,使得网络的参数量和计算量大大降低。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
目前 PaddleClas 开源的的移动端系列的预训练模型一共有 35 个,其指标如图所示。从图片可以看出,越新的轻量级模型往往有更优的表现,MobileNetV3 代表了目前主流的轻量级神经网络结构。在 MobileNetV3 中,作者为了获得更高的精度,在 global-avg-pooling 后使用了 1x1 的卷积。该操作大幅提升了参数量但对计算量影响不大,所以如果从存储角度评价模型的优异程度,MobileNetV3 优势不是很大,但由于其更小的计算量,使得其有更快的推理速度。此外,我们模型库中的 ssld 蒸馏模型表现优异,从各个考量角度下,都刷新了当前轻量级模型的精度。由于 MobileNetV3 模型结构复杂,分支较多,对 GPU 并不友好,GPU 预测速度不如 MobileNetV1。GhostNet 于 2020 年提出,通过引入 ghost 的网络设计理念,大大降低了计算量和参数量,同时在精度上也超过前期最高的 MobileNetV3 网络结构。
|
|
@ -44,11 +44,11 @@ PP-HGNet 作者针对 GPU 设备,对目前 GPU 友好的网络做了分析和
|
|||
|
||||
PP-HGNet 骨干网络的整体结构如下:
|
||||
|
||||

|
||||

|
||||
|
||||
其中,PP-HGNet是由多个HG-Block组成,HG-Block的细节如下:
|
||||
|
||||

|
||||

|
||||
|
||||
<a name='1.3'></a>
|
||||
|
||||
|
@ -65,8 +65,8 @@ PP-HGNet 目前提供的模型的精度、速度指标及预训练权重链接
|
|||
| PPHGNet_base_ssld | 85.00| 97.35 | 5.97 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNet_base_ssld_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPHGNet_base_ssld_infer.tar) |
|
||||
|
||||
**备注:**
|
||||
|
||||
* 1. `_ssld` 表示使用 `SSLD 蒸馏`后的模型。关于 `SSLD蒸馏` 的内容,详情 [SSLD 蒸馏](../advanced_tutorials/knowledge_distillation.md)。
|
||||
|
||||
* 1. `_ssld` 表示使用 `SSLD 蒸馏`后的模型。关于 `SSLD蒸馏` 的内容,详情 [SSLD 蒸馏](../../training/advanced/knowledge_distillation.md)。
|
||||
* 2. PP-HGNet 更多模型指标及权重,敬请期待。
|
||||
|
||||
PP-HGNet 与其他模型的比较如下,其中测试机器为 NVIDIA® Tesla® V100,开启 TensorRT 引擎,精度类型为 FP32。在相同速度下,PP-HGNet 精度均超越了其他 SOTA CNN 模型,在与 SwinTransformer 模型的比较中,在更高精度的同时,速度快 2 倍以上。
|
||||
|
@ -89,8 +89,8 @@ PP-HGNet 与其他模型的比较如下,其中测试机器为 NVIDIA® Tesla®
|
|||
| ResNeXt101_32x48d_wsl | 85.37 | 97.69 | 55.07 |
|
||||
| SwinTransformer_base | 85.2 | 97.5 | 13.53 |
|
||||
| <b>PPHGNet_base_ssld<b> | <b>85.00<b>| <b>97.35<b> | <b>5.97<b> |
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
## 2. 模型快速体验
|
||||
|
@ -123,31 +123,31 @@ python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
|
|||
pip3 install paddleclas
|
||||
```
|
||||
|
||||
<a name="2.3"></a>
|
||||
|
||||
<a name="2.3"></a>
|
||||
|
||||
### 2.3 预测
|
||||
|
||||
* 在命令行中使用 PPHGNet_small 的权重快速预测
|
||||
|
||||
|
||||
```bash
|
||||
paddleclas --model_name=PPHGNet_small --infer_imgs="docs/images/inference_deployment/whl_demo.jpg"
|
||||
```
|
||||
|
||||
|
||||
结果如下:
|
||||
```
|
||||
>>> result
|
||||
class_ids: [8, 7, 86, 82, 81], scores: [0.71479, 0.08682, 0.00806, 0.0023, 0.00121], label_names: ['hen', 'cock', 'partridge', 'ruffed grouse, partridge, Bonasa umbellus', 'ptarmigan'], filename: docs/images/inference_deployment/whl_demo.jpg
|
||||
Predict complete!
|
||||
```
|
||||
|
||||
**备注**: 更换 PPHGNet 的其他 scale 的模型时,只需替换 `model_name`,如将此时的模型改为 `PPHGNet_tiny` 时,只需要将 `--model_name=PPHGNet_small` 改为 `--model_name=PPHGNet_tiny` 即可。
|
||||
|
||||
|
||||
**备注**: 更换 PPHGNet 的其他 scale 的模型时,只需替换 `model_name`,如将此时的模型改为 `PPHGNet_tiny` 时,只需要将 `--model_name=PPHGNet_small` 改为 `--model_name=PPHGNet_tiny` 即可。
|
||||
|
||||
|
||||
* 在 Python 代码中预测
|
||||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='PPHGNet_small')
|
||||
infer_imgs = 'docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs = 'docs/images/deployment/whl_demo.jpg'
|
||||
result = clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
@ -159,19 +159,19 @@ print(next(result))
|
|||
>>> result
|
||||
[{'class_ids': [8, 7, 86, 82, 81], 'scores': [0.71479, 0.08682, 0.00806, 0.0023, 0.00121], 'label_names': ['hen', 'cock', 'partridge', 'ruffed grouse, partridge, Bonasa umbellus', 'ptarmigan'], 'filename': 'docs/images/inference_deployment/whl_demo.jpg'}]
|
||||
```
|
||||
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
## 3. 模型训练、评估和预测
|
||||
|
||||
|
||||
<a name="3.1"></a>
|
||||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档[环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档[环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
<a name="3.2"></a>
|
||||
|
||||
### 3.2 数据准备
|
||||
|
||||
|
@ -200,15 +200,15 @@ cd path_to_PaddleClas
|
|||
```
|
||||
|
||||
其中 `train/` 和 `val/` 分别为训练集和验证集。`train_list.txt` 和 `val_list.txt` 分别为训练集和验证集的标签文件。
|
||||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
<a name="3.3"></a>
|
||||
|
||||
### 3.3 模型训练
|
||||
### 3.3 模型训练
|
||||
|
||||
|
||||
在 `ppcls/configs/ImageNet/PPHGNet/PPHGNet_small.yaml` 中提供了 PPHGNet_small 训练配置,可以通过如下脚本启动训练:
|
||||
|
@ -218,11 +218,11 @@ export CUDA_VISIBLE_DEVICES=0,1,2,3
|
|||
python3 -m paddle.distributed.launch \
|
||||
--gpus="0,1,2,3" \
|
||||
tools/train.py \
|
||||
-c ppcls/configs/ImageNet/PPHGNet/PPHGNet_small.yaml
|
||||
-c ppcls/configs/ImageNet/PPHGNet/PPHGNet_small.yaml
|
||||
```
|
||||
|
||||
|
||||
**备注:**
|
||||
**备注:**
|
||||
|
||||
* 当前精度最佳的模型会保存在 `output/PPHGNet_small/best_model.pdparams`
|
||||
|
||||
|
@ -249,7 +249,7 @@ python3 tools/eval.py \
|
|||
```python
|
||||
python3 tools/infer.py \
|
||||
-c ppcls/configs/ImageNet/PPHGNet/PPHGNet_small.yaml \
|
||||
-o Global.pretrained_model=output/PPHGNet_small/best_model
|
||||
-o Global.pretrained_model=output/PPHGNet_small/best_model
|
||||
```
|
||||
|
||||
输出结果如下:
|
||||
|
@ -258,30 +258,30 @@ python3 tools/infer.py \
|
|||
[{'class_ids': [8, 7, 86, 82, 81], 'scores': [0.71479, 0.08682, 0.00806, 0.0023, 0.00121], 'file_name': 'docs/images/inference_deployment/whl_demo.jpg', 'label_names': ['hen', 'cock', 'partridge', 'ruffed grouse, partridge, Bonasa umbellus', 'ptarmigan']}]
|
||||
```
|
||||
|
||||
**备注:**
|
||||
**备注:**
|
||||
|
||||
* 这里`-o Global.pretrained_model="output/PPHGNet_small/best_model"` 指定了当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。
|
||||
|
||||
|
||||
* 默认是对 `docs/images/inference_deployment/whl_demo.jpg` 进行预测,此处也可以通过增加字段 `-o Infer.infer_imgs=xxx` 对其他图片预测。
|
||||
|
||||
|
||||
* 默认输出的是 Top-5 的值,如果希望输出 Top-k 的值,可以指定`-o Infer.PostProcess.topk=k`,其中,`k` 为您指定的值。
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="4"></a>
|
||||
|
||||
## 4. 模型推理部署
|
||||
|
||||
<a name="4.1"></a>
|
||||
<a name="4.1"></a>
|
||||
|
||||
### 4.1 推理模型准备
|
||||
|
||||
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。相比于直接基于预训练模型进行预测,Paddle Inference可使用MKLDNN、CUDNN、TensorRT 进行预测加速,从而实现更优的推理性能。更多关于Paddle Inference推理引擎的介绍,可以参考[Paddle Inference官网教程](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/infer/inference/inference_cn.html)。
|
||||
|
||||
|
||||
当使用 Paddle Inference 推理时,加载的模型类型为 inference 模型。本案例提供了两种获得 inference 模型的方法,如果希望得到和文档相同的结果,请选择[直接下载 inference 模型](#6.1.2)的方式。
|
||||
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
### 4.1.1 基于训练得到的权重导出 inference 模型
|
||||
|
||||
|
@ -303,7 +303,7 @@ python3 tools/export_model.py \
|
|||
```
|
||||
|
||||
|
||||
<a name="4.1.2"></a>
|
||||
<a name="4.1.2"></a>
|
||||
|
||||
### 4.1.2 直接下载 inference 模型
|
||||
|
||||
|
@ -324,7 +324,7 @@ wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPHGNet
|
|||
│ └── inference.pdmodel
|
||||
```
|
||||
|
||||
<a name="4.2"></a>
|
||||
<a name="4.2"></a>
|
||||
|
||||
### 4.2 基于 Python 预测引擎推理
|
||||
|
||||
|
@ -375,33 +375,32 @@ ILSVRC2012_val_00030010.jpeg: class id(s): [80, 83, 136, 23, 93], score(s): [0.8
|
|||
```
|
||||
|
||||
|
||||
<a name="4.3"></a>
|
||||
<a name="4.3"></a>
|
||||
|
||||
### 4.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="4.4"></a>
|
||||
<a name="4.4"></a>
|
||||
|
||||
### 4.4 服务化部署
|
||||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
|
||||
### 4.5 端侧部署
|
||||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
|
||||
### 4.6 Paddle2ONNX 模型转换与预测
|
||||
|
||||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -37,8 +37,8 @@
|
|||
- [4.5 端侧部署](#4.5)
|
||||
- [4.6 Paddle2ONNX 模型转换与预测](#4.6)
|
||||
- [5. 引用](#5)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="1"></a>
|
||||
|
||||
|
@ -49,14 +49,14 @@
|
|||
在计算机视觉领域中,骨干网络的好坏直接影响到整个视觉任务的结果。在之前的一些工作中,相关的研究者普遍将 FLOPs 或者 Params 作为优化目的,但是在工业界真实落地的场景中,推理速度才是考量模型好坏的重要指标,然而,推理速度和准确性很难兼得。考虑到工业界有很多基于 Intel CPU 的应用,所以我们本次的工作旨在使骨干网络更好的适应 Intel CPU,从而得到一个速度更快、准确率更高的轻量级骨干网络,与此同时,目标检测、语义分割等下游视觉任务的性能也同样得到提升。
|
||||
|
||||
近年来,有很多轻量级的骨干网络问世,尤其最近两年,各种 NAS 搜索出的网络层出不穷,这些网络要么主打 FLOPs 或者 Params 上的优势,要么主打 ARM 设备上的推理速度的优势,很少有网络专门针对 Intel CPU 做特定的优化,导致这些网络在 Intel CPU 端的推理速度并不是很完美。基于此,我们针对 Intel CPU 设备以及其加速库 MKLDNN 设计了特定的骨干网络 PP-LCNet,比起其他的轻量级的 SOTA 模型,该骨干网络可以在不增加推理时间的情况下,进一步提升模型的性能,最终大幅度超越现有的 SOTA 模型。与其他模型的对比图如下。
|
||||

|
||||

|
||||
|
||||
<a name="1.2"></a>
|
||||
|
||||
### 1.2 模型细节
|
||||
|
||||
网络结构整体如下图所示。
|
||||

|
||||

|
||||
我们经过大量的实验发现,在基于 Intel CPU 设备上,尤其当启用 MKLDNN 加速库后,很多看似不太耗时的操作反而会增加延时,比如 elementwise-add 操作、split-concat 结构等。所以最终我们选用了结构尽可能精简、速度尽可能快的 block 组成我们的 BaseNet(类似 MobileNetV1)。基于 BaseNet,我们通过实验,总结了四条几乎不增加延时但是可以提升模型精度的方法,融合这四条策略,我们组合成了 PP-LCNet。下面对这四条策略一一介绍:
|
||||
|
||||
<a name="1.2.1"></a>
|
||||
|
@ -83,7 +83,7 @@ SE 模块是 SENet 提出的一种通道注意力机制,可以有效提升模
|
|||
最终,PP-LCNet 中的 SE 模块的位置选用了表格中第三行的方案。
|
||||
|
||||
<a name="1.2.3"></a>
|
||||
|
||||
|
||||
#### 1.2.3 合适的位置添加更大的卷积核
|
||||
|
||||
在 MixNet 的论文中,作者分析了卷积核大小对模型性能的影响,结论是在一定范围内大的卷积核可以提升模型的性能,但是超过这个范围会有损模型的性能,所以作者组合了一种 split-concat 范式的 MixConv,这种组合虽然可以提升模型的性能,但是不利于推理。我们通过实验总结了一些更大的卷积核在不同位置的作用,类似 SE 模块的位置,更大的卷积核在网络的中后部作用更明显,下表展示了 5x5 卷积核的位置对精度的影响:
|
||||
|
@ -96,9 +96,9 @@ SE 模块是 SENet 提出的一种通道注意力机制,可以有效提升模
|
|||
|
||||
|
||||
实验表明,更大的卷积核放在网络的中后部即可达到放在所有位置的精度,与此同时,获得更快的推理速度。PP-LCNet 最终选用了表格中第三行的方案。
|
||||
|
||||
|
||||
<a name="1.2.4"></a>
|
||||
|
||||
|
||||
#### 1.2.4 GAP 后使用更大的 1x1 卷积层
|
||||
|
||||
在 GoogLeNet 之后,GAP(Global-Average-Pooling)后往往直接接分类层,但是在轻量级网络中,这样会导致 GAP 后提取的特征没有得到进一步的融合和加工。如果在此后使用一个更大的 1x1 卷积层(等同于 FC 层),GAP 后的特征便不会直接经过分类层,而是先进行了融合,并将融合的特征进行分类。这样可以在不影响模型推理速度的同时大大提升准确率。
|
||||
|
@ -113,17 +113,17 @@ BaseNet 经过以上四个方面的改进,得到了 PP-LCNet。下表进一步
|
|||
| <b>1<b> | <b>1<b> | <b>1<b> | <b>1<b> | <b>63.14<b> | <b>2.05<b> |
|
||||
|
||||
<a name="1.3"></a>
|
||||
|
||||
|
||||
### 1.3 实验结果
|
||||
|
||||
<a name="1.3.1"></a>
|
||||
|
||||
|
||||
#### 1.3.1 图像分类
|
||||
|
||||
图像分类我们选用了 ImageNet 数据集,相比目前主流的轻量级网络,PP-LCNet 在相同精度下可以获得更快的推理速度。当使用百度自研的 SSLD 蒸馏策略后,精度进一步提升,在 Intel cpu 端约 5ms 的推理速度下 ImageNet 的 Top-1 Acc 超过了 80%。
|
||||
|
||||
| Model | Params(M) | FLOPs(M) | Top-1 Acc(\%) | Top-5 Acc(\%) | Latency(ms) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||
| PPLCNet_x0_25 | 1.5 | 18 | 51.86 | 75.65 | 1.74 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPLCNet_x0_25_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPLCNet_x0_25_infer.tar) |
|
||||
| PPLCNet_x0_35 | 1.6 | 29 | 58.09 | 80.83 | 1.92 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPLCNet_x0_35_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPLCNet_x0_35_infer.tar) |
|
||||
| PPLCNet_x0_5 | 1.9 | 47 | 63.14 | 84.66 | 2.05 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPLCNet_x0_5_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPLCNet_x0_5_infer.tar) |
|
||||
|
@ -136,7 +136,7 @@ BaseNet 经过以上四个方面的改进,得到了 PP-LCNet。下表进一步
|
|||
| PPLCNet_x1_0_ssld | 3.0 | 161 | 74.39 | 92.09 | 2.46 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPLCNet_x1_0_ssld_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPLCNet_x1_0_ssld_infer.tar) |
|
||||
| PPLCNet_x2_5_ssld | 9.0 | 906 | 80.82 | 95.33 | 5.39 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPLCNet_x2_5_ssld_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPLCNet_x2_5_ssld_infer.tar) |
|
||||
|
||||
其中 `_ssld` 表示使用 `SSLD 蒸馏`后的模型。关于 `SSLD蒸馏` 的内容,详情 [SSLD 蒸馏](../advanced_tutorials/knowledge_distillation.md)。
|
||||
其中 `_ssld` 表示使用 `SSLD 蒸馏`后的模型。关于 `SSLD蒸馏` 的内容,详情 [SSLD 蒸馏](../../training/advanced/knowledge_distillation.md)。
|
||||
|
||||
与其他轻量级网络的性能对比:
|
||||
|
||||
|
@ -156,7 +156,7 @@ BaseNet 经过以上四个方面的改进,得到了 PP-LCNet。下表进一步
|
|||
| <b>PPLCNet_x1_0<b> |<b> 3.0<b> | <b>161<b> | <b>71.32<b> | <b>90.03<b> | <b>2.46<b> |
|
||||
|
||||
<a name="1.3.2"></a>
|
||||
|
||||
|
||||
#### 1.3.2 目标检测
|
||||
|
||||
目标检测的方法我们选用了百度自研的 PicoDet,该方法主打轻量级目标检测场景,下表展示了在 COCO 数据集上、backbone 选用 PP-LCNet 与 MobileNetV3 的结果的比较,无论在精度还是速度上,PP-LCNet 的优势都非常明显。
|
||||
|
@ -169,7 +169,7 @@ MobileNetV3_large_x0_75 | 25.8 | 11.1 |
|
|||
<b>PPLCNet_x1_0<b> | <b>26.9<b> | <b>7.9<b> |
|
||||
|
||||
<a name="1.3.3"></a>
|
||||
|
||||
|
||||
#### 1.3.3 语义分割
|
||||
|
||||
语义分割的方法我们选用了 DeeplabV3+,下表展示了在 Cityscapes 数据集上、backbone 选用 PP-LCNet 与 MobileNetV3 的比较,在精度和速度方面,PP-LCNet 的优势同样明显。
|
||||
|
@ -186,8 +186,8 @@ MobileNetV3_large_x0_75 | 64.53 | 151 |
|
|||
## 1.4 Benchmark
|
||||
|
||||
<a name="1.4.1"></a>
|
||||
|
||||
#### 1.4.1 基于 Intel Xeon Gold 6148 的预测速度
|
||||
|
||||
#### 1.4.1 基于 Intel Xeon Gold 6148 的预测速度
|
||||
|
||||
| Model | Latency(ms)<br/>bs=1, thread=10 |
|
||||
|:--:|:--:|
|
||||
|
@ -199,11 +199,11 @@ MobileNetV3_large_x0_75 | 64.53 | 151 |
|
|||
| PPLCNet_x1_5 | 3.19 |
|
||||
| PPLCNet_x2_0 | 4.27 |
|
||||
| PPLCNet_x2_5 | 5.39 |
|
||||
|
||||
|
||||
**备注:** 精度类型为 FP32,推理过程使用 MKLDNN。
|
||||
|
||||
<a name="1.4.2"></a>
|
||||
|
||||
|
||||
#### 1.4.2 基于 V100 GPU 的预测速度
|
||||
|
||||
| Models | Latency(ms)<br>bs=1 | Latency(ms)<br/>bs=4 | Latency(ms)<br/>bs=8 |
|
||||
|
@ -215,7 +215,7 @@ MobileNetV3_large_x0_75 | 64.53 | 151 |
|
|||
| PPLCNet_x1_0 | 0.73 | 1.64 | 2.53 |
|
||||
| PPLCNet_x1_5 | 0.82 | 2.06 | 3.12 |
|
||||
| PPLCNet_x2_0 | 0.94 | 2.58 | 4.08 |
|
||||
|
||||
|
||||
**备注:** 精度类型为 FP32,推理过程使用 TensorRT。
|
||||
|
||||
<a name="1.4.3"></a>
|
||||
|
@ -232,15 +232,15 @@ MobileNetV3_large_x0_75 | 64.53 | 151 |
|
|||
| PPLCNet_x1_5 | 20.55 | 12.26 | 7.54 |
|
||||
| PPLCNet_x2_0 | 33.79 | 20.17 | 12.10 |
|
||||
| PPLCNet_x2_5 | 49.89 | 29.60 | 17.82 |
|
||||
|
||||
|
||||
**备注:** 精度类型为 FP32。
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
## 2. 模型快速体验
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
### 2.1 安装 paddlepaddle
|
||||
|
||||
- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
|
||||
|
@ -266,32 +266,32 @@ python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
|
|||
```
|
||||
pip3 install paddleclas
|
||||
```
|
||||
|
||||
<a name="2.3"></a>
|
||||
|
||||
|
||||
<a name="2.3"></a>
|
||||
|
||||
### 2.3 预测
|
||||
|
||||
* 在命令行中使用 PPLCNet_x1_0 的权重快速预测
|
||||
|
||||
|
||||
```bash
|
||||
paddleclas --model_name=PPLCNet_x1_0 --infer_imgs="docs/images/inference_deployment/whl_demo.jpg"
|
||||
```
|
||||
|
||||
|
||||
结果如下:
|
||||
```
|
||||
>>> result
|
||||
class_ids: [8, 7, 86, 81, 85], scores: [0.91347, 0.03779, 0.0036, 0.00117, 0.00112], label_names: ['hen', 'cock', 'partridge', 'ptarmigan', 'quail'], filename: docs/images/inference_deployment/whl_demo.jpg
|
||||
Predict complete!
|
||||
```
|
||||
|
||||
**备注**: 更换 PPLCNet 的其他 scale 的模型时,只需替换 `model_name`,如将此时的模型改为 `PPLCNet_x2_0` 时,只需要将 `--model_name=PPLCNet_x1_0` 改为 `--model_name=PPLCNet_x2_0` 即可。
|
||||
```
|
||||
|
||||
**备注**: 更换 PPLCNet 的其他 scale 的模型时,只需替换 `model_name`,如将此时的模型改为 `PPLCNet_x2_0` 时,只需要将 `--model_name=PPLCNet_x1_0` 改为 `--model_name=PPLCNet_x2_0` 即可。
|
||||
|
||||
|
||||
|
||||
* 在 Python 代码中预测
|
||||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='PPLCNet_x1_0')
|
||||
infer_imgs='docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs='docs/images/deployment/whl_demo.jpg'
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
@ -303,18 +303,18 @@ print(next(result))
|
|||
>>> result
|
||||
[{'class_ids': [8, 7, 86, 81, 85], 'scores': [0.91347, 0.03779, 0.0036, 0.00117, 0.00112], 'label_names': ['hen', 'cock', 'partridge', 'ptarmigan', 'quail'], 'filename': 'docs/images/inference_deployment/whl_demo.jpg'}]
|
||||
```
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
## 3. 模型训练、评估和预测
|
||||
|
||||
|
||||
<a name="3.1"></a>
|
||||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
<a name="3.2"></a>
|
||||
|
||||
### 3.2 数据准备
|
||||
|
||||
|
@ -343,15 +343,15 @@ cd path_to_PaddleClas
|
|||
```
|
||||
|
||||
其中 `train/` 和 `val/` 分别为训练集和验证集。`train_list.txt` 和 `val_list.txt` 分别为训练集和验证集的标签文件。
|
||||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
<a name="3.3"></a>
|
||||
|
||||
### 3.3 模型训练
|
||||
### 3.3 模型训练
|
||||
|
||||
|
||||
在 `ppcls/configs/ImageNet/PPLCNet/PPLCNet_x1_0.yaml` 中提供了 PPLCNet_x1_0 训练配置,可以通过如下脚本启动训练:
|
||||
|
@ -361,11 +361,11 @@ export CUDA_VISIBLE_DEVICES=0,1,2,3
|
|||
python3 -m paddle.distributed.launch \
|
||||
--gpus="0,1,2,3" \
|
||||
tools/train.py \
|
||||
-c ppcls/configs/ImageNet/PPLCNet/PPLCNet_x1_0.yaml
|
||||
-c ppcls/configs/ImageNet/PPLCNet/PPLCNet_x1_0.yaml
|
||||
```
|
||||
|
||||
|
||||
**备注:**
|
||||
**备注:**
|
||||
|
||||
* 当前精度最佳的模型会保存在 `output/PPLCNet_x1_0/best_model.pdparams`
|
||||
|
||||
|
@ -392,7 +392,7 @@ python3 tools/eval.py \
|
|||
```python
|
||||
python3 tools/infer.py \
|
||||
-c ppcls/configs/ImageNet/PPLCNet/PPLCNet_x1_0.yaml \
|
||||
-o Global.pretrained_model=output/PPLCNet_x1_0/best_model
|
||||
-o Global.pretrained_model=output/PPLCNet_x1_0/best_model
|
||||
```
|
||||
|
||||
输出结果如下:
|
||||
|
@ -401,30 +401,30 @@ python3 tools/infer.py \
|
|||
[{'class_ids': [8, 7, 86, 81, 85], 'scores': [0.91347, 0.03779, 0.0036, 0.00117, 0.00112], 'file_name': 'docs/images/inference_deployment/whl_demo.jpg', 'label_names': ['hen', 'cock', 'partridge', 'ptarmigan', 'quail']}]
|
||||
```
|
||||
|
||||
**备注:**
|
||||
**备注:**
|
||||
|
||||
* 这里`-o Global.pretrained_model="output/PPLCNet_x1_0/best_model"` 指定了当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。
|
||||
|
||||
|
||||
* 默认是对 `docs/images/inference_deployment/whl_demo.jpg` 进行预测,此处也可以通过增加字段 `-o Infer.infer_imgs=xxx` 对其他图片预测。
|
||||
|
||||
|
||||
* 默认输出的是 Top-5 的值,如果希望输出 Top-k 的值,可以指定`-o Infer.PostProcess.topk=k`,其中,`k` 为您指定的值。
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="4"></a>
|
||||
|
||||
## 4. 模型推理部署
|
||||
|
||||
<a name="4.1"></a>
|
||||
<a name="4.1"></a>
|
||||
|
||||
### 4.1 推理模型准备
|
||||
|
||||
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。相比于直接基于预训练模型进行预测,Paddle Inference可使用MKLDNN、CUDNN、TensorRT 进行预测加速,从而实现更优的推理性能。更多关于Paddle Inference推理引擎的介绍,可以参考[Paddle Inference官网教程](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/infer/inference/inference_cn.html)。
|
||||
|
||||
|
||||
当使用 Paddle Inference 推理时,加载的模型类型为 inference 模型。本案例提供了两种获得 inference 模型的方法,如果希望得到和文档相同的结果,请选择[直接下载 inference 模型](#6.1.2)的方式。
|
||||
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
### 4.1.1 基于训练得到的权重导出 inference 模型
|
||||
|
||||
|
@ -446,7 +446,7 @@ python3 tools/export_model.py \
|
|||
```
|
||||
|
||||
|
||||
<a name="4.1.2"></a>
|
||||
<a name="4.1.2"></a>
|
||||
|
||||
### 4.1.2 直接下载 inference 模型
|
||||
|
||||
|
@ -467,7 +467,7 @@ wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPLCNet
|
|||
│ └── inference.pdmodel
|
||||
```
|
||||
|
||||
<a name="4.2"></a>
|
||||
<a name="4.2"></a>
|
||||
|
||||
### 4.2 基于 Python 预测引擎推理
|
||||
|
||||
|
@ -518,37 +518,37 @@ ILSVRC2012_val_00030010.jpeg: class id(s): [80, 23, 93, 81, 99], score(s): [0.87
|
|||
```
|
||||
|
||||
|
||||
<a name="4.3"></a>
|
||||
<a name="4.3"></a>
|
||||
|
||||
### 4.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="4.4"></a>
|
||||
<a name="4.4"></a>
|
||||
|
||||
### 4.4 服务化部署
|
||||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
|
||||
### 4.5 端侧部署
|
||||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
|
||||
### 4.6 Paddle2ONNX 模型转换与预测
|
||||
|
||||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](@shuilong)来完成相应的部署工作。
|
||||
|
||||
|
||||
|
||||
<a name="5"></a>
|
||||
|
||||
## 5. 引用
|
||||
|
@ -556,7 +556,7 @@ PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模
|
|||
如果你的论文用到了 PP-LCNet 的方法,请添加如下 cite:
|
||||
```
|
||||
@misc{cui2021pplcnet,
|
||||
title={PP-LCNet: A Lightweight CPU Convolutional Neural Network},
|
||||
title={PP-LCNet: A Lightweight CPU Convolutional Neural Network},
|
||||
author={Cheng Cui and Tingquan Gao and Shengyu Wei and Yuning Du and Ruoyu Guo and Shuilong Dong and Bin Lu and Ying Zhou and Xueying Lv and Qiwen Liu and Xiaoguang Hu and Dianhai Yu and Yanjun Ma},
|
||||
year={2021},
|
||||
eprint={2109.15099},
|
|
@ -43,13 +43,13 @@
|
|||
|
||||
### 1.1 模型简介
|
||||
|
||||
骨干网络对计算机视觉下游任务的影响不言而喻,不仅对下游模型的性能影响很大,而且模型效率也极大地受此影响,但现有的大多骨干网络在真实应用中的效率并不理想,特别是缺乏针对 Intel CPU 平台所优化的骨干网络,我们测试了现有的主流轻量级模型,发现在 Intel CPU 平台上的效率并不理想,然而目前 Intel CPU 平台在工业界仍有大量使用场景,因此我们提出了 PP-LCNet 系列模型,PP-LCNetV2 是在 [PP-LCNetV1](./PP-LCNet.md) 基础上所改进的。
|
||||
骨干网络对计算机视觉下游任务的影响不言而喻,不仅对下游模型的性能影响很大,而且模型效率也极大地受此影响,但现有的大多骨干网络在真实应用中的效率并不理想,特别是缺乏针对 Intel CPU 平台所优化的骨干网络,我们测试了现有的主流轻量级模型,发现在 Intel CPU 平台上的效率并不理想,然而目前 Intel CPU 平台在工业界仍有大量使用场景,因此我们提出了 PP-LCNet 系列模型,PP-LCNetV2 是在 [PP-LCNetV1](PP-LCNet.md) 基础上所改进的。
|
||||
|
||||
<a name="1.2"></a>
|
||||
|
||||
## 1.2 模型细节
|
||||
|
||||

|
||||

|
||||
|
||||
PP-LCNetV2 模型的网络整体结构如上图所示。PP-LCNetV2 模型是在 PP-LCNetV1 的基础上优化而来,主要使用重参数化策略组合了不同大小卷积核的深度卷积,并优化了点卷积、Shortcut等。
|
||||
|
||||
|
@ -59,7 +59,7 @@ PP-LCNetV2 模型的网络整体结构如上图所示。PP-LCNetV2 模型是在
|
|||
|
||||
卷积核的大小决定了卷积层感受野的大小,通过组合使用不同大小的卷积核,能够获取不同尺度的特征,因此 PPLCNetV2 在 Stage4、Stage5 中,在同一层组合使用 kernel size 分别为 5、3、1 的 DW 卷积,同时为了避免对模型效率的影响,使用重参数化(Re parameterization,Rep)策略对同层的 DW 卷积进行融合,如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="1.2.2"></a>
|
||||
|
||||
|
@ -67,7 +67,7 @@ PP-LCNetV2 模型的网络整体结构如上图所示。PP-LCNetV2 模型是在
|
|||
|
||||
深度可分离卷积通常由一层 DW 卷积和一层 PW 卷积组成,用以替换标准卷积,为了使深度可分离卷积具有更强的拟合能力,我们尝试使用两层 PW 卷积,同时为了控制模型效率不受影响,两层 PW 卷积设置为:第一个在通道维度对特征图压缩,第二个再通过放大还原特征图通道,如下图所示。通过实验发现,该策略能够显著提高模型性能,同时为了平衡对模型效率带来的影响,PPLCNetV2 仅在 Stage4 中使用了该策略。
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="1.2.3"></a>
|
||||
|
||||
|
@ -75,7 +75,7 @@ PP-LCNetV2 模型的网络整体结构如上图所示。PP-LCNetV2 模型是在
|
|||
|
||||
残差结构(residual)自提出以来,被诸多模型广泛使用,但在轻量级卷积神经网络中,由于残差结构所带来的元素级(element-wise)加法操作,会对模型的速度造成影响,我们在 PP-LCNetV2 中,以 Stage 为单位实验了残差结构对模型的影响,发现残差结构的使用并非一定会带来性能的提高,因此 PPLCNetV2 仅在最后一个 Stage 中的使用了残差结构:在 Block 中增加 Shortcut,如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="1.2.4"></a>
|
||||
|
||||
|
@ -102,7 +102,7 @@ PPLCNetV2 目前提供的模型的精度、速度指标及预训练权重链接
|
|||
|
||||
**备注:**
|
||||
|
||||
* 1. `_ssld` 表示使用 `SSLD 蒸馏`后的模型。关于 `SSLD蒸馏` 的内容,详情 [SSLD 蒸馏](../advanced_tutorials/knowledge_distillation.md)。
|
||||
* 1. `_ssld` 表示使用 `SSLD 蒸馏`后的模型。关于 `SSLD蒸馏` 的内容,详情 [SSLD 蒸馏](../../training/advanced/knowledge_distillation.md)。
|
||||
* 2. PP-LCNetV2 更多模型指标及权重,敬请期待。
|
||||
|
||||
在不使用额外数据的前提下,PPLCNetV2_base 模型在图像分类 ImageNet 数据集上能够取得超过 77% 的 Top1 Acc,同时在 Intel CPU 平台的推理时间在 4.4 ms 以下,如下表所示,其中推理时间基于 Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz 硬件平台,OpenVINO 推理平台。
|
||||
|
@ -169,7 +169,7 @@ Predict complete
|
|||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='PPLCNetV2_base')
|
||||
infer_imgs='docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs='docs/images/deployment/whl_demo.jpg'
|
||||
result=clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
@ -191,7 +191,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档[环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档[环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -225,7 +225,7 @@ cd path_to_PaddleClas
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
@ -401,7 +401,7 @@ ILSVRC2012_val_00030010.jpeg: class id(s): [80, 143, 81, 137, 98], score(s): [0.
|
|||
|
||||
### 4.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="4.4"></a>
|
||||
|
||||
|
@ -409,7 +409,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
|
||||
|
@ -417,7 +417,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
|
||||
|
@ -425,4 +425,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -0,0 +1 @@
|
|||
model_list.md
|
|
@ -32,4 +32,4 @@
|
|||
| RedNet38 | 224 | 256 | 6.24 | 21.39 | 41.26 |
|
||||
| RedNet50 | 224 | 256 | 8.04 | 27.71 | 53.73 |
|
||||
| RedNet101 | 224 | 256 | 13.07 | 44.12 | 83.28 |
|
||||
| RedNet152 | 224 | 256 | 18.66 | 63.27 | 119.48 |
|
||||
| RedNet152 | 224 | 256 | 18.66 | 63.27 | 119.48 |
|
|
@ -126,12 +126,12 @@ PaddleClas 提供的 ResNet 系列的模型包括 ResNet50,ResNet50_vd,ResNe
|
|||
|
||||
**备注:** 推理过程使用 TensorRT。
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
## 2. 模型快速体验
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
<a name="2.1"></a>
|
||||
|
||||
### 2.1 安装 paddlepaddle
|
||||
|
||||
- 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
|
||||
|
@ -157,31 +157,31 @@ python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
|
|||
```
|
||||
pip3 install paddleclas
|
||||
```
|
||||
<a name="2.3"></a>
|
||||
|
||||
<a name="2.3"></a>
|
||||
|
||||
### 2.3 预测
|
||||
|
||||
* 在命令行中使用 ResNet50 的权重快速预测
|
||||
|
||||
|
||||
```bash
|
||||
paddleclas --model_name=ResNet50 --infer_imgs="docs/images/inference_deployment/whl_demo.jpg"
|
||||
```
|
||||
|
||||
|
||||
结果如下:
|
||||
```
|
||||
>>> result
|
||||
class_ids: [8, 7, 86, 82, 80], scores: [0.97968, 0.02028, 3e-05, 1e-05, 0.0], label_names: ['hen', 'cock', 'partridge', 'ruffed grouse, partridge, Bonasa umbellus', 'black grouse'], filename: docs/images/inference_deployment/whl_demo.jpg
|
||||
Predict complete!
|
||||
```
|
||||
|
||||
**备注**: 更换 ResNet 的其他 scale 的模型时,只需替换 `model_name`,如将此时的模型改为 `ResNet18` 时,只需要将 `--model_name=ResNet50` 改为 `--model_name=ResNet18` 即可。
|
||||
|
||||
|
||||
**备注**: 更换 ResNet 的其他 scale 的模型时,只需替换 `model_name`,如将此时的模型改为 `ResNet18` 时,只需要将 `--model_name=ResNet50` 改为 `--model_name=ResNet18` 即可。
|
||||
|
||||
|
||||
* 在 Python 代码中预测
|
||||
```python
|
||||
from paddleclas import PaddleClas
|
||||
clas = PaddleClas(model_name='ResNet50')
|
||||
infer_imgs = 'docs/images/inference_deployment/whl_demo.jpg'
|
||||
infer_imgs = 'docs/images/deployment/whl_demo.jpg'
|
||||
result = clas.predict(infer_imgs)
|
||||
print(next(result))
|
||||
```
|
||||
|
@ -195,17 +195,17 @@ print(next(result))
|
|||
```
|
||||
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
## 3. 模型训练、评估和预测
|
||||
|
||||
|
||||
<a name="3.1"></a>
|
||||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
<a name="3.2"></a>
|
||||
|
||||
### 3.2 数据准备
|
||||
|
||||
|
@ -234,15 +234,15 @@ cd path_to_PaddleClas
|
|||
```
|
||||
|
||||
其中 `train/` 和 `val/` 分别为训练集和验证集。`train_list.txt` 和 `val_list.txt` 分别为训练集和验证集的标签文件。
|
||||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
<a name="3.3"></a>
|
||||
|
||||
### 3.3 模型训练
|
||||
### 3.3 模型训练
|
||||
|
||||
|
||||
在 `ppcls/configs/ImageNet/ResNet/ResNet50.yaml` 中提供了 ResNet50 训练配置,可以通过如下脚本启动训练:
|
||||
|
@ -252,11 +252,11 @@ export CUDA_VISIBLE_DEVICES=0,1,2,3
|
|||
python3 -m paddle.distributed.launch \
|
||||
--gpus="0,1,2,3" \
|
||||
tools/train.py \
|
||||
-c ppcls/configs/ImageNet/ResNet/ResNet50.yaml
|
||||
-c ppcls/configs/ImageNet/ResNet/ResNet50.yaml
|
||||
```
|
||||
|
||||
|
||||
**备注:**
|
||||
**备注:**
|
||||
|
||||
* 当前精度最佳的模型会保存在 `output/ResNet50/best_model.pdparams`
|
||||
|
||||
|
@ -283,7 +283,7 @@ python3 tools/eval.py \
|
|||
```python
|
||||
python3 tools/infer.py \
|
||||
-c ppcls/configs/ImageNet/ResNet/ResNet50.yaml \
|
||||
-o Global.pretrained_model=output/ResNet50/best_model
|
||||
-o Global.pretrained_model=output/ResNet50/best_model
|
||||
```
|
||||
|
||||
输出结果如下:
|
||||
|
@ -292,30 +292,30 @@ python3 tools/infer.py \
|
|||
[{'class_ids': [8, 7, 86, 82, 80], 'scores': [0.97968, 0.02028, 3e-05, 1e-05, 0.0], 'file_name': 'docs/images/inference_deployment/whl_demo.jpg', 'label_names': ['hen', 'cock', 'partridge', 'ruffed grouse, partridge, Bonasa umbellus', 'black grouse']}]
|
||||
```
|
||||
|
||||
**备注:**
|
||||
**备注:**
|
||||
|
||||
* 这里`-o Global.pretrained_model="output/ResNet50/best_model"` 指定了当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。
|
||||
|
||||
|
||||
* 默认是对 `docs/images/inference_deployment/whl_demo.jpg` 进行预测,此处也可以通过增加字段 `-o Infer.infer_imgs=xxx` 对其他图片预测。
|
||||
|
||||
|
||||
* 默认输出的是 Top-5 的值,如果希望输出 Top-k 的值,可以指定`-o Infer.PostProcess.topk=k`,其中,`k` 为您指定的值。
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="4"></a>
|
||||
|
||||
## 4. 模型推理部署
|
||||
|
||||
<a name="4.1"></a>
|
||||
<a name="4.1"></a>
|
||||
|
||||
### 4.1 推理模型准备
|
||||
|
||||
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。相比于直接基于预训练模型进行预测,Paddle Inference可使用MKLDNN、CUDNN、TensorRT 进行预测加速,从而实现更优的推理性能。更多关于Paddle Inference推理引擎的介绍,可以参考[Paddle Inference官网教程](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/infer/inference/inference_cn.html)。
|
||||
|
||||
|
||||
当使用 Paddle Inference 推理时,加载的模型类型为 inference 模型。本案例提供了两种获得 inference 模型的方法,如果希望得到和文档相同的结果,请选择[直接下载 inference 模型](#6.1.2)的方式。
|
||||
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
### 4.1.1 基于训练得到的权重导出 inference 模型
|
||||
|
||||
|
@ -337,7 +337,7 @@ python3 tools/export_model.py \
|
|||
```
|
||||
|
||||
|
||||
<a name="4.1.2"></a>
|
||||
<a name="4.1.2"></a>
|
||||
|
||||
### 4.1.2 直接下载 inference 模型
|
||||
|
||||
|
@ -358,7 +358,7 @@ wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/ResNet5
|
|||
│ └── inference.pdmodel
|
||||
```
|
||||
|
||||
<a name="4.2"></a>
|
||||
<a name="4.2"></a>
|
||||
|
||||
### 4.2 基于 Python 预测引擎推理
|
||||
|
||||
|
@ -409,32 +409,32 @@ ILSVRC2012_val_00030010.jpeg: class id(s): [80, 23, 83, 93, 136], score(s): [1.0
|
|||
```
|
||||
|
||||
|
||||
<a name="4.3"></a>
|
||||
<a name="4.3"></a>
|
||||
|
||||
### 4.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="4.4"></a>
|
||||
<a name="4.4"></a>
|
||||
|
||||
### 4.4 服务化部署
|
||||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
|
||||
### 4.5 端侧部署
|
||||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
|
||||
### 4.6 Paddle2ONNX 模型转换与预测
|
||||
|
||||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](@shuilong)来完成相应的部署工作。
|
|
@ -21,13 +21,13 @@ ResNet 系列模型是在 2015 年提出的,一举在 ILSVRC2015 比赛中取
|
|||
|
||||
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
通过上述曲线可以看出,层数越多,准确率越高,但是相应的参数量、计算量和延时都会增加。ResNet50_vd_ssld 通过用更强的 teacher 和更多的数据,将其在 ImageNet-1k 上的验证集 top-1 精度进一步提高,达到了 82.39%,刷新了 ResNet50 系列模型的精度。
|
|
@ -20,13 +20,13 @@ Res2Net 是 2019 年提出的一种全新的对 ResNet 的改进方案,该方
|
|||
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
目前 PaddleClas 开源的这三类的预训练模型一共有 24 个,其指标如图所示,从图中可以看出,在同样 Flops 和 Params 下,改进版的模型往往有更高的精度,但是推理速度往往不如 ResNet 系列。另一方面,Res2Net 表现也较为优秀,相比 ResNeXt 中的 group 操作、SEResNet 中的 SE 结构操作,Res2Net 在相同 Flops、Params 和推理速度下往往精度更佳。
|
|
@ -70,14 +70,14 @@ Swin Transformer 是一种新的视觉 Transformer 网络,可以用作计算
|
|||
|
||||
## 2. 模型快速体验
|
||||
|
||||
安装 paddlepaddle 和 paddleclas 即可快速对图片进行预测,体验方法可以参考[ResNet50 模型快速体验](./ResNet.md#2-模型快速体验)。
|
||||
安装 paddlepaddle 和 paddleclas 即可快速对图片进行预测,体验方法可以参考[ResNet50 模型快速体验](./ResNet.md#2)。
|
||||
|
||||
<a name="3"></a>
|
||||
|
||||
## 3. 模型训练、评估和预测
|
||||
|
||||
|
||||
此部分内容包括训练环境配置、ImageNet数据的准备、SwinTransformer 在 ImageNet 上的训练、评估、预测等内容。在 `ppcls/configs/ImageNet/SwinTransformer/` 中提供了 SwinTransformer 的训练配置,可以通过如下脚本启动训练:此部分内容可以参考[ResNet50 模型训练、评估和预测](./ResNet.md#3-模型训练评估和预测)。
|
||||
此部分内容包括训练环境配置、ImageNet数据的准备、SwinTransformer 在 ImageNet 上的训练、评估、预测等内容。在 `ppcls/configs/ImageNet/SwinTransformer/` 中提供了 SwinTransformer 的训练配置,可以通过如下脚本启动训练:此部分内容可以参考[ResNet50 模型训练、评估和预测](./ResNet.md#3)。
|
||||
|
||||
**备注:** 由于 SwinTransformer 系列模型默认使用的 GPU 数量为 8 个,所以在训练时,需要指定8个GPU,如`python3 -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" tools/train.py -c xxx.yaml`, 如果使用 4 个 GPU 训练,默认学习率需要减小一半,精度可能有损。
|
||||
|
||||
|
@ -92,19 +92,19 @@ Swin Transformer 是一种新的视觉 Transformer 网络,可以用作计算
|
|||
|
||||
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。相比于直接基于预训练模型进行预测,Paddle Inference可使用 MKLDNN、CUDNN、TensorRT 进行预测加速,从而实现更优的推理性能。更多关于Paddle Inference推理引擎的介绍,可以参考[Paddle Inference官网教程](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/infer/inference/inference_cn.html)。
|
||||
|
||||
Inference 的获取可以参考 [ResNet50 推理模型准备](./ResNet.md#41-推理模型准备) 。
|
||||
Inference 的获取可以参考 [ResNet50 推理模型准备](./ResNet.md#4.1) 。
|
||||
|
||||
<a name="4.2"></a>
|
||||
|
||||
### 4.2 基于 Python 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 python 预测引擎推理的示例。您可以参考[ResNet50 基于 Python 预测引擎推理](./ResNet.md#42-基于-python-预测引擎推理) 对 SwinTransformer 完成推理预测。
|
||||
PaddleClas 提供了基于 python 预测引擎推理的示例。您可以参考[ResNet50 基于 Python 预测引擎推理](./ResNet.md#4.2) 对 SwinTransformer 完成推理预测。
|
||||
|
||||
<a name="4.3"></a>
|
||||
|
||||
### 4.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="4.4"></a>
|
||||
|
||||
|
@ -112,7 +112,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.5"></a>
|
||||
|
||||
|
@ -120,7 +120,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="4.6"></a>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<!-- 简体中文 | [English](../../en/algorithm_introduction/ImageNet_models.md) -->
|
||||
<!-- 简体中文 | [English](../../en/algorithm_introduction/model_list.md) -->
|
||||
|
||||
|
||||
# ImageNet 预训练模型库
|
||||
|
@ -49,20 +49,20 @@
|
|||
|
||||
常见服务器端模型的精度指标与其预测耗时的变化曲线如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||
常见移动端模型的精度指标与其预测耗时的变化曲线如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||
部分VisionTransformer模型的精度指标与其预测耗时的变化曲线如下图所示.
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="SSLD"></a>
|
||||
|
||||
## SSLD 知识蒸馏预训练模型
|
||||
基于 SSLD 知识蒸馏的预训练模型列表如下所示,更多关于 SSLD 知识蒸馏方案的介绍可以参考:[SSLD 知识蒸馏文档](./knowledge_distillation.md)。
|
||||
基于 SSLD 知识蒸馏的预训练模型列表如下所示,更多关于 SSLD 知识蒸馏方案的介绍可以参考:[SSLD 知识蒸馏文档](../../algorithm_introduction/knowledge_distillation.md)。
|
||||
|
||||
<a name="SSLD_server"></a>
|
||||
|
||||
|
@ -111,7 +111,7 @@
|
|||
|
||||
## PP-LCNet & PP-LCNetV2 系列 <sup>[[28](#ref28)]</sup>
|
||||
|
||||
PP-LCNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[PP-LCNet 系列模型文档](../models/PP-LCNet.md),[PP-LCNetV2 系列模型文档](../models/PP-LCNetV2.md)。
|
||||
PP-LCNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[PP-LCNet 系列模型文档](PP-LCNet.md),[PP-LCNetV2 系列模型文档](PP-LCNetV2.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<sup>*</sup><br>bs=1 | FLOPs(M) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|:--:|:--:|:--:|:--:|----|----|----|:--:|
|
||||
|
@ -137,7 +137,7 @@ PP-LCNet 系列模型的精度、速度指标如下表所示,更多关于该
|
|||
|
||||
## PP-HGNet 系列
|
||||
|
||||
PP-HGNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[PP-HGNet 系列模型文档](../models/PP-HGNet.md)。
|
||||
PP-HGNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[PP-HGNet 系列模型文档](PP-HGNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
|
@ -151,7 +151,7 @@ PP-HGNet 系列模型的精度、速度指标如下表所示,更多关于该
|
|||
|
||||
## ResNet 系列 <sup>[[1](#ref1)]</sup>
|
||||
|
||||
ResNet 及其 Vd 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[ResNet 及其 Vd 系列模型文档](../models/ResNet_and_vd.md)。
|
||||
ResNet 及其 Vd 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[ResNet 及其 Vd 系列模型文档](ResNet_and_vd.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|---------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
|
||||
|
@ -175,7 +175,7 @@ ResNet 及其 Vd 系列模型的精度、速度指标如下表所示,更多关
|
|||
|
||||
## 移动端系列 <sup>[[3](#ref3)][[4](#ref4)][[5](#ref5)][[6](#ref6)][[23](#ref23)]</sup>
|
||||
|
||||
移动端系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[移动端系列模型文档](../models/Mobile.md)。
|
||||
移动端系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[移动端系列模型文档](Mobile.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | SD855 time(ms)<br>bs=1, thread=1 | SD855 time(ms)<br/>bs=1, thread=2 | SD855 time(ms)<br/>bs=1, thread=4 | FLOPs(M) | Params(M) | <span style="white-space:nowrap;">模型大小(M)</span> | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|----------------------------------|-----------|-----------|------------------------|----------|-----------|---------|-----------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
|
||||
|
@ -224,7 +224,7 @@ ResNet 及其 Vd 系列模型的精度、速度指标如下表所示,更多关
|
|||
|
||||
## SEResNeXt 与 Res2Net 系列 <sup>[[7](#ref7)][[8](#ref8)][[9](#ref9)]</sup>
|
||||
|
||||
SEResNeXt 与 Res2Net 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[SEResNeXt 与 Res2Net 系列模型文档](../models/SEResNext_and_Res2Net.md)。
|
||||
SEResNeXt 与 Res2Net 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[SEResNeXt 与 Res2Net 系列模型文档](SEResNext_and_Res2Net.md)。
|
||||
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|
@ -259,7 +259,7 @@ SEResNeXt 与 Res2Net 系列模型的精度、速度指标如下表所示,更
|
|||
|
||||
## DPN 与 DenseNet 系列 <sup>[[14](#ref14)][[15](#ref15)]</sup>
|
||||
|
||||
DPN 与 DenseNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[DPN 与 DenseNet 系列模型文档](../models/DPN_DenseNet.md)。
|
||||
DPN 与 DenseNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[DPN 与 DenseNet 系列模型文档](DPN_DenseNet.md)。
|
||||
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|
@ -279,7 +279,7 @@ DPN 与 DenseNet 系列模型的精度、速度指标如下表所示,更多关
|
|||
|
||||
## HRNet 系列 <sup>[[13](#ref13)]</sup>
|
||||
|
||||
HRNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[HRNet 系列模型文档](../models/HRNet.md)。
|
||||
HRNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[HRNet 系列模型文档](HRNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|-------------|-----------|-----------|------------------|------------------|----------|-----------|--------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
|
||||
|
@ -298,7 +298,7 @@ HRNet 系列模型的精度、速度指标如下表所示,更多关于该系
|
|||
|
||||
## Inception 系列 <sup>[[10](#ref10)][[11](#ref11)][[12](#ref12)][[26](#ref26)]</sup>
|
||||
|
||||
Inception 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[Inception 系列模型文档](../models/Inception.md)。
|
||||
Inception 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[Inception 系列模型文档](Inception.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|--------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
|
||||
|
@ -315,7 +315,7 @@ Inception 系列模型的精度、速度指标如下表所示,更多关于该
|
|||
|
||||
## EfficientNet 与 ResNeXt101_wsl 系列 <sup>[[16](#ref16)][[17](#ref17)]</sup>
|
||||
|
||||
EfficientNet 与 ResNeXt101_wsl 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[EfficientNet 与 ResNeXt101_wsl 系列模型文档](../models/EfficientNet_and_ResNeXt101_wsl.md)。
|
||||
EfficientNet 与 ResNeXt101_wsl 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[EfficientNet 与 ResNeXt101_wsl 系列模型文档](EfficientNet_and_ResNeXt101_wsl.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|---------------------------|-----------|-----------|------------------|------------------|----------|-----------|----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
|
||||
|
@ -338,7 +338,7 @@ EfficientNet 与 ResNeXt101_wsl 系列模型的精度、速度指标如下表所
|
|||
|
||||
## ResNeSt 与 RegNet 系列 <sup>[[24](#ref24)][[25](#ref25)]</sup>
|
||||
|
||||
ResNeSt 与 RegNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[ResNeSt 与 RegNet 系列模型文档](../models/ResNeSt_RegNet.md)。
|
||||
ResNeSt 与 RegNet 系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[ResNeSt 与 RegNet 系列模型文档](ResNeSt_RegNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|------------------------|-----------|-----------|------------------|------------------|----------|-----------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
|
||||
|
@ -350,7 +350,7 @@ ResNeSt 与 RegNet 系列模型的精度、速度指标如下表所示,更多
|
|||
|
||||
## ViT_and_DeiT 系列 <sup>[[31](#ref31)][[32](#ref32)]</sup>
|
||||
|
||||
ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模型的精度、速度指标如下表所示. 更多关于该系列模型的介绍可以参考: [ViT_and_DeiT 系列模型文档](../models/ViT_and_DeiT.md)。
|
||||
ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模型的精度、速度指标如下表所示. 更多关于该系列模型的介绍可以参考: [ViT_and_DeiT 系列模型文档](ViT_and_DeiT.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|------------------------|-----------|-----------|------------------|------------------|----------|------------------------|------------------------|------------------------|------------------------|
|
||||
|
@ -377,7 +377,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## RepVGG 系列 <sup>[[36](#ref36)]</sup>
|
||||
|
||||
关于 RepVGG 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[RepVGG 系列模型文档](../models/RepVGG.md)。
|
||||
关于 RepVGG 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[RepVGG 系列模型文档](RepVGG.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|------------------------|-----------|-----------|------------------|------------------|----------|-----------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
|
||||
|
@ -396,7 +396,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## MixNet 系列 <sup>[[29](#ref29)]</sup>
|
||||
|
||||
关于 MixNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[MixNet 系列模型文档](../models/MixNet.md)。
|
||||
关于 MixNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[MixNet 系列模型文档](MixNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(M) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| -------- | --------- | --------- | ---------------- | ---------------- | ----------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -408,7 +408,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## ReXNet 系列 <sup>[[30](#ref30)]</sup>
|
||||
|
||||
关于 ReXNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[ReXNet 系列模型文档](../models/ReXNet.md)。
|
||||
关于 ReXNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[ReXNet 系列模型文档](ReXNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -422,7 +422,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## SwinTransformer 系列 <sup>[[27](#ref27)]</sup>
|
||||
|
||||
关于 SwinTransformer 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[SwinTransformer 系列模型文档](../models/SwinTransformer.md)。
|
||||
关于 SwinTransformer 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[SwinTransformer 系列模型文档](SwinTransformer.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -441,7 +441,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## LeViT 系列 <sup>[[33](#ref33)]</sup>
|
||||
|
||||
关于 LeViT 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[LeViT 系列模型文档](../models/LeViT.md)。
|
||||
关于 LeViT 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[LeViT 系列模型文档](LeViT.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(M) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -457,7 +457,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## Twins 系列 <sup>[[34](#ref34)]</sup>
|
||||
|
||||
关于 Twins 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[Twins 系列模型文档](../models/Twins.md)。
|
||||
关于 Twins 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[Twins 系列模型文档](Twins.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -474,7 +474,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## HarDNet 系列 <sup>[[37](#ref37)]</sup>
|
||||
|
||||
关于 HarDNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[HarDNet 系列模型文档](../models/HarDNet.md)。
|
||||
关于 HarDNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[HarDNet 系列模型文档](HarDNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -487,7 +487,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## DLA 系列 <sup>[[38](#ref38)]</sup>
|
||||
|
||||
关于 DLA 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[DLA 系列模型文档](../models/DLA.md)。
|
||||
关于 DLA 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[DLA 系列模型文档](DLA.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -505,7 +505,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## RedNet 系列 <sup>[[39](#ref39)]</sup>
|
||||
|
||||
关于 RedNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[RedNet 系列模型文档](../models/RedNet.md)。
|
||||
关于 RedNet 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[RedNet 系列模型文档](RedNet.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -519,7 +519,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## TNT 系列 <sup>[[35](#ref35)]</sup>
|
||||
|
||||
关于 TNT 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[TNT 系列模型文档](../models/TNT.md)。
|
||||
关于 TNT 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[TNT 系列模型文档](TNT.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -531,7 +531,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## CSWinTransformer 系列 <sup>[[40](#ref40)]</sup>
|
||||
|
||||
关于 CSWinTransformer 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[CSWinTransformer 系列模型文档](../models/CSWinTransformer.md)。
|
||||
关于 CSWinTransformer 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[CSWinTransformer 系列模型文档](CSWinTransformer.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -547,7 +547,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## PVTV2 系列 <sup>[[41](#ref41)]</sup>
|
||||
|
||||
关于 PVTV2 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[PVTV2 系列模型文档](../models/PVTV2.md)。
|
||||
关于 PVTV2 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[PVTV2 系列模型文档](PVTV2.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -564,7 +564,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## MobileViT 系列 <sup>[[42](#ref42)]</sup>
|
||||
|
||||
关于 MobileViT 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[MobileViT 系列模型文档](../models/MobileViT.md)。
|
||||
关于 MobileViT 系列模型的精度、速度指标如下表所示,更多介绍可以参考:[MobileViT 系列模型文档](MobileViT.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(M) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -576,7 +576,7 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
|
|||
|
||||
## 其他模型
|
||||
|
||||
关于 AlexNet <sup>[[18](#ref18)]</sup>、SqueezeNet 系列 <sup>[[19](#ref19)]</sup>、VGG 系列 <sup>[[20](#ref20)]</sup>、DarkNet53 <sup>[[21](#ref21)]</sup> 等模型的精度、速度指标如下表所示,更多介绍可以参考:[其他模型文档](../models/Others.md)。
|
||||
关于 AlexNet <sup>[[18](#ref18)]</sup>、SqueezeNet 系列 <sup>[[19](#ref19)]</sup>、VGG 系列 <sup>[[20](#ref20)]</sup>、DarkNet53 <sup>[[21](#ref21)]</sup> 等模型的精度、速度指标如下表所示,更多介绍可以参考:[其他模型文档](Others.md)。
|
||||
|
||||
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
|
||||
|------------------------|-----------|-----------|------------------|------------------|----------|-----------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
[Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite) 是飞桨推出的一套功能完善、易用性强且性能卓越的轻量化推理引擎。
|
||||
轻量化体现在使用较少比特数用于表示神经网络的权重和激活,能够大大降低模型的体积,解决终端设备存储空间有限的问题,推理性能也整体优于其他框架。
|
||||
[PaddleClas](https://github.com/PaddlePaddle/PaddleClas) 使用 Paddle-Lite 进行了[移动端模型的性能评估](../models/Mobile.md),本部分以 `ImageNet1k` 数据集的 `MobileNetV1` 模型为例,介绍怎样使用 `Paddle-Lite`,在移动端(基于骁龙855的安卓开发平台)对进行模型速度评估。
|
||||
[PaddleClas](https://github.com/PaddlePaddle/PaddleClas) 使用 Paddle-Lite 进行了[移动端模型的性能评估](./Mobile.md),本部分以 `ImageNet1k` 数据集的 `MobileNetV1` 模型为例,介绍怎样使用 `Paddle-Lite`,在移动端(基于骁龙855的安卓开发平台)对进行模型速度评估。
|
||||
|
||||
<a name='2'></a>
|
||||
|
|
@ -40,10 +40,10 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
|
|||
| :--------- | :---------------------- | :------------------ |
|
||||
| | | recall@1 |
|
||||
| PP-ShiTuV1 | 64(30+34)MB | 66.8% |
|
||||
| PP-ShiTuV2 | 49(30+19) | 73.8% |
|
||||
| PP-ShiTuV2 | 49(30+19)MB | 73.8% |
|
||||
|
||||
**注:**
|
||||
- recall及mAP指标的介绍可以参考 [常用指标](../algorithm_introduction/reid.md#22-常用指标)。
|
||||
- recall及mAP指标的介绍可以参考 [常用指标](../../algorithm_introduction/ReID.md#22-常用指标)。
|
||||
- 延时是基于 Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 测试得到,开启 MKLDNN 加速策略,线程数为10。
|
||||
|
||||
## 2. 模型快速体验
|
||||
|
@ -70,10 +70,10 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
|
|||
```shell
|
||||
# 如果您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
|
||||
python3.7 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
|
||||
|
||||
|
||||
# 如果您的机器是CPU,请运行以下命令安装
|
||||
python3.7 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
|
||||
|
||||
|
||||
# 安装 faiss 库
|
||||
python3.7 -m pip install faiss-cpu==1.7.1post2
|
||||
```
|
||||
|
@ -82,7 +82,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
|
|||
```shell
|
||||
# 进入到PaddleClas根目录下
|
||||
cd PaddleClas
|
||||
|
||||
|
||||
# 安装paddleclas
|
||||
python3.7 setup.py install
|
||||
```
|
||||
|
@ -92,7 +92,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
|
|||
```shell
|
||||
# 下载并解压demo数据
|
||||
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar && tar -xf drink_dataset_v2.0.tar
|
||||
|
||||
|
||||
# 执行识别命令
|
||||
paddleclas \
|
||||
--model_name=PP-ShiTuV2 \
|
||||
|
@ -109,17 +109,17 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
|
|||
|
||||
考虑到检测速度、模型大小、检测精度等因素,最终选择 PaddleDetection 自研的轻量级模型 `PicoDet-LCNet_x2_5` 作为 PP-ShiTuV2 的主体检测模型
|
||||
|
||||
主体检测模型的数据集、训练、评估、推理等详细信息可以参考文档:[picodet_lcnet_x2_5_640_mainbody](../image_recognition_pipeline/mainbody_detection.md)。
|
||||
主体检测模型的数据集、训练、评估、推理等详细信息可以参考文档:[picodet_lcnet_x2_5_640_mainbody](../../training/PP-ShiTu/mainbody_detection.md)。
|
||||
|
||||
### 3.2 特征提取
|
||||
|
||||
特征提取是图像识别中的关键一环,它的作用是将输入的图片转化为固定维度的特征向量,用于后续的 [向量检索](./vector_search.md) 。考虑到特征提取模型的速度、模型大小、特征提取性能等因素,最终选择 PaddleClas 自研的 [`PPLCNetV2_base`](../models/PP-LCNetV2.md) 作为特征提取网络。相比 PP-ShiTuV1 所使用的 `PPLCNet_x2_5`, `PPLCNetV2_base` 基本保持了较高的分类精度,并减少了40%的推理时间<sup>*</sup>。
|
||||
特征提取是图像识别中的关键一环,它的作用是将输入的图片转化为固定维度的特征向量,用于后续的 [向量检索](./vector_search.md) 。考虑到特征提取模型的速度、模型大小、特征提取性能等因素,最终选择 PaddleClas 自研的 [`PPLCNetV2_base`](../ImageNet1k/PP-LCNetV2.md) 作为特征提取网络。相比 PP-ShiTuV1 所使用的 `PPLCNet_x2_5`, `PPLCNetV2_base` 基本保持了较高的分类精度,并减少了40%的推理时间<sup>*</sup>。
|
||||
|
||||
**注:** <sup>*</sup>推理环境基于 Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz 硬件平台,OpenVINO 推理平台。
|
||||
|
||||
在实验过程中我们也发现可以对 `PPLCNetV2_base` 进行适当的改进,在保持速度基本不变的情况下,让其在识别任务中得到更高的性能,包括:去掉 `PPLCNetV2_base` 末尾的 `ReLU` 和 `FC`、将最后一个 stage(RepDepthwiseSeparable) 的 stride 改为1。
|
||||
|
||||
特征提取模型的数据集、训练、评估、推理等详细信息可以参考文档:[PPLCNetV2_base_ShiTu](../image_recognition_pipeline/feature_extraction.md)。
|
||||
特征提取模型的数据集、训练、评估、推理等详细信息可以参考文档:[PPLCNetV2_base_ShiTu](../../training/PP-ShiTu/feature_extraction.md)。
|
||||
|
||||
### 3.3 向量检索
|
||||
|
||||
|
@ -127,7 +127,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
|
|||
|
||||
在 PP-ShiTuV2 识别系统中,我们使用了 [Faiss](https://github.com/facebookresearch/faiss) 向量检索开源库对此部分进行支持,其具有适配性好、安装方便、算法丰富、同时支持CPU与GPU的优点。
|
||||
|
||||
PP-ShiTuV2 系统中关于 Faiss 向量检索库的安装及使用可以参考文档:[vector search](../image_recognition_pipeline/vector_search.md)。
|
||||
PP-ShiTuV2 系统中关于 Faiss 向量检索库的安装及使用可以参考文档:[vector search](../../deployment/PP-ShiTu/vector_search.md)。
|
||||
|
||||
## 4. 推理部署
|
||||
|
||||
|
@ -137,7 +137,7 @@ Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端
|
|||
当使用 Paddle Inference 推理时,加载的模型类型为 inference 模型。本案例提供了两种获得 inference 模型的方法,如果希望得到和文档相同的结果,请选择 [直接下载 inference 模型](#412-直接下载-inference-模型) 的方式。
|
||||
|
||||
#### 4.1.1 基于训练得到的权重导出 inference 模型
|
||||
- 主体检测模型权重导出请参考文档 [主体检测推理模型准备](../image_recognition_pipeline/mainbody_detection.md#41-推理模型准备),或者参照 [4.1.2](#412-直接下载-inference-模型) 直接下载解压即可。
|
||||
- 主体检测模型权重导出请参考文档 [主体检测推理模型准备](../../training/PP-ShiTu/mainbody_detection.md#41-推理模型准备),或者参照 [4.1.2](#412-直接下载-inference-模型) 直接下载解压即可。
|
||||
|
||||
- 特征提取模型权重导出可以参考以下命令:
|
||||
```shell
|
||||
|
@ -234,12 +234,12 @@ Inference: 37.95266151428223 ms per batch image
|
|||
其中 `bbox` 表示检测出的主体所在位置,`rec_docs` 表示索引库中与检测框最为相似的类别,`rec_scores` 表示对应的相似度。
|
||||
|
||||
### 4.4 基于 C++ 预测引擎推理
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考 [服务器端 C++ 预测](../../../deploy/cpp_shitu/readme.md) 来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考 [基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md) 完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考 [服务器端 C++ 预测](../../../../deploy/cpp_shitu/readme.md) 来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考 [基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md) 完成相应的预测库编译和模型预测工作。
|
||||
|
||||
### 4.5 服务化部署
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考 [Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考 [模型服务化部署](../inference_deployment/recognition_serving_deploy.md) 来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考 [模型服务化部署](../../deployment/PP-ShiTu/paddle_serving.md) 来完成相应的部署工作。
|
||||
|
||||
### 4.6 端侧部署
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考 [Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
@ -247,7 +247,7 @@ Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深
|
|||
### 4.7 Paddle2ONNX 模型转换与预测
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考 [Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考 [Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md) 来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考 [Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md) 来完成相应的部署工作。
|
||||
|
||||
## 参考文献
|
||||
1. Schall, Konstantin, et al. "GPR1200: A Benchmark for General-Purpose Content-Based Image Retrieval." International Conference on Multimedia Modeling. Springer, Cham, 2022.
|
|
@ -59,7 +59,7 @@
|
|||
**备注:**
|
||||
|
||||
* `Tpr`指标的介绍可以参考 [3.3节](#3.3)的备注部分,延时是基于 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)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
@ -140,7 +140,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档[环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档[环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -166,7 +166,7 @@ print(next(result))
|
|||
|
||||
处理后的数据集部分数据可视化如下:
|
||||
|
||||

|
||||

|
||||
|
||||
此处提供了经过上述方法处理好的数据,可以直接下载得到。
|
||||
|
||||
|
@ -208,9 +208,9 @@ cd ../
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考 [PaddleClas 分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考 [PaddleClas 分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../advanced_tutorials/ssld.md#3.2)。
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../../training/advanced/ssld.md#3.2)。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
@ -285,7 +285,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -326,7 +326,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -443,7 +443,7 @@ objects365_00001521.jpeg: class id(s): [0], score(s): [0.99], label_name(s
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -451,7 +451,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -459,7 +459,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -467,4 +467,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
|
@ -133,7 +133,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -145,7 +145,7 @@ print(next(result))
|
|||
|
||||
[第1节](#1)中提供的模型使用内部数据训练得到,该数据集暂时不方便公开。这里基于 [Multi-lingual scene text detection and recognition](https://rrc.cvc.uab.es/?ch=15&com=downloads) 开源数据集构造了一个多语种demo数据集,用于体验本案例的预测过程。
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="3.2.2"></a>
|
||||
|
||||
|
@ -198,7 +198,7 @@ cd ../
|
|||
***备注:***
|
||||
|
||||
- 这里的`label_list.txt`是4类语种分类模型对应的类别列表,如果自己构造的数据集语种类别发生变化,需要自行调整。
|
||||
- 如果想要自己构造训练集和验证集,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
- 如果想要自己构造训练集和验证集,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
||||
|
@ -265,7 +265,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -309,7 +309,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -426,7 +426,7 @@ word_35404.png: class id(s): [4, 6], score(s): [0.89, 0.01], label_name(s): [
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -434,7 +434,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -442,7 +442,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -450,4 +450,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -60,7 +60,7 @@
|
|||
**备注:**
|
||||
|
||||
* 延时是基于 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)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
@ -140,7 +140,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -273,7 +273,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -314,7 +314,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -426,7 +426,7 @@ python3.7 python/predict_cls.py -c configs/PULC/person_attribute/inference_perso
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -434,7 +434,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -442,7 +442,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -450,4 +450,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -59,7 +59,7 @@
|
|||
**备注:**
|
||||
|
||||
* `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)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
@ -139,7 +139,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档[环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档[环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -163,7 +163,7 @@ print(next(result))
|
|||
|
||||
处理后的数据集部分数据可视化如下:
|
||||
|
||||

|
||||

|
||||
|
||||
此处提供了经过上述方法处理好的数据,可以直接下载得到。
|
||||
|
||||
|
@ -210,9 +210,9 @@ cd ../
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考 [PaddleClas 分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考 [PaddleClas 分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../advanced_tutorials/ssld.md#3.2)。
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../../training/advanced/ssld.md#3.2)。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
@ -287,7 +287,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -328,7 +328,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -445,7 +445,7 @@ objects365_02035329.jpg: class id(s): [1], score(s): [1.00], label_name(s): ['so
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -453,7 +453,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -461,7 +461,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -469,4 +469,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -59,7 +59,7 @@
|
|||
|
||||
* `Tpr`指标的介绍可以参考 [3.3小节](#3.3)的备注部分,延时是基于 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)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
@ -139,7 +139,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -165,7 +165,7 @@ print(next(result))
|
|||
|
||||
处理后的数据集部分数据可视化如下:
|
||||
|
||||

|
||||

|
||||
|
||||
此处提供了经过上述方法处理好的数据,可以直接下载得到。
|
||||
|
||||
|
@ -201,7 +201,7 @@ cd ../
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
||||
|
@ -273,7 +273,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 UDML 知识蒸馏
|
||||
|
||||
UDML 知识蒸馏是一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[UDML 知识蒸馏](../advanced_tutorials/knowledge_distillation.md#1.2.3)。
|
||||
UDML 知识蒸馏是一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[UDML 知识蒸馏](../../training/advanced/knowledge_distillation.md#1.2.3)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -295,7 +295,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注**:此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -411,7 +411,7 @@ safety_helmet_test_2.png: class id(s): [0], score(s): [1.00], label_name(s
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -419,7 +419,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -427,7 +427,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -435,4 +435,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
|
@ -131,7 +131,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -143,7 +143,7 @@ print(next(result))
|
|||
|
||||
[第1节](#1)中提供的模型使用内部数据训练得到,该数据集暂时不方便公开。这里基于 [ICDAR2019-ArT](https://ai.baidu.com/broad/introduction?dataset=art)、 [XFUND](https://github.com/doc-analysis/XFUND) 和 [ICDAR2015](https://rrc.cvc.uab.es/?ch=4&com=introduction) 三个公开数据集构造了一个小规模含文字图像方向分类数据集,用于体验本案例。
|
||||
|
||||

|
||||

|
||||
|
||||
<a name="3.2.2"></a>
|
||||
|
||||
|
@ -155,7 +155,7 @@ print(next(result))
|
|||
|
||||
处理后的数据集部分数据可视化如下:
|
||||
|
||||

|
||||

|
||||
|
||||
此处提供了经过上述方法处理好的数据,可以直接下载得到。
|
||||
|
||||
|
@ -205,13 +205,13 @@ cd ../
|
|||
└── label_list.txt
|
||||
```
|
||||
|
||||
其中`img_0/`、`img_90/`、`img_180/`和`img_270/`分别存放了4个角度的训练集和验证集数据。`train_list.txt`和`test_list.txt`分别为训练集和验证集的标签文件,`train_list.txt.debug`和`test_list.txt.debug`分别为训练集和验证集的`debug`标签文件,其分别是`train_list.txt`和`test_list.txt`的子集,用该文件可以快速体验本案例的流程。`distill_data/`是补充文字数据,该集合和`train`集合的混合数据用于本案例的`SKL-UGI知识蒸馏策略`,对应的训练标签文件为`train_list_for_distill.txt`。关于如何得到蒸馏的标签可以参考[知识蒸馏标签获得](../advanced_tutorials/ssld.md#3.2)。
|
||||
其中`img_0/`、`img_90/`、`img_180/`和`img_270/`分别存放了4个角度的训练集和验证集数据。`train_list.txt`和`test_list.txt`分别为训练集和验证集的标签文件,`train_list.txt.debug`和`test_list.txt.debug`分别为训练集和验证集的`debug`标签文件,其分别是`train_list.txt`和`test_list.txt`的子集,用该文件可以快速体验本案例的流程。`distill_data/`是补充文字数据,该集合和`train`集合的混合数据用于本案例的`SKL-UGI知识蒸馏策略`,对应的训练标签文件为`train_list_for_distill.txt`。关于如何得到蒸馏的标签可以参考[知识蒸馏标签获得](../../training/advanced/ssld.md#3.2)。
|
||||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `train_list.txt`、`val_list.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../advanced_tutorials/ssld.md#3.2)。
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../../training/advanced/ssld.md#3.2)。
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
||||
|
@ -277,7 +277,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -319,7 +319,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -433,7 +433,7 @@ img_rot180_demo.jpg: class id(s): [2, 1], score(s): [0.88, 0.04], label_name(
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -441,7 +441,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -449,7 +449,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -457,4 +457,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -59,9 +59,9 @@
|
|||
|
||||
**备注:**
|
||||
|
||||
* 其中不带\*的模型表示分辨率为224x224,带\*的模型表示分辨率为48x192(h\*w),数据增强从网络中的 stride 改为 `[2, [2, 1], [2, 1], [2, 1], [2, 1]]`,其中,外层列表中的每一个元素代表网络结构下采样层的stride,该策略为 [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) 提供的文本行方向分类器方案。带\*\*的模型表示分辨率为80x160(h\*w), 网络中的 stride 改为 `[2, [2, 1], [2, 1], [2, 1], [2, 1]]`,其中,外层列表中的每一个元素代表网络结构下采样层的stride,此分辨率是经过[超参数搜索策略](PULC_train.md#4-超参搜索)搜索得到的。
|
||||
* 其中不带\*的模型表示分辨率为224x224,带\*的模型表示分辨率为48x192(h\*w),数据增强从网络中的 stride 改为 `[2, [2, 1], [2, 1], [2, 1], [2, 1]]`,其中,外层列表中的每一个元素代表网络结构下采样层的stride,该策略为 [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) 提供的文本行方向分类器方案。带\*\*的模型表示分辨率为80x160(h\*w), 网络中的 stride 改为 `[2, [2, 1], [2, 1], [2, 1], [2, 1]]`,其中,外层列表中的每一个元素代表网络结构下采样层的stride,此分辨率是经过[超参数搜索策略](../../training/PULC.md#4-超参搜索)搜索得到的。
|
||||
* 延时是基于 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)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
<a name="2"></a>
|
||||
|
||||
|
@ -139,7 +139,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -165,7 +165,7 @@ print(next(result))
|
|||
|
||||
处理后的数据集部分数据可视化如下:
|
||||
|
||||

|
||||

|
||||
|
||||
此处提供了经过上述方法处理好的数据,可以直接下载得到。
|
||||
|
||||
|
@ -203,7 +203,7 @@ cd ../
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于 `train_list.txt`、`val_list.txt` 的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `train_list.txt`、`val_list.txt` 的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
@ -273,7 +273,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -314,7 +314,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。
|
||||
|
||||
|
@ -430,7 +430,7 @@ textline_orientation_test_1_1.png: class id(s): [1], score(s): [1.00], label_
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -438,7 +438,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -446,7 +446,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -454,4 +454,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -58,7 +58,7 @@
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../models/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
@ -138,7 +138,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -234,9 +234,9 @@ traffic_sign
|
|||
|
||||
**备注:**
|
||||
|
||||
* 关于 `label_list_train.txt`、`label_list_test.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../data_preparation/classification_dataset.md#1-数据集格式说明) 。
|
||||
* 关于 `label_list_train.txt`、`label_list_test.txt`的格式说明,可以参考[PaddleClas分类数据集格式说明](../../training/single_label_classification/dataset.md#1-数据集格式说明) 。
|
||||
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../advanced_tutorials/ssld.md)。
|
||||
* 关于如何得到蒸馏的标签文件可以参考[知识蒸馏标签获得方法](../../training/advanced/ssld.md)。
|
||||
|
||||
|
||||
<a name="3.3"></a>
|
||||
|
@ -303,7 +303,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md#3.2)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md#3.2)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -344,7 +344,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.2 节](#3.2)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -458,7 +458,7 @@ python3.7 python/predict_cls.py -c configs/PULC/traffic_sign/inference_traffic_s
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -466,7 +466,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -474,7 +474,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -482,4 +482,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -60,7 +60,7 @@
|
|||
**备注:**
|
||||
|
||||
* 延时是基于 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)。
|
||||
* 关于PP-LCNet的介绍可以参考[PP-LCNet介绍](../ImageNet1k/PP-LCNet.md),相关论文可以查阅[PP-LCNet paper](https://arxiv.org/abs/2109.15099)。
|
||||
|
||||
|
||||
<a name="2"></a>
|
||||
|
@ -141,7 +141,7 @@ print(next(result))
|
|||
|
||||
### 3.1 环境配置
|
||||
|
||||
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
|
||||
* 安装:请先参考文档 [环境准备](../../installation.md) 配置 PaddleClas 运行环境。
|
||||
|
||||
<a name="3.2"></a>
|
||||
|
||||
|
@ -297,7 +297,7 @@ python3 tools/infer.py \
|
|||
|
||||
### 4.1 SKL-UGI 知识蒸馏
|
||||
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../advanced_tutorials/ssld.md)。
|
||||
SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方法,关于该方法的介绍,可以参考[SKL-UGI 知识蒸馏](../../training/advanced/ssld.md)。
|
||||
|
||||
<a name="4.1.1"></a>
|
||||
|
||||
|
@ -338,7 +338,7 @@ python3 -m paddle.distributed.launch \
|
|||
|
||||
## 5. 超参搜索
|
||||
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](PULC_train.md#4-超参搜索)来获得更好的训练超参数。
|
||||
在 [3.3 节](#3.3)和 [4.1 节](#4.1)所使用的超参数是根据 PaddleClas 提供的 `超参数搜索策略` 搜索得到的,如果希望在自己的数据集上得到更好的结果,可以参考[超参数搜索策略](../../training/PULC.md#4-超参搜索)来获得更好的训练超参数。
|
||||
|
||||
**备注:** 此部分内容是可选内容,搜索过程需要较长的时间,您可以根据自己的硬件情况来选择执行。如果没有更换数据集,可以忽略此节内容。
|
||||
|
||||
|
@ -450,7 +450,7 @@ python3.7 python/predict_cls.py -c configs/PULC/vehicle_attribute/inference_vehi
|
|||
|
||||
### 6.3 基于 C++ 预测引擎推理
|
||||
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。
|
||||
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../../deployment/image_classification/cpp/windows.md)完成相应的预测库编译和模型预测工作。
|
||||
|
||||
<a name="6.4"></a>
|
||||
|
||||
|
@ -458,7 +458,7 @@ PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服
|
|||
|
||||
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../../deployment/image_classification/paddle_serving.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.5"></a>
|
||||
|
||||
|
@ -466,7 +466,7 @@ PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示
|
|||
|
||||
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。
|
||||
|
||||
<a name="6.6"></a>
|
||||
|
||||
|
@ -474,4 +474,4 @@ PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,
|
|||
|
||||
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)。
|
||||
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
|
||||
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。
|
|
@ -0,0 +1 @@
|
|||
model_list.md
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue