From 8dd9dd42ecf69fc404b0aa193bb0529836d809dc Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Mon, 19 Oct 2020 05:05:34 +0000 Subject: [PATCH] polish dygraph doc and deploy --- .clang_format.hook | 15 + .gitignore | 2 + README.md | 382 +++++++++--- README_cn.md | 309 ++++++++++ deploy/cpp_infer/CMakeLists.txt | 201 ++++++ .../docs/imgs/ILSVRC2012_val_00000666.JPEG | Bin 0 -> 128718 bytes .../cpp_infer/docs/imgs/cpp_infer_result.png | Bin 0 -> 29225 bytes deploy/cpp_infer/docs/imgs/vs2019_step1.png | Bin 0 -> 77064 bytes deploy/cpp_infer/docs/imgs/vs2019_step2.png | Bin 0 -> 86315 bytes deploy/cpp_infer/docs/imgs/vs2019_step3.png | Bin 0 -> 58248 bytes deploy/cpp_infer/docs/imgs/vs2019_step4.png | Bin 0 -> 45962 bytes deploy/cpp_infer/docs/imgs/vs2019_step5.png | Bin 0 -> 63943 bytes deploy/cpp_infer/docs/imgs/vs2019_step6.png | Bin 0 -> 85323 bytes deploy/cpp_infer/docs/windows_vs2019_build.md | 106 ++++ deploy/cpp_infer/include/cls.h | 86 +++ deploy/cpp_infer/include/config.h | 82 +++ deploy/cpp_infer/include/preprocess_op.h | 57 ++ deploy/cpp_infer/include/utility.h | 46 ++ deploy/cpp_infer/readme.md | 214 +++++++ deploy/cpp_infer/readme_en.md | 219 +++++++ deploy/cpp_infer/src/cls.cpp | 98 +++ deploy/cpp_infer/src/config.cpp | 64 ++ deploy/cpp_infer/src/main.cpp | 68 +++ deploy/cpp_infer/src/preprocess_op.cpp | 90 +++ deploy/cpp_infer/src/utility.cpp | 39 ++ deploy/cpp_infer/tools/build.sh | 20 + deploy/cpp_infer/tools/config.txt | 12 + deploy/cpp_infer/tools/run.sh | 2 + deploy/lite/Makefile | 61 ++ deploy/lite/config.txt | 5 + deploy/lite/image_classfication.cpp | 332 ++++++++++ deploy/lite/imgs/lite_demo_result.png | Bin 0 -> 146160 bytes deploy/lite/imgs/tabby_cat.jpg | Bin 0 -> 24859 bytes deploy/lite/prepare.sh | 14 + deploy/lite/readme.md | 266 ++++++++ deploy/lite/readme_en.md | 259 ++++++++ .../distillation/distillation_en.md | 238 ++++++++ .../advanced_tutorials/distillation/index.rst | 2 +- .../image_augmentation/ImageAugment_en.md | 576 ++++++++++++++++++ .../image_augmentation/index.rst | 2 +- docs/en/application/index.rst | 4 +- docs/en/application/object_detection_en.md | 40 ++ docs/en/application/transfer_learning_en.md | 88 +++ docs/en/competition_support_en.md | 21 + docs/en/extension/index.rst | 12 +- .../en/extension/multi_machine_training_en.md | 11 + docs/en/extension/paddle_hub_en.md | 6 + docs/en/extension/paddle_inference_en.md | 261 ++++++++ .../extension/paddle_mobile_inference_en.md | 114 ++++ docs/en/extension/paddle_quantization_en.md | 12 + docs/en/extension/paddle_serving_en.md | 64 ++ docs/en/faq_en.md | 61 ++ docs/en/index.rst | 8 +- docs/en/models/DPN_DenseNet_en.md | 70 +++ .../EfficientNet_and_ResNeXt101_wsl_en.md | 82 +++ docs/en/models/HRNet_en.md | 64 ++ docs/en/models/Inception_en.md | 62 ++ docs/en/models/Mobile_en.md | 144 +++++ docs/en/models/Others_en.md | 62 ++ docs/en/models/ResNeSt_RegNet_en.md | 22 + docs/en/models/ResNet_and_vd_en.md | 96 +++ docs/en/models/SEResNext_and_Res2Net_en.md | 116 ++++ docs/en/models/Tricks_en.md | 95 +++ docs/en/models/index.rst | 20 +- docs/en/models/models_intro_en.md | 280 +++++++++ docs/en/tutorials/config_en.md | 82 +++ docs/en/tutorials/data_en.md | 77 +++ docs/en/tutorials/getting_started_en.md | 186 ++++++ docs/en/tutorials/index.rst | 8 +- docs/en/tutorials/install_en.md | 62 ++ docs/en/tutorials/quick_start_en.md | 223 +++++++ docs/en/update_history_en.md | 36 ++ .../distillation/distillation_perform_s.jpg | Bin 53917 -> 76063 bytes .../image_aug/image_aug_samples_s_en.jpg | Bin 0 -> 1381853 bytes docs/images/main_features_s.png | Bin 158106 -> 281978 bytes docs/images/main_features_s_en.png | Bin 0 -> 204768 bytes .../T4_benchmark/t4.fp16.bs4.ResNet.png | Bin 85865 -> 86119 bytes .../T4_benchmark/t4.fp16.bs4.SeResNeXt.png | Bin 107868 -> 112402 bytes .../T4_benchmark/t4.fp32.bs4.ResNet.flops.png | Bin 80224 -> 80457 bytes .../t4.fp32.bs4.ResNet.params.png | Bin 82419 -> 82670 bytes .../T4_benchmark/t4.fp32.bs4.ResNet.png | Bin 84849 -> 85323 bytes .../t4.fp32.bs4.SeResNeXt.flops.png | Bin 107672 -> 111946 bytes .../t4.fp32.bs4.SeResNeXt.params.png | Bin 108547 -> 113010 bytes .../T4_benchmark/t4.fp32.bs4.SeResNeXt.png | Bin 110220 -> 114861 bytes .../t4.fp32.bs4.main_fps_top1.png | Bin 154367 -> 154457 bytes .../v100.fp32.bs1.main_fps_top1_s.jpg | Bin 179075 -> 165523 bytes docs/images/models/mobile_arm_top1.png | Bin 151502 -> 143928 bytes .../distillation/distillation.md | 22 +- .../image_augmentation/ImageAugment.md | 4 +- docs/zh_CN/application/transfer_learning.md | 2 +- docs/zh_CN/extension/paddle_inference.md | 5 +- docs/zh_CN/faq.md | 230 ++++++- docs/zh_CN/models/HRNet.md | 6 + docs/zh_CN/models/Mobile.md | 13 +- docs/zh_CN/models/ResNeSt_RegNet.md | 25 + docs/zh_CN/models/ResNet_and_vd.md | 3 + docs/zh_CN/models/SEResNext_and_Res2Net.md | 1 + docs/zh_CN/models/models_intro.md | 21 + docs/zh_CN/tutorials/getting_started.md | 139 ++++- docs/zh_CN/tutorials/install.md | 2 + docs/zh_CN/update_history.md | 23 + 101 files changed, 6683 insertions(+), 169 deletions(-) create mode 100644 .clang_format.hook create mode 100644 README_cn.md create mode 100755 deploy/cpp_infer/CMakeLists.txt create mode 100644 deploy/cpp_infer/docs/imgs/ILSVRC2012_val_00000666.JPEG create mode 100644 deploy/cpp_infer/docs/imgs/cpp_infer_result.png create mode 100644 deploy/cpp_infer/docs/imgs/vs2019_step1.png create mode 100644 deploy/cpp_infer/docs/imgs/vs2019_step2.png create mode 100644 deploy/cpp_infer/docs/imgs/vs2019_step3.png create mode 100644 deploy/cpp_infer/docs/imgs/vs2019_step4.png create mode 100644 deploy/cpp_infer/docs/imgs/vs2019_step5.png create mode 100644 deploy/cpp_infer/docs/imgs/vs2019_step6.png create mode 100755 deploy/cpp_infer/docs/windows_vs2019_build.md create mode 100644 deploy/cpp_infer/include/cls.h create mode 100644 deploy/cpp_infer/include/config.h create mode 100644 deploy/cpp_infer/include/preprocess_op.h create mode 100644 deploy/cpp_infer/include/utility.h create mode 100644 deploy/cpp_infer/readme.md create mode 100644 deploy/cpp_infer/readme_en.md create mode 100644 deploy/cpp_infer/src/cls.cpp create mode 100755 deploy/cpp_infer/src/config.cpp create mode 100644 deploy/cpp_infer/src/main.cpp create mode 100644 deploy/cpp_infer/src/preprocess_op.cpp create mode 100644 deploy/cpp_infer/src/utility.cpp create mode 100755 deploy/cpp_infer/tools/build.sh create mode 100755 deploy/cpp_infer/tools/config.txt create mode 100755 deploy/cpp_infer/tools/run.sh create mode 100644 deploy/lite/Makefile create mode 100644 deploy/lite/config.txt create mode 100644 deploy/lite/image_classfication.cpp create mode 100644 deploy/lite/imgs/lite_demo_result.png create mode 100644 deploy/lite/imgs/tabby_cat.jpg create mode 100644 deploy/lite/prepare.sh create mode 100644 deploy/lite/readme.md create mode 100644 deploy/lite/readme_en.md create mode 100644 docs/en/advanced_tutorials/distillation/distillation_en.md create mode 100644 docs/en/advanced_tutorials/image_augmentation/ImageAugment_en.md create mode 100644 docs/en/application/object_detection_en.md create mode 100644 docs/en/application/transfer_learning_en.md create mode 100644 docs/en/competition_support_en.md create mode 100644 docs/en/extension/multi_machine_training_en.md create mode 100644 docs/en/extension/paddle_hub_en.md create mode 100644 docs/en/extension/paddle_inference_en.md create mode 100644 docs/en/extension/paddle_mobile_inference_en.md create mode 100644 docs/en/extension/paddle_quantization_en.md create mode 100644 docs/en/extension/paddle_serving_en.md create mode 100644 docs/en/faq_en.md create mode 100644 docs/en/models/DPN_DenseNet_en.md create mode 100644 docs/en/models/EfficientNet_and_ResNeXt101_wsl_en.md create mode 100644 docs/en/models/HRNet_en.md create mode 100644 docs/en/models/Inception_en.md create mode 100644 docs/en/models/Mobile_en.md create mode 100644 docs/en/models/Others_en.md create mode 100644 docs/en/models/ResNeSt_RegNet_en.md create mode 100644 docs/en/models/ResNet_and_vd_en.md create mode 100644 docs/en/models/SEResNext_and_Res2Net_en.md create mode 100644 docs/en/models/Tricks_en.md create mode 100644 docs/en/models/models_intro_en.md create mode 100644 docs/en/tutorials/config_en.md create mode 100644 docs/en/tutorials/data_en.md create mode 100644 docs/en/tutorials/getting_started_en.md create mode 100644 docs/en/tutorials/install_en.md create mode 100644 docs/en/tutorials/quick_start_en.md create mode 100644 docs/en/update_history_en.md create mode 100644 docs/images/image_aug/image_aug_samples_s_en.jpg create mode 100644 docs/images/main_features_s_en.png create mode 100644 docs/zh_CN/models/ResNeSt_RegNet.md diff --git a/.clang_format.hook b/.clang_format.hook new file mode 100644 index 00000000..1d928216 --- /dev/null +++ b/.clang_format.hook @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +readonly VERSION="3.8" + +version=$(clang-format -version) + +if ! [[ $version == *"$VERSION"* ]]; then + echo "clang-format version check failed." + echo "a version contains '$VERSION' is needed, but get '$version'" + echo "you can install the right version, and make an soft-link to '\$PATH' env" + exit -1 +fi + +clang-format $@ diff --git a/.gitignore b/.gitignore index 4871ce64..c2d80520 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ dataset/ checkpoints/ output/ pretrained/ +.ipynb_checkpoints/ *.ipynb* _build/ +build/ nohup.out diff --git a/README.md b/README.md index c78e28f8..7d0ceef1 100644 --- a/README.md +++ b/README.md @@ -1,130 +1,312 @@ -# PaddleClas - -**文档教程**: https://paddleclas.readthedocs.io - -**30分钟玩转PaddleClas**: https://paddleclas.readthedocs.io/zh_CN/latest/tutorials/quick_start.html - -## 简介 - -飞桨图像分类套件PaddleClas是飞桨为工业界和学术界所准备的一个图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。 - -
- -
- -## 丰富的模型库 - -基于ImageNet1k分类数据集,PaddleClas提供ResNet、ResNet_vd、Res2Net、HRNet、MobileNetV3等23种系列的分类网络结构的简单介绍、论文指标复现配置,以及在复现过程中的训练技巧。与此同时,也提供了对应的117个图像分类预训练模型,并且基于TensorRT评估了服务器端模型的GPU预测时间,以及在骁龙855(SD855)上评估了移动端模型的CPU预测时间和存储大小。支持的***预训练模型列表、下载地址以及更多信息***请见文档教程中的[**模型库章节**](https://paddleclas.readthedocs.io/zh_CN/latest/models/models_intro.html)。 +[简体中文](README_cn.md) | English -
- -
- -上图对比了一些最新的面向服务器端应用场景的模型,在使用V100,FP32和TensorRT,batch size为1时的预测时间及其准确率,图中准确率82.4%的ResNet50_vd_ssld和83.7%的ResNet101_vd_ssld,是采用PaddleClas提供的SSLD知识蒸馏方案训练的模型。图中相同颜色和符号的点代表同一系列不同规模的模型。不同模型的简介、FLOPS、Parameters以及详细的GPU预测时间(包括不同batchsize的T4卡预测速度)请参考文档教程中的[**模型库章节**](https://paddleclas.readthedocs.io/zh_CN/latest/models/models_intro.html)。 - -
- -
- -上图对比了一些最新的面向移动端应用场景的模型,在骁龙855(SD855)上预测一张图像的时间和其准确率,包括MobileNetV1系列、MobileNetV2系列、MobileNetV3系列和ShuffleNetV2系列。图中准确率79%的MV3_large_x1_0_ssld(M是MobileNet的简称),71.3%的MV3_small_x1_0_ssld、76.74%的MV2_ssld和77.89%的MV1_ssld,是采用PaddleClas提供的SSLD蒸馏方法训练的模型。MV3_large_x1_0_ssld_int8是进一步进行INT8量化的模型。不同模型的简介、FLOPS、Parameters和模型存储大小请参考文档教程中的[**模型库章节**](https://paddleclas.readthedocs.io/zh_CN/latest/models/models_intro.html)。 - -- TODO -- [ ] EfficientLite、GhostNet、RegNet论文指标复现和性能评估 - -## 高阶优化支持 -除了提供丰富的分类网络结构和预训练模型,PaddleClas也支持了一系列有助于图像分类任务效果和效率提升的算法或工具。 -### SSLD知识蒸馏 - -知识蒸馏是指使用教师模型(teacher model)去指导学生模型(student model)学习特定任务,保证小模型在参数量不变的情况下,得到比较大的效果提升,甚至获得与大模型相似的精度指标。PaddleClas提供了一种简单的半监督标签知识蒸馏方案(SSLD,Simple Semi-supervised Label Distillation),使用该方案,模型效果普遍提升3%以上,一些蒸馏模型提升效果如下图所示: +# PaddleClas -
- -
+## Introduction -以在ImageNet1K蒸馏模型为例,SSLD知识蒸馏方案框架图如下,该方案的核心关键点包括教师模型的选择、loss计算方式、迭代轮数、无标签数据的使用、以及ImageNet1k蒸馏finetune,每部分的详细介绍以及实验介绍请参考文档教程中的[**知识蒸馏章节**](https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/distillation/index.html)。 +PaddleClas is a toolset for image classification tasks prepared for the industry and academia. It helps users train better computer vision models and apply them in real scenarios. -
- -
-### 数据增广 +**Recent update** +- 2020.10.12 Add Paddle-Lite demo。 +- 2020.10.10 Add cpp inference demo and improve FAQ tutorial. +- 2020.09.17 Add `HRNet_W48_C_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 83.62%. Add `ResNet34_vd_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 79.72%. +- 2020.09.07 Add `HRNet_W18_C_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 81.16%. +- 2020.07.14 Add `Res2Net200_vd_26w_4s_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 85.13%. Add `Fix_ResNet50_vd_ssld_v2` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 84.00%. +- 2020.06.17 Add English documents. +- 2020.06.12 Add support for training and evaluation on Windows or CPU. +- [more](./docs/en/update_history_en.md) -在图像分类任务中,图像数据的增广是一种常用的正则化方法,可以有效提升图像分类的效果,尤其对于数据量不足或者模型网络较大的场景。常用的数据增广可以分为3类,图像变换类、图像裁剪类和图像混叠类,如下图所示。图像变换类是指对全图进行一些变换,例如AutoAugment,RandAugment。图像裁剪类是指对图像以一定的方式遮挡部分区域的变换,例如CutOut,RandErasing,HideAndSeek,GridMask。图像混叠类是指多张图进行混叠一张新图的变换,例如Mixup,Cutmix。 -
- -
+## Features -PaddleClas提供了上述8种数据增广算法的复现和在统一实验环境下的效果评估。下图展示了不同数据增广方式在ResNet50上的表现, 与标准变换相比,采用数据增广,识别准确率最高可以提升1%。每种数据增广方法的详细介绍、对比的实验环境请参考文档教程中的[**数据增广章节**](https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/index.html)。 +- Rich model zoo. Based on the ImageNet-1k classification dataset, PaddleClas provides 24 series of classification network structures and training configurations, 122 models' pretrained weights and their evaluation metrics. -
- -
+- SSLD Knowledge Distillation. Based on this SSLD distillation strategy, the top-1 acc of the distilled model is generally increased by more than 3%. -## 30分钟玩转PaddleClas +- Data augmentation: PaddleClas provides detailed introduction of 8 data augmentation algorithms such as AutoAugment, Cutout, Cutmix, code reproduction and effect evaluation in a unified experimental environment. -基于flowers102数据集,30分钟体验PaddleClas不同骨干网络的模型训练、不同预训练模型、SSLD知识蒸馏方案和数据增广的效果。详情请参考文档教程中的[**30分钟玩转PaddleClas**](https://paddleclas.readthedocs.io/zh_CN/latest/tutorials/quick_start.html)。 +- Pretrained model with 100,000 categories: Based on `ResNet50_vd` model, Baidu open sourced the `ResNet50_vd` pretrained model trained on a 100,000-category dataset. In some practical scenarios, the accuracy based on the pretrained weights can be increased by up to 30%. -## 开始使用 +- A variety of training modes, including multi-machine training, mixed precision training, etc. -PaddleClas的安装说明、模型训练、预测、评估以及模型微调(finetune)请参考文档教程中的[**初级使用章节**](https://paddleclas.readthedocs.io/zh_CN/latest/tutorials/index.html)。 +- A variety of inference and deployment solutions, including TensorRT inference, Paddle-Lite inference, model service deployment, model quantification, Paddle Hub, etc. +- Support Linux, Windows, macOS and other systems. -## 特色拓展应用 -### 10万类图像分类预训练模型 -在实际应用中,由于训练数据匮乏,往往将ImageNet1K数据集训练的分类模型作为预训练模型,进行图像分类的迁移学习。然而ImageNet1K数据集的类别只有1000种,预训练模型的特征迁移能力有限。因此百度自研了一个有语义体系的、粒度有粗有细的10w级别的Tag体系,通过人工或半监督方式,至今收集到 5500w+图片训练数据;该系统是国内甚至世界范围内最大规模的图片分类体系和训练集合。PaddleClas提供了在该数据集上训练的ResNet50_vd的模型。下表显示了一些实际应用场景中,使用ImageNet预训练模型和上述10万类图像分类预训练模型的效果比对,使用10万类图像分类预训练模型,识别准确率最高可以提升30%。 +## Tutorials -| 数据集 | 数据统计 | ImageNet预训练模型 | 10万类图像分类预训练模型 | -|:--:|:--:|:--:|:--:| -| 花卉 | class_num:102
train/val:5789/2396 | 0.7779 | 0.9892 | -| 手绘简笔画 | class_num:18
train/val:1007/432 | 0.8785 | 0.9107 | -| 植物叶子 | class_num:6
train/val:5256/2278 | 0.8212 | 0.8385 | -| 集装箱车辆 | class_num:115
train/val:4879/2094 | 0.623 | 0.9524 | -| 椅子 | class_num:5
train/val:169/78 | 0.8557 | 0.9077 | -| 地质 | class_num:4
train/val:671/296 | 0.5719 | 0.6781 | +- [Installation](./docs/en/tutorials/install_en.md) +- [Quick start PaddleClas in 30 minutes](./docs/en/tutorials/quick_start_en.md) +- [Model introduction and model zoo](./docs/en/models/models_intro_en.md) + - [Model zoo overview](#Model_zoo_overview) + - [ResNet and Vd series](#ResNet_and_Vd_series) + - [Mobile series](#Mobile_series) + - [SEResNeXt and Res2Net series](#SEResNeXt_and_Res2Net_series) + - [DPN and DenseNet series](#DPN_and_DenseNet_series) + - [HRNet series](#HRNet_series) + - [Inception series](#Inception_series) + - [EfficientNet and ResNeXt101_wsl series](#EfficientNet_and_ResNeXt101_wsl_series) + - [ResNeSt and RegNet series](#ResNeSt_and_RegNet_series) +- Model training/evaluation + - [Data preparation](./docs/en/tutorials/data_en.md) + - [Model training and finetuning](./docs/en/tutorials/getting_started_en.md) + - [Model evaluation](./docs/en/tutorials/getting_started_en.md) +- Model prediction/inference + - [Prediction based on training engine](./docs/en/extension/paddle_inference_en.md) + - [Python inference](./docs/en/extension/paddle_inference_en.md) + - [C++ inference](./deploy/cpp_infer/readme_en.md) + - [Serving deployment](./docs/en/extension/paddle_serving_en.md) + - [Mobile](./deploy/lite/readme.md) + - [Model Quantization and Compression](docs/en/extension/paddle_quantization_en.md) +- Advanced tutorials + - [Knowledge distillation](./docs/en/advanced_tutorials/distillation/distillation_en.md) + - [Data augmentation](./docs/en/advanced_tutorials/image_augmentation/ImageAugment_en.md) +- Applications + - [Transfer learning](./docs/en/application/transfer_learning_en.md) + - [Pretrained model with 100,000 categories](./docs/en/application/transfer_learning_en.md) + - [Generic object detection](./docs/en/application/object_detection_en.md) +- FAQ + - [General image classification problems](./docs/en/faq_en.md) + - [PaddleClas FAQ](./docs/en/faq_en.md) +- [Competition support](./docs/en/competition_support_en.md) +- [License](#License) +- [Contribution](#Contribution) + + + +### Model zoo overview + +Based on the ImageNet-1k classification dataset, the 24 classification network structures supported by PaddleClas and the corresponding 122 image classification pretrained models are shown below. Training trick, a brief introduction to each series of network structures, and performance evaluation will be shown in the corresponding chapters. The evaluation environment is as follows. + +* CPU evaluation environment is based on Snapdragon 855 (SD855). +* The GPU evaluation speed is measured by running 500 times under the FP32+TensorRT configuration (excluding the warmup time of the first 10 times). + + +Curves of accuracy to the inference time of common server-side models are shown as follows. + +![](./docs/images/models/T4_benchmark/t4.fp32.bs4.main_fps_top1.png) + + +Curves of accuracy to the inference time and storage size of common mobile-side models are shown as follows. + +![](./docs/images/models/mobile_arm_storage.png) + +![](./docs/images/models/mobile_arm_top1.png) + + + + +### ResNet and Vd series + +Accuracy and inference time metrics of ResNet and Vd series models are shown as follows. More detailed information can be refered to [ResNet and Vd series tutorial](./docs/en/models/ResNet_and_vd_en.md). + +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|---------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|----------------------------------------------------------------------------------------------| +| ResNet18 | 0.7098 | 0.8992 | 1.45606 | 3.56305 | 3.66 | 11.69 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_pretrained.tar) | +| ResNet18_vd | 0.7226 | 0.9080 | 1.54557 | 3.85363 | 4.14 | 11.71 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar) | +| ResNet34 | 0.7457 | 0.9214 | 2.34957 | 5.89821 | 7.36 | 21.8 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_pretrained.tar) | +| ResNet34_vd | 0.7598 | 0.9298 | 2.43427 | 6.22257 | 7.39 | 21.82 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_vd_pretrained.tar) | +| ResNet34_vd_ssld | 0.7972 | 0.9490 | 2.43427 | 6.22257 | 7.39 | 21.82 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_vd_ssld_pretrained.tar) | +| ResNet50 | 0.7650 | 0.9300 | 3.47712 | 7.84421 | 8.19 | 25.56 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_pretrained.tar) | +| ResNet50_vc | 0.7835 | 0.9403 | 3.52346 | 8.10725 | 8.67 | 25.58 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vc_pretrained.tar) | +| ResNet50_vd | 0.7912 | 0.9444 | 3.53131 | 8.09057 | 8.67 | 25.58 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_pretrained.tar) | +| ResNet50_vd_v2 | 0.7984 | 0.9493 | 3.53131 | 8.09057 | 8.67 | 25.58 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_v2_pretrained.tar) | +| ResNet101 | 0.7756 | 0.9364 | 6.07125 | 13.40573 | 15.52 | 44.55 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_pretrained.tar) | +| ResNet101_vd | 0.8017 | 0.9497 | 6.11704 | 13.76222 | 16.1 | 44.57 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_pretrained.tar) | +| ResNet152 | 0.7826 | 0.9396 | 8.50198 | 19.17073 | 23.05 | 60.19 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet152_pretrained.tar) | +| ResNet152_vd | 0.8059 | 0.9530 | 8.54376 | 19.52157 | 23.53 | 60.21 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet152_vd_pretrained.tar) | +| ResNet200_vd | 0.8093 | 0.9533 | 10.80619 | 25.01731 | 30.53 | 74.74 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet200_vd_pretrained.tar) | +| ResNet50_vd_
ssld | 0.8239 | 0.9610 | 3.53131 | 8.09057 | 8.67 | 25.58 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar) | +| ResNet50_vd_
ssld_v2 | 0.8300 | 0.9640 | 3.53131 | 8.09057 | 8.67 | 25.58 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_v2_pretrained.tar) | +| ResNet101_vd_
ssld | 0.8373 | 0.9669 | 6.11704 | 13.76222 | 16.1 | 44.57 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_ssld_pretrained.tar) | + + + +### Mobile series + +Accuracy and inference time metrics of Mobile series models are shown as follows. More detailed information can be refered to [Mobile series tutorial](./docs/en/models/Mobile_en.md). + +| Model | Top-1 Acc | Top-5 Acc | SD855 time(ms)
bs=1 | Flops(G) | Params(M) | Model storage size(M) | Download Address | +|----------------------------------|-----------|-----------|------------------------|----------|-----------|---------|-----------------------------------------------------------------------------------------------------------| +| MobileNetV1_
x0_25 | 0.5143 | 0.7546 | 3.21985 | 0.07 | 0.46 | 1.9 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_25_pretrained.tar) | +| MobileNetV1_
x0_5 | 0.6352 | 0.8473 | 9.579599 | 0.28 | 1.31 | 5.2 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_5_pretrained.tar) | +| MobileNetV1_
x0_75 | 0.6881 | 0.8823 | 19.436399 | 0.63 | 2.55 | 10 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_75_pretrained.tar) | +| MobileNetV1 | 0.7099 | 0.8968 | 32.523048 | 1.11 | 4.19 | 16 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_pretrained.tar) | +| MobileNetV1_
ssld | 0.7789 | 0.9394 | 32.523048 | 1.11 | 4.19 | 16 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_ssld_pretrained.tar) | +| MobileNetV2_
x0_25 | 0.5321 | 0.7652 | 3.79925 | 0.05 | 1.5 | 6.1 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_25_pretrained.tar) | +| MobileNetV2_
x0_5 | 0.6503 | 0.8572 | 8.7021 | 0.17 | 1.93 | 7.8 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_5_pretrained.tar) | +| MobileNetV2_
x0_75 | 0.6983 | 0.8901 | 15.531351 | 0.35 | 2.58 | 10 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_75_pretrained.tar) | +| MobileNetV2 | 0.7215 | 0.9065 | 23.317699 | 0.6 | 3.44 | 14 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_pretrained.tar) | +| MobileNetV2_
x1_5 | 0.7412 | 0.9167 | 45.623848 | 1.32 | 6.76 | 26 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x1_5_pretrained.tar) | +| MobileNetV2_
x2_0 | 0.7523 | 0.9258 | 74.291649 | 2.32 | 11.13 | 43 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x2_0_pretrained.tar) | +| MobileNetV2_
ssld | 0.7674 | 0.9339 | 23.317699 | 0.6 | 3.44 | 14 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_ssld_pretrained.tar) | +| MobileNetV3_
large_x1_25 | 0.7641 | 0.9295 | 28.217701 | 0.714 | 7.44 | 29 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_25_pretrained.tar) | +| MobileNetV3_
large_x1_0 | 0.7532 | 0.9231 | 19.30835 | 0.45 | 5.47 | 21 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_pretrained.tar) | +| MobileNetV3_
large_x0_75 | 0.7314 | 0.9108 | 13.5646 | 0.296 | 3.91 | 16 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_75_pretrained.tar) | +| MobileNetV3_
large_x0_5 | 0.6924 | 0.8852 | 7.49315 | 0.138 | 2.67 | 11 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar) | +| MobileNetV3_
large_x0_35 | 0.6432 | 0.8546 | 5.13695 | 0.077 | 2.1 | 8.6 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_35_pretrained.tar) | +| MobileNetV3_
small_x1_25 | 0.7067 | 0.8951 | 9.2745 | 0.195 | 3.62 | 14 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_25_pretrained.tar) | +| MobileNetV3_
small_x1_0 | 0.6824 | 0.8806 | 6.5463 | 0.123 | 2.94 | 12 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_pretrained.tar) | +| MobileNetV3_
small_x0_75 | 0.6602 | 0.8633 | 5.28435 | 0.088 | 2.37 | 9.6 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_75_pretrained.tar) | +| MobileNetV3_
small_x0_5 | 0.5921 | 0.8152 | 3.35165 | 0.043 | 1.9 | 7.8 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_5_pretrained.tar) | +| MobileNetV3_
small_x0_35 | 0.5303 | 0.7637 | 2.6352 | 0.026 | 1.66 | 6.9 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_35_pretrained.tar) | +| MobileNetV3_
small_x0_35_ssld | 0.5555 | 0.7771 | 2.6352 | 0.026 | 1.66 | 6.9 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_35_ssld_pretrained.tar) | +| MobileNetV3_
large_x1_0_ssld | 0.7896 | 0.9448 | 19.30835 | 0.45 | 5.47 | 21 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_pretrained.tar) | +| MobileNetV3_large_
x1_0_ssld_int8 | 0.7605 | - | 14.395 | - | - | 10 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_int8_pretrained.tar) | +| MobileNetV3_small_
x1_0_ssld | 0.7129 | 0.9010 | 6.5463 | 0.123 | 2.94 | 12 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_ssld_pretrained.tar) | +| ShuffleNetV2 | 0.6880 | 0.8845 | 10.941 | 0.28 | 2.26 | 9 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_pretrained.tar) | +| ShuffleNetV2_
x0_25 | 0.4990 | 0.7379 | 2.329 | 0.03 | 0.6 | 2.7 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_25_pretrained.tar) | +| ShuffleNetV2_
x0_33 | 0.5373 | 0.7705 | 2.64335 | 0.04 | 0.64 | 2.8 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_33_pretrained.tar) | +| ShuffleNetV2_
x0_5 | 0.6032 | 0.8226 | 4.2613 | 0.08 | 1.36 | 5.6 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_5_pretrained.tar) | +| ShuffleNetV2_
x1_5 | 0.7163 | 0.9015 | 19.3522 | 0.58 | 3.47 | 14 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x1_5_pretrained.tar) | +| ShuffleNetV2_
x2_0 | 0.7315 | 0.9120 | 34.770149 | 1.12 | 7.32 | 28 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x2_0_pretrained.tar) | +| ShuffleNetV2_
swish | 0.7003 | 0.8917 | 16.023151 | 0.29 | 2.26 | 9.1 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_swish_pretrained.tar) | +| DARTS_GS_4M | 0.7523 | 0.9215 | 47.204948 | 1.04 | 4.77 | 21 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DARTS_GS_4M_pretrained.tar) | +| DARTS_GS_6M | 0.7603 | 0.9279 | 53.720802 | 1.22 | 5.69 | 24 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DARTS_GS_6M_pretrained.tar) | +| GhostNet_
x0_5 | 0.6688 | 0.8695 | 5.7143 | 0.082 | 2.6 | 10 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x0_5_pretrained.pdparams) | +| GhostNet_
x1_0 | 0.7402 | 0.9165 | 13.5587 | 0.294 | 5.2 | 20 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x1_0_pretrained.pdparams) | +| GhostNet_
x1_3 | 0.7579 | 0.9254 | 19.9825 | 0.44 | 7.3 | 29 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x1_3_pretrained.pdparams) | + + + +### SEResNeXt and Res2Net series + +Accuracy and inference time metrics of SEResNeXt and Res2Net series models are shown as follows. More detailed information can be refered to [SEResNext and_Res2Net series tutorial](./docs/en/models/SEResNext_and_Res2Net_en.md). + + +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|---------------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|----------------------------------------------------------------------------------------------------| +| Res2Net50_
26w_4s | 0.7933 | 0.9457 | 4.47188 | 9.65722 | 8.52 | 25.7 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_26w_4s_pretrained.tar) | +| Res2Net50_vd_
26w_4s | 0.7975 | 0.9491 | 4.52712 | 9.93247 | 8.37 | 25.06 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_vd_26w_4s_pretrained.tar) | +| Res2Net50_
14w_8s | 0.7946 | 0.9470 | 5.4026 | 10.60273 | 9.01 | 25.72 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_14w_8s_pretrained.tar) | +| Res2Net101_vd_
26w_4s | 0.8064 | 0.9522 | 8.08729 | 17.31208 | 16.67 | 45.22 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net101_vd_26w_4s_pretrained.tar) | +| Res2Net200_vd_
26w_4s | 0.8121 | 0.9571 | 14.67806 | 32.35032 | 31.49 | 76.21 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net200_vd_26w_4s_pretrained.tar) | +| Res2Net200_vd_
26w_4s_ssld | 0.8513 | 0.9742 | 14.67806 | 32.35032 | 31.49 | 76.21 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net200_vd_26w_4s_ssld_pretrained.tar) | +| ResNeXt50_
32x4d | 0.7775 | 0.9382 | 7.56327 | 10.6134 | 8.02 | 23.64 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_32x4d_pretrained.tar) | +| ResNeXt50_vd_
32x4d | 0.7956 | 0.9462 | 7.62044 | 11.03385 | 8.5 | 23.66 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_vd_32x4d_pretrained.tar) | +| ResNeXt50_
64x4d | 0.7843 | 0.9413 | 13.80962 | 18.4712 | 15.06 | 42.36 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_64x4d_pretrained.tar) | +| ResNeXt50_vd_
64x4d | 0.8012 | 0.9486 | 13.94449 | 18.88759 | 15.54 | 42.38 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_vd_64x4d_pretrained.tar) | +| ResNeXt101_
32x4d | 0.7865 | 0.9419 | 16.21503 | 19.96568 | 15.01 | 41.54 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x4d_pretrained.tar) | +| ResNeXt101_vd_
32x4d | 0.8033 | 0.9512 | 16.28103 | 20.25611 | 15.49 | 41.56 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_32x4d_pretrained.tar) | +| ResNeXt101_
64x4d | 0.7835 | 0.9452 | 30.4788 | 36.29801 | 29.05 | 78.12 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_64x4d_pretrained.tar) | +| ResNeXt101_vd_
64x4d | 0.8078 | 0.9520 | 30.40456 | 36.77324 | 29.53 | 78.14 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_64x4d_pretrained.tar) | +| ResNeXt152_
32x4d | 0.7898 | 0.9433 | 24.86299 | 29.36764 | 22.01 | 56.28 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_32x4d_pretrained.tar) | +| ResNeXt152_vd_
32x4d | 0.8072 | 0.9520 | 25.03258 | 30.08987 | 22.49 | 56.3 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_vd_32x4d_pretrained.tar) | +| ResNeXt152_
64x4d | 0.7951 | 0.9471 | 46.7564 | 56.34108 | 43.03 | 107.57 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_64x4d_pretrained.tar) | +| ResNeXt152_vd_
64x4d | 0.8108 | 0.9534 | 47.18638 | 57.16257 | 43.52 | 107.59 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_vd_64x4d_pretrained.tar) | +| SE_ResNet18_vd | 0.7333 | 0.9138 | 1.7691 | 4.19877 | 4.14 | 11.8 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet18_vd_pretrained.tar) | +| SE_ResNet34_vd | 0.7651 | 0.9320 | 2.88559 | 7.03291 | 7.84 | 21.98 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet34_vd_pretrained.tar) | +| SE_ResNet50_vd | 0.7952 | 0.9475 | 4.28393 | 10.38846 | 8.67 | 28.09 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet50_vd_pretrained.tar) | +| SE_ResNeXt50_
32x4d | 0.7844 | 0.9396 | 8.74121 | 13.563 | 8.02 | 26.16 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt50_32x4d_pretrained.tar) | +| SE_ResNeXt50_vd_
32x4d | 0.8024 | 0.9489 | 9.17134 | 14.76192 | 10.76 | 26.28 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt50_vd_32x4d_pretrained.tar) | +| SE_ResNeXt101_
32x4d | 0.7912 | 0.9420 | 18.82604 | 25.31814 | 15.02 | 46.28 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt101_32x4d_pretrained.tar) | +| SENet154_vd | 0.8140 | 0.9548 | 53.79794 | 66.31684 | 45.83 | 114.29 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/SENet154_vd_pretrained.tar) | + + + +### DPN and DenseNet series + +Accuracy and inference time metrics of DPN and DenseNet series models are shown as follows. More detailed information can be refered to [DPN and DenseNet series tutorial](./docs/en/models/DPN_DenseNet_en.md). + + +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|-------------|-----------|-----------|-----------------------|----------------------|----------|-----------|--------------------------------------------------------------------------------------| +| DenseNet121 | 0.7566 | 0.9258 | 4.40447 | 9.32623 | 5.69 | 7.98 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet121_pretrained.tar) | +| DenseNet161 | 0.7857 | 0.9414 | 10.39152 | 22.15555 | 15.49 | 28.68 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet161_pretrained.tar) | +| DenseNet169 | 0.7681 | 0.9331 | 6.43598 | 12.98832 | 6.74 | 14.15 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet169_pretrained.tar) | +| DenseNet201 | 0.7763 | 0.9366 | 8.20652 | 17.45838 | 8.61 | 20.01 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet201_pretrained.tar) | +| DenseNet264 | 0.7796 | 0.9385 | 12.14722 | 26.27707 | 11.54 | 33.37 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet264_pretrained.tar) | +| DPN68 | 0.7678 | 0.9343 | 11.64915 | 12.82807 | 4.03 | 10.78 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DPN68_pretrained.tar) | +| DPN92 | 0.7985 | 0.9480 | 18.15746 | 23.87545 | 12.54 | 36.29 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DPN92_pretrained.tar) | +| DPN98 | 0.8059 | 0.9510 | 21.18196 | 33.23925 | 22.22 | 58.46 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DPN98_pretrained.tar) | +| DPN107 | 0.8089 | 0.9532 | 27.62046 | 52.65353 | 35.06 | 82.97 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DPN107_pretrained.tar) | +| DPN131 | 0.8070 | 0.9514 | 28.33119 | 46.19439 | 30.51 | 75.36 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/DPN131_pretrained.tar) | + + +### HRNet series + +Accuracy and inference time metrics of HRNet series models are shown as follows. More detailed information can be refered to [Mobile series tutorial](./docs/en/models/HRNet_en.md). + + +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|-------------|-----------|-----------|------------------|------------------|----------|-----------|--------------------------------------------------------------------------------------| +| HRNet_W18_C | 0.7692 | 0.9339 | 7.40636 | 13.29752 | 4.14 | 21.29 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_pretrained.tar) | +| HRNet_W18_C_ssld | 0.81162 | 0.95804 | 7.40636 | 13.29752 | 4.14 | 21.29 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_ssld_pretrained.tar) | +| HRNet_W30_C | 0.7804 | 0.9402 | 9.57594 | 17.35485 | 16.23 | 37.71 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W30_C_pretrained.tar) | +| HRNet_W32_C | 0.7828 | 0.9424 | 9.49807 | 17.72921 | 17.86 | 41.23 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W32_C_pretrained.tar) | +| HRNet_W40_C | 0.7877 | 0.9447 | 12.12202 | 25.68184 | 25.41 | 57.55 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W40_C_pretrained.tar) | +| HRNet_W44_C | 0.7900 | 0.9451 | 13.19858 | 32.25202 | 29.79 | 67.06 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W44_C_pretrained.tar) | +| HRNet_W48_C | 0.7895 | 0.9442 | 13.70761 | 34.43572 | 34.58 | 77.47 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W48_C_pretrained.tar) | +| HRNet_W48_C_ssld | 0.8363 | 0.9682 | 13.70761 | 34.43572 | 34.58 | 77.47 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W48_C_pretrained.tar) | +| HRNet_W64_C | 0.7930 | 0.9461 | 17.57527 | 47.9533 | 57.83 | 128.06 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W64_C_pretrained.tar) | + + + +### Inception series + +Accuracy and inference time metrics of Inception series models are shown as follows. More detailed information can be refered to [Inception series tutorial](./docs/en/models/Inception_en.md). + + +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|--------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|---------------------------------------------------------------------------------------------| +| GoogLeNet | 0.7070 | 0.8966 | 1.88038 | 4.48882 | 2.88 | 8.46 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/GoogLeNet_pretrained.tar) | +| Xception41 | 0.7930 | 0.9453 | 4.96939 | 17.01361 | 16.74 | 22.69 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_pretrained.tar) | +| Xception41_deeplab | 0.7955 | 0.9438 | 5.33541 | 17.55938 | 18.16 | 26.73 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_deeplab_pretrained.tar) | +| Xception65 | 0.8100 | 0.9549 | 7.26158 | 25.88778 | 25.95 | 35.48 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_pretrained.tar) | +| Xception65_deeplab | 0.8032 | 0.9449 | 7.60208 | 26.03699 | 27.37 | 39.52 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_deeplab_pretrained.tar) | +| Xception71 | 0.8111 | 0.9545 | 8.72457 | 31.55549 | 31.77 | 37.28 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Xception71_pretrained.tar) | +| InceptionV4 | 0.8077 | 0.9526 | 12.99342 | 25.23416 | 24.57 | 42.68 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/InceptionV4_pretrained.tar) | + + + +### EfficientNet and ResNeXt101_wsl series + +Accuracy and inference time metrics of EfficientNet and ResNeXt101_wsl series models are shown as follows. More detailed information can be refered to [EfficientNet and ResNeXt101_wsl series tutorial](./docs/en/models/EfficientNet_and_ResNeXt101_wsl_en.md). -10万类图像分类预训练模型下载地址如下,更多的相关内容请参考文档教程中的[**图像分类迁移学习章节**](https://paddleclas.readthedocs.io/zh_CN/latest/application/transfer_learning.html#id1)。 -- **10万类预训练模型:**[**下载地址**](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_10w_pretrained.tar) +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|---------------------------|-----------|-----------|------------------|------------------|----------|-----------|----------------------------------------------------------------------------------------------------| +| ResNeXt101_
32x8d_wsl | 0.8255 | 0.9674 | 18.52528 | 34.25319 | 29.14 | 78.44 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x8d_wsl_pretrained.tar) | +| ResNeXt101_
32x16d_wsl | 0.8424 | 0.9726 | 25.60395 | 71.88384 | 57.55 | 152.66 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x16d_wsl_pretrained.tar) | +| ResNeXt101_
32x32d_wsl | 0.8497 | 0.9759 | 54.87396 | 160.04337 | 115.17 | 303.11 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x32d_wsl_pretrained.tar) | +| ResNeXt101_
32x48d_wsl | 0.8537 | 0.9769 | 99.01698256 | 315.91261 | 173.58 | 456.2 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x48d_wsl_pretrained.tar) | +| Fix_ResNeXt101_
32x48d_wsl | 0.8626 | 0.9797 | 160.0838242 | 595.99296 | 354.23 | 456.2 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/Fix_ResNeXt101_32x48d_wsl_pretrained.tar) | +| EfficientNetB0 | 0.7738 | 0.9331 | 3.442 | 6.11476 | 0.72 | 5.1 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB0_pretrained.tar) | +| EfficientNetB1 | 0.7915 | 0.9441 | 5.3322 | 9.41795 | 1.27 | 7.52 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB1_pretrained.tar) | +| EfficientNetB2 | 0.7985 | 0.9474 | 6.29351 | 10.95702 | 1.85 | 8.81 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB2_pretrained.tar) | +| EfficientNetB3 | 0.8115 | 0.9541 | 7.67749 | 16.53288 | 3.43 | 11.84 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB3_pretrained.tar) | +| EfficientNetB4 | 0.8285 | 0.9623 | 12.15894 | 30.94567 | 8.29 | 18.76 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB4_pretrained.tar) | +| EfficientNetB5 | 0.8362 | 0.9672 | 20.48571 | 61.60252 | 19.51 | 29.61 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB5_pretrained.tar) | +| EfficientNetB6 | 0.8400 | 0.9688 | 32.62402 | - | 36.27 | 42 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB6_pretrained.tar) | +| EfficientNetB7 | 0.8430 | 0.9689 | 53.93823 | - | 72.35 | 64.92 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB7_pretrained.tar) | +| EfficientNetB0_
small | 0.7580 | 0.9258 | 2.3076 | 4.71886 | 0.72 | 4.65 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB0_small_pretrained.tar) | + -### 通用目标检测 + +### ResNeSt and RegNet series -近年来,学术界和工业界广泛关注图像中目标检测任务,而图像分类的网络结构以及预训练模型效果直接影响目标检测的效果。PaddleDetection使用PaddleClas的82.39%的ResNet50_vd的预训练模型,结合自身丰富的检测算子,提供了一种面向服务器端应用的目标检测方案,PSS-DET (Practical Server Side Detection)。该方案融合了多种只增加少许计算量,但是可以有效提升两阶段Faster RCNN目标检测效果的策略,包括检测模型剪裁、使用分类效果更优的预训练模型、DCNv2、Cascade RCNN、AutoAugment、Libra sampling以及多尺度训练。其中基于82.39%的R50_vd_ssld预训练模型,与79.12%的R50_vd的预训练模型相比,检测效果可以提升1.5%。在COCO目标检测数据集上测试PSS-DET,当V100单卡预测速度为61FPS时,mAP是41.6%,预测速度为20FPS时,mAP是47.8%。详情请参考[**通用目标检测章节**](https://paddleclas.readthedocs.io/zh_CN/latest/application/object_detection.html)。 +Accuracy and inference time metrics of ResNeSt and RegNet series models are shown as follows. More detailed information can be refered to [ResNeSt and RegNet series tutorial](./docs/en/models/ResNeSt_RegNet_en.md). -- TODO -- [ ] PaddleClas在OCR任务中的应用 -- [ ] PaddleClas在人脸检测和识别中的应用 +| Model | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | Download Address | +|------------------------|-----------|-----------|------------------|------------------|----------|-----------|------------------------------------------------------------------------------------------------------| +| ResNeSt50_
fast_1s1x64d | 0.8035 | 0.9528 | 3.45405 | 8.72680 | 8.68 | 26.3 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeSt50_fast_1s1x64d_pretrained.pdparams) | +| ResNeSt50 | 0.8102 | 0.9542 | 6.69042 | 8.01664 | 10.78 | 27.5 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeSt50_pretrained.pdparams) | +| RegNetX_4GF | 0.785 | 0.9416 | 6.46478 | 11.19862 | 8 | 22.1 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/RegNetX_4GF_pretrained.pdparams) | -## 工业级应用部署工具 -PaddlePaddle提供了一系列实用工具,便于工业应用部署PaddleClas,具体请参考文档教程中的[**实用工具章节**](https://paddleclas.readthedocs.io/zh_CN/latest/extension/index.html)。 -- TensorRT预测 -- Paddle-Lite -- 模型服务化部署 -- 模型量化 -- 多机训练 -- Paddle Hub + +## License -## 赛事支持 -PaddleClas的建设源于百度实际视觉业务应用的淬炼和视觉前沿能力的探索,助力多个视觉重点赛事取得领先成绩,并且持续推进更多的前沿视觉问题的解决和落地应用。更多内容请关注文档教程中的[**赛事支持章节**](https://paddleclas.readthedocs.io/zh_CN/latest/competition_support.html) +PaddleClas is released under the Apache 2.0 license -- 2018年Kaggle Open Images V4图像目标检测挑战赛冠军 -- 首届多媒体信息识别技术竞赛中印刷文本OCR、人脸识别和地标识别三项任务A级证书 -- 2019年Kaggle Open Images V5图像目标检测挑战赛亚军 -- 2019年Kaggle地标检索挑战赛亚军 -- 2019年Kaggle地标识别挑战赛亚军 -## 许可证书 -本项目的发布受Apache 2.0 license许可认证。 + +## Contribution -## 版本更新 +Contributions are highly welcomed and we would really appreciate your feedback!! -## 如何贡献代码 -我们非常欢迎你为PaddleClas贡献代码,也十分感谢你的反馈。 +- Thank [nblib](https://github.com/nblib) to fix bug of RandErasing. +- Thank [chenpy228](https://github.com/chenpy228) to fix some typos PaddleClas. diff --git a/README_cn.md b/README_cn.md new file mode 100644 index 00000000..98d2a5c2 --- /dev/null +++ b/README_cn.md @@ -0,0 +1,309 @@ +简体中文 | [English](README.md) + +# PaddleClas + +## 简介 + +飞桨图像分类套件PaddleClas是飞桨为工业界和学术界所准备的一个图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。 + +**近期更新** +- 2020.10.12 添加Paddle-Lite demo。 +- 2020.10.10 添加cpp inference demo,完善`FAQ 30问`教程。 +- 2020.09.17 添加 `HRNet_W48_C_ssld `模型,在ImageNet-1k上Top-1 Acc可达83.62%;添加 `ResNet34_vd_ssld `模型,在ImageNet-1k上Top-1 Acc可达79.72%。 +- 2020.09.07 添加 `HRNet_W18_C_ssld `模型,在ImageNet-1k上Top-1 Acc可达81.16%;添加 `MobileNetV3_small_x0_35_ssld `模型,在ImageNet-1k上Top-1 Acc可达55.55%。 +- 2020.07.14 添加 `Res2Net200_vd_26w_4s_ssld `模型,在ImageNet-1k上Top-1 Acc可达85.13%;添加 `Fix_ResNet50_vd_ssld_v2 `模型,在ImageNet-1k上Top-1 Acc可达84.0%。 +- 2020.06.17 添加英文文档。 +- 2020.06.12 添加对windows和CPU环境的训练与评估支持。 +- [more](./docs/zh_CN/update_history.md) + + +## 特性 + +- 丰富的模型库:基于ImageNet1k分类数据集,PaddleClas提供了24个系列的分类网络结构和训练配置,122个预训练模型和性能评估。 + +- SSLD知识蒸馏:基于该方案蒸馏模型的识别准确率普遍提升3%以上。 + +- 数据增广:支持AutoAugment、Cutout、Cutmix等8种数据增广算法详细介绍、代码复现和在统一实验环境下的效果评估。 + +- 10万类图像分类预训练模型:百度自研并开源了基于10万类数据集训练的 `ResNet50_vd `模型,在一些实际场景中,使用该预训练模型的识别准确率最多可以提升30%。 + +- 多种训练方案,包括多机训练、混合精度训练等。 + +- 多种预测推理、部署方案,包括TensorRT预测、Paddle-Lite预测、模型服务化部署、模型量化、Paddle Hub等。 + +- 可运行于Linux、Windows、MacOS等多种系统。 + + +## 文档教程 + +- [快速安装](./docs/zh_CN/tutorials/install.md) +- [30分钟玩转PaddleClas](./docs/zh_CN/tutorials/quick_start.md) +- [模型库介绍和预训练模型](./docs/zh_CN/models/models_intro.md) + - [模型库概览图](#模型库概览图) + - [ResNet及其Vd系列](#ResNet及其Vd系列) + - [移动端系列](#移动端系列) + - [SEResNeXt与Res2Net系列](#SEResNeXt与Res2Net系列) + - [DPN与DenseNet系列](#DPN与DenseNet系列) + - [HRNet](HRNet系列) + - [Inception系列](#Inception系列) + - [EfficientNet与ResNeXt101_wsl系列](#EfficientNet与ResNeXt101_wsl系列) + - [ResNeSt与RegNet系列](#ResNeSt与RegNet系列) +- 模型训练/评估 + - [数据准备](./docs/zh_CN/tutorials/data.md) + - [模型训练与微调](./docs/zh_CN/tutorials/getting_started.md) + - [模型评估](./docs/zh_CN/tutorials/getting_started.md) +- 模型预测 + - [基于训练引擎预测推理](./docs/zh_CN/extension/paddle_inference.md) + - [基于Python预测引擎预测推理](./docs/zh_CN/extension/paddle_inference.md) + - [基于C++预测引擎预测推理](./deploy/cpp_infer/readme.md) + - [服务化部署](./docs/zh_CN/extension/paddle_serving.md) + - [端侧部署](./deploy/lite/readme.md) + - [模型量化压缩](docs/zh_CN/extension/paddle_quantization.md) +- 高阶使用 + - [知识蒸馏](./docs/zh_CN/advanced_tutorials/distillation/distillation.md) + - [数据增广](./docs/zh_CN/advanced_tutorials/image_augmentation/ImageAugment.md) +- 特色拓展应用 + - [迁移学习](./docs/zh_CN/application/transfer_learning.md) + - [10万类图像分类预训练模型](./docs/zh_CN/application/transfer_learning.md) + - [通用目标检测](./docs/zh_CN/application/object_detection.md) +- FAQ + - [图像分类通用问题](./docs/zh_CN/faq.md) + - [PaddleClas实战FAQ](./docs/zh_CN/faq.md) +- [赛事支持](./docs/zh_CN/competition_support.md) +- [许可证书](#许可证书) +- [贡献代码](#贡献代码) + + +## 模型库 + + +### 模型库概览图 + +基于ImageNet1k分类数据集,PaddleClas支持24种系列分类网络结构以及对应的122个图像分类预训练模型,训练技巧、每个系列网络结构的简单介绍和性能评估将在相应章节展现,下面所有的速度指标评估环境如下: +* CPU的评估环境基于骁龙855(SD855)。 +* GPU评估环境基于T4机器,在FP32+TensorRT配置下运行500次测得(去除前10次的warmup时间)。 + +常见服务器端模型的精度指标与其预测耗时的变化曲线如下图所示。 + +![](./docs/images/models/T4_benchmark/t4.fp32.bs4.main_fps_top1.png) + + +常见移动端模型的精度指标与其预测耗时、模型存储大小的变化曲线如下图所示。 + +![](./docs/images/models/mobile_arm_storage.png) + +![](./docs/images/models/mobile_arm_top1.png) + + + +### ResNet及其Vd系列 + +ResNet及其Vd系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[ResNet及其Vd系列模型文档](./docs/zh_CN/models/ResNet_and_vd.md)。 + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|---------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|----------------------------------------------------------------------------------------------| +| ResNet18 | 0.7098 | 0.8992 | 1.45606 | 3.56305 | 3.66 | 11.69 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_pretrained.tar) | +| ResNet18_vd | 0.7226 | 0.9080 | 1.54557 | 3.85363 | 4.14 | 11.71 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar) | +| ResNet34 | 0.7457 | 0.9214 | 2.34957 | 5.89821 | 7.36 | 21.8 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_pretrained.tar) | +| ResNet34_vd | 0.7598 | 0.9298 | 2.43427 | 6.22257 | 7.39 | 21.82 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_vd_pretrained.tar) | +| ResNet34_vd_ssld | 0.7972 | 0.9490 | 2.43427 | 6.22257 | 7.39 | 21.82 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_vd_ssld_pretrained.tar) | +| ResNet50 | 0.7650 | 0.9300 | 3.47712 | 7.84421 | 8.19 | 25.56 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_pretrained.tar) | +| ResNet50_vc | 0.7835 | 0.9403 | 3.52346 | 8.10725 | 8.67 | 25.58 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vc_pretrained.tar) | +| ResNet50_vd | 0.7912 | 0.9444 | 3.53131 | 8.09057 | 8.67 | 25.58 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_pretrained.tar) | +| ResNet50_vd_v2 | 0.7984 | 0.9493 | 3.53131 | 8.09057 | 8.67 | 25.58 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_v2_pretrained.tar) | +| ResNet101 | 0.7756 | 0.9364 | 6.07125 | 13.40573 | 15.52 | 44.55 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_pretrained.tar) | +| ResNet101_vd | 0.8017 | 0.9497 | 6.11704 | 13.76222 | 16.1 | 44.57 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_pretrained.tar) | +| ResNet152 | 0.7826 | 0.9396 | 8.50198 | 19.17073 | 23.05 | 60.19 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet152_pretrained.tar) | +| ResNet152_vd | 0.8059 | 0.9530 | 8.54376 | 19.52157 | 23.53 | 60.21 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet152_vd_pretrained.tar) | +| ResNet200_vd | 0.8093 | 0.9533 | 10.80619 | 25.01731 | 30.53 | 74.74 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet200_vd_pretrained.tar) | +| ResNet50_vd_
ssld | 0.8239 | 0.9610 | 3.53131 | 8.09057 | 8.67 | 25.58 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar) | +| ResNet50_vd_
ssld_v2 | 0.8300 | 0.9640 | 3.53131 | 8.09057 | 8.67 | 25.58 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_v2_pretrained.tar) | +| ResNet101_vd_
ssld | 0.8373 | 0.9669 | 6.11704 | 13.76222 | 16.1 | 44.57 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_ssld_pretrained.tar) | + + + +### 移动端系列 + +移动端系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[移动端系列模型文档](./docs/zh_CN/models/Mobile.md)。 + +| 模型 | Top-1 Acc | Top-5 Acc | SD855 time(ms)
bs=1 | Flops(G) | Params(M) | 模型大小(M) | 下载地址 | +|----------------------------------|-----------|-----------|------------------------|----------|-----------|---------|-----------------------------------------------------------------------------------------------------------| +| MobileNetV1_
x0_25 | 0.5143 | 0.7546 | 3.21985 | 0.07 | 0.46 | 1.9 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_25_pretrained.tar) | +| MobileNetV1_
x0_5 | 0.6352 | 0.8473 | 9.579599 | 0.28 | 1.31 | 5.2 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_5_pretrained.tar) | +| MobileNetV1_
x0_75 | 0.6881 | 0.8823 | 19.436399 | 0.63 | 2.55 | 10 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_75_pretrained.tar) | +| MobileNetV1 | 0.7099 | 0.8968 | 32.523048 | 1.11 | 4.19 | 16 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_pretrained.tar) | +| MobileNetV1_
ssld | 0.7789 | 0.9394 | 32.523048 | 1.11 | 4.19 | 16 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_ssld_pretrained.tar) | +| MobileNetV2_
x0_25 | 0.5321 | 0.7652 | 3.79925 | 0.05 | 1.5 | 6.1 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_25_pretrained.tar) | +| MobileNetV2_
x0_5 | 0.6503 | 0.8572 | 8.7021 | 0.17 | 1.93 | 7.8 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_5_pretrained.tar) | +| MobileNetV2_
x0_75 | 0.6983 | 0.8901 | 15.531351 | 0.35 | 2.58 | 10 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_75_pretrained.tar) | +| MobileNetV2 | 0.7215 | 0.9065 | 23.317699 | 0.6 | 3.44 | 14 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_pretrained.tar) | +| MobileNetV2_
x1_5 | 0.7412 | 0.9167 | 45.623848 | 1.32 | 6.76 | 26 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x1_5_pretrained.tar) | +| MobileNetV2_
x2_0 | 0.7523 | 0.9258 | 74.291649 | 2.32 | 11.13 | 43 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x2_0_pretrained.tar) | +| MobileNetV2_
ssld | 0.7674 | 0.9339 | 23.317699 | 0.6 | 3.44 | 14 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_ssld_pretrained.tar) | +| MobileNetV3_
large_x1_25 | 0.7641 | 0.9295 | 28.217701 | 0.714 | 7.44 | 29 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_25_pretrained.tar) | +| MobileNetV3_
large_x1_0 | 0.7532 | 0.9231 | 19.30835 | 0.45 | 5.47 | 21 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_pretrained.tar) | +| MobileNetV3_
large_x0_75 | 0.7314 | 0.9108 | 13.5646 | 0.296 | 3.91 | 16 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_75_pretrained.tar) | +| MobileNetV3_
large_x0_5 | 0.6924 | 0.8852 | 7.49315 | 0.138 | 2.67 | 11 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar) | +| MobileNetV3_
large_x0_35 | 0.6432 | 0.8546 | 5.13695 | 0.077 | 2.1 | 8.6 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_35_pretrained.tar) | +| MobileNetV3_
small_x1_25 | 0.7067 | 0.8951 | 9.2745 | 0.195 | 3.62 | 14 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_25_pretrained.tar) | +| MobileNetV3_
small_x1_0 | 0.6824 | 0.8806 | 6.5463 | 0.123 | 2.94 | 12 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_pretrained.tar) | +| MobileNetV3_
small_x0_75 | 0.6602 | 0.8633 | 5.28435 | 0.088 | 2.37 | 9.6 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_75_pretrained.tar) | +| MobileNetV3_
small_x0_5 | 0.5921 | 0.8152 | 3.35165 | 0.043 | 1.9 | 7.8 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_5_pretrained.tar) | +| MobileNetV3_
small_x0_35 | 0.5303 | 0.7637 | 2.6352 | 0.026 | 1.66 | 6.9 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_35_pretrained.tar) | +| MobileNetV3_
small_x0_35_ssld | 0.5555 | 0.7771 | 2.6352 | 0.026 | 1.66 | 6.9 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_35_ssld_pretrained.tar) | +| MobileNetV3_
large_x1_0_ssld | 0.7896 | 0.9448 | 19.30835 | 0.45 | 5.47 | 21 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_pretrained.tar) | +| MobileNetV3_large_
x1_0_ssld_int8 | 0.7605 | - | 14.395 | - | - | 10 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_int8_pretrained.tar) | +| MobileNetV3_small_
x1_0_ssld | 0.7129 | 0.9010 | 6.5463 | 0.123 | 2.94 | 12 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_ssld_pretrained.tar) | +| ShuffleNetV2 | 0.6880 | 0.8845 | 10.941 | 0.28 | 2.26 | 9 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_pretrained.tar) | +| ShuffleNetV2_
x0_25 | 0.4990 | 0.7379 | 2.329 | 0.03 | 0.6 | 2.7 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_25_pretrained.tar) | +| ShuffleNetV2_
x0_33 | 0.5373 | 0.7705 | 2.64335 | 0.04 | 0.64 | 2.8 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_33_pretrained.tar) | +| ShuffleNetV2_
x0_5 | 0.6032 | 0.8226 | 4.2613 | 0.08 | 1.36 | 5.6 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_5_pretrained.tar) | +| ShuffleNetV2_
x1_5 | 0.7163 | 0.9015 | 19.3522 | 0.58 | 3.47 | 14 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x1_5_pretrained.tar) | +| ShuffleNetV2_
x2_0 | 0.7315 | 0.9120 | 34.770149 | 1.12 | 7.32 | 28 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x2_0_pretrained.tar) | +| ShuffleNetV2_
swish | 0.7003 | 0.8917 | 16.023151 | 0.29 | 2.26 | 9.1 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_swish_pretrained.tar) | +| DARTS_GS_4M | 0.7523 | 0.9215 | 47.204948 | 1.04 | 4.77 | 21 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DARTS_GS_4M_pretrained.tar) | +| DARTS_GS_6M | 0.7603 | 0.9279 | 53.720802 | 1.22 | 5.69 | 24 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DARTS_GS_6M_pretrained.tar) | +| GhostNet_
x0_5 | 0.6688 | 0.8695 | 5.7143 | 0.082 | 2.6 | 10 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x0_5_pretrained.pdparams) | +| GhostNet_
x1_0 | 0.7402 | 0.9165 | 13.5587 | 0.294 | 5.2 | 20 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x1_0_pretrained.pdparams) | +| GhostNet_
x1_3 | 0.7579 | 0.9254 | 19.9825 | 0.44 | 7.3 | 29 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x1_3_pretrained.pdparams) | + + + +### SEResNeXt与Res2Net系列 + +SEResNeXt与Res2Net系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[SEResNeXt与Res2Net系列模型文档](./docs/zh_CN/models/SEResNext_and_Res2Net.md)。 + + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|---------------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|----------------------------------------------------------------------------------------------------| +| Res2Net50_
26w_4s | 0.7933 | 0.9457 | 4.47188 | 9.65722 | 8.52 | 25.7 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_26w_4s_pretrained.tar) | +| Res2Net50_vd_
26w_4s | 0.7975 | 0.9491 | 4.52712 | 9.93247 | 8.37 | 25.06 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_vd_26w_4s_pretrained.tar) | +| Res2Net50_
14w_8s | 0.7946 | 0.9470 | 5.4026 | 10.60273 | 9.01 | 25.72 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_14w_8s_pretrained.tar) | +| Res2Net101_vd_
26w_4s | 0.8064 | 0.9522 | 8.08729 | 17.31208 | 16.67 | 45.22 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net101_vd_26w_4s_pretrained.tar) | +| Res2Net200_vd_
26w_4s | 0.8121 | 0.9571 | 14.67806 | 32.35032 | 31.49 | 76.21 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net200_vd_26w_4s_pretrained.tar) | +| Res2Net200_vd_
26w_4s_ssld | 0.8513 | 0.9742 | 14.67806 | 32.35032 | 31.49 | 76.21 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net200_vd_26w_4s_ssld_pretrained.tar) | +| ResNeXt50_
32x4d | 0.7775 | 0.9382 | 7.56327 | 10.6134 | 8.02 | 23.64 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_32x4d_pretrained.tar) | +| ResNeXt50_vd_
32x4d | 0.7956 | 0.9462 | 7.62044 | 11.03385 | 8.5 | 23.66 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_vd_32x4d_pretrained.tar) | +| ResNeXt50_
64x4d | 0.7843 | 0.9413 | 13.80962 | 18.4712 | 15.06 | 42.36 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_64x4d_pretrained.tar) | +| ResNeXt50_vd_
64x4d | 0.8012 | 0.9486 | 13.94449 | 18.88759 | 15.54 | 42.38 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_vd_64x4d_pretrained.tar) | +| ResNeXt101_
32x4d | 0.7865 | 0.9419 | 16.21503 | 19.96568 | 15.01 | 41.54 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x4d_pretrained.tar) | +| ResNeXt101_vd_
32x4d | 0.8033 | 0.9512 | 16.28103 | 20.25611 | 15.49 | 41.56 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_32x4d_pretrained.tar) | +| ResNeXt101_
64x4d | 0.7835 | 0.9452 | 30.4788 | 36.29801 | 29.05 | 78.12 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_64x4d_pretrained.tar) | +| ResNeXt101_vd_
64x4d | 0.8078 | 0.9520 | 30.40456 | 36.77324 | 29.53 | 78.14 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_64x4d_pretrained.tar) | +| ResNeXt152_
32x4d | 0.7898 | 0.9433 | 24.86299 | 29.36764 | 22.01 | 56.28 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_32x4d_pretrained.tar) | +| ResNeXt152_vd_
32x4d | 0.8072 | 0.9520 | 25.03258 | 30.08987 | 22.49 | 56.3 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_vd_32x4d_pretrained.tar) | +| ResNeXt152_
64x4d | 0.7951 | 0.9471 | 46.7564 | 56.34108 | 43.03 | 107.57 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_64x4d_pretrained.tar) | +| ResNeXt152_vd_
64x4d | 0.8108 | 0.9534 | 47.18638 | 57.16257 | 43.52 | 107.59 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_vd_64x4d_pretrained.tar) | +| SE_ResNet18_vd | 0.7333 | 0.9138 | 1.7691 | 4.19877 | 4.14 | 11.8 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet18_vd_pretrained.tar) | +| SE_ResNet34_vd | 0.7651 | 0.9320 | 2.88559 | 7.03291 | 7.84 | 21.98 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet34_vd_pretrained.tar) | +| SE_ResNet50_vd | 0.7952 | 0.9475 | 4.28393 | 10.38846 | 8.67 | 28.09 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet50_vd_pretrained.tar) | +| SE_ResNeXt50_
32x4d | 0.7844 | 0.9396 | 8.74121 | 13.563 | 8.02 | 26.16 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt50_32x4d_pretrained.tar) | +| SE_ResNeXt50_vd_
32x4d | 0.8024 | 0.9489 | 9.17134 | 14.76192 | 10.76 | 26.28 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt50_vd_32x4d_pretrained.tar) | +| SE_ResNeXt101_
32x4d | 0.7912 | 0.9420 | 18.82604 | 25.31814 | 15.02 | 46.28 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt101_32x4d_pretrained.tar) | +| SENet154_vd | 0.8140 | 0.9548 | 53.79794 | 66.31684 | 45.83 | 114.29 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/SENet154_vd_pretrained.tar) | + + + +### DPN与DenseNet系列 + +DPN与DenseNet系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[DPN与DenseNet系列模型文档](./docs/zh_CN/models/DPN_DenseNet.md)。 + + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|-------------|-----------|-----------|-----------------------|----------------------|----------|-----------|--------------------------------------------------------------------------------------| +| DenseNet121 | 0.7566 | 0.9258 | 4.40447 | 9.32623 | 5.69 | 7.98 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet121_pretrained.tar) | +| DenseNet161 | 0.7857 | 0.9414 | 10.39152 | 22.15555 | 15.49 | 28.68 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet161_pretrained.tar) | +| DenseNet169 | 0.7681 | 0.9331 | 6.43598 | 12.98832 | 6.74 | 14.15 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet169_pretrained.tar) | +| DenseNet201 | 0.7763 | 0.9366 | 8.20652 | 17.45838 | 8.61 | 20.01 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet201_pretrained.tar) | +| DenseNet264 | 0.7796 | 0.9385 | 12.14722 | 26.27707 | 11.54 | 33.37 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet264_pretrained.tar) | +| DPN68 | 0.7678 | 0.9343 | 11.64915 | 12.82807 | 4.03 | 10.78 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DPN68_pretrained.tar) | +| DPN92 | 0.7985 | 0.9480 | 18.15746 | 23.87545 | 12.54 | 36.29 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DPN92_pretrained.tar) | +| DPN98 | 0.8059 | 0.9510 | 21.18196 | 33.23925 | 22.22 | 58.46 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DPN98_pretrained.tar) | +| DPN107 | 0.8089 | 0.9532 | 27.62046 | 52.65353 | 35.06 | 82.97 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DPN107_pretrained.tar) | +| DPN131 | 0.8070 | 0.9514 | 28.33119 | 46.19439 | 30.51 | 75.36 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/DPN131_pretrained.tar) | + + + + +### HRNet系列 + +HRNet系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[HRNet系列模型文档](./docs/zh_CN/models/HRNet.md)。 + + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|-------------|-----------|-----------|------------------|------------------|----------|-----------|--------------------------------------------------------------------------------------| +| HRNet_W18_C | 0.7692 | 0.9339 | 7.40636 | 13.29752 | 4.14 | 21.29 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_pretrained.tar) | +| HRNet_W18_C_ssld | 0.81162 | 0.95804 | 7.40636 | 13.29752 | 4.14 | 21.29 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_ssld_pretrained.tar) | +| HRNet_W30_C | 0.7804 | 0.9402 | 9.57594 | 17.35485 | 16.23 | 37.71 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W30_C_pretrained.tar) | +| HRNet_W32_C | 0.7828 | 0.9424 | 9.49807 | 17.72921 | 17.86 | 41.23 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W32_C_pretrained.tar) | +| HRNet_W40_C | 0.7877 | 0.9447 | 12.12202 | 25.68184 | 25.41 | 57.55 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W40_C_pretrained.tar) | +| HRNet_W44_C | 0.7900 | 0.9451 | 13.19858 | 32.25202 | 29.79 | 67.06 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W44_C_pretrained.tar) | +| HRNet_W48_C | 0.7895 | 0.9442 | 13.70761 | 34.43572 | 34.58 | 77.47 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W48_C_pretrained.tar) | +| HRNet_W48_C_ssld | 0.8363 | 0.9682 | 13.70761 | 34.43572 | 34.58 | 77.47 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W48_C_pretrained.tar) | +| HRNet_W64_C | 0.7930 | 0.9461 | 17.57527 | 47.9533 | 57.83 | 128.06 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W64_C_pretrained.tar) | + + + +### Inception系列 + +Inception系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[Inception系列模型文档](./docs/zh_CN/models/Inception.md)。 + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|--------------------|-----------|-----------|-----------------------|----------------------|----------|-----------|---------------------------------------------------------------------------------------------| +| GoogLeNet | 0.7070 | 0.8966 | 1.88038 | 4.48882 | 2.88 | 8.46 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/GoogLeNet_pretrained.tar) | +| Xception41 | 0.7930 | 0.9453 | 4.96939 | 17.01361 | 16.74 | 22.69 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_pretrained.tar) | +| Xception41_deeplab | 0.7955 | 0.9438 | 5.33541 | 17.55938 | 18.16 | 26.73 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_deeplab_pretrained.tar) | +| Xception65 | 0.8100 | 0.9549 | 7.26158 | 25.88778 | 25.95 | 35.48 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_pretrained.tar) | +| Xception65_deeplab | 0.8032 | 0.9449 | 7.60208 | 26.03699 | 27.37 | 39.52 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_deeplab_pretrained.tar) | +| Xception71 | 0.8111 | 0.9545 | 8.72457 | 31.55549 | 31.77 | 37.28 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Xception71_pretrained.tar) | +| InceptionV4 | 0.8077 | 0.9526 | 12.99342 | 25.23416 | 24.57 | 42.68 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/InceptionV4_pretrained.tar) | + + + +### EfficientNet与ResNeXt101_wsl系列 + +EfficientNet与ResNeXt101_wsl系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[EfficientNet与ResNeXt101_wsl系列模型文档](./docs/zh_CN/models/EfficientNet_and_ResNeXt101_wsl.md)。 + + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|---------------------------|-----------|-----------|------------------|------------------|----------|-----------|----------------------------------------------------------------------------------------------------| +| ResNeXt101_
32x8d_wsl | 0.8255 | 0.9674 | 18.52528 | 34.25319 | 29.14 | 78.44 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x8d_wsl_pretrained.tar) | +| ResNeXt101_
32x16d_wsl | 0.8424 | 0.9726 | 25.60395 | 71.88384 | 57.55 | 152.66 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x16d_wsl_pretrained.tar) | +| ResNeXt101_
32x32d_wsl | 0.8497 | 0.9759 | 54.87396 | 160.04337 | 115.17 | 303.11 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x32d_wsl_pretrained.tar) | +| ResNeXt101_
32x48d_wsl | 0.8537 | 0.9769 | 99.01698256 | 315.91261 | 173.58 | 456.2 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x48d_wsl_pretrained.tar) | +| Fix_ResNeXt101_
32x48d_wsl | 0.8626 | 0.9797 | 160.0838242 | 595.99296 | 354.23 | 456.2 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/Fix_ResNeXt101_32x48d_wsl_pretrained.tar) | +| EfficientNetB0 | 0.7738 | 0.9331 | 3.442 | 6.11476 | 0.72 | 5.1 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB0_pretrained.tar) | +| EfficientNetB1 | 0.7915 | 0.9441 | 5.3322 | 9.41795 | 1.27 | 7.52 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB1_pretrained.tar) | +| EfficientNetB2 | 0.7985 | 0.9474 | 6.29351 | 10.95702 | 1.85 | 8.81 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB2_pretrained.tar) | +| EfficientNetB3 | 0.8115 | 0.9541 | 7.67749 | 16.53288 | 3.43 | 11.84 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB3_pretrained.tar) | +| EfficientNetB4 | 0.8285 | 0.9623 | 12.15894 | 30.94567 | 8.29 | 18.76 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB4_pretrained.tar) | +| EfficientNetB5 | 0.8362 | 0.9672 | 20.48571 | 61.60252 | 19.51 | 29.61 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB5_pretrained.tar) | +| EfficientNetB6 | 0.8400 | 0.9688 | 32.62402 | - | 36.27 | 42 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB6_pretrained.tar) | +| EfficientNetB7 | 0.8430 | 0.9689 | 53.93823 | - | 72.35 | 64.92 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB7_pretrained.tar) | +| EfficientNetB0_
small | 0.7580 | 0.9258 | 2.3076 | 4.71886 | 0.72 | 4.65 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB0_small_pretrained.tar) | + + + +### ResNeSt与RegNet系列 + +ResNeSt与RegNet系列模型的精度、速度指标如下表所示,更多关于该系列的模型介绍可以参考:[ResNeSt与RegNet系列模型文档](./docs/zh_CN/models/ResNeSt_RegNet.md)。 + + +| 模型 | Top-1 Acc | Top-5 Acc | time(ms)
bs=1 | time(ms)
bs=4 | Flops(G) | Params(M) | 下载地址 | +|------------------------|-----------|-----------|------------------|------------------|----------|-----------|------------------------------------------------------------------------------------------------------| +| ResNeSt50_
fast_1s1x64d | 0.8035 | 0.9528 | 3.45405 | 8.72680 | 8.68 | 26.3 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeSt50_fast_1s1x64d_pretrained.pdparams) | +| ResNeSt50 | 0.8102 | 0.9542 | 6.69042 | 8.01664 | 10.78 | 27.5 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeSt50_pretrained.pdparams) | +| RegNetX_4GF | 0.785 | 0.9416 | 6.46478 | 11.19862 | 8 | 22.1 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/RegNetX_4GF_pretrained.pdparams) | + + + +## 许可证书 +本项目的发布受Apache 2.0 license许可认证。 + + + +## 贡献代码 +我们非常欢迎你为PaddleClas贡献代码,也十分感谢你的反馈。 + +- 非常感谢[nblib](https://github.com/nblib)修正了PaddleClas中RandErasing的数据增广配置文件。 +- 非常感谢[chenpy228](https://github.com/chenpy228)修正了PaddleClas文档中的部分错别字。 diff --git a/deploy/cpp_infer/CMakeLists.txt b/deploy/cpp_infer/CMakeLists.txt new file mode 100755 index 00000000..3f51d654 --- /dev/null +++ b/deploy/cpp_infer/CMakeLists.txt @@ -0,0 +1,201 @@ +project(clas_system CXX C) + +option(WITH_MKL "Compile demo with MKL/OpenBlas support, default use MKL." ON) +option(WITH_GPU "Compile demo with GPU/CPU, default use CPU." OFF) +option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static." ON) +option(WITH_TENSORRT "Compile demo with TensorRT." OFF) + +SET(PADDLE_LIB "" CACHE PATH "Location of libraries") +SET(OPENCV_DIR "" CACHE PATH "Location of libraries") +SET(CUDA_LIB "" CACHE PATH "Location of libraries") +SET(CUDNN_LIB "" CACHE PATH "Location of libraries") +SET(TENSORRT_DIR "" CACHE PATH "Compile demo with TensorRT") + +set(DEMO_NAME "clas_system") + + +macro(safe_set_static_flag) + foreach(flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) +endmacro() + +if (WITH_MKL) + ADD_DEFINITIONS(-DUSE_MKL) +endif() + +if(NOT DEFINED PADDLE_LIB) + message(FATAL_ERROR "please set PADDLE_LIB with -DPADDLE_LIB=/path/paddle/lib") +endif() + +if(NOT DEFINED OPENCV_DIR) + message(FATAL_ERROR "please set OPENCV_DIR with -DOPENCV_DIR=/path/opencv") +endif() + + +if (WIN32) + include_directories("${PADDLE_LIB}/paddle/fluid/inference") + include_directories("${PADDLE_LIB}/paddle/include") + link_directories("${PADDLE_LIB}/paddle/fluid/inference") + find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/build/ NO_DEFAULT_PATH) + +else () + find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/share/OpenCV NO_DEFAULT_PATH) + include_directories("${PADDLE_LIB}/paddle/include") + link_directories("${PADDLE_LIB}/paddle/lib") +endif () +include_directories(${OpenCV_INCLUDE_DIRS}) + +if (WIN32) + add_definitions("/DGOOGLE_GLOG_DLL_DECL=") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /bigobj /MTd") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /bigobj /MT") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj /MTd") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /bigobj /MT") + if (WITH_STATIC_LIB) + safe_set_static_flag() + add_definitions(-DSTATIC_LIB) + endif() +else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o3 -std=c++11") + set(CMAKE_STATIC_LIBRARY_PREFIX "") +endif() +message("flags" ${CMAKE_CXX_FLAGS}) + + +if (WITH_GPU) + if (NOT DEFINED CUDA_LIB OR ${CUDA_LIB} STREQUAL "") + message(FATAL_ERROR "please set CUDA_LIB with -DCUDA_LIB=/path/cuda-8.0/lib64") + endif() + if (NOT WIN32) + if (NOT DEFINED CUDNN_LIB) + message(FATAL_ERROR "please set CUDNN_LIB with -DCUDNN_LIB=/path/cudnn_v7.4/cuda/lib64") + endif() + endif(NOT WIN32) +endif() + +include_directories("${PADDLE_LIB}/third_party/install/protobuf/include") +include_directories("${PADDLE_LIB}/third_party/install/glog/include") +include_directories("${PADDLE_LIB}/third_party/install/gflags/include") +include_directories("${PADDLE_LIB}/third_party/install/xxhash/include") +include_directories("${PADDLE_LIB}/third_party/install/zlib/include") +include_directories("${PADDLE_LIB}/third_party/boost") +include_directories("${PADDLE_LIB}/third_party/eigen3") + +include_directories("${CMAKE_SOURCE_DIR}/") + +if (NOT WIN32) + if (WITH_TENSORRT AND WITH_GPU) + include_directories("${TENSORRT_DIR}/include") + link_directories("${TENSORRT_DIR}/lib") + endif() +endif(NOT WIN32) + +link_directories("${PADDLE_LIB}/third_party/install/zlib/lib") + +link_directories("${PADDLE_LIB}/third_party/install/protobuf/lib") +link_directories("${PADDLE_LIB}/third_party/install/glog/lib") +link_directories("${PADDLE_LIB}/third_party/install/gflags/lib") +link_directories("${PADDLE_LIB}/third_party/install/xxhash/lib") +link_directories("${PADDLE_LIB}/paddle/lib") + + +if(WITH_MKL) + include_directories("${PADDLE_LIB}/third_party/install/mklml/include") + if (WIN32) + set(MATH_LIB ${PADDLE_LIB}/third_party/install/mklml/lib/mklml.lib + ${PADDLE_LIB}/third_party/install/mklml/lib/libiomp5md.lib) + else () + set(MATH_LIB ${PADDLE_LIB}/third_party/install/mklml/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX} + ${PADDLE_LIB}/third_party/install/mklml/lib/libiomp5${CMAKE_SHARED_LIBRARY_SUFFIX}) + execute_process(COMMAND cp -r ${PADDLE_LIB}/third_party/install/mklml/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX} /usr/lib) + endif () + set(MKLDNN_PATH "${PADDLE_LIB}/third_party/install/mkldnn") + if(EXISTS ${MKLDNN_PATH}) + include_directories("${MKLDNN_PATH}/include") + if (WIN32) + set(MKLDNN_LIB ${MKLDNN_PATH}/lib/mkldnn.lib) + else () + set(MKLDNN_LIB ${MKLDNN_PATH}/lib/libmkldnn.so.0) + endif () + endif() +else() + set(MATH_LIB ${PADDLE_LIB}/third_party/install/openblas/lib/libopenblas${CMAKE_STATIC_LIBRARY_SUFFIX}) +endif() + +# Note: libpaddle_inference_api.so/a must put before libpaddle_fluid.so/a +if(WITH_STATIC_LIB) + set(DEPS + ${PADDLE_LIB}/paddle/lib/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX}) +else() + set(DEPS + ${PADDLE_LIB}/paddle/lib/libpaddle_fluid${CMAKE_SHARED_LIBRARY_SUFFIX}) +endif() + +if (NOT WIN32) + set(DEPS ${DEPS} + ${MATH_LIB} ${MKLDNN_LIB} + glog gflags protobuf z xxhash + ) + if(EXISTS "${PADDLE_LIB}/third_party/install/snappystream/lib") + set(DEPS ${DEPS} snappystream) + endif() + if (EXISTS "${PADDLE_LIB}/third_party/install/snappy/lib") + set(DEPS ${DEPS} snappy) + endif() +else() + set(DEPS ${DEPS} + ${MATH_LIB} ${MKLDNN_LIB} + glog gflags_static libprotobuf xxhash) + set(DEPS ${DEPS} libcmt shlwapi) + if (EXISTS "${PADDLE_LIB}/third_party/install/snappy/lib") + set(DEPS ${DEPS} snappy) + endif() + if(EXISTS "${PADDLE_LIB}/third_party/install/snappystream/lib") + set(DEPS ${DEPS} snappystream) + endif() +endif(NOT WIN32) + + +if(WITH_GPU) + if(NOT WIN32) + if (WITH_TENSORRT) + set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer_plugin${CMAKE_SHARED_LIBRARY_SUFFIX}) + endif() + set(DEPS ${DEPS} ${CUDA_LIB}/libcudart${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(DEPS ${DEPS} ${CUDNN_LIB}/libcudnn${CMAKE_SHARED_LIBRARY_SUFFIX}) + else() + set(DEPS ${DEPS} ${CUDA_LIB}/cudart${CMAKE_STATIC_LIBRARY_SUFFIX} ) + set(DEPS ${DEPS} ${CUDA_LIB}/cublas${CMAKE_STATIC_LIBRARY_SUFFIX} ) + set(DEPS ${DEPS} ${CUDNN_LIB}/cudnn${CMAKE_STATIC_LIBRARY_SUFFIX}) + endif() +endif() + + +if (NOT WIN32) + set(EXTERNAL_LIB "-ldl -lrt -lgomp -lz -lm -lpthread") + set(DEPS ${DEPS} ${EXTERNAL_LIB}) +endif() + +set(DEPS ${DEPS} ${OpenCV_LIBS}) + +AUX_SOURCE_DIRECTORY(./src SRCS) +add_executable(${DEMO_NAME} ${SRCS}) + +target_link_libraries(${DEMO_NAME} ${DEPS}) + +if (WIN32 AND WITH_MKL) + add_custom_command(TARGET ${DEMO_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_LIB}/third_party/install/mklml/lib/mklml.dll ./mklml.dll + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_LIB}/third_party/install/mklml/lib/libiomp5md.dll ./libiomp5md.dll + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_LIB}/third_party/install/mkldnn/lib/mkldnn.dll ./mkldnn.dll + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_LIB}/third_party/install/mklml/lib/mklml.dll ./release/mklml.dll + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_LIB}/third_party/install/mklml/lib/libiomp5md.dll ./release/libiomp5md.dll + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_LIB}/third_party/install/mkldnn/lib/mkldnn.dll ./release/mkldnn.dll + ) +endif() diff --git a/deploy/cpp_infer/docs/imgs/ILSVRC2012_val_00000666.JPEG b/deploy/cpp_infer/docs/imgs/ILSVRC2012_val_00000666.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..ebb562522f007773394ef786f5f0428de3f406c2 GIT binary patch literal 128718 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

qh=^t2P+8agPehjyPk`{GuPe7 zzMW5c4Rxtcw;Vr$Pu*kkd8hIet*;5Ls%sNme+^Kr-|J)Zq#k4b@YEF-0)%t(uDOf` zAxI~f#3mz7q?qTmpyJoMt(mAY@Etez?E88_J5^*RIG7LUCgYWo;b+%S&#(R+Qy34s zZRgzR6QJEi3{4ffy?GE2!5?R>{Z{WDE@YUP#238UrbB;8oisc&Ti^W&U{VJr$qXO%f`u{4WLSkN`uv}|3qpmykA z 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�nPdI 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 z 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ˤs4=AvQL(xxZ`u_Q!G+(Hzi}%uc~;h45Ey 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 l4)>L&xj!#F1LW4P literal 0 HcmV?d00001 diff --git a/deploy/cpp_infer/docs/imgs/vs2019_step1.png b/deploy/cpp_infer/docs/imgs/vs2019_step1.png new file mode 100644 index 0000000000000000000000000000000000000000..58fdf2fd624f3c2d26f7c78814c4a67cc323e495 GIT binary patch literal 77064 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 ZDWQYWdReNs`4`c1?TV!d`I1ZIe*jHs=LP@( literal 0 HcmV?d00001 diff --git a/deploy/cpp_infer/docs/imgs/vs2019_step2.png b/deploy/cpp_infer/docs/imgs/vs2019_step2.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b5fd0a1c83c3008e2953a84164932140b104bf GIT binary patch literal 86315 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 SsN)s*M_OD?tW4yy-~Rz_h#y-3 literal 0 HcmV?d00001 diff --git a/deploy/cpp_infer/docs/imgs/vs2019_step3.png b/deploy/cpp_infer/docs/imgs/vs2019_step3.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1b2aea9cb8138a4f82b1c0fad20160ea0f5e64 GIT binary patch literal 58248 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 Od90-IpzOY7*#7{03}m1H literal 0 HcmV?d00001 diff --git a/deploy/cpp_infer/docs/imgs/vs2019_step4.png b/deploy/cpp_infer/docs/imgs/vs2019_step4.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc040822e7174a2ddaee76368976a04d244932f GIT binary patch literal 45962 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 literal 0 HcmV?d00001 diff --git a/deploy/cpp_infer/docs/imgs/vs2019_step5.png b/deploy/cpp_infer/docs/imgs/vs2019_step5.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb2e4ce160143967528b741ba916b08211f3442 GIT binary patch literal 63943 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�dB;SLXG=hm2^Xh@FCw3eX@TzITWok4Z}(#-HpJio#OD)2P>D zxb7GSA7(NdqS-DlE`uqMX@=JvBrp;DR_0B8gs#%S(1R zxyuKSKbH5ii`)2A0+xCVM!C(w_;}hX`Ss;^pj0j|Upt$Y!AoO|utT9e{&VGJdZ-*H zXFsE%bgY00@Ee4HB0o1*juBcLovCDr<2|6f#u*opW73vX&3*bF_=iqd*R{%7hgegsiM|R*)X1Wvwal*FBrgEt zgW2!TJ%P0@`)e&@mn@ds9%^zjt9Oj~+~=Y@^a9$SS&(3pwyM+_?chpv@w_PW`&*D^ z0E{5$(bMYc;7ys!j{`-YudZ3OyU21cJUyT8%9f9>rebVv7Q^Nn<|mzSDn8vh5 L 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 属性 -> 高级系统设置 -> 环境变量 + - 在系统变量中找到Path(如没有,自行创建),并双击编辑 + - 新建,将OpenCV路径填入并保存,如 `D:\projects\opencv\build\x64\vc14\bin` + +### Step3: 使用Visual Studio 2019直接编译CMake + +1. 打开Visual Studio 2019 Community,点击 `继续但无需代码` + +![step2](./imgs/vs2019_step1.png) + +2. 点击: `文件`->`打开`->`CMake` + +![step2.1](./imgs/vs2019_step2.png) + +选择项目代码所在路径,并打开`CMakeList.txt`: + +![step2.2](./imgs/vs2019_step3.png) + +3. 点击:`项目`->`cpp_inference_demo的CMake设置` + +![step3](./imgs/vs2019_step4.png) + +4. 请设置以下参数的值 + + +| 名称 | 值 | 保存到 JSON | +| ----------------------------- | ------------------ | ----------- | +| CMAKE_BACKWARDS_COMPATIBILITY | 3.17 | [√] | +| CMAKE_BUILD_TYPE | RelWithDebInfo | [√] | +| CUDA_LIB | CUDA的库路径 | [√] | +| CUDNN_LIB | CUDNN的库路径 | [√] | +| OPENCV_DIR | OpenCV的安装路径 | [√] | +| PADDLE_LIB | Paddle预测库的路径 | [√] | +| WITH_GPU | [√] | [√] | +| WITH_MKL | [√] | [√] | +| WITH_STATIC_LIB | [√] | [√] | + +**注意**: + +1. `CMAKE_BACKWARDS_COMPATIBILITY` 的值请根据自己 `cmake` 版本设置,`cmake` 版本可以通过命令:`cmake --version` 查询; +2. `CUDA_LIB` 、 `CUDNN_LIB` 的值仅需在使用**GPU版本**预测库时指定,其中CUDA库版本尽量对齐,**使用9.0、10.0版本,不使用9.2、10.1等版本CUDA库**; +3. 在设置 `CUDA_LIB`、`CUDNN_LIB`、`OPENCV_DIR`、`PADDLE_LIB` 时,点击 `浏览`,分别设置相应的路径; +4. 在使用`CPU`版预测库时,请把 `WITH_GPU` 的勾去掉。 + +![step4](./imgs/vs2019_step5.png) + +**设置完成后**, 点击上图中 `保存并生成CMake缓存以加载变量` 。 + +5. 点击`生成`->`全部生成` + +![step6](./imgs/vs2019_step6.png) + + +### Step4: 预测及可视化 + +在完成上述操作后,`Visual Studio 2019` 编译产出的可执行文件 `clas_system.exe` 在 `out\build\x64-Release`目录下,打开`cmd`,并切换到该目录: + +``` +cd D:\projects\PaddleClas\deploy\cpp_infer\out\build\x64-Release +``` +可执行文件`clas_system.exe`即为编译产出的的预测程序,其使用方法如下: + +```shell +#预测图片 `.\docs\ILSVRC2012_val_00008306.JPEG` +.\clas_system.exe D:\projects\PaddleClas\deploy\cpp_infer\tools\config.txt .\docs\ILSVRC2012_val_00008306.JPEG +``` + +上述命令中,第一个参数为配置文件路径,第二个参数为需要预测的图片路径。 + + +### 注意 +* 在Windows下的终端中执行文件exe时,可能会发生乱码的现象,此时需要在终端中输入`CHCP 65001`,将终端的编码方式由GBK编码(默认)改为UTF-8编码,更加具体的解释可以参考这篇博客:[https://blog.csdn.net/qq_35038153/article/details/78430359](https://blog.csdn.net/qq_35038153/article/details/78430359)。 +* 如果需要使用CPU预测,PaddlePaddle在Windows上仅支持avx的CPU预测,目前不支持noavx的CPU预测。 diff --git a/deploy/cpp_infer/include/cls.h b/deploy/cpp_infer/include/cls.h new file mode 100644 index 00000000..3a65f729 --- /dev/null +++ b/deploy/cpp_infer/include/cls.h @@ -0,0 +1,86 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include "opencv2/core.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/imgproc.hpp" +#include "paddle_api.h" +#include "paddle_inference_api.h" +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +namespace PaddleClas { + +class Classifier { +public: + explicit Classifier(const std::string &model_dir, const bool &use_gpu, + const int &gpu_id, const int &gpu_mem, + const int &cpu_math_library_num_threads, + const bool &use_mkldnn, const bool &use_zero_copy_run, + const int &resize_short_size, const int &crop_size) { + this->use_gpu_ = use_gpu; + this->gpu_id_ = gpu_id; + this->gpu_mem_ = gpu_mem; + this->cpu_math_library_num_threads_ = cpu_math_library_num_threads; + this->use_mkldnn_ = use_mkldnn; + this->use_zero_copy_run_ = use_zero_copy_run; + + this->resize_short_size_ = resize_short_size; + this->crop_size_ = crop_size; + + LoadModel(model_dir); + } + + // Load Paddle inference model + void LoadModel(const std::string &model_dir); + + // Run predictor + void Run(cv::Mat &img); + +private: + std::shared_ptr predictor_; + + bool use_gpu_ = false; + int gpu_id_ = 0; + int gpu_mem_ = 4000; + int cpu_math_library_num_threads_ = 4; + bool use_mkldnn_ = false; + bool use_zero_copy_run_ = false; + + std::vector mean_ = {0.485f, 0.456f, 0.406f}; + std::vector scale_ = {1 / 0.229f, 1 / 0.224f, 1 / 0.225f}; + bool is_scale_ = true; + + int resize_short_size_ = 256; + int crop_size_ = 224; + + // pre-process + ResizeImg resize_op_; + Normalize normalize_op_; + Permute permute_op_; + CenterCropImg crop_op_; +}; + +} // namespace PaddleClas \ No newline at end of file diff --git a/deploy/cpp_infer/include/config.h b/deploy/cpp_infer/include/config.h new file mode 100644 index 00000000..57788866 --- /dev/null +++ b/deploy/cpp_infer/include/config.h @@ -0,0 +1,82 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "include/utility.h" + +namespace PaddleClas { + +class Config { +public: + explicit Config(const std::string &config_file) { + config_map_ = LoadConfig(config_file); + + this->use_gpu = bool(stoi(config_map_["use_gpu"])); + + this->gpu_id = stoi(config_map_["gpu_id"]); + + this->gpu_mem = stoi(config_map_["gpu_mem"]); + + this->cpu_math_library_num_threads = + stoi(config_map_["cpu_math_library_num_threads"]); + + this->use_mkldnn = bool(stoi(config_map_["use_mkldnn"])); + + this->use_zero_copy_run = bool(stoi(config_map_["use_zero_copy_run"])); + + this->cls_model_dir.assign(config_map_["cls_model_dir"]); + + this->resize_short_size = stoi(config_map_["resize_short_size"]); + + this->crop_size = stoi(config_map_["crop_size"]); + } + + bool use_gpu = false; + + int gpu_id = 0; + + int gpu_mem = 4000; + + int cpu_math_library_num_threads = 1; + + bool use_mkldnn = false; + + bool use_zero_copy_run = false; + + std::string cls_model_dir; + + int resize_short_size = 256; + int crop_size = 224; + + void PrintConfigInfo(); + +private: + // Load configuration + std::map LoadConfig(const std::string &config_file); + + std::vector split(const std::string &str, + const std::string &delim); + + std::map config_map_; +}; + +} // namespace PaddleClas diff --git a/deploy/cpp_infer/include/preprocess_op.h b/deploy/cpp_infer/include/preprocess_op.h new file mode 100644 index 00000000..ca2dcc78 --- /dev/null +++ b/deploy/cpp_infer/include/preprocess_op.h @@ -0,0 +1,57 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include "opencv2/core.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/imgproc.hpp" +#include +#include +#include +#include +#include + +#include +#include +#include + +using namespace std; +using namespace paddle; + +namespace PaddleClas { + +class Normalize { +public: + virtual void Run(cv::Mat *im, const std::vector &mean, + const std::vector &scale, const bool is_scale = true); +}; + +// RGB -> CHW +class Permute { +public: + virtual void Run(const cv::Mat *im, float *data); +}; + +class CenterCropImg { +public: + virtual void Run(cv::Mat &im, const int crop_size = 224); +}; + +class ResizeImg { +public: + virtual void Run(const cv::Mat &img, cv::Mat &resize_img, int max_size_len); +}; + +} // namespace PaddleClas \ No newline at end of file diff --git a/deploy/cpp_infer/include/utility.h b/deploy/cpp_infer/include/utility.h new file mode 100644 index 00000000..8dc15247 --- /dev/null +++ b/deploy/cpp_infer/include/utility.h @@ -0,0 +1,46 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "opencv2/core.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/imgproc.hpp" + +namespace PaddleClas { + +class Utility { +public: + static std::vector ReadDict(const std::string &path); + + // template + // inline static size_t argmax(ForwardIterator first, ForwardIterator last) + // { + // return std::distance(first, std::max_element(first, last)); + // } +}; + +} // namespace PaddleClas \ No newline at end of file diff --git a/deploy/cpp_infer/readme.md b/deploy/cpp_infer/readme.md new file mode 100644 index 00000000..06561f76 --- /dev/null +++ b/deploy/cpp_infer/readme.md @@ -0,0 +1,214 @@ +# 服务器端C++预测 + +本教程将介绍在服务器端部署PaddleClas模型的详细步骤。 + + +## 1. 准备环境 + +### 运行准备 +- 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下编译教程](./docs/windows_vs2019_build.md)。 + +### 1.1 编译opencv库 + +* 首先需要从opencv官网上下载在Linux环境下源码编译的包,以3.4.7版本为例,下载及解压缩命令如下: + +``` +wget https://github.com/opencv/opencv/archive/3.4.7.tar.gz +tar -xvf 3.4.7.tar.gz +``` + +最终可以在当前目录下看到`opencv-3.4.7/`的文件夹。 + +* 编译opencv,首先设置opencv源码路径(`root_path`)以及安装路径(`install_path`),`root_path`为下载的opencv源码路径,`install_path`为opencv的安装路径。在本例中,源码路径即为当前目录下的`opencv-3.4.7/`。 + +```shell +cd ./opencv-3.4.7 +export root_path=$PWD +export install_path=${root_path}/opencv3 +``` + +* 然后在opencv源码路径下,按照下面的方式进行编译。 + +```shell +rm -rf build +mkdir build +cd build + +cmake .. \ + -DCMAKE_INSTALL_PREFIX=${install_path} \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_IPP=OFF \ + -DBUILD_IPP_IW=OFF \ + -DWITH_LAPACK=OFF \ + -DWITH_EIGEN=OFF \ + -DCMAKE_INSTALL_LIBDIR=lib64 \ + -DWITH_ZLIB=ON \ + -DBUILD_ZLIB=ON \ + -DWITH_JPEG=ON \ + -DBUILD_JPEG=ON \ + -DWITH_PNG=ON \ + -DBUILD_PNG=ON \ + -DWITH_TIFF=ON \ + -DBUILD_TIFF=ON + +make -j +make install +``` + +* `make install`完成之后,会在该文件夹下生成opencv头文件和库文件,用于后面的PaddleClas代码编译。 + +以opencv3.4.7版本为例,最终在安装路径下的文件结构如下所示。**注意**:不同的opencv版本,下述的文件结构可能不同。 + +``` +opencv3/ +|-- bin +|-- include +|-- lib64 +|-- share +``` + +### 1.2 下载或者编译Paddle预测库 + +* 有2种方式获取Paddle预测库,下面进行详细介绍。 + +#### 1.2.1 预测库源码编译 +* 如果希望获取最新预测库特性,可以从Paddle github上克隆最新代码,源码编译预测库。 +* 可以参考[Paddle预测库官网](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html)的说明,从github上获取Paddle代码,然后进行编译,生成最新的预测库。使用git获取代码方法如下。 + +```shell +git clone https://github.com/PaddlePaddle/Paddle.git +``` + +* 进入Paddle目录后,使用如下方法编译。 + +```shell +rm -rf build +mkdir build +cd build + +cmake .. \ + -DWITH_CONTRIB=OFF \ + -DWITH_MKL=ON \ + -DWITH_MKLDNN=ON \ + -DWITH_TESTING=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_INFERENCE_API_TEST=OFF \ + -DON_INFER=ON \ + -DWITH_PYTHON=ON +make -j +make inference_lib_dist +``` + +更多编译参数选项可以参考Paddle C++预测库官网:[https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html)。 + + +* 编译完成之后,可以在`build/fluid_inference_install_dir/`文件下看到生成了以下文件及文件夹。 + +``` +build/fluid_inference_install_dir/ +|-- CMakeCache.txt +|-- paddle +|-- third_party +|-- version.txt +``` + +其中`paddle`就是之后进行C++预测时所需的Paddle库,`version.txt`中包含当前预测库的版本信息。 + +#### 1.2.2 直接下载安装 + +* [Paddle预测库官网](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html)上提供了不同cuda版本的Linux预测库,可以在官网查看并选择合适的预测库版本。 + + 以`ubuntu14.04_cuda9.0_cudnn7_avx_mkl`的`1.8.4`版本为例,使用下述命令下载并解压: + + +```shell +wget https://paddle-inference-lib.bj.bcebos.com/1.8.4-gpu-cuda9-cudnn7-avx-mkl/fluid_inference.tgz + +tar -xvf fluid_inference.tgz +``` + + +最终会在当前的文件夹中生成`fluid_inference/`的子文件夹。 + + +## 2 开始运行 + +### 2.1 将模型导出为inference model + +* 可以参考[模型导出](../../tools/export_model.py),导出`inference model`,用于模型预测。得到预测模型后,假设模型文件放在`inference`目录下,则目录结构如下。 + +``` +inference/ +|--model +|--params +``` +**注意**:上述文件中,`model`文件存储了模型结构信息,`params`文件存储了模型参数信息。因此,在使用模型导出时,需将导出的`__model__`文件重命名为`model`,`__variables__`文件重命名为`params`。 + + +### 2.2 编译PaddleClas C++预测demo + +* 编译命令如下,其中Paddle C++预测库、opencv等其他依赖库的地址需要换成自己机器上的实际地址。 + + +```shell +sh tools/build.sh +``` + +具体地,`tools/build.sh`中内容如下。 + +```shell +OPENCV_DIR=your_opencv_dir +LIB_DIR=your_paddle_inference_dir +CUDA_LIB_DIR=your_cuda_lib_dir +CUDNN_LIB_DIR=your_cudnn_lib_dir + +BUILD_DIR=build +rm -rf ${BUILD_DIR} +mkdir ${BUILD_DIR} +cd ${BUILD_DIR} +cmake .. \ + -DPADDLE_LIB=${LIB_DIR} \ + -DWITH_MKL=ON \ + -DDEMO_NAME=clas_system \ + -DWITH_GPU=OFF \ + -DWITH_STATIC_LIB=OFF \ + -DUSE_TENSORRT=OFF \ + -DOPENCV_DIR=${OPENCV_DIR} \ + -DCUDNN_LIB=${CUDNN_LIB_DIR} \ + -DCUDA_LIB=${CUDA_LIB_DIR} \ + +make -j +``` + +上述命令中, + +* `OPENCV_DIR`为opencv编译安装的地址(本例中为`opencv-3.4.7/opencv3`文件夹的路径); + +* `LIB_DIR`为下载的Paddle预测库(`fluid_inference`文件夹),或编译生成的Paddle预测库(`build/fluid_inference_install_dir`文件夹)的路径; + +* `CUDA_LIB_DIR`为cuda库文件地址,在docker中为`/usr/local/cuda/lib64`; + +* `CUDNN_LIB_DIR`为cudnn库文件地址,在docker中为`/usr/lib/x86_64-linux-gnu/`。 + +在执行上述命令,编译完成之后,会在当前路径下生成`build`文件夹,其中生成一个名为`clas_system`的可执行文件。 + + +### 运行demo +* 执行以下命令,完成对一幅图像的分类。 + +```shell +sh tools/run.sh +``` + +* 最终屏幕上会输出结果,如下图所示。 + +

+ + +其中`class id`表示置信度最高的类别对应的id,score表示图片属于该类别的概率。 diff --git a/deploy/cpp_infer/readme_en.md b/deploy/cpp_infer/readme_en.md new file mode 100644 index 00000000..3c174cdd --- /dev/null +++ b/deploy/cpp_infer/readme_en.md @@ -0,0 +1,219 @@ +# Server-side C++ inference + + +In this tutorial, we will introduce the detailed steps of deploying PaddleClas models on the server side. + + +## 1. Prepare the environment + +### Environment + +- Linux, docker is recommended. +- Windows, compilation based on `Visual Studio 2019 Community` is supported. In addition, you can refer to [How to use PaddleDetection to make a complete project](https://zhuanlan.zhihu.com/p/145446681) to compile by generating the `sln solution`. +- This document mainly introduces the compilation and inference of PaddleClas C++ in Linux environment. +- If you need to use the Inference Library in Windows environment, please refer to [The compilation tutorial in Windows](./docs/windows_vs2019_build.md) for detailed information. + + +### 1.1 Compile opencv + +* First of all, you need to download the source code compiled package in the Linux environment from the opencv official website. Taking opencv3.4.7 as an example, the download and uncompress command are as follows. + +``` +wget https://github.com/opencv/opencv/archive/3.4.7.tar.gz +tar -xf 3.4.7.tar.gz +``` + +Finally, you can see the folder of `opencv-3.4.7/` in the current directory. + +* Compile opencv, the opencv source path (`root_path`) and installation path (`install_path`) should be set by yourself. Among them, `root_path` is the downloaded opencv source code path, and `install_path` is the installation path of opencv. In this case, the opencv source is `./opencv-3.4.7`. + +```shell +cd ./opencv-3.4.7 +export root_path=$PWD +export install_path=${root_path}/opencv3 +``` + +* After entering the opencv source code path, you can compile it in the following way. + + +```shell +rm -rf build +mkdir build +cd build + +cmake .. \ + -DCMAKE_INSTALL_PREFIX=${install_path} \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_IPP=OFF \ + -DBUILD_IPP_IW=OFF \ + -DWITH_LAPACK=OFF \ + -DWITH_EIGEN=OFF \ + -DCMAKE_INSTALL_LIBDIR=lib64 \ + -DWITH_ZLIB=ON \ + -DBUILD_ZLIB=ON \ + -DWITH_JPEG=ON \ + -DBUILD_JPEG=ON \ + -DWITH_PNG=ON \ + -DBUILD_PNG=ON \ + -DWITH_TIFF=ON \ + -DBUILD_TIFF=ON + +make -j +make install +``` + +* After `make install` is completed, the opencv header file and library file will be generated in this folder for later PaddleClas source code compilation. + +Take opencv3.4.7 for example, the final file structure under the opencv installation path is as follows. **NOTICE**:The following file structure may be different for different Versions of Opencv. + +``` +opencv3/ +|-- bin +|-- include +|-- lib64 +|-- share +``` + +### 1.2 Compile or download the Paddle Inference Library + +* There are 2 ways to obtain the Paddle Inference Library, described in detail below. + + +#### 1.2.1 Compile from the source code +* If you want to get the latest Paddle Inference Library features, you can download the latest code from Paddle GitHub repository and compile the inference library from the source code. +* You can refer to [Paddle Inference Library] (https://www.paddlepaddle.org.cn/documentation/docs/en/advanced_guide/inference_deployment/inference/build_and_install_lib_en.html) to get the Paddle source code from github, and then compile To generate the latest inference library. The method of using git to access the code is as follows. + + +```shell +git clone https://github.com/PaddlePaddle/Paddle.git +``` + +* After entering the Paddle directory, the compilation method is as follows. + +```shell +rm -rf build +mkdir build +cd build + +cmake .. \ + -DWITH_CONTRIB=OFF \ + -DWITH_MKL=ON \ + -DWITH_MKLDNN=ON \ + -DWITH_TESTING=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_INFERENCE_API_TEST=OFF \ + -DON_INFER=ON \ + -DWITH_PYTHON=ON +make -j +make inference_lib_dist +``` + +For more compilation parameter options, please refer to the official website of the Paddle C++ inference library:[https://www.paddlepaddle.org.cn/documentation/docs/en/advanced_guide/inference_deployment/inference/build_and_install_lib_en.html](https://www.paddlepaddle.org.cn/documentation/docs/en/advanced_guide/inference_deployment/inference/build_and_install_lib_en.html). + + +* After the compilation process, you can see the following files in the folder of `build/fluid_inference_install_dir/`. + +``` +build/fluid_inference_install_dir/ +|-- CMakeCache.txt +|-- paddle +|-- third_party +|-- version.txt +``` + +Among them, `paddle` is the Paddle library required for C++ prediction later, and `version.txt` contains the version information of the current inference library. + + + +#### 1.2.2 Direct download and installation + +* Different cuda versions of the Linux inference library (based on GCC 4.8.2) are provided on the +[Paddle Inference Library official website](https://www.paddlepaddle.org.cn/documentation/docs/en/advanced_guide/inference_deployment/inference/build_and_install_lib_en.html). You can view and select the appropriate version of the inference library on the official website. + + +* After downloading, use the following method to uncompress. + +``` +tar -xf fluid_inference.tgz +``` + +Finally you can see the following files in the folder of `fluid_inference/`. + + +## 2. Compile and run the demo + +### 2.1 Export the inference model + +* You can refer to [Model inference]((../../tools/export_model.py)),export the inference model. After the model is exported, assuming it is placed in the `inference` directory, the directory structure is as follows. + +``` +inference/ +|--model +|--params +``` + +**NOTICE**: Among them, `model` file stores the model structure information and the `params` file stores the model parameter information.Therefore, you could rename the files name exported by [Model inference]((../../tools/export_model.py)). + +### 2.2 Compile PaddleClas C++ inference demo + + +* The compilation commands are as follows. The addresses of Paddle C++ inference library, opencv and other Dependencies need to be replaced with the actual addresses on your own machines. + +```shell +sh tools/build.sh +``` + +Specifically, the content in `tools/build.sh` is as follows. + +```shell +OPENCV_DIR=your_opencv_dir +LIB_DIR=your_paddle_inference_dir +CUDA_LIB_DIR=your_cuda_lib_dir +CUDNN_LIB_DIR=your_cudnn_lib_dir + +BUILD_DIR=build +rm -rf ${BUILD_DIR} +mkdir ${BUILD_DIR} +cd ${BUILD_DIR} +cmake .. \ + -DPADDLE_LIB=${LIB_DIR} \ + -DWITH_MKL=ON \ + -DDEMO_NAME=ocr_system \ + -DWITH_GPU=OFF \ + -DWITH_STATIC_LIB=OFF \ + -DUSE_TENSORRT=OFF \ + -DOPENCV_DIR=${OPENCV_DIR} \ + -DCUDNN_LIB=${CUDNN_LIB_DIR} \ + -DCUDA_LIB=${CUDA_LIB_DIR} \ + +make -j +``` + +In the above parameters of command: + +* `OPENCV_DIR` is the opencv installation path; + +* `LIB_DIR` is the download (`fluid_inference` folder) or the generated Paddle Inference Library path (`build/fluid_inference_install_dir` folder); + +* `CUDA_LIB_DIR` is the cuda library file path, in docker; it is `/usr/local/cuda/lib64`; + +* `CUDNN_LIB_DIR` is the cudnn library file path, in docker it is `/usr/lib/x86_64-linux-gnu/`. + +After the compilation is completed, an executable file named `ocr_system` will be generated in the `build` folder. + + +### Run the demo +* Execute the following command to complete the classification of an image. + +```shell +sh tools/run.sh +``` + +* The detection results will be shown on the screen, which is as follows. + +
+ +
+ +* In the above results,`class id` represents the id corresponding to the category with the highest confidence, and `score` represents the probability that the image belongs to that category. diff --git a/deploy/cpp_infer/src/cls.cpp b/deploy/cpp_infer/src/cls.cpp new file mode 100644 index 00000000..b301abd8 --- /dev/null +++ b/deploy/cpp_infer/src/cls.cpp @@ -0,0 +1,98 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +namespace PaddleClas { + +void Classifier::LoadModel(const std::string &model_dir) { + AnalysisConfig config; + config.SetModel(model_dir + "/model", model_dir + "/params"); + + if (this->use_gpu_) { + config.EnableUseGpu(this->gpu_mem_, this->gpu_id_); + } else { + config.DisableGpu(); + if (this->use_mkldnn_) { + config.EnableMKLDNN(); + // cache 10 different shapes for mkldnn to avoid memory leak + config.SetMkldnnCacheCapacity(10); + } + config.SetCpuMathLibraryNumThreads(this->cpu_math_library_num_threads_); + } + + // false for zero copy tensor + // true for commom tensor + config.SwitchUseFeedFetchOps(!this->use_zero_copy_run_); + // true for multiple input + config.SwitchSpecifyInputNames(true); + + config.SwitchIrOptim(true); + + config.EnableMemoryOptim(); + config.DisableGlogInfo(); + + this->predictor_ = CreatePaddlePredictor(config); +} + +void Classifier::Run(cv::Mat &img) { + cv::Mat srcimg; + cv::Mat resize_img; + img.copyTo(srcimg); + + this->resize_op_.Run(img, resize_img, this->resize_short_size_); + + this->crop_op_.Run(resize_img, this->crop_size_); + + this->normalize_op_.Run(&resize_img, this->mean_, this->scale_, + this->is_scale_); + std::vector input(1 * 3 * resize_img.rows * resize_img.cols, 0.0f); + this->permute_op_.Run(&resize_img, input.data()); + + // Inference. + if (this->use_zero_copy_run_) { + auto input_names = this->predictor_->GetInputNames(); + auto input_t = this->predictor_->GetInputTensor(input_names[0]); + input_t->Reshape({1, 3, resize_img.rows, resize_img.cols}); + input_t->copy_from_cpu(input.data()); + this->predictor_->ZeroCopyRun(); + } else { + paddle::PaddleTensor input_t; + input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; + input_t.data = + paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); + input_t.dtype = PaddleDType::FLOAT32; + std::vector outputs; + this->predictor_->Run({input_t}, &outputs, 1); + } + + std::vector out_data; + auto output_names = this->predictor_->GetOutputNames(); + auto output_t = this->predictor_->GetOutputTensor(output_names[0]); + std::vector output_shape = output_t->shape(); + int out_num = std::accumulate(output_shape.begin(), output_shape.end(), 1, + std::multiplies()); + + out_data.resize(out_num); + output_t->copy_to_cpu(out_data.data()); + + int maxPosition = + max_element(out_data.begin(), out_data.end()) - out_data.begin(); + std::cout << "result: " << std::endl; + std::cout << "\tclass id: " << maxPosition << std::endl; + std::cout << std::fixed << std::setprecision(10) + << "\tscore: " << double(out_data[maxPosition]) << std::endl; +} + +} // namespace PaddleClas diff --git a/deploy/cpp_infer/src/config.cpp b/deploy/cpp_infer/src/config.cpp new file mode 100755 index 00000000..e8995520 --- /dev/null +++ b/deploy/cpp_infer/src/config.cpp @@ -0,0 +1,64 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +namespace PaddleClas { + +std::vector Config::split(const std::string &str, + const std::string &delim) { + std::vector res; + if ("" == str) + return res; + char *strs = new char[str.length() + 1]; + std::strcpy(strs, str.c_str()); + + char *d = new char[delim.length() + 1]; + std::strcpy(d, delim.c_str()); + + char *p = std::strtok(strs, d); + while (p) { + std::string s = p; + res.push_back(s); + p = std::strtok(NULL, d); + } + + return res; +} + +std::map +Config::LoadConfig(const std::string &config_path) { + auto config = Utility::ReadDict(config_path); + + std::map dict; + for (int i = 0; i < config.size(); i++) { + // pass for empty line or comment + if (config[i].size() <= 1 || config[i][0] == '#') { + continue; + } + std::vector res = split(config[i], " "); + dict[res[0]] = res[1]; + } + return dict; +} + +void Config::PrintConfigInfo() { + std::cout << "=======Paddle Class inference config======" << std::endl; + for (auto iter = config_map_.begin(); iter != config_map_.end(); iter++) { + std::cout << iter->first << " : " << iter->second << std::endl; + } + std::cout << "=======End of Paddle Class inference config======" << std::endl; +} + +} // namespace PaddleClas \ No newline at end of file diff --git a/deploy/cpp_infer/src/main.cpp b/deploy/cpp_infer/src/main.cpp new file mode 100644 index 00000000..01397ef9 --- /dev/null +++ b/deploy/cpp_infer/src/main.cpp @@ -0,0 +1,68 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "opencv2/core.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/imgproc.hpp" +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +using namespace std; +using namespace cv; +using namespace PaddleClas; + +int main(int argc, char **argv) { + if (argc < 3) { + std::cerr << "[ERROR] usage: " << argv[0] + << " configure_filepath image_path\n"; + exit(1); + } + + Config config(argv[1]); + + config.PrintConfigInfo(); + + std::string img_path(argv[2]); + + cv::Mat srcimg = cv::imread(img_path, cv::IMREAD_COLOR); + cv::cvtColor(srcimg, srcimg, cv::COLOR_BGR2RGB); + + Classifier classifier(config.cls_model_dir, config.use_gpu, config.gpu_id, + config.gpu_mem, config.cpu_math_library_num_threads, + config.use_mkldnn, config.use_zero_copy_run, + config.resize_short_size, config.crop_size); + + auto start = std::chrono::system_clock::now(); + classifier.Run(srcimg); + auto end = std::chrono::system_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + std::cout << "Cost " + << double(duration.count()) * + std::chrono::microseconds::period::num / + std::chrono::microseconds::period::den + << " s" << std::endl; + + return 0; +} diff --git a/deploy/cpp_infer/src/preprocess_op.cpp b/deploy/cpp_infer/src/preprocess_op.cpp new file mode 100644 index 00000000..72bdb81b --- /dev/null +++ b/deploy/cpp_infer/src/preprocess_op.cpp @@ -0,0 +1,90 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "opencv2/core.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/imgproc.hpp" +#include "paddle_api.h" +#include "paddle_inference_api.h" +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +namespace PaddleClas { + +void Permute::Run(const cv::Mat *im, float *data) { + int rh = im->rows; + int rw = im->cols; + int rc = im->channels(); + for (int i = 0; i < rc; ++i) { + cv::extractChannel(*im, cv::Mat(rh, rw, CV_32FC1, data + i * rh * rw), i); + } +} + +void Normalize::Run(cv::Mat *im, const std::vector &mean, + const std::vector &scale, const bool is_scale) { + double e = 1.0; + if (is_scale) { + e /= 255.0; + } + (*im).convertTo(*im, CV_32FC3, e); + for (int h = 0; h < im->rows; h++) { + for (int w = 0; w < im->cols; w++) { + im->at(h, w)[0] = + (im->at(h, w)[0] - mean[0]) * scale[0]; + im->at(h, w)[1] = + (im->at(h, w)[1] - mean[1]) * scale[1]; + im->at(h, w)[2] = + (im->at(h, w)[2] - mean[2]) * scale[2]; + } + } +} + +void CenterCropImg::Run(cv::Mat &img, const int crop_size) { + int resize_w = img.cols; + int resize_h = img.rows; + int w_start = int((resize_w - crop_size) / 2); + int h_start = int((resize_h - crop_size) / 2); + cv::Rect rect(w_start, h_start, crop_size, crop_size); + img = img(rect); +} + +void ResizeImg::Run(const cv::Mat &img, cv::Mat &resize_img, + int resize_short_size) { + int w = img.cols; + int h = img.rows; + + float ratio = 1.f; + if (h < w) { + ratio = float(resize_short_size) / float(h); + } else { + ratio = float(resize_short_size) / float(w); + } + + int resize_h = round(float(h) * ratio); + int resize_w = round(float(w) * ratio); + + cv::resize(img, resize_img, cv::Size(resize_w, resize_h)); +} + +} // namespace PaddleClas \ No newline at end of file diff --git a/deploy/cpp_infer/src/utility.cpp b/deploy/cpp_infer/src/utility.cpp new file mode 100644 index 00000000..e6b572a5 --- /dev/null +++ b/deploy/cpp_infer/src/utility.cpp @@ -0,0 +1,39 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include + +#include + +namespace PaddleClas { + +std::vector Utility::ReadDict(const std::string &path) { + std::ifstream in(path); + std::string line; + std::vector m_vec; + if (in) { + while (getline(in, line)) { + m_vec.push_back(line); + } + } else { + std::cout << "no such label file: " << path << ", exit the program..." + << std::endl; + exit(1); + } + return m_vec; +} + +} // namespace PaddleClas \ No newline at end of file diff --git a/deploy/cpp_infer/tools/build.sh b/deploy/cpp_infer/tools/build.sh new file mode 100755 index 00000000..0de61f04 --- /dev/null +++ b/deploy/cpp_infer/tools/build.sh @@ -0,0 +1,20 @@ +OPENCV_DIR=/PaddleClas/PaddleOCR/opencv-3.4.7/opencv3/ +LIB_DIR=/PaddleClas/PaddleOCR/fluid_inference/ +CUDA_LIB_DIR=/usr/local/cuda/lib64 +CUDNN_LIB_DIR=/usr/lib/x86_64-linux-gnu/ + +BUILD_DIR=build +rm -rf ${BUILD_DIR} +mkdir ${BUILD_DIR} +cd ${BUILD_DIR} +cmake .. \ + -DPADDLE_LIB=${LIB_DIR} \ + -DWITH_MKL=ON \ + -DWITH_GPU=OFF \ + -DWITH_STATIC_LIB=OFF \ + -DUSE_TENSORRT=OFF \ + -DOPENCV_DIR=${OPENCV_DIR} \ + -DCUDNN_LIB=${CUDNN_LIB_DIR} \ + -DCUDA_LIB=${CUDA_LIB_DIR} \ + +make -j diff --git a/deploy/cpp_infer/tools/config.txt b/deploy/cpp_infer/tools/config.txt new file mode 100755 index 00000000..e203b5d8 --- /dev/null +++ b/deploy/cpp_infer/tools/config.txt @@ -0,0 +1,12 @@ +# model load config +use_gpu 0 +gpu_id 0 +gpu_mem 4000 +cpu_math_library_num_threads 10 +use_mkldnn 1 +use_zero_copy_run 1 + +# cls config +cls_model_dir ./inference/ +resize_short_size 256 +crop_size 224 diff --git a/deploy/cpp_infer/tools/run.sh b/deploy/cpp_infer/tools/run.sh new file mode 100755 index 00000000..7972bc26 --- /dev/null +++ b/deploy/cpp_infer/tools/run.sh @@ -0,0 +1,2 @@ + +./build/clas_system ./tools/config.txt ./docs/imgs/ILSVRC2012_val_00000666.JPEG diff --git a/deploy/lite/Makefile b/deploy/lite/Makefile new file mode 100644 index 00000000..37ca64e0 --- /dev/null +++ b/deploy/lite/Makefile @@ -0,0 +1,61 @@ +ARM_ABI = arm8 +export ARM_ABI + +include ../Makefile.def + +LITE_ROOT=../../../ + +THIRD_PARTY_DIR=${LITE_ROOT}/third_party + +OPENCV_VERSION=opencv4.1.0 + +OPENCV_LIBS = ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/libs/libopencv_imgcodecs.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/libs/libopencv_imgproc.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/libs/libopencv_core.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/libtegra_hal.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/liblibjpeg-turbo.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/liblibwebp.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/liblibpng.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/liblibjasper.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/liblibtiff.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/libIlmImf.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/libtbb.a \ + ${THIRD_PARTY_DIR}/${OPENCV_VERSION}/arm64-v8a/3rdparty/libs/libcpufeatures.a + +OPENCV_INCLUDE = -I../../../third_party/${OPENCV_VERSION}/arm64-v8a/include + +CXX_INCLUDES = $(INCLUDES) ${OPENCV_INCLUDE} -I$(LITE_ROOT)/cxx/include + +CXX_LIBS = ${OPENCV_LIBS} -L$(LITE_ROOT)/cxx/lib/ -lpaddle_light_api_shared $(SYSTEM_LIBS) + +############################################################### +# How to use one of static libaray: # +# `libpaddle_api_full_bundled.a` # +# `libpaddle_api_light_bundled.a` # +############################################################### +# Note: default use lite's shared library. # +############################################################### +# 1. Comment above line using `libpaddle_light_api_shared.so` +# 2. Undo comment below line using `libpaddle_api_light_bundled.a` + +#CXX_LIBS = $(LITE_ROOT)/cxx/lib/libpaddle_api_light_bundled.a $(SYSTEM_LIBS) + +clas_system: fetch_opencv clas_system.o + $(CC) $(SYSROOT_LINK) $(CXXFLAGS_LINK) clas_system.o -o clas_system $(CXX_LIBS) $(LDFLAGS) + +clas_system.o: image_classfication.cpp + $(CC) $(SYSROOT_COMPLILE) $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o clas_system.o -c image_classfication.cpp + +fetch_opencv: + @ test -d ${THIRD_PARTY_DIR} || mkdir ${THIRD_PARTY_DIR} + @ test -e ${THIRD_PARTY_DIR}/${OPENCV_VERSION}.tar.gz || \ + (echo "fetch opencv libs" && \ + wget -P ${THIRD_PARTY_DIR} https://paddle-inference-dist.bj.bcebos.com/${OPENCV_VERSION}.tar.gz) + @ test -d ${THIRD_PARTY_DIR}/${OPENCV_VERSION} || \ + tar -zxvf ${THIRD_PARTY_DIR}/${OPENCV_VERSION}.tar.gz -C ${THIRD_PARTY_DIR} + + +.PHONY: clean +clean: + rm -f clas_system.o + rm -f clas_system diff --git a/deploy/lite/config.txt b/deploy/lite/config.txt new file mode 100644 index 00000000..cbdbdba4 --- /dev/null +++ b/deploy/lite/config.txt @@ -0,0 +1,5 @@ +clas_model_file ./MobileNetV3_large_x1_0.nb +label_path ./imagenet1k_label_list.txt +resize_short_size 256 +crop_size 224 +visualize 0 diff --git a/deploy/lite/image_classfication.cpp b/deploy/lite/image_classfication.cpp new file mode 100644 index 00000000..ae1e8fc9 --- /dev/null +++ b/deploy/lite/image_classfication.cpp @@ -0,0 +1,332 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "paddle_api.h" // NOLINT +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace paddle::lite_api; // NOLINT +using namespace std; + +struct RESULT { + std::string class_name; + int class_id; + float score; +}; + +std::vector PostProcess(const float *output_data, int output_size, + const std::vector &word_labels, + cv::Mat &output_image) { + const int TOPK = 5; + int max_indices[TOPK]; + double max_scores[TOPK]; + for (int i = 0; i < TOPK; i++) { + max_indices[i] = 0; + max_scores[i] = 0; + } + for (int i = 0; i < output_size; i++) { + float score = output_data[i]; + int index = i; + for (int j = 0; j < TOPK; j++) { + if (score > max_scores[j]) { + index += max_indices[j]; + max_indices[j] = index - max_indices[j]; + index -= max_indices[j]; + score += max_scores[j]; + max_scores[j] = score - max_scores[j]; + score -= max_scores[j]; + } + } + } + + std::vector results(TOPK); + for (int i = 0; i < results.size(); i++) { + results[i].class_name = "Unknown"; + if (max_indices[i] >= 0 && max_indices[i] < word_labels.size()) { + results[i].class_name = word_labels[max_indices[i]]; + } + results[i].score = max_scores[i]; + results[i].class_id = max_indices[i]; + cv::putText(output_image, + "Top" + std::to_string(i + 1) + "." + results[i].class_name + + ":" + std::to_string(results[i].score), + cv::Point2d(5, i * 18 + 20), cv::FONT_HERSHEY_PLAIN, 1, + cv::Scalar(51, 255, 255)); + } + return results; +} + +// fill tensor with mean and scale and trans layout: nhwc -> nchw, neon speed up +void NeonMeanScale(const float *din, float *dout, int size, + const std::vector mean, + const std::vector scale) { + if (mean.size() != 3 || scale.size() != 3) { + std::cerr << "[ERROR] mean or scale size must equal to 3\n"; + exit(1); + } + float32x4_t vmean0 = vdupq_n_f32(mean[0]); + float32x4_t vmean1 = vdupq_n_f32(mean[1]); + float32x4_t vmean2 = vdupq_n_f32(mean[2]); + float32x4_t vscale0 = vdupq_n_f32(scale[0]); + float32x4_t vscale1 = vdupq_n_f32(scale[1]); + float32x4_t vscale2 = vdupq_n_f32(scale[2]); + + float *dout_c0 = dout; + float *dout_c1 = dout + size; + float *dout_c2 = dout + size * 2; + + int i = 0; + for (; i < size - 3; i += 4) { + float32x4x3_t vin3 = vld3q_f32(din); + float32x4_t vsub0 = vsubq_f32(vin3.val[0], vmean0); + float32x4_t vsub1 = vsubq_f32(vin3.val[1], vmean1); + float32x4_t vsub2 = vsubq_f32(vin3.val[2], vmean2); + float32x4_t vs0 = vmulq_f32(vsub0, vscale0); + float32x4_t vs1 = vmulq_f32(vsub1, vscale1); + float32x4_t vs2 = vmulq_f32(vsub2, vscale2); + vst1q_f32(dout_c0, vs0); + vst1q_f32(dout_c1, vs1); + vst1q_f32(dout_c2, vs2); + + din += 12; + dout_c0 += 4; + dout_c1 += 4; + dout_c2 += 4; + } + for (; i < size; i++) { + *(dout_c0++) = (*(din++) - mean[0]) * scale[0]; + *(dout_c1++) = (*(din++) - mean[1]) * scale[1]; + *(dout_c2++) = (*(din++) - mean[2]) * scale[2]; + } +} + +cv::Mat ResizeImage(const cv::Mat &img, const int &resize_short_size) { + int w = img.cols; + int h = img.rows; + + cv::Mat resize_img; + + float ratio = 1.f; + if (h < w) { + ratio = float(resize_short_size) / float(h); + } else { + ratio = float(resize_short_size) / float(w); + } + int resize_h = round(float(h) * ratio); + int resize_w = round(float(w) * ratio); + + cv::resize(img, resize_img, cv::Size(resize_w, resize_h)); + return resize_img; +} + +cv::Mat CenterCropImg(const cv::Mat &img, const int &crop_size) { + int resize_w = img.cols; + int resize_h = img.rows; + int w_start = int((resize_w - crop_size) / 2); + int h_start = int((resize_h - crop_size) / 2); + cv::Rect rect(w_start, h_start, crop_size, crop_size); + cv::Mat crop_img = img(rect); + return crop_img; +} + +std::vector +RunClasModel(std::shared_ptr predictor, const cv::Mat &img, + const std::map &config, + const std::vector &word_labels) { + // Read img + int resize_short_size = stoi(config.at("resize_short_size")); + int crop_size = stoi(config.at("crop_size")); + int visualize = stoi(config.at("visualize")); + + cv::Mat resize_image = ResizeImage(img, resize_short_size); + + cv::Mat crop_image = CenterCropImg(resize_image, crop_size); + + cv::Mat img_fp; + double e = 1.0 / 255.0; + crop_image.convertTo(img_fp, CV_32FC3, e); + + // Prepare input data from image + std::unique_ptr input_tensor(std::move(predictor->GetInput(0))); + input_tensor->Resize({1, 3, img_fp.rows, img_fp.cols}); + auto *data0 = input_tensor->mutable_data(); + + std::vector mean = {0.485f, 0.456f, 0.406f}; + std::vector scale = {1 / 0.229f, 1 / 0.224f, 1 / 0.225f}; + const float *dimg = reinterpret_cast(img_fp.data); + NeonMeanScale(dimg, data0, img_fp.rows * img_fp.cols, mean, scale); + + // Run predictor + predictor->Run(); + + // Get output and post process + std::unique_ptr output_tensor( + std::move(predictor->GetOutput(0))); + auto *output_data = output_tensor->data(); + + int output_size = 1; + for (auto dim : output_tensor->shape()) { + output_size *= dim; + } + + cv::Mat output_image; + auto results = + PostProcess(output_data, output_size, word_labels, output_image); + + if (visualize) { + std::string output_image_path = "./clas_result.png"; + cv::imwrite(output_image_path, output_image); + std::cout << "save output image into " << output_image_path << std::endl; + } + + return results; +} + +std::shared_ptr LoadModel(std::string model_file) { + MobileConfig config; + config.set_model_from_file(model_file); + + std::shared_ptr predictor = + CreatePaddlePredictor(config); + return predictor; +} + +std::vector split(const std::string &str, + const std::string &delim) { + std::vector res; + if ("" == str) + return res; + char *strs = new char[str.length() + 1]; + std::strcpy(strs, str.c_str()); + + char *d = new char[delim.length() + 1]; + std::strcpy(d, delim.c_str()); + + char *p = std::strtok(strs, d); + while (p) { + string s = p; + res.push_back(s); + p = std::strtok(NULL, d); + } + + return res; +} + +std::vector ReadDict(std::string path) { + std::ifstream in(path); + std::string filename; + std::string line; + std::vector m_vec; + if (in) { + while (getline(in, line)) { + m_vec.push_back(line); + } + } else { + std::cout << "no such file" << std::endl; + } + return m_vec; +} + +std::map LoadConfigTxt(std::string config_path) { + auto config = ReadDict(config_path); + + std::map dict; + for (int i = 0; i < config.size(); i++) { + std::vector res = split(config[i], " "); + dict[res[0]] = res[1]; + } + return dict; +} + +void PrintConfig(const std::map &config) { + std::cout << "=======PaddleClas lite demo config======" << std::endl; + for (auto iter = config.begin(); iter != config.end(); iter++) { + std::cout << iter->first << " : " << iter->second << std::endl; + } + std::cout << "=======End of PaddleClas lite demo config======" << std::endl; +} + +std::vector LoadLabels(const std::string &path) { + std::ifstream file; + std::vector labels; + file.open(path); + while (file) { + std::string line; + std::getline(file, line); + std::string::size_type pos = line.find(" "); + if (pos != std::string::npos) { + line = line.substr(pos); + } + labels.push_back(line); + } + file.clear(); + file.close(); + return labels; +} + +int main(int argc, char **argv) { + if (argc < 3) { + std::cerr << "[ERROR] usage: " << argv[0] << " config_path img_path\n"; + exit(1); + } + + std::string config_path = argv[1]; + std::string img_path = argv[2]; + + // load config + auto config = LoadConfigTxt(config_path); + PrintConfig(config); + + std::string clas_model_file = config.at("clas_model_file"); + std::string label_path = config.at("label_path"); + + // Load Labels + std::vector word_labels = LoadLabels(label_path); + + auto clas_predictor = LoadModel(clas_model_file); + + auto start = std::chrono::system_clock::now(); + + cv::Mat srcimg = cv::imread(img_path, cv::IMREAD_COLOR); + cv::cvtColor(srcimg, srcimg, cv::COLOR_BGR2RGB); + + std::vector results = + RunClasModel(clas_predictor, srcimg, config, word_labels); + + std::cout << "===clas result for image: " << img_path << "===" << std::endl; + for (int i = 0; i < results.size(); i++) { + std::cout << "\t" + << "Top-" << i + 1 << ", class_id: " << results[i].class_id + << ", class_name: " << results[i].class_name + << ", score: " << results[i].score << std::endl; + } + + auto end = std::chrono::system_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + + std::cout << "Cost " + << double(duration.count()) * + std::chrono::microseconds::period::num / + std::chrono::microseconds::period::den + << " s" << std::endl; + + return 0; +} diff --git a/deploy/lite/imgs/lite_demo_result.png b/deploy/lite/imgs/lite_demo_result.png new file mode 100644 index 0000000000000000000000000000000000000000..b778f158d24722233bd437829a7acfbd89959e47 GIT binary patch literal 146160 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 aU+`wX??+DLJ3k*GUXr46B9%f0{{IIQ@y+=F literal 0 HcmV?d00001 diff --git a/deploy/lite/imgs/tabby_cat.jpg b/deploy/lite/imgs/tabby_cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6eb5b714371b4caeea41fd3324cb2fa4bc1436c2 GIT binary patch literal 24859 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
+ +#### 2.1.3 转换示例 + +下面以PaddleClas的 `MobileNetV3_large_x1_0` 模型为例,介绍使用`paddle_lite_opt`完成预训练模型到inference模型,再到Paddle-Lite优化模型的转换。 + +```shell +# 进入PaddleClas根目录 +cd PaddleClas_root_path +export PYTHONPATH=$PWD + +# 下载并解压预训练模型 +wget https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_pretrained.tar +tar -xf MobileNetV3_large_x1_0_pretrained.tar + +# 将预训练模型导出为inference模型 +python tools/export_model.py -m MobileNetV3_large_x1_0 -p ./MobileNetV3_large_x1_0_pretrained/ -o ./MobileNetV3_large_x1_0_inference/ + +# 将inference模型转化为Paddle-Lite优化模型 +paddle_lite_opt --model_file=./MobileNetV3_large_x1_0_inference/model --param_file=./MobileNetV3_large_x1_0_inference/params --optimize_out=./MobileNetV3_large_x1_0 +``` + +最终在当前文件夹下生成`MobileNetV3_large_x1_0.nb`的文件。 + +**注意**:`--optimize_out` 参数为优化后模型的保存路径,无需加后缀`.nb`;`--model_file` 参数为模型结构信息文件的路径,`--param_file` 参数为模型权重信息文件的路径,请注意文件名。 + + +### 2.2 与手机联调 + +首先需要进行一些准备工作。 +1. 准备一台arm8的安卓手机,如果编译的预测库和opt文件是armv7,则需要arm7的手机,并修改Makefile中`ARM_ABI = arm7`。 +2. 电脑上安装ADB工具,用于调试。 ADB安装方式如下: + + 3.1. MAC电脑安装ADB: + + ```shell + brew cask install android-platform-tools + ``` + 3.2. Linux安装ADB + ```shell + sudo apt update + sudo apt install -y wget adb + ``` + 3.3. Window安装ADB + + win上安装需要去谷歌的安卓平台下载ADB软件包进行安装:[链接](https://developer.android.com/studio) + +4. 手机连接电脑后,开启手机`USB调试`选项,选择`文件传输`模式,在电脑终端中输入: + +```shell +adb devices +``` +如果有device输出,则表示安装成功,如下所示: +``` +List of devices attached +744be294 device +``` + +5. 准备优化后的模型、预测库文件、测试图像和类别映射文件。 + +```shell +cd PaddleClas_root_path +cd deploy/lite/ + +# 运行prepare.sh +# prepare.sh 会将预测库文件、测试图像和使用的字典文件放置在预测库中的demo/cxx/clas文件夹下 +sh prepare.sh /{lite prediction library path}/inference_lite_lib.android.armv8 + +# 进入lite demo的工作目录 +cd /{lite prediction library path}/inference_lite_lib.android.armv8/ +cd demo/cxx/clas/ + +# 将C++预测动态库so文件复制到debug文件夹中 +cp ../../../cxx/lib/libpaddle_light_api_shared.so ./debug/ +``` + +`prepare.sh` 以 `PaddleClas/deploy/lite/imgs/tabby_cat.jpg` 作为测试图像,将测试图像复制到`demo/cxx/clas/debug/` 文件夹下。 +将 `paddle_lite_opt` 工具优化后的模型文件放置到 `/{lite prediction library path}/inference_lite_lib.android.armv8/demo/cxx/clas/debug/` 文件夹下。本例中,使用[2.1.3](#2.1.3)生成的 `MobileNetV3_large_x1_0.nb` 模型文件。 + +执行完成后,clas文件夹下将有如下文件格式: + +``` +demo/cxx/clas/ +|-- debug/ +| |--MobileNetV3_large_x1_0.nb 优化后的分类器模型文件 +| |--tabby_cat.jpg 待测试图像 +| |--imagenet1k_label_list.txt 类别映射文件 +| |--libpaddle_light_api_shared.so C++预测库文件 +| |--config.txt 分类预测超参数配置 +|-- config.txt 分类预测超参数配置 +|-- image_classfication.cpp 图像分类代码文件 +|-- Makefile 编译文件 +``` + +#### 注意: +* 上述文件中,`imagenet1k_label_list.txt` 是ImageNet1k数据集的类别映射文件,如果使用自定义的类别,需要更换该类别映射文件。 + +* `config.txt` 包含了分类器的超参数,如下: + +```shell +clas_model_file ./MobileNetV3_large_x1_0.nb # 模型文件地址 +label_path ./imagenet1k_label_list.txt # 类别映射文本文件 +resize_short_size 256 # resize之后的短边边长 +crop_size 224 # 裁剪后用于预测的边长 +visualize 0 # 是否进行可视化,如果选择的话,会在当前文件夹下生成名为clas_result.png的图像文件。 +``` + +5. 启动调试,上述步骤完成后就可以使用ADB将文件夹 `debug/` push到手机上运行,步骤如下: + +```shell +# 执行编译,得到可执行文件clas_system +make -j + +# 将编译得到的可执行文件移动到debug文件夹中 +mv clas_system ./debug/ + +# 将上述debug文件夹push到手机上 +adb push debug /data/local/tmp/ + +adb shell +cd /data/local/tmp/debug +export LD_LIBRARY_PATH=/data/local/tmp/debug:$LD_LIBRARY_PATH + +# clas_system可执行文件的使用方式为: +# ./clas_system 配置文件路径 测试图像路径 +./clas_system ./config.txt ./tabby_cat.jpg +``` + +如果对代码做了修改,则需要重新编译并push到手机上。 + +运行效果如下: + +
+ +
+ + +## FAQ +Q1:如果想更换模型怎么办,需要重新按照流程走一遍吗? +A1:如果已经走通了上述步骤,更换模型只需要替换 `.nb` 模型文件即可,同时要注意修改下配置文件中的 `.nb` 文件路径以及类别映射文件(如有必要)。 + +Q2:换一个图测试怎么做? +A2:替换 debug 下的测试图像为你想要测试的图像,使用 ADB 再次 push 到手机上即可。 diff --git a/deploy/lite/readme_en.md b/deploy/lite/readme_en.md new file mode 100644 index 00000000..a7dc383e --- /dev/null +++ b/deploy/lite/readme_en.md @@ -0,0 +1,259 @@ + +# Tutorial of PaddleClas Mobile Deployment + +This tutorial will introduce how to use [Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite) to deploy PaddleClas models on mobile phones. + +Paddle-Lite is a lightweight inference engine for PaddlePaddle. It provides efficient inference capabilities for mobile phones and IoTs, and extensively integrates cross-platform hardware to provide lightweight deployment solutions for mobile-side deployment issues. + +If you only want to test speed, please refer to [The tutorial of Paddle-Lite mobile-side benchmark test](../../docs/zh_CN/extension/paddle_mobile_inference.md). + +## 1. Preparation + +- Computer (for compiling Paddle-Lite) +- Mobile phone (arm7 or arm8) + +## 2. Build Paddle-Lite library + +The cross-compilation environment is used to compile the C++ demos of Paddle-Lite and PaddleClas. + +For the detailed compilation directions of different development environments, please refer to the corresponding documents. + +1. [Docker](https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_env.html#docker) +2. [Linux](https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_env.html#linux) +3. [macOS](https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_env.html#mac-os) + +## 3. Download inference library for Android or iOS + +|Platform|Inference Library Download Link| +|-|-| +|Android|[arm7](https://paddlelite-data.bj.bcebos.com/Release/2.6.1/Android/inference_lite_lib.android.armv7.gcc.c++_static.with_extra.CV_ON.tar.gz) / [arm8](https://paddlelite-data.bj.bcebos.com/Release/2.6.1/Android/inference_lite_lib.android.armv8.gcc.c++_static.with_extra.CV_ON.tar.gz)| +|iOS|[arm7](https://paddlelite-data.bj.bcebos.com/Release/2.6.1/iOS/inference_lite_lib.ios.armv7.with_extra.CV_ON.tar.gz) / [arm8](https://paddlelite-data.bj.bcebos.com/Release/2.6.1/iOS/inference_lite_lib.ios64.armv8.with_extra.CV_ON.tar.gz)| + +**NOTE**: + +1. If you download the inference library from [Paddle-Lite official document](https://paddle-lite.readthedocs.io/zh/latest/user_guides/release_lib.html#android-toolchain-gcc), please choose `with_extra=ON` , `with_cv=ON` . + +2. It is recommended to build inference library using [Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite) develop branch if you want to deploy the [quantitative](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/slim/quantization/README_en.md) model to mobile phones. Please refer to the [link](https://paddle-lite.readthedocs.io/zh/latest/user_guides/Compile/Android.html#id2) for more detailed information about compiling. + + +The structure of the inference library is as follows: + +``` +inference_lite_lib.android.armv8/ +|-- cxx C++ inference library and header files +| |-- include C++ header files +| | |-- paddle_api.h +| | |-- paddle_image_preprocess.h +| | |-- paddle_lite_factory_helper.h +| | |-- paddle_place.h +| | |-- paddle_use_kernels.h +| | |-- paddle_use_ops.h +| | `-- paddle_use_passes.h +| `-- lib C++ inference library +| |-- libpaddle_api_light_bundled.a C++ static library +| `-- libpaddle_light_api_shared.so C++ dynamic library +|-- java Java inference library +| |-- jar +| | `-- PaddlePredictor.jar +| |-- so +| | `-- libpaddle_lite_jni.so +| `-- src +|-- demo C++ and java demos +| |-- cxx C++ demos +| `-- java Java demos +``` + + + +## 4. Inference Model Optimization + +Paddle-Lite provides a variety of strategies to automatically optimize the original training model, including quantization, sub-graph fusion, hybrid scheduling, Kernel optimization and so on. In order to make the optimization process more convenient and easy to use, Paddle-Lite provides `opt` tool to automatically complete the optimization steps and output a lightweight, optimal executable model. + +**NOTE**: If you have already got the `.nb` file, you can skip this step. + + + +### 4.1 [RECOMMEND] Use `pip` to install Paddle-Lite and optimize model + +* Use pip to install Paddle-Lite. The following command uses `pip3.7` . + +```shell +pip install paddlelite +``` + +* Use `paddle_lite_opt` to optimize inference model, the parameters of `paddle_lite_opt` are as follows: + +| Parameters | Explanation | +| ----------------------- | ------------------------------------------------------------ | +| --model_dir | Path to the PaddlePaddle model (no-combined) file to be optimized. | +| --model_file | Path to the net structure file of PaddlePaddle model (combined) to be optimized. | +| --param_file | Path to the net weight files of PaddlePaddle model (combined) to be optimized. | +| --optimize_out_type | Type of output model, `protobuf` by default. Supports `protobuf` and `naive_buffer` . Compared with `protobuf`, you can use`naive_buffer` to get a more lightweight serialization/deserialization model. If you need to predict on the mobile-side, please set it to `naive_buffer`. | +| --optimize_out | Path to output model, not needed to add `.nb` suffix. | +| --valid_targets | The executable backend of the model, `arm` by default. Supports one or some of `x86` , `arm` , `opencl` , `npu` , `xpu`. If set more than one, please separate the options by space, and the `opt` tool will choose the best way automatically. If need to support Huawei NPU (DaVinci core carried by Kirin 810/990 SoC), please set it to `npu arm` . | +| --record_tailoring_info | Whether to enable `Cut the Library Files According To the Model` , `false` by default. If need to record kernel and OP infos of optimized model, please set it to `true`. | + +In addition, you can run `paddle_lite_opt` to get more detailed information about how to use. + +### 4.2 Compile Paddle-Lite to generate `opt` tool + +Optimizing model requires Paddle-Lite's `opt` executable file, which can be obtained by compiling the Paddle-Lite. The steps are as follows: + +```shell +# get the Paddle-Lite source code, if have gotten , please skip +git clone https://github.com/PaddlePaddle/Paddle-Lite.git +cd Paddle-Lite +git checkout develop +# compile +./lite/tools/build.sh build_optimize_tool +``` + +After the compilation is complete, the `opt` file is located under `build.opt/lite/api/`. + +`opt` tool is used in the same way as `paddle_lite_opt` , please refer to [4.1](#4.1). + + + +### 4.3 Demo of get the optimized model + +Taking the `MobileNetV3_large_x1_0` model of PaddleClas as an example, we will introduce how to use `paddle_lite_opt` to complete the conversion from the pre-trained model to the inference model, and then to the Paddle-Lite optimized model. + +```shell +# enter PaddleClas root directory +cd PaddleClas_root_path +export PYTHONPATH=$PWD + +# download and uncompress the pre-trained model +wget https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_pretrained.tar +tar -xf MobileNetV3_large_x1_0_pretrained.tar + +# export the pre-trained model as an inference model +python tools/export_model.py -m MobileNetV3_large_x1_0 -p ./MobileNetV3_large_x1_0_pretrained/ -o ./MobileNetV3_large_x1_0_inference/ + +# convert inference model to Paddle-Lite optimized model +paddle_lite_opt --model_file=./MobileNetV3_large_x1_0_inference/model --param_file=./MobileNetV3_large_x1_0_inference/params --optimize_out=./MobileNetV3_large_x1_0 +``` + +When the above code command is completed, there will be ``MobileNetV3_large_x1_0.nb` in the current directory, which is the converted model file. + +## 5. Run optimized model on Phone + +1. Prepare an Android phone with `arm8`. If the compiled inference library and `opt` file are `armv7`, you need an `arm7` phone and modify `ARM_ABI = arm7` in the Makefile. + +2. Install the ADB tool on the computer. + + * Install ADB for MAC + + Recommend use homebrew to install. + + ```shell + brew cask install android-platform-tools + ``` + * Install ADB for Linux + + ```shell + sudo apt update + sudo apt install -y wget adb + ``` + * Install ADB for windows + If install ADB fo Windows, you need to download from Google's Android platform: [Download Link](https://developer.android.com/studio). + + First, make sure the phone is connected to the computer, turn on the `USB debugging` option of the phone, and select the `file transfer` mode. Verify whether ADB is installed successfully as follows: + + ```shell + $ adb devices + + List of devices attached + 744be294 device + ``` + + If there is `device` output like the above, it means the installation was successful. + +4. Prepare optimized model, inference library files, test image and dictionary file used. + +```shell +cd PaddleClas_root_path +cd deploy/lite/ + +# prepare.sh will put the inference library files, the test image and the dictionary files in demo/cxx/clas +sh prepare.sh /{lite inference library path}/inference_lite_lib.android.armv8 + +# enter the working directory of lite demo +cd /{lite inference library path}/inference_lite_lib.android.armv8/ +cd demo/cxx/clas/ + +# copy the C++ inference dynamic library file (ie. .so) to the debug folder +cp ../../../cxx/lib/libpaddle_light_api_shared.so ./debug/ +``` + +The `prepare.sh` take `PaddleClas/deploy/lite/imgs/tabby_cat.jpg` as the test image, and copy it to the `demo/cxx/clas/debug/` directory. + +You should put the model that optimized by `paddle_lite_opt` under the `demo/cxx/clas/debug/` directory. In this example, use `MobileNetV3_large_x1_0.nb` model file generated in [2.1.3](#4.3). + +The structure of the clas demo is as follows after the above command is completed: + +``` +demo/cxx/clas/ +|-- debug/ +| |--MobileNetV3_large_x1_0.nb class model +| |--tabby_cat.jpg test image +| |--imagenet1k_label_list.txt dictionary file +| |--libpaddle_light_api_shared.so C++ .so file +| |--config.txt config file +|-- config.txt config file +|-- image_classfication.cpp source code +|-- Makefile compile file +``` + +**NOTE**: + +* `Imagenet1k_label_list.txt` is the category mapping file of the `ImageNet1k` dataset. If use a custom category, you need to replace the category mapping file. +* `config.txt` contains the hyperparameters, as follows: + +```shell +clas_model_file ./MobileNetV3_large_x1_0.nb # path of model file +label_path ./imagenet1k_label_list.txt # path of category mapping file +resize_short_size 256 # the short side length after resize +crop_size 224 # side length used for inference after cropping + +visualize 0 # whether to visualize. If you set it to 1, an image file named 'clas_result.png' will be generated in the current directory. +``` + +5. Run Model on Phone + +```shell +# run compile to get the executable file 'clas_system' +make -j + +# move the compiled executable file to the debug folder +mv clas_system ./debug/ + +# push the debug folder to Phone +adb push debug /data/local/tmp/ + +adb shell +cd /data/local/tmp/debug +export LD_LIBRARY_PATH=/data/local/tmp/debug:$LD_LIBRARY_PATH + +# the usage of clas_system is as follows: +# ./clas_system "path of config file" "path of test image" +./clas_system ./config.txt ./tabby_cat.jpg +``` + +**NOTE**: If you make changes to the code, you need to recompile and repush the `debug ` folder to the phone. + +The result is as follows: + +
+ +
+ + + +## FAQ + +Q1:If I want to change the model, do I need to go through the all process again? +A1:If you have completed the above steps, you only need to replace the `.nb` model file after replacing the model. At the same time, you may need to modify the path of `.nb` file in the config file and change the category mapping file to be compatible the model . + +Q2:How to change the test picture? +A2:Replace the test image under debug folder with the image you want to test,and then repush to the Phone again. diff --git a/docs/en/advanced_tutorials/distillation/distillation_en.md b/docs/en/advanced_tutorials/distillation/distillation_en.md new file mode 100644 index 00000000..cb74896b --- /dev/null +++ b/docs/en/advanced_tutorials/distillation/distillation_en.md @@ -0,0 +1,238 @@ + + +# Introduction of model compression methods + +In recent years, deep neural networks have been proven to be an extremely effective method to solve problems in the fields of computer vision and natural language processing. The deep learning methods performs better than traditional methods with suitable network structure and training process. + +With enough training data, increasing parameters of the neural network by building a reasonabe network can significantly the model performance. But this increases the model complexity, which takes too much computation cost in real scenarios. + + +Parameter redundancy exists in deep neural networks. There are several methods to compress the model suck as pruning ,quantization, knowledge distillation, etc. Knowledge distillation refers to using the teacher model to guide the student model to learn specific tasks, ensuring that the small model has a relatively large effect improvement with the computation cost unchanged, and even obtains similar accuracy with the large model [1]. Combining some of the existing distillation methods [2,3], PaddleClas provides a simple semi-supervised label knowledge distillation solution (SSLD). Top-1 Accuarcy on ImageNet1k dataset has an improvement of more than 3% based on ResNet_vd and MobileNet series, which can be shown as below. + + +![](../../../images/distillation/distillation_perform_s.jpg) + + +# SSLD + +## Introduction + +The following figure shows the framework of SSLD. + +![](../../../images/distillation/ppcls_distillation.png) + +First, we select nearly 4 million images from ImageNet22k dataset, and integrate it with the ImageNet-1k training set to get a new dataset containing 5 million images. Then, we combine the student model and the teacher model into a new network, which outputs the predictions of the student model and the teacher model, respectively. The gradient of the entire network of the teacher model is fixed. Finally, we use JS divergence loss as the loss function for the training process. Here we take MobileNetV3 distillation task as an example, and introduce key points of SSLD. + +* Choice of the teacher model, During knowledge distillation, it may not be an optimal solution if the structure of the teacher model and the student model are too different. Under the same structure, the teacher model with higher accuracy leads to better performance for the student model during distillation. Compared with the 79.12% ResNet50_vd teacher model, using the 82.4% teacher model can bring a 0.4% accuracy improvement on Top-1 accuracy (`75.6%-> 76.0%`). + +* Improvement of loss function. The most commonly used loss function for classification is cross entropy loss. We fint that when using soft label for training, KL divergence loss is almost useless to improve model performance compared to cross entropy loss, but The accuracy has a 0.2% improvement using JS divergence loss (`76.0%-> 76.2%`). Loss function in SSLD is JS divergence loss. + +* More iteration number. It is only 120 for the baseline experiment. We can achieve a 0.9% improvement by setting it as 360 (`76.2%-> 77.1%`). + +* There is not need for laleled data in SSLD, which leads to convenient training data expansion. label is not utilized when computing the loss function, therefore the unlabeled data can also be used to train the network. The label-free distillation strategy of this distillation solution has also greatly improved the upper performance limit of student models (`77.1%-> 78.5%`). + +* ImageNet1k finetune. ImageNet1k training set is used for finetuning, which brings a 0.4% accuracy improvement (`78.5%-> 78.9%`). + + +## Data selection + +* An important feature of the SSLD distillation scheme is no need for labeled images, so the dataset size can be arbitrarily expanded. Considering the limitation of computing resources, we here only expand the training set of the distillation task based on the ImageNet22k dataset. For SSLD, we used the `Top-k per class` data sampling scheme [3]. Specific steps are as follows. +     * Deduplication of training set. We first deduplicate the ImageNet22k dataset and the ImageNet1k validation set based on the SIFT feature similarity matching method to prevent the added ImageNet22k training set from containing the ImageNet1k validation set images. Finally we removed 4511 similar images. Similar pictures with partial filtering are shown below. + + ![](../../../images/distillation/22k_1k_val_compare_w_sift.png) + + * Obtain the soft label of the ImageNet22k dataset. For the ImageNet22k dataset after deduplication, we use the `ResNeXt101_32x16d_wsl` model to make predictions to obtain the soft label of each image. +     * Top-k data selection. There contains 1000 categories in ImageNet1k dataset. For each category, we find out images in the category with Top-k highest score, and finally generate a dataset whose image number does not exceed `1000 * k` (For some categories, there may contain less than k images). +     * The selected images are merged with the ImageNet1k training set to form the new dataset used for the final distillation model training, which contains 5 million images in all. + +# Experiments + +The distillation solution that PaddleClas provides is combining common training with finetuning. Given a suitable teacher model, the large dataset(5 million) is used for common training and the ImageNet1k dataset is used for finetuning. + +## Choice of teacher model + +In order to verify the influence of the model size difference between the teacher model and the student model on the distillation results as well as the teacher model accuracy, we conducted several experiments. The training strategy is unified as follows: `cosine_decay_warmup, lr = 1.3, epoch = 120, bs = 2048`, and the student models are all trained from scratch. + + +|Teacher Model | Teacher Top1 | Student Model | Student Top1| +|- |:-: |:-: | :-: | +| ResNeXt101_32x16d_wsl | 84.2% | MobileNetV3_large_x1_0 | 75.78% | +| ResNet50_vd | 79.12% | MobileNetV3_large_x1_0 | 75.60% | +| ResNet50_vd | 82.35% | MobileNetV3_large_x1_0 | 76.00% | + + +It can be shown from the table that: + +> When the teacher model structure is the same, the higher the teacher model accuracy, the better the final student model will be. +> +> The size difference between the teacher model and the student model should not be too large, otherwise it will decrease the accuracy of the distillation results. + +Therefore, during distillation, for the ResNet series student model, we use `ResNeXt101_32x16d_wsl` as the teacher model; for the MobileNet series student model, we use` ResNet50_vd_SSLD` as the teacher model. + + +## Distillation using large-scale dataset + +Training process is carried out on the large-scale dataset with 5 million images. Specifically, the following table shows more details of different models. + +|Student Model | num_epoch | l2_ecay | batch size/gpu cards | base lr | learning rate decay | top1 acc | +| - |:-: |:-: | :-: |:-: |:-: |:-: | +| MobileNetV1 | 360 | 3e-5 | 4096/8 | 1.6 | cosine_decay_warmup | 77.65% | +| MobileNetV2 | 360 | 1e-5 | 3072/8 | 0.54 | cosine_decay_warmup | 76.34% | +| MobileNetV3_large_x1_0 | 360 | 1e-5 | 5760/24 | 3.65625 | cosine_decay_warmup | 78.54% | +| MobileNetV3_small_x1_0 | 360 | 1e-5 | 5760/24 | 3.65625 | cosine_decay_warmup | 70.11% | +| ResNet50_vd | 360 | 7e-5 | 1024/32 | 0.4 | cosine_decay_warmup | 82.07% | +| ResNet101_vd | 360 | 7e-5 | 1024/32 | 0.4 | cosine_decay_warmup | 83.41% | +| Res2Net200_vd_26w_4s | 360 | 4e-5 | 1024/32 | 0.4 | cosine_decay_warmup | 84.82% | + +## finetuning using ImageNet1k + +Finetuning is carried out on ImageNet1k dataset to restore distribution between training set and test set. the following table shows more details of finetuning. + + +|Student Model | num_epoch | l2_ecay | batch size/gpu cards | base lr | learning rate decay | top1 acc | +| - |:-: |:-: | :-: |:-: |:-: |:-: | +| MobileNetV1 | 30 | 3e-5 | 4096/8 | 0.016 | cosine_decay_warmup | 77.89% | +| MobileNetV2 | 30 | 1e-5 | 3072/8 | 0.0054 | cosine_decay_warmup | 76.73% | +| MobileNetV3_large_x1_0 | 30 | 1e-5 | 2048/8 | 0.008 | cosine_decay_warmup | 78.96% | +| MobileNetV3_small_x1_0 | 30 | 1e-5 | 6400/32 | 0.025 | cosine_decay_warmup | 71.28% | +| ResNet50_vd | 60 | 7e-5 | 1024/32 | 0.004 | cosine_decay_warmup | 82.39% | +| ResNet101_vd | 30 | 7e-5 | 1024/32 | 0.004 | cosine_decay_warmup | 83.73% | +| Res2Net200_vd_26w_4s | 360 | 4e-5 | 1024/32 | 0.004 | cosine_decay_warmup | 85.13% | + +## Data agmentation and Fix strategy + +* Based on experiments mentioned above, we add AutoAugment [4] during training process, and reduced l2_decay from 4e-5 t 2e-5. Finally, the Top-1 accuracy on ImageNet1k dataset can reach 82.99%, with 0.6% improvement compared to the standard SSLD distillation strategy. + +* For image classsification tasks, The model accuracy can be further improved when the test scale is 1.15 times that of training[5]. For the 82.99% ResNet50_vd pretrained model, it comes to 83.7% using 320x320 for the evaluation. We use Fix strategy to finetune the model with the training scale set as 320x320. During the process, the pre-preocessing pipeline is same for both training and test. All the weights except the fully connected layer are freezed. Finally the top-1 accuracy comes to **84.0%**. + + +# Application of the distillation model + +## Instructions + +* Adjust the learning rate of the middle layer. The middle layer feature map of the model obtained by distillation is more refined. Therefore, when the distillation model is used as the pretrained model in other tasks, if the same learning rate as before is adopted, it is easy to destroy the features. If the learning rate of the overall model training is reduced, it will bring about the problem of slow convergence. Therefore, we use the strategy of adjusting the learning rate of the middle layer. specifically: +    * For ResNet50_vd, we set up a learning rate list. The three conv2d convolution parameters before the resiual block have a uniform learning rate multiple, and the four resiual block conv2d have theirs own learning rate parameters, respectively. 5 values need to be set in the list. By the experiment, we find that when used for transfer learning finetune classification model, the learning rate list with `[0.1,0.1,0.2,0.2,0.3]` performs better in most tasks; while in the object detection tasks, `[0.05, 0.05, 0.05, 0.1, 0.15]` can bring greater accuracy gains. +    * For MoblileNetV3_large_1x0, because it contains 15 blocks, we set each 3 blocks to share a learning rate, so 5 learning rate values are required. We find that in classification and detection tasks, the learning rate list with `[0.25, 0.25, 0.5, 0.5, 0.75]` performs better in most tasks. +* Appropriate l2 decay. Different l2 decay values are set for different models during training. In order to prevent overfitting, l2 decay is ofen set as large for large models. L2 decay is set as `1e-4` for ResNet50, and `1e-5 ~ 4e-5` for MobileNet series models. L2 decay needs also to be adjusted when applied in other tasks. Taking Faster_RCNN_MobiletNetV3_FPN as an example, we found that only modifying l2 decay can bring up to 0.5% accuracy (mAP) improvement on the COCO2017 dataset. + + +## Transfer learning + +* To verify the effect of the SSLD pretrained model in transfer learning, we carried out experiments on 10 small datasets. Here, in order to ensure the comparability of the experiment, we use the standard preprocessing process trained by the ImageNet1k dataset. For the distillation model, we also add a simple search method for the learning rate of the middle layers of the distillation pretrained model. +* For ResNet50_vd, the baseline pretrained model Top-1 Acc is 79.12%, the other parameters are got by grid search. For distillation pretrained model, we add learning rate of the middle layers into the search space. The following table shows the results. + +| Dataset | Model | Baseline Top1 Acc | Distillation Model Finetune | +|- |:-: |:-: | :-: | +| Oxford102 flowers | ResNete50_vd | 97.18% | 97.41% | +| caltech-101 | ResNete50_vd | 92.57% | 93.21% | +| Oxford-IIIT-Pets | ResNete50_vd | 94.30% | 94.76% | +| DTD | ResNete50_vd | 76.48% | 77.71% | +| fgvc-aircraft-2013b | ResNete50_vd | 88.98% | 90.00% | +| Stanford-Cars | ResNete50_vd | 92.65% | 92.76% | +| SUN397 | ResNete50_vd | 64.02% | 68.36% | +| cifar100 | ResNete50_vd | 86.50% | 87.58% | +| cifar10 | ResNete50_vd | 97.72% | 97.94% | +| Food-101 | ResNete50_vd | 89.58% | 89.99% | + +* It can be seen that on the above 10 datasets, combined with the appropriate middle layer learning rate, the distillation pretrained model can bring an average accuracy improvement of more than 1%. + +## Object detection + + +Based on the two-stage Faster/Cascade RCNN model, we verify the effect of the pretrained model obtained by distillation. + +* ResNet50_vd + +Training scale and test scale are set as 640x640, and some of the ablationstudies are as follows. + + +| Model | train/test scale | pretrain top1 acc | feature map lr | coco mAP | +|- |:-: |:-: | :-: | :-: | +| Faster RCNN R50_vd FPN | 640/640 | 79.12% | [1.0,1.0,1.0,1.0,1.0] | 34.8% | +| Faster RCNN R50_vd FPN | 640/640 | 79.12% | [0.05,0.05,0.1,0.1,0.15] | 34.3% | +| Faster RCNN R50_vd FPN | 640/640 | 82.18% | [0.05,0.05,0.1,0.1,0.15] | 36.3% | + + +It can be seen here that for the baseline pretrained model, excessive adjustment of the middle-layer learning rate actually reduces the performance of the detection model. Based on this distillation model, we also provide a practical server-side detection solution. The detailed configuration and training code are open source, more details can be refer to [PaddleDetection] (https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/rcnn_enhance). + + +# Practice + +This section will introduce the SSLD distillation experiments in detail based on the ImageNet-1K dataset. If you want to experience this method quickly, you can refer to [** Quick start PaddleClas in 30 minutes**] (../../tutorials/quick_start.md), whose dataset is set as Flowers102. + + + +## Configuration + + + +### Distill ResNet50_vd using ResNeXt101_32x16d_wsl + +Configuration of distilling `ResNet50_vd` using `ResNeXt101_32x16d_wsl` is as follows. + +```yaml +ARCHITECTURE: + name: 'ResNeXt101_32x16d_wsl_distill_ResNet50_vd' +pretrained_model: "./pretrained/ResNeXt101_32x16d_wsl_pretrained/" +# pretrained_model: +# - "./pretrained/ResNeXt101_32x16d_wsl_pretrained/" +# - "./pretrained/ResNet50_vd_pretrained/" +use_distillation: True +``` + +### Distill MobileNetV3_large_x1_0 using ResNet50_vd_ssld + +The detailed configuration is as follows. + +```yaml +ARCHITECTURE: + name: 'ResNet50_vd_distill_MobileNetV3_large_x1_0' +pretrained_model: "./pretrained/ResNet50_vd_ssld_pretrained/" +# pretrained_model: +# - "./pretrained/ResNet50_vd_ssld_pretrained/" +# - "./pretrained/ResNet50_vd_pretrained/" +use_distillation: True +``` + +## Begin to train the network + +If everything is ready, users can begin to train the network using the following command. + +```bash +export PYTHONPATH=path_to_PaddleClas:$PYTHONPATH + +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + --log_dir=R50_vd_distill_MV3_large_x1_0 \ + tools/train.py \ + -c ./configs/Distillation/R50_vd_distill_MV3_large_x1_0.yaml +``` + +## Note + +* Before using SSLD, users need to train a teacher model on the target dataset firstly. The teacher model is used to guide the training of the student model. + +* When using SSLD, users need to set `use_distillation` in the configuration file to` True`. In addition, because the student model learns soft-label with knowledge information, you need to turn off the `label_smoothing` option. + +* If the student model is not loaded with a pretrained model, the other hyperparameters of the training can refer to the hyperparameters trained by the student model on ImageNet-1k. If the student model is loaded with the pre-trained model, the learning rate can be adjusted to `1/100~1/10` of the standard learning rate. + +* In the process of SSLD distillation, the student model only learns the soft label, which makes the training process more difficult. It is recommended that the value of `l2_decay` can be decreased appropriately to obtain higher accuracy of the validation set. + +* If users are going to add unlabeled training data, just the training list textfile needs to be adjusted for more data. + + + +> If this document is helpful to you, welcome to star our project: [https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) + + +# Reference + +[1] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015. + +[2] Bagherinezhad H, Horton M, Rastegari M, et al. Label refinery: Improving imagenet classification through label progression[J]. arXiv preprint arXiv:1805.02641, 2018. + +[3] Yalniz I Z, Jégou H, Chen K, et al. Billion-scale semi-supervised learning for image classification[J]. arXiv preprint arXiv:1905.00546, 2019. + +[4] Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation strategies from data[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 113-123. + +[5] Touvron H, Vedaldi A, Douze M, et al. Fixing the train-test resolution discrepancy[C]//Advances in Neural Information Processing Systems. 2019: 8250-8260. diff --git a/docs/en/advanced_tutorials/distillation/index.rst b/docs/en/advanced_tutorials/distillation/index.rst index fcd7515c..55485129 100644 --- a/docs/en/advanced_tutorials/distillation/index.rst +++ b/docs/en/advanced_tutorials/distillation/index.rst @@ -4,4 +4,4 @@ distillation .. toctree:: :maxdepth: 3 - distillation.md + distillation_en.md diff --git a/docs/en/advanced_tutorials/image_augmentation/ImageAugment_en.md b/docs/en/advanced_tutorials/image_augmentation/ImageAugment_en.md new file mode 100644 index 00000000..7e2a49a2 --- /dev/null +++ b/docs/en/advanced_tutorials/image_augmentation/ImageAugment_en.md @@ -0,0 +1,576 @@ +# Image Augmentation + + +Image augmentation is a commonly used regularization method in image classification task, which is often used in scenarios with insufficient data or large model. In this chapter, we mainly introduce 8 image augmentation methods besides standard augmentation methods. Users can apply these methods in their own tasks for better model performance. Under the same conditions, These augmentation methods' performance on ImageNet1k dataset is shown as follows. + +![](../../../images/image_aug/main_image_aug.png) + + +# Common image augmentation methods + +If without special explanation, all the examples and experiments in this chapter are based on ImageNet1k dataset with the network input image size set as 224. + +The standard data augmentation pipeline in ImageNet classification tasks contains the following steps. + +1. Decode image, abbreviated as `ImageDecode`. +2. Randomly crop the image to size with 224x224, abbreviated as `RandCrop`. +3. Randomly flip the image horizontally, abbreviated as `RandFlip`. +4. Normalize the image pixel values, abbreviated as `Normalize`. +5. Transpose the image from `[224, 224, 3]`(HWC) to `[3, 224, 224]`(CHW), abbreviated as `Transpose`. +6. Group the image data(`[3, 224, 224]`) into a batch(`[N, 3, 224, 224]`), where `N` is the batch size. It is abbreviated as `Batch`. + + +Compared with the above standard image augmentation methods, the researchers have also proposed many improved image augmentation strategies. These strategies are to insert certain operations at different stages of the standard augmentation method, based on the different stages of operation. We divide it into the following three categories. + +1. Transformation. Perform some transformations on the image after `RandCrop`, such as AutoAugment and RandAugment. +2. Cropping. Perform some transformations on the image after `Transpose`, such as CutOut, RandErasing, HideAndSeek and GridMask. +3. Aliasing. Perform some transformations on the image after `Batch`, such as Mixup and Cutmix. + + +Visualization results of some images after augmentation are shown as follows. + +![](../../../images/image_aug/image_aug_samples_s_en.jpg) + + +The following table shows more detailed information of the transformations. + + +| Method | Input | Output | Auto-
Augment\[1\] | Rand-
Augment\[2\] | CutOut\[3\] | Rand
Erasing\[4\] | HideAnd-
Seek\[5\] | GridMask\[6\] | Mixup\[7\] | Cutmix\[8\] | +|-------------|---------------------------|---------------------------|------------------|------------------|-------------|------------------|------------------|---------------|------------|------------| +| Image
Decode | Binary | (224, 224, 3)
uint8 | Y | Y | Y | Y | Y | Y | Y | Y | +| RandCrop | (:, :, 3)
uint8 | (224, 224, 3)
uint8 | Y | Y | Y | Y | Y | Y | Y | Y | +| **Process** | (224, 224, 3)
uint8 | (224, 224, 3)
uint8 | Y | Y | \- | \- | \- | \- | \- | \- | +| RandFlip | (224, 224, 3)
uint8 | (224, 224, 3)
float32 | Y | Y | Y | Y | Y | Y | Y | Y | +| Normalize | (224, 224, 3)
uint8 | (3, 224, 224)
float32 | Y | Y | Y | Y | Y | Y | Y | Y | +| Transpose | (224, 224, 3)
float32 | (3, 224, 224)
float32 | Y | Y | Y | Y | Y | Y | Y | Y | +| **Process** | (3, 224, 224)
float32 | (3, 224, 224)
float32 | \- | \- | Y | Y | Y | Y | \- | \- | +| Batch | (3, 224, 224)
float32 | (N, 3, 224, 224)
float32 | Y | Y | Y | Y | Y | Y | Y | Y | +| **Process** | (N, 3, 224, 224)
float32 | (N, 3, 224, 224)
float32 | \- | \- | \- | \- | \- | \- | Y | Y | + + + +PaddleClas integrates all the above data augmentation strategies. More details including principles and usage of the strategies are introduced in the following chapters. For better visualization, we use the following figure to show the changes after the transformations. And `RandCrop` is replaced with` Resize` for simplification. + +![](../../../images/image_aug/test_baseline.jpeg) + +# Image Transformation + +Transformation means performing some transformations on the image after `RandCrop`. It mainly contains AutoAugment and RandAugment. + +## AutoAugment + +Address:[https://arxiv.org/abs/1805.09501v1](https://arxiv.org/abs/1805.09501v1) + +Github repo:[https://github.com/DeepVoltaire/AutoAugment](https://github.com/DeepVoltaire/AutoAugment) + + +Unlike conventional artificially designed image augmentation methods, AutoAugment is an image augmentation solution suitable for a specific data set found by certain search algorithm in the search space of a series of image augmentation sub-strategies. For the ImageNet dataset, the final data augmentation solution contains 25 sub-strategy combinations. Each sub-strategy contains two transformations. For each image, a sub-strategy combination is randomly selected and then determined with a certain probability Perform each transformation in the sub-strategy. + +In PaddleClas, `AutoAugment` is used as follows. + +```python +from ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import ImageNetPolicy +from ppcls.data.imaug import transform + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +autoaugment_op = ImageNetPolicy() + +ops = [decode_op, resize_op, autoaugment_op] + +imgs_dir = image_path +fnames = os.listdir(imgs_dir) +for f in fnames: + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) +``` + +The images after `AutoAugment` are as follows. + +![][test_autoaugment] + +## RandAugment + +Address: [https://arxiv.org/pdf/1909.13719.pdf](https://arxiv.org/pdf/1909.13719.pdf) + +Github repo: [https://github.com/heartInsert/randaugment](https://github.com/heartInsert/randaugment) + + +The search method of `AutoAugment` is relatively violent. Searching for the optimal strategy for this data set directly on the data set requires a lot of computation. In `RandAugment`, the author found that on the one hand, for larger models and larger datasets, the gains generated by the augmentation method searched using `AutoAugment` are smaller. On the other hand, the searched strategy is limited to certain dataset, which has poor generalization performance and not sutable for other datasets. + +In `RandAugment`, the author proposes a random augmentation method. Instead of using a specific probability to determine whether to use a certain sub-strategy, all sub-strategies are selected with the same probability. The experiments in the paper also show that this method performs well even for large models. + +In PaddleClas, `RandAugment` is used as follows. + +```python +from ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import RandAugment +from ppcls.data.imaug import transform + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +randaugment_op = RandAugment() + +ops = [decode_op, resize_op, randaugment_op] + +imgs_dir = image_path +fnames = os.listdir(imgs_dir) +for f in fnames: + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) +``` + +The images after `RandAugment` are as follows. + +![][test_randaugment] + + +# Image Cropping + +Cropping means performing some transformations on the image after `Transpose`, setting pixels of the cropped area as certain constant. It mainly contains CutOut, RandErasing, HideAndSeek and GridMask. + +Image cropping methods can be operated before or after normalization. The difference is that if we crop the image before normalization and fill the areas with 0, the cropped areas' pixel values will not be 0 after normalization, which will cause grayscale distribution change of the data. + +The above-mentioned cropping transformation ideas are the similar, all to solve the problem of poor generalization ability of the trained model on occlusion images, the difference lies in that their cropping details. + + +## Cutout + +Address: [https://arxiv.org/abs/1708.04552](https://arxiv.org/abs/1708.04552) + +Github repo: [https://github.com/uoguelph-mlrg/Cutout](https://github.com/uoguelph-mlrg/Cutout) + + +Cutout is a kind of dropout, but occludes input image rather than feature map. It is more robust to noise than noise. Cutout has two advantages: (1) Using Cutout, we can simulate the situation when the subject is partially occluded. (2) It can promote the model to make full use of more content in the image for classification, and prevent the network from focusing only on the saliency area, thereby causing overfitting. + +In PaddleClas, `Cutout` is used as follows. + +```python +from ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import Cutout +from ppcls.data.imaug import transform + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +cutout_op = Cutout(n_holes=1, length=112) + +ops = [decode_op, resize_op, cutout_op] + +imgs_dir = image_path +fnames = os.listdir(imgs_dir) +for f in fnames: + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) +``` + +The images after `Cutout` are as follows. + +![][test_cutout] + +## RandomErasing + +Address: [https://arxiv.org/pdf/1708.04896.pdf](https://arxiv.org/pdf/1708.04896.pdf) + +Github repo: [https://github.com/zhunzhong07/Random-Erasing](https://github.com/zhunzhong07/Random-Erasing) + +RandomErasing is similar to the Cutout. It is also to solve the problem of poor generalization ability of the trained model on images with occlusion. The author also pointed out in the paper that the way of random cropping is complementary to random horizontal flipping. The author also verified the effectiveness of the method on pedestrian re-identification (REID). Unlike `Cutout`, in` `, `RandomErasing` is operateed on the image with a certain probability, size and aspect ratio of the generated mask are also randomly generated according to pre-defined hyperparameters. + +In PaddleClas, `RandomErasing` is used as follows. + +```python +from ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import ToCHWImage +from ppcls.data.imaug import RandomErasing +from ppcls.data.imaug import transform + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +randomerasing_op = RandomErasing() + +ops = [decode_op, resize_op, tochw_op, randomerasing_op] + +imgs_dir = image_path +fnames = os.listdir(imgs_dir) +for f in fnames: + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) + img = img.transpose((1, 2, 0)) +``` + +The images after `RandomErasing` are as follows. + +![][test_randomerassing] + + +## HideAndSeek + +Address: [https://arxiv.org/pdf/1811.02545.pdf](https://arxiv.org/pdf/1811.02545.pdf) + +Github repo: [https://github.com/kkanshul/Hide-and-Seek](https://github.com/kkanshul/Hide-and-Seek) + + +Images are divided into some patches for `HideAndSeek` and masks are generated with certain probability for each patch. The meaning of the masks in different areas is shown in the figure below. + +![][hide_and_seek_mask_expanation] + +In PaddleClas, `HideAndSeek` is used as follows. + +```python +from ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import ToCHWImage +from ppcls.data.imaug import HideAndSeek +from ppcls.data.imaug import transform + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +hide_and_seek_op = HideAndSeek() + +ops = [decode_op, resize_op, tochw_op, hide_and_seek_op] + +imgs_dir = image_path +fnames = os.listdir(imgs_dir) +for f in fnames: + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) + img = img.transpose((1, 2, 0)) +``` + +The images after `HideAndSeek` are as follows. + +![][test_hideandseek] + + +## GridMask +Address:[https://arxiv.org/abs/2001.04086](https://arxiv.org/abs/2001.04086) + +Github repo:[https://github.com/akuxcw/GridMask](https://github.com/akuxcw/GridMask) + + +The author points out that the previous method based on image cropping has two problems, as shown in the following figure: + +1. Excessive deletion of the area may cause most or all of the target subject to be deleted, or cause the context information loss, resulting in the images after enhancement becoming noisy data. +2. Reserving too much area has little effect on the object and context. + +![][gridmask-0] + +Therefore, it is the core problem to be solved how to +if you avoid over-deletion or over-retention becomes the core problem to be solved. + +`GridMask` is to generate a mask with the same resolution as the original image and multiply it with the original image. The mask grid and size are adjusted by the hyperparameters. + +In the training process, there are two methods to use: +1. Set a probability p and use the GridMask to augment the image with probability p from the beginning of training. +2. Initially set the augmentation probability to 0, and the probability is increased with number of iterations from 0 to p. + +It shows that the second method is better. + +The usage of `GridMask` in PaddleClas is shown below. + +```python +from data.imaug import DecodeImage +from data.imaug import ResizeImage +from data.imaug import ToCHWImage +from data.imaug import GridMask +from data.imaug import transform + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +tochw_op = ToCHWImage() +gridmask_op = GridMask(d1=96, d2=224, rotate=1, ratio=0.6, mode=1, prob=0.8) + +ops = [decode_op, resize_op, tochw_op, gridmask_op] + +imgs_dir = image_path +fnames = os.listdir(imgs_dir) +for f in fnames: + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) + img = img.transpose((1, 2, 0)) +``` + +The images after `GridMask` are as follows. + +![][test_gridmask] + + +# Image aliasing + +Aliasing means performing some transformations on the image after `Batch`, which contains Mixup and Cutmix. + +Data augmentation methods introduced before are based on single image while aliasing is carried on a certain batch to generate a new batch. + +## Mixup + +Address: [https://arxiv.org/pdf/1710.09412.pdf](https://arxiv.org/pdf/1710.09412.pdf) + +Github repo: [https://github.com/facebookresearch/mixup-cifar10](https://github.com/facebookresearch/mixup-cifar10) + +Mixup is the first solution for image aliasing, it is easy to realize and performs well not only on image classification but also on object detection. Mixup is usually carried out in a batch for simplification, so as `Cutmix`. + + +The usage of `Mixup` in PaddleClas is shown below. + +```python +from ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import ToCHWImage +from ppcls.data.imaug import transform +from ppcls.data.imaug import MixupOperator + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +tochw_op = ToCHWImage() +hide_and_seek_op = HideAndSeek() +mixup_op = MixupOperator() +cutmix_op = CutmixOperator() + +ops = [decode_op, resize_op, tochw_op] + +imgs_dir = image_path + +batch = [] +fnames = os.listdir(imgs_dir) +for idx, f in enumerate(fnames): + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) + batch.append( (img, idx) ) # fake label + +new_batch = mixup_op(batch) +``` + +The images after `Mixup` are as follows. + +![][test_mixup] + +## Cutmix + +Address: [https://arxiv.org/pdf/1905.04899v2.pdf](https://arxiv.org/pdf/1905.04899v2.pdf) + +Github repo: [https://github.com/clovaai/CutMix-PyTorch](https://github.com/clovaai/CutMix-PyTorch) + +Unlike `Mixup` which directly adds two images, for Cutmix, an `ROI` is cut out from one image and +Cutmix randomly cuts out an `ROI` from one image, and then covered onto the corresponding area in the another image. The usage of `Cutmix` in PaddleClas is shown below. + + +```python +rom ppcls.data.imaug import DecodeImage +from ppcls.data.imaug import ResizeImage +from ppcls.data.imaug import ToCHWImage +from ppcls.data.imaug import transform +from ppcls.data.imaug import CutmixOperator + +size = 224 + +decode_op = DecodeImage() +resize_op = ResizeImage(size=(size, size)) +tochw_op = ToCHWImage() +hide_and_seek_op = HideAndSeek() +cutmix_op = CutmixOperator() + +ops = [decode_op, resize_op, tochw_op] + +imgs_dir = image_path + +batch = [] +fnames = os.listdir(imgs_dir) +for idx, f in enumerate(fnames): + data = open(os.path.join(imgs_dir, f)).read() + img = transform(data, ops) + batch.append( (img, idx) ) # fake label + +new_batch = cutmix_op(batch) +``` + +The images after `Cutmix` are as follows. + +![][test_cutmix] + + +# Experiments + +Based on PaddleClas, Metrics of different augmentation methods on ImageNet1k dataset are as follows. + + +| Model | Learning strategy | l2 decay | batch size | epoch | Augmentation method | Top1 Acc | Reference | +|-------------|------------------|--------------|------------|-------|----------------|------------|----| +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | Standard transform | 0.7731 | - | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | AutoAugment | 0.7795 | 0.7763 | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | mixup | 0.7828 | 0.7790 | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | cutmix | 0.7839 | 0.7860 | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | cutout | 0.7801 | - | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | gridmask | 0.7785 | 0.7790 | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | random-augment | 0.7770 | 0.7760 | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | random erasing | 0.7791 | - | +| ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | hide and seek | 0.7743 | 0.7720 | + + +**note**: +* In the experiment here, for better comparison, we fixed the l2 decay to 1e-4. To achieve higher accuracy, we recommend trying to use a smaller l2 decay. Combined with data augmentaton, we found that reducing l2 decay from 1e-4 to 7e-5 can bring at least 0.3~0.5% accuracy improvement. +* We have not yet combined different strategies or verified, whch is our future work. + + + +## Data augmentation practice + +Experiments about data augmentation will be introduced in detail in this section. If you want to quickly experience these methods, please refer to [**Quick start PaddleClas in 30 miniutes**](../../tutorials/quick_start_en.md). + +## Configurations + +Since hyperparameters differ from different augmentation methods. For better understanding, we list 8 augmentation configuration files in `configs/DataAugment` based on ResNet50. Users can train the model with `tools/run.sh`. The following are 3 of them. + +### RandAugment + +Configuration of `RandAugment` is shown as follows. `Num_layers`(default as 2) and `magnitude`(default as 5) are two hyperparameters. + + +```yaml + transforms: + - DecodeImage: + to_rgb: True + to_np: False + channel_first: False + - RandCropImage: + size: 224 + - RandFlipImage: + flip_code: 1 + - RandAugment: + num_layers: 2 + magnitude: 5 + - NormalizeImage: + scale: 1./255. + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - ToCHWImage: +``` + +### Cutout + +Configuration of `Cutout` is shown as follows. `n_holes`(default as 1) and `n_holes`(default as 112) are two hyperparameters. + +```yaml + transforms: + - DecodeImage: + to_rgb: True + to_np: False + channel_first: False + - RandCropImage: + size: 224 + - RandFlipImage: + flip_code: 1 + - NormalizeImage: + scale: 1./255. + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - Cutout: + n_holes: 1 + length: 112 + - ToCHWImage: +``` + +### Mixup + + +Configuration of `Mixup` is shown as follows. `alpha`(default as 0.2) is hyperparameter which users need to care about. What's more, `use_mix` need to be set as `True` in the root of the configuration. + +```yaml + transforms: + - DecodeImage: + to_rgb: True + to_np: False + channel_first: False + - RandCropImage: + size: 224 + - RandFlipImage: + flip_code: 1 + - NormalizeImage: + scale: 1./255. + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - ToCHWImage: + mix: + - MixupOperator: + alpha: 0.2 +``` + +## 启动命令 + +Users can use the following command to start the training process, which can also be referred to `tools/run.sh`. + +```bash +export PYTHONPATH=path_to_PaddleClas:$PYTHONPATH + +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + tools/train.py \ + -c ./configs/DataAugment/ResNet50_Cutout.yaml +``` + +## Note + +* When using augmentation methods based on image aliasing, users need to set `use_mix` in the configuration file as `True`. In addition, because the label needs to be aliased when the image is aliased, the accuracy of the training data cannot be calculated. The training accuracy rate was not printed during the training process. + +* The training data is more difficult with data augmentation, so the training loss may be larger, the training set accuracy is relatively low, but it has better generalization ability, so the validation set accuracy is relatively higher. + +* After the use of data augmentation, the model may tend to be underfitting. It is recommended to reduce `l2_decay` for better performance on validation set. + +* hyperparameters exist in almost all agmenatation methods. Here we provide hyperparameters for ImageNet1k dataset. User may need to finetune the hyperparameters on specified dataset. More training tricks can be referred to [**Tricks**](../../../zh_CN/models/Tricks.md). + + +> If this document is helpful to you, welcome to star our project: [https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) + + +# Reference + +[1] Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation strategies from data[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 113-123. + + +[2] Cubuk E D, Zoph B, Shlens J, et al. Randaugment: Practical automated data augmentation with a reduced search space[J]. arXiv preprint arXiv:1909.13719, 2019. + +[3] DeVries T, Taylor G W. Improved regularization of convolutional neural networks with cutout[J]. arXiv preprint arXiv:1708.04552, 2017. + +[4] Zhong Z, Zheng L, Kang G, et al. Random erasing data augmentation[J]. arXiv preprint arXiv:1708.04896, 2017. + +[5] Singh K K, Lee Y J. Hide-and-seek: Forcing a network to be meticulous for weakly-supervised object and action localization[C]//2017 IEEE international conference on computer vision (ICCV). IEEE, 2017: 3544-3553. + +[6] Chen P. GridMask Data Augmentation[J]. arXiv preprint arXiv:2001.04086, 2020. + +[7] Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond empirical risk minimization[J]. arXiv preprint arXiv:1710.09412, 2017. + +[8] Yun S, Han D, Oh S J, et al. Cutmix: Regularization strategy to train strong classifiers with localizable features[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 6023-6032. + + + +[test_baseline]: ../../../images/image_aug/test_baseline.jpeg +[test_autoaugment]: ../../../images/image_aug/test_autoaugment.jpeg +[test_cutout]: ../../../images/image_aug/test_cutout.jpeg +[test_gridmask]: ../../../images/image_aug/test_gridmask.jpeg +[gridmask-0]: ../../../images/image_aug/gridmask-0.png +[test_hideandseek]: ../../../images/image_aug/test_hideandseek.jpeg +[test_randaugment]: ../../../images/image_aug/test_randaugment.jpeg +[test_randomerassing]: ../../../images/image_aug/test_randomerassing.jpeg +[hide_and_seek_mask_expanation]: ../../../images/image_aug/hide-and-seek-visual.png +[test_mixup]: ../../../images/image_aug/test_mixup.png +[test_cutmix]: ../../../images/image_aug/test_cutmix.png diff --git a/docs/en/advanced_tutorials/image_augmentation/index.rst b/docs/en/advanced_tutorials/image_augmentation/index.rst index 7f47334d..18291187 100644 --- a/docs/en/advanced_tutorials/image_augmentation/index.rst +++ b/docs/en/advanced_tutorials/image_augmentation/index.rst @@ -4,4 +4,4 @@ image_augmentation .. toctree:: :maxdepth: 3 - ImageAugment.md + ImageAugment_en.md diff --git a/docs/en/application/index.rst b/docs/en/application/index.rst index 16bfb703..971ae12d 100644 --- a/docs/en/application/index.rst +++ b/docs/en/application/index.rst @@ -4,5 +4,5 @@ application .. toctree:: :maxdepth: 2 - transfer_learning.md - object_detection.md + transfer_learning_en.md + object_detection_en.md diff --git a/docs/en/application/object_detection_en.md b/docs/en/application/object_detection_en.md new file mode 100644 index 00000000..b9936053 --- /dev/null +++ b/docs/en/application/object_detection_en.md @@ -0,0 +1,40 @@ +# General object detection + +## Practical Server-side detection method base on RCNN + +### Introduction + + +* In recent years, object detection tasks have attracted widespread attention. [PaddleClas](https://github.com/PaddlePaddle/PaddleClas) open-sourced the ResNet50_vd_SSLD pretrained model based on ImageNet(Top1 Acc 82.4%). And based on the pretrained model, PaddleDetection provided the PSS-DET (Practical Server-side detection) with the help of the rich operators in PaddleDetection. The inference speed can reach 61FPS on single V100 GPU when COCO mAP is 41.6%, and 20FPS when COCO mAP is 47.8%. + +* We take the standard `Faster RCNN ResNet50_vd FPN` as an example. The following table shows ablation study of PSS-DET. + +| Trick | Train scale | Test scale | COCO mAP | Infer speed/FPS | +|- |:-: |:-: | :-: | :-: | +| `baseline` | 640x640 | 640x640 | 36.4% | 43.589 | +| +`test proposal=pre/post topk 500/300` | 640x640 | 640x640 | 36.2% | 52.512 | +| +`fpn channel=64` | 640x640 | 640x640 | 35.1% | 67.450 | +| +`ssld pretrain` | 640x640 | 640x640 | 36.3% | 67.450 | +| +`ciou loss` | 640x640 | 640x640 | 37.1% | 67.450 | +| +`DCNv2` | 640x640 | 640x640 | 39.4% | 60.345 | +| +`3x, multi-scale training` | 640x640 | 640x640 | 41.0% | 60.345 | +| +`auto augment` | 640x640 | 640x640 | 41.4% | 60.345 | +| +`libra sampling` | 640x640 | 640x640 | 41.6% | 60.345 | + + +Based on the ablation experiments, Cascade RCNN and larger inference scale(1000x1500) are used for better performance. The final COCO mAP is 47.8% +and the following figure shows `mAP-Speed` curves for some common detectors. + + +![pssdet](../../images/det/pssdet.png) + + +**Note** +> For fair comparison, inference time for PSS-DET models on V100 GPU is transformed to Titan V GPU by multiplying by 1.2 times. + +For more detailed information, you can refer to [PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/rcnn_server_side_det). + + +## Practical Mobile-side detection method base on RCNN + +* This part is comming soon! diff --git a/docs/en/application/transfer_learning_en.md b/docs/en/application/transfer_learning_en.md new file mode 100644 index 00000000..ba67c486 --- /dev/null +++ b/docs/en/application/transfer_learning_en.md @@ -0,0 +1,88 @@ +# Transfer learning in image classification + +Transfer learning is an important part of machine learning, which is widely used in various fields such as text and images. Here we mainly introduce transfer learning in the field of image classification, which is often called domain transfer, such as migration of the ImageNet classification model to the specified image classification task, such as flower classification. + +## Hyperparameter search + +ImageNet is the widely used dataset for image classification. A series of empirical hyperparameters have been summarized. High accuracy can be got using the hyperparameters. However, when applied in the specified dataset, the hyperparameters may not be optimal. There are two commonly used hyperparameter search methods that can be used to help us obtain better model hyperparameters. + +### Grid search + +For grid search, which is also called exhaustive search, the optimal value is determined by finding the best solution from all solutions in the search space. The method is simple and effective, but when the search space is large, it takes huge computing resource. + +### Bayesian search + +Bayesian search, which is also called Bayesian optimization, is realized by randomly selecting a group of hyperparameters in the search space. Gaussian process is used to update the hyperparameters, compute their expected mean and variance according to the performance of the previous hyperparameters. The larger the expected mean, the greater the probability of being close to the optimal solution. The larger the expected variance, the greater the uncertainty. Usually, the hyperparameter point with large expected mean is called `exporitation`, and the hyperparameter point with large variance is called `exploration`. Acquisition function is defined to balance the expected mean and variance. The currently selected hyperparameter point is viewed as the optimal position with maximum probability. + +According to the above two search schemes, we carry out some experiments based on fixed scheme and two search schemes on 8 open source datasets. As the experimental scheme in [1], we search for 4 hyperparameters, the search space and The experimental results are as follows: + +a fixed set of parameter experiments and two search schemes on 8 open source data sets. With reference to the experimental scheme of [1], we search for 4 hyperparameters, the search space and the experimental results are as follows: + + +- Fixed scheme. + +``` +lr=0.003,l2 decay=1e-4,label smoothing=False,mixup=False +``` + +- Search space of the hyperparameters. + +``` +lr: [0.1, 0.03, 0.01, 0.003, 0.001, 0.0003, 0.0001] + +l2 decay: [1e-3, 3e-4, 1e-4, 3e-5, 1e-5, 3e-6, 1e-6] + +label smoothing: [False, True] + +mixup: [False, True] +``` + +It takes 196 times for grid search, and takes 10 times less for Bayesian search. The baseline is trained by using ImageNet1k pretrained model based on ResNet50_vd and fixed scheme. The follow shows the experiments. + + +| Dataset | Fix scheme | Grid search | Grid search time | Bayesian search | Bayesian search time| +| ------------------ | -------- | -------- | -------- | -------- | ---------- | +| Oxford-IIIT-Pets | 93.64% | 94.55% | 196 | 94.04% | 20 | +| Oxford-102-Flowers | 96.08% | 97.69% | 196 | 97.49% | 20 | +| Food101 | 87.07% | 87.52% | 196 | 87.33% | 23 | +| SUN397 | 63.27% | 64.84% | 196 | 64.55% | 20 | +| Caltech101 | 91.71% | 92.54% | 196 | 92.16% | 14 | +| DTD | 76.87% | 77.53% | 196 | 77.47% | 13 | +| Stanford Cars | 85.14% | 92.72% | 196 | 92.72% | 25 | +| FGVC Aircraft | 80.32% | 88.45% | 196 | 88.36% | 20 | + + +- The above experiments verify that Bayesian search only reduces the accuracy by 0% to 0.4% under the condition of reducing the number of searches by about 10 times compared to grid search. +- The search space can be expaned easily using Bayesian search. + +## Large-scale image classification + +In practical applications, due to the lack of training data, the classification model trained on the ImageNet1k data set is often used as the pretrained model for other image classification tasks. In order to further help solve practical problems, based on ResNet50_vd, Baidu open sourced a self-developed large-scale classification pretrained model, in which the training data contains 100,000 categories and 43 million pictures. The pretrained model can be downloaded as follows:[**download link**](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_10w_pretrained.tar) + +We conducted transfer learning experiments on 6 self-collected datasets, + +using a set of fixed parameters and a grid search method, in which the number of training rounds was set to 20epochs, the ResNet50_vd model was selected, and the ImageNet pre-training accuracy was 79.12%. The comparison results of the experimental data set parameters and model accuracy are as follows: + + +Fixed scheme: + +``` +lr=0.001,l2 decay=1e-4,label smoothing=False,mixup=False +``` + +| Dataset | Statstics | **Pretrained moel on ImageNet
Top-1(fixed)/Top-1(search)** | **Pretrained moel on large-scale dataset
Top-1(fixed)/Top-1(search)** | +| --------------- | ----------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------- | +| Flowers | class:102
train:5789
valid:2396 | 0.7779/0.9883 | 0.9892/0.9954 | +| Hand-painted stick figures | Class:18
train:1007
valid:432 | 0.8795/0.9196 | 0.9107/0.9219 | +| Leaves | class:6
train:5256
valid:2278 | 0.8212/0.8482 | 0.8385/0.8659 | +| Container vehicle | Class:115
train:4879
valid:2094 | 0.6230/0.9556 | 0.9524/0.9702 | +| Chair | class:5
train:169
valid:78 | 0.8557/0.9688 | 0.9077/0.9792 | +| Geology | class:4
train:671
valid:296 | 0.5719/0.8094 | 0.6781/0.8219 | + +- The above experiments verified that for fixed parameters, compared with the pretrained model on ImageNet, using the large-scale classification model as a pretrained model can help us improve the model performance on a new dataset in most cases. Parameter search can be further helpful to the model performance. + +## Reference + +[1] Kornblith, Simon, Jonathon Shlens, and Quoc V. Le. "Do better imagenet models transfer better?." *Proceedings of the IEEE conference on computer vision and pattern recognition*. 2019. + +[2] Kolesnikov, Alexander, et al. "Large Scale Learning of General Visual Representations for Transfer." *arXiv preprint arXiv:1912.11370* (2019). diff --git a/docs/en/competition_support_en.md b/docs/en/competition_support_en.md new file mode 100644 index 00000000..da63d960 --- /dev/null +++ b/docs/en/competition_support_en.md @@ -0,0 +1,21 @@ +### Competition Support + +PaddleClas stems from the Baidu's visual business applications and the exploration of frontier visual capabilities. It has helped us achieve leading results in many key events, and continues to promote more frontier visual solutions and landing applications. + + +* 1st place in 2018 Kaggle Open Images V4 object detection challenge + + +* 2nd place in 2019 Kaggle Open Images V5 object detection challenge + * The report is avaiable here: [https://arxiv.org/pdf/1911.07171.pdf](https://arxiv.org/pdf/1911.07171.pdf) + * The pretrained model and code is avaiable here: [source code](https://github.com/PaddlePaddle/PaddleDetection/blob/master/docs/featured_model/OIDV5_BASELINE_MODEL.md) + +* 2nd place in Kacggle Landmark Retrieval Challenge 2019 + * The report is avaiable here: [https://arxiv.org/abs/1906.03990](https://arxiv.org/abs/1906.03990) + * The pretrained model and code is avaiable here: [source code](https://github.com/PaddlePaddle/Research/tree/master/CV/landmark) + +* 2nd place in Kaggle Landmark Recognition Challenge 2019 + * The report is avaiable here: [https://arxiv.org/abs/1906.03990](https://arxiv.org/abs/1906.03990) + * The pretrained model and code is avaiable here: [source code](https://github.com/PaddlePaddle/Research/tree/master/CV/landmark) + +* A-level certificate of three tasks: printed text OCR, face recognition and landmark recognition in the first multimedia information recognition technology competition diff --git a/docs/en/extension/index.rst b/docs/en/extension/index.rst index cc17c18a..4d72ea47 100644 --- a/docs/en/extension/index.rst +++ b/docs/en/extension/index.rst @@ -4,9 +4,9 @@ extension .. toctree:: :maxdepth: 1 - paddle_inference.md - paddle_mobile_inference.md - paddle_quantization.md - multi_machine_training.md - paddle_hub.md - paddle_serving.md + paddle_inference_en.md + paddle_mobile_inference_en.md + paddle_quantization_en.md + multi_machine_training_en.md + paddle_hub_en.md + paddle_serving_en.md diff --git a/docs/en/extension/multi_machine_training_en.md b/docs/en/extension/multi_machine_training_en.md new file mode 100644 index 00000000..d4fb9978 --- /dev/null +++ b/docs/en/extension/multi_machine_training_en.md @@ -0,0 +1,11 @@ +# Distributed Training + +Distributed deep neural networks training is highly efficient in PaddlePaddle. +And it is one of the PaddlePaddle's core advantage technologies. +On image classification tasks, distributed training can achieve almost linear acceleration ratio. +[Fleet](https://github.com/PaddlePaddle/Fleet) is High-Level API for distributed training in PaddlePaddle. +By using Fleet, a user can shift from local machine paddlepaddle code to distributed code easily. +In order to support both single-machine training and multi-machine training, +[PaddleClas](https://github.com/PaddlePaddle/PaddleClas) uses the Fleet API interface. +For more information about distributed training, +please refer to [Fleet API documentation](https://github.com/PaddlePaddle/Fleet/blob/develop/README.md). diff --git a/docs/en/extension/paddle_hub_en.md b/docs/en/extension/paddle_hub_en.md new file mode 100644 index 00000000..d9d833a0 --- /dev/null +++ b/docs/en/extension/paddle_hub_en.md @@ -0,0 +1,6 @@ +# Paddle Hub + +[PaddleHub](https://github.com/PaddlePaddle/PaddleHub) is a pre-trained model application tool for PaddlePaddle. +Developers can conveniently use the high-quality pre-trained model combined with Fine-tune API to quickly complete the whole process from model migration to deployment. +All the pre-trained models of [PaddleClas](https://github.com/PaddlePaddle/PaddleClas) have been collected by PaddleHub. +For further details, please refer to [PaddleHub website](https://www.paddlepaddle.org.cn/hub). diff --git a/docs/en/extension/paddle_inference_en.md b/docs/en/extension/paddle_inference_en.md new file mode 100644 index 00000000..14385b62 --- /dev/null +++ b/docs/en/extension/paddle_inference_en.md @@ -0,0 +1,261 @@ +# Prediction Framework + +## Introduction + +Models for Paddle are stored in many different forms, which can be roughly divided into two categories: +1. persistable model(the models saved by fluid.save_persistables) + The weights are saved in checkpoint, which can be loaded to retrain, one scattered weight file saved by persistable stands for one persistable variable in the model, there is no structure information in these variable, so the weights should be used with the model structure. + ``` + resnet50-vd-persistable/ + ├── bn2a_branch1_mean + ├── bn2a_branch1_offset + ├── bn2a_branch1_scale + ├── bn2a_branch1_variance + ├── bn2a_branch2a_mean + ├── bn2a_branch2a_offset + ├── bn2a_branch2a_scale + ├── ... + └── res5c_branch2c_weights + ``` +2. inference model(the models saved by fluid.io.save_inference_model) + The model saved by this function cam be used for inference directly, compared with the ones saved by persistable, the model structure will be additionally saved in the model, with the weights, the model with trained weights can be reconstruction. as shown in the following figure, the structure information is saved in `model` + ``` + resnet50-vd-persistable/ + ├── bn2a_branch1_mean + ├── bn2a_branch1_offset + ├── bn2a_branch1_scale + ├── bn2a_branch1_variance + ├── bn2a_branch2a_mean + ├── bn2a_branch2a_offset + ├── bn2a_branch2a_scale + ├── ... + ├── res5c_branch2c_weights + └── model + ``` + For convenience, all weight files will be saved into a `params` file when saving the inference model on Paddle, as shown below: + ``` + resnet50-vd + ├── model + └── params + ``` + +Both the training engine and the prediction engine in Paddle support the model's e inference, but the back propagation is not performed during the inference, so it can be customized optimization (such as layer fusion, kernel selection, etc.) to achieve low latency and high throughput during inference. The training engine can support either the persistable model or the inference model, and the prediction engine only supports the inference model, so three different inferences are derived: + +1. prediction engine + inference model +2. training engine + inference model +3. training engine + inference model + +Regardless of the inference method, it basically includes the following main steps: ++ Engine Build ++ Make Data to Be Predicted ++ Perform Predictions ++ Result Analysis + +There are two main differences in different inference methods: building the engine and executing the forecast. The following sections will be introduced in detail + + +## Model Transformation + +During training, we usually save some checkpoints (persistable models). These are just model weight files and cannot be directly loaded by the prediction engine to predict, so we usually find suitable checkpoints after the training and convert them to inference model. There are two main steps: 1. Build a training engine, 2. Save the inference model, as shown below. + +```python +import fluid + +from ppcls.modeling.architectures.resnet_vd import ResNet50_vd + +place = fluid.CPUPlace() +exe = fluid.Executor(place) +startup_prog = fluid.Program() +infer_prog = fluid.Program() +with fluid.program_guard(infer_prog, startup_prog): + with fluid.unique_name.guard(): + image = create_input() + image = fluid.data(name='image', shape=[None, 3, 224, 224], dtype='float32') + out = ResNet50_vd.net(input=input, class_dim=1000) + +infer_prog = infer_prog.clone(for_test=True) +fluid.load(program=infer_prog, model_path=the path of persistable model, executor=exe) + +fluid.io.save_inference_model( + dirname='./output/', + feeded_var_names=[image.name], + main_program=infer_prog, + target_vars=out, + executor=exe, + model_filename='model', + params_filename='params') +``` + +A complete example is provided in the `tools/export_model.py`, just execute the following command to complete the conversion: + +```python +python tools/export_model.py \ + --m=the name of model \ + --p=the path of persistable model\ + --o=the saved path of model and params +``` + +## Prediction engine + inference model + +The complete example is provided in the `tools/infer/predict.py`,just execute the following command to complete the prediction: + +``` +python ./tools/infer/predict.py \ + -i=./test.jpeg \ + -m=./resnet50-vd/model \ + -p=./resnet50-vd/params \ + --use_gpu=1 \ + --use_tensorrt=True +``` + +Parameter Description: ++ `image_file`(shortening i):the path of images which are needed to predict,such as `./test.jpeg`. ++ `model_file`(shortening m):the path of weights folder,such as `./resnet50-vd/model`. ++ `params_file`(shortening p):the path of weights file,such as `./resnet50-vd/params`. ++ `batch_size`(shortening b):batch size,such as `1`. ++ `ir_optim` whether to use `IR` optimization, default: True. ++ `use_tensorrt`: whether to use TensorRT prediction engine, default:True. ++ `gpu_mem`: Initial allocation of GPU memory, the unit is M. ++ `use_gpu`: whether to use GPU, default: True. ++ `enable_benchmark`:whether to use benchmark, default: False. ++ `model_name`:the name of model. + +NOTE: +when using benchmark, we use tersorrt by default to make predictions on Paddle. + + +Building prediction engine: + +```python +from paddle.fluid.core import AnalysisConfig +from paddle.fluid.core import create_paddle_predictor +config = AnalysisConfig(the path of model file, the path of params file) +config.enable_use_gpu(8000, 0) +config.disable_glog_info() +config.switch_ir_optim(True) +config.enable_tensorrt_engine( + precision_mode=AnalysisConfig.Precision.Float32, + max_batch_size=1) + +# no zero copy方式需要去除fetch feed op +config.switch_use_feed_fetch_ops(False) + +predictor = create_paddle_predictor(config) +``` + +Prediction Execution: + +```python +import numpy as np + +input_names = predictor.get_input_names() +input_tensor = predictor.get_input_tensor(input_names[0]) +input = np.random.randn(1, 3, 224, 224).astype("float32") +input_tensor.reshape([1, 3, 224, 224]) +input_tensor.copy_from_cpu(input) +predictor.zero_copy_run() +``` + +More parameters information can be refered in [Paddle Python prediction API](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/python_infer_cn.html). If you need to predict in the environment of business, we recommand you to use [Paddel C++ prediction API](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/native_infer.html),a rich pre-compiled prediction library is provided in the offical website[Paddle C++ prediction library](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html)。 + + +By default, Paddle's wheel package does not include the TensorRT prediction engine. If you need to use TensorRT for prediction optimization, you need to compile the corresponding wheel package yourself. For the compilation method, please refer to Paddle's compilation guide. [Paddle compilation](https://www.paddlepaddle.org.cn/documentation/docs/zh/install/compile/fromsource.html)。 + +## Training engine + persistable model prediction + +A complete example is provided in the `tools/infer/infer.py`, just execute the following command to complete the prediction: + +```python +python tools/infer/infer.py \ + --i=the path of images which are needed to predict \ + --m=the name of model \ + --p=the path of persistable model \ + --use_gpu=True +``` + +Parameter Description: ++ `image_file`(shortening i):the path of images which are needed to predict,such as `./test.jpeg` ++ `model_file`(shortening m):the path of weights folder,such as `./resnet50-vd/model` ++ `params_file`(shortening p):the path of weights file,such as `./resnet50-vd/params` ++ `use_gpu` : whether to use GPU, default: True. + + +Training Engine Construction: + +Since the persistable model does not contain the structural information of the model, it is necessary to construct the network structure first, and then load the weights to build the training engine。 + +```python +import fluid +from ppcls.modeling.architectures.resnet_vd import ResNet50_vd + +place = fluid.CPUPlace() +exe = fluid.Executor(place) +startup_prog = fluid.Program() +infer_prog = fluid.Program() +with fluid.program_guard(infer_prog, startup_prog): + with fluid.unique_name.guard(): + image = create_input() + image = fluid.data(name='image', shape=[None, 3, 224, 224], dtype='float32') + out = ResNet50_vd.net(input=input, class_dim=1000) +infer_prog = infer_prog.clone(for_test=True) +fluid.load(program=infer_prog, model_path=the path of persistable model, executor=exe) +``` + +Perform inference: + +```python +outputs = exe.run(infer_prog, + feed={image.name: data}, + fetch_list=[out.name], + return_numpy=False) +``` + +For the above parameter descriptions, please refer to the official website [fluid.Executor](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/executor_cn/Executor_cn.html) + +## Training engine + inference model prediction + +A complete example is provided in `tools/infer/py_infer.py`, just execute the following command to complete the prediction: + +```python +python tools/infer/py_infer.py \ + --i=the path of images \ + --d=the path of saved model \ + --m=the path of saved model file \ + --p=the path of saved weight file \ + --use_gpu=True +``` ++ `image_file`(shortening i):the path of images which are needed to predict,如 `./test.jpeg` ++ `model_file`(shortening m):the path of model file,如 `./resnet50_vd/model` ++ `params_file`(shortening p):the path of weights file,如 `./resnet50_vd/params` ++ `model_dir`(shortening d):the folder of model,如`./resent50_vd` ++ `use_gpu`:whether to use GPU, default: True + +Training engine build + +Since inference model contains the structure of model, we do not need to construct the model before, load the model file and weights file directly to bulid training engine. + +```python +import fluid + +place = fluid.CPUPlace() +exe = fluid.Executor(place) +[program, feed_names, fetch_lists] = fluid.io.load_inference_model( + the path of saved model, + exe, + model_filename=the path of model file, + params_filename=the path of weights file) +compiled_program = fluid.compiler.CompiledProgram(program) +``` + +> `load_inference_model` Not only supports scattered weight file collection, but also supports a single weight file。 + +Perform inference: + +```python +outputs = exe.run(compiled_program, + feed={feed_names[0]: data}, + fetch_list=fetch_lists, + return_numpy=False) +``` + +For the above parameter descriptions, please refer to the official website [fluid.Executor](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/executor_cn/Executor_cn.html) diff --git a/docs/en/extension/paddle_mobile_inference_en.md b/docs/en/extension/paddle_mobile_inference_en.md new file mode 100644 index 00000000..bf9252a0 --- /dev/null +++ b/docs/en/extension/paddle_mobile_inference_en.md @@ -0,0 +1,114 @@ +# Paddle-Lite + +## Introduction + +[Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite) is a set of lightweight inference engine which is fully functional, easy to use and then performs well. Lightweighting is reflected in the use of fewer bits to represent the weight and activation of the neural network, which can greatly reduce the size of the model, solve the problem of limited storage space of the mobile device, and the inference speed is better than other frameworks on the whole. + +In [PaddleClas](https://github.com/PaddlePaddle/PaddleClas), we uses Paddle-Lite to [evaluate the performance on the mobile device](../models/Mobile.md), in this section we uses the `MobileNetV1` model trained on the `ImageNet1k` dataset as an example to introduce how to use `Paddle-Lite` to evaluate the model speed on the mobile terminal (evaluated on SD855) + +## Evaluation Steps + +### Export the Inference Model + +* First you should transform the saved model during training to the special model which can be used to inference, the special model can be exported by `tools/export_model.py`, the specific way of transform is as follows. + +```shell +python tools/export_model.py -m MobileNetV1 -p pretrained/MobileNetV1_pretrained/ -o inference/MobileNetV1 +``` + +Finally the `model` and `parmas` can be saved in `inference/MobileNetV1`. + + +### Download Benchmark Binary File + +* Use the adb (Android Debug Bridge) tool to connect the Android phone and the PC, then develop and debug. After installing adb and ensuring that the PC and the phone are successfully connected, use the following command to view the ARM version of the phone and select the pre-compiled library based on ARM version. + +```shell +adb shell getprop ro.product.cpu.abi +``` + +* Download Benchmark_bin File + +```shell +wget -c https://paddle-inference-dist.bj.bcebos.com/PaddleLite/benchmark_0/benchmark_bin_v8 +``` + +If the ARM version is v7, the v7 benchmark_bin file should be downloaded, the command is as follow. + +```shell +wget -c https://paddle-inference-dist.bj.bcebos.com/PaddleLite/benchmark_0/benchmark_bin_v7 +``` + +### Inference benchmark + +After the PC and mobile phone are successfully connected, use the following command to start the model evaluation. + +``` +sh tools/lite/benchmark.sh ./benchmark_bin_v8 ./inference result_armv8.txt true +``` + +Where `./benchmark_bin_v8` is the path of the benchmark binary file, `./inference` is the path of all the models that need to be evaluated, `result_armv8.txt` is the result file, and the final parameter `true` means that the model will be optimized before evaluation. Eventually, the evaluation result file of `result_armv8.txt` will be saved in the current folder. The specific performances are as follows. + +``` +PaddleLite Benchmark +Threads=1 Warmup=10 Repeats=30 +MobileNetV1 min = 30.89100 max = 30.73600 average = 30.79750 + +Threads=2 Warmup=10 Repeats=30 +MobileNetV1 min = 18.26600 max = 18.14000 average = 18.21637 + +Threads=4 Warmup=10 Repeats=30 +MobileNetV1 min = 10.03200 max = 9.94300 average = 9.97627 +``` + +Here is the model inference speed under different number of threads, the unit is FPS, taking model on one threads as an example, the average speed of MobileNetV1 on SD855 is `30.79750FPS`. + +### Model Optimization and Speed Evaluation + +* In II.III section, we mention that the model will be optimized before evaluation, here you can first optimize the model, and then directly load the optimized model for speed evaluation + +* Paddle-Lite +In Paddle-Lite, we provides multiple strategies to automatically optimize the original training model, which contain Quantify, Subgraph fusion, Hybrid scheduling, Kernel optimization and so on. In order to make the optimization more convenient and easy to use, we provide opt tools to automatically complete the optimization steps and output a lightweight, optimal and executable model in Paddle-Lite, which can be downloaded on [Paddle-Lite Model Optimization Page](https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html). Here we take `MacOS` as our development environment, download[opt_mac](https://paddlelite-data.bj.bcebos.com/model_optimize_tool/opt_mac) model optimization tools and use the following commands to optimize the model. + + +```shell +model_file="../MobileNetV1/model" +param_file="../MobileNetV1/params" +opt_models_dir="./opt_models" +mkdir ${opt_models_dir} +./opt_mac --model_file=${model_file} \ + --param_file=${param_file} \ + --valid_targets=arm \ + --optimize_out_type=naive_buffer \ + --prefer_int8_kernel=false \ + --optimize_out=${opt_models_dir}/MobileNetV1 +``` + +Where the `model_file` and `param_file` are exported model file and the file address respectively, after transforming successfully, the `MobileNetV1.nb` will be saved in `opt_models` + + + +Use the benchmark_bin file to load the optimized model for evaluation. The commands are as follows. + +```shell +bash benchmark.sh ./benchmark_bin_v8 ./opt_models result_armv8.txt +``` + +Finally the result is saved in `result_armv8.txt` and shown as follow. + +``` +PaddleLite Benchmark +Threads=1 Warmup=10 Repeats=30 +MobileNetV1_lite min = 30.89500 max = 30.78500 average = 30.84173 + +Threads=2 Warmup=10 Repeats=30 +MobileNetV1_lite min = 18.25300 max = 18.11000 average = 18.18017 + +Threads=4 Warmup=10 Repeats=30 +MobileNetV1_lite min = 10.00600 max = 9.90000 average = 9.96177 +``` + + +Taking the model on one threads as an example, the average speed of MobileNetV1 on SD855 is `30.84173FPS`. + +More specific parameter explanation and Paddle-Lite usage can refer to [Paddle-Lite docs](https://paddle-lite.readthedocs.io/zh/latest/)。 diff --git a/docs/en/extension/paddle_quantization_en.md b/docs/en/extension/paddle_quantization_en.md new file mode 100644 index 00000000..7f822444 --- /dev/null +++ b/docs/en/extension/paddle_quantization_en.md @@ -0,0 +1,12 @@ +# Model Quantifization + +Int8 quantization is one of the key features in [PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim). +It supports two kinds of training aware, **Dynamic strategy** and **Static strategy**, +layer-wise and channel-wise quantization, +and using PaddleLite to deploy models generated by PaddleSlim. + +By using this toolkit, [PaddleClas](https://github.com/PaddlePaddle/PaddleClas) quantized the mobilenet_v3_large_x1_0 model whose accuracy is 78.9% after distilled. +After quantized, the prediction speed is accelerated from 19.308ms to 14.395ms on SD855. +The storage size is reduced from 21M to 10M. +The top1 recognition accuracy rate is 75.9%. +For specific training methods, please refer to [PaddleSlim quant aware](https://paddlepaddle.github.io/PaddleSlim/quick_start/quant_aware_tutorial.html)。 diff --git a/docs/en/extension/paddle_serving_en.md b/docs/en/extension/paddle_serving_en.md new file mode 100644 index 00000000..3ad25952 --- /dev/null +++ b/docs/en/extension/paddle_serving_en.md @@ -0,0 +1,64 @@ +# Model Service Deployment + +## Overview +[Paddle Serving](https://github.com/PaddlePaddle/Serving) aims to help deep-learning researchers to easily deploy online inference services, supporting one-click deployment of industry, high concurrency and efficient communication between client and server and supporting multiple programming languages to develop clients. + +Taking HTTP inference service deployment as an example to introduce how to use PaddleServing to deploy model services in PaddleClas. + +## Serving Install + +It is recommends to use docker to install and deploy the Serving environment in the Serving official website, first, you need to pull the docker environment and create Serving-based docker. + +```shell +nvidia-docker pull hub.baidubce.com/paddlepaddle/serving:0.2.0-gpu +nvidia-docker run -p 9292:9292 --name test -dit hub.baidubce.com/paddlepaddle/serving:0.2.0-gpu +nvidia-docker exec -it test bash +``` + +In docker, you need to install some packages about Serving + +```shell +pip install paddlepaddle-gpu +pip install paddle-serving-client +pip install paddle-serving-server-gpu +``` + +* If the installation speed is too slow, you can add `-i https://pypi.tuna.tsinghua.edu.cn/simple` following pip to speed up the process. + +* If you want to deploy CPU service, you can install the cpu version of Serving, the command is as follow. + +```shell +pip install paddle-serving-server +``` + +### Export Model + +Exporting the Serving model using `tools/export_serving_model.py`, taking ResNet50_vd as an example, the command is as follow. + +```shell +python tools/export_serving_model.py -m ResNet50_vd -p ./pretrained/ResNet50_vd_pretrained/ -o serving +``` + +finally, the client configures, model parameters and structure file will be saved in `ppcls_client_conf` and `ppcls_model`. + + +### Service Deployment and Request + +* Using the following commands to start the Serving. + +```shell +python tools/serving/image_service_gpu.py serving/ppcls_model workdir 9292 +``` + +`serving/ppcls_model` is the address of the Serving model just saved, `workdir` is the work directory, and `9292` is the port of the service. + + +* Using the following script to send an identification request to the Serving and return the result. + +``` +python tools/serving/image_http_client.py 9292 ./docs/images/logo.png +``` + +`9292` is the port for sending the request, which is consistent with the Serving starting port, and `./docs/images/logo.png` is the test image, the final top1 label and probability are returned. + +* For more Serving deployment, such RPC inference service, you can refer to the Serving official website: [https://github.com/PaddlePaddle/Serving/tree/develop/python/examples/imagenet](https://github.com/PaddlePaddle/Serving/tree/develop/python/examples/imagenet) diff --git a/docs/en/faq_en.md b/docs/en/faq_en.md new file mode 100644 index 00000000..6f34117f --- /dev/null +++ b/docs/en/faq_en.md @@ -0,0 +1,61 @@ +# FAQ + +>> +* Why are the metrics different for different cards? +* A: Fleet is the default option for the use of PaddleClas. Each GPU card is taken as a single trainer and deals with different images, which cause the final small difference. Single card evalution is suggested to get the accurate results if you use `tools/eval.py`. You can also use `tools/eval_multi_platform.py` to evalute the models on multiple GPU cards, which is also supported on Windows and CPU. + + +>> +* Q: Why `Mixup` or `Cutmix` is not used even if I have already add the data operation in the configuration file? +* A: When using `Mixup` or `Cutmix`, you also need to add `use_mix: True` in the configuration file to make it work properly. + + +>> +* Q: During evaluation and inference, pretrained model address is assgined, but the weights can not be imported. Why? +* A: Prefix of the pretrained model is needed. For example, if the pretained weights are located in `output/ResNet50_vd/19`, with the filename `output/ResNet50_vd/19/ppcls.pdparams`, then `pretrained_model` in the configuration file needs to be `output/ResNet50_vd/19/ppcls`. + +>> +* Q: Why are the metrics 0.3% lower than that shown in the model zoo for `EfficientNet` series of models? +* A: Resize method is set as `Cubic` for `EfficientNet`(interpolation is set as 2 in OpenCV), while other models are set as `Bilinear`(interpolation is set as None in OpenCV). Therefore, you need to modify the interpolation explicitly in `ResizeImage`. Specifically, the following configuration is a demo for EfficientNet. + +``` +VALID: + batch_size: 16 + num_workers: 4 + file_list: "./dataset/ILSVRC2012/val_list.txt" + data_dir: "./dataset/ILSVRC2012/" + shuffle_seed: 0 + transforms: + - DecodeImage: + to_rgb: True + to_np: False + channel_first: False + - ResizeImage: + resize_short: 256 + interpolation: 2 + - CropImage: + size: 224 + - NormalizeImage: + scale: 1.0/255.0 + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - ToCHWImage: +``` + +>> +* Q: What should I do if I want to transform the weights' format from `pdparams` to an earlier version(before Paddle1.7.0), which consists of the scattered files? +* A: You can use `fluid.load` to load the `pdparams` weights and use `fluid.io.save_vars` to save the weights as scattered files. The demo is as follows. Finally all the scattered files will be saved in the path `path_to_save_var`. +``` +fluid.load( + program=infer_prog, model_path=args.pretrained_model, executor=exe) +state = fluid.io.load_program_state(args.pretrained_model) +def exists(var): + return var.name in state +fluid.io.save_vars(exe, "./path_to_save_var", infer_prog, predicate=exists) +``` + + +>> +* Q: The error occured when using visualdl under python2, shows that: `TypeError: __init__() missing 1 required positional argument: 'sync_cycle'`. +* A: `Visualdl` is only supported on python3 as now, whose version needs also be higher than `2.0`. If your visualdl version is lower than 2.0, you can also install visualdl 2.0 by `pip3 install visualdl==2.0.0b8 -i https://mirror.baidu.com/pypi/simple`. diff --git a/docs/en/index.rst b/docs/en/index.rst index f0a88b27..b8a2e909 100644 --- a/docs/en/index.rst +++ b/docs/en/index.rst @@ -11,9 +11,7 @@ Welcome to PaddleClas! advanced_tutorials/index application/index extension/index - competition_support.md - model_zoo.md - change_log.md - faq.md + competition_support_en.md + update_history_en.md + faq_en.md -:math:`PaddlePaddle2020` diff --git a/docs/en/models/DPN_DenseNet_en.md b/docs/en/models/DPN_DenseNet_en.md new file mode 100644 index 00000000..3e6aac76 --- /dev/null +++ b/docs/en/models/DPN_DenseNet_en.md @@ -0,0 +1,70 @@ +# DPN and DenseNet series + +## Overview + +DenseNet is a new network structure proposed in 2017 and was the best paper of CVPR. The network has designed a new cross-layer connected block called dense-block. Compared to the bottleneck in ResNet, dense-block has designed a more aggressive dense connection module, that is, connecting all the layers to each other, and each layer will accept all the layers in front of it as its additional input. DenseNet stacks all dense-blocks into a densely connected network. The dense connection makes DenseNet easier to backpropagate, making the network easier to train and converge. The full name of DPN is Dual Path Networks, which is a network composed of DenseNet and ResNeXt, which proves that DenseNet can extract new features from the previous level, and ResNeXt essentially reuses the extracted features . The author further analyzes and finds that ResNeXt has high reuse rate for features, but low redundancy, while DenseNet can create new features, but with high redundancy. Combining the advantages of the two structures, the author designed the DPN network. In the end, the DPN network achieved better results than ResNeXt and DenseNet under the same FLOPS and parameters. + +The FLOPS, parameters, and inference time on the T4 GPU of this series of models are shown in the figure below. + +![](../../images/models/T4_benchmark/t4.fp32.bs4.DPN.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.DPN.params.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.DPN.png) + +![](../../images/models/T4_benchmark/t4.fp16.bs4.DPN.png) + +The pretrained models of these two types of models (a total of 10) are open sourced in PaddleClas at present. The indicators are shown in the figure above. It is easy to observe that under the same FLOPS and parameters, DPN has higher accuracy than DenseNet. However,because DPN has more branches, its inference speed is slower than DenseNet. Since DenseNet264 has the deepest layers in all DenseNet networks, it has the largest parameters,DenseNet161 has the largest width, resulting the largest FLOPs and the highest accuracy in this series. From the perspective of inference speed, DenseNet161, which has a large FLOPs and high accuracy, has a faster speed than DenseNet264, so it has a greater advantage than DenseNet264. + +For DPN series networks, the larger the model's FLOPs and parameters, the higher the model's accuracy. Among them, since the width of DPN107 is the largest, it has the largest number of parameters and FLOPs in this series of networks. + + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| DenseNet121 | 0.757 | 0.926 | 0.750 | | 5.690 | 7.980 | +| DenseNet161 | 0.786 | 0.941 | 0.778 | | 15.490 | 28.680 | +| DenseNet169 | 0.768 | 0.933 | 0.764 | | 6.740 | 14.150 | +| DenseNet201 | 0.776 | 0.937 | 0.775 | | 8.610 | 20.010 | +| DenseNet264 | 0.780 | 0.939 | 0.779 | | 11.540 | 33.370 | +| DPN68 | 0.768 | 0.934 | 0.764 | 0.931 | 4.030 | 10.780 | +| DPN92 | 0.799 | 0.948 | 0.793 | 0.946 | 12.540 | 36.290 | +| DPN98 | 0.806 | 0.951 | 0.799 | 0.949 | 22.220 | 58.460 | +| DPN107 | 0.809 | 0.953 | 0.802 | 0.951 | 35.060 | 82.970 | +| DPN131 | 0.807 | 0.951 | 0.801 | 0.949 | 30.510 | 75.360 | + + + + +## Inference speed based on V100 GPU + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|-------------|-----------|-------------------|--------------------------| +| DenseNet121 | 224 | 256 | 4.371 | +| DenseNet161 | 224 | 256 | 8.863 | +| DenseNet169 | 224 | 256 | 6.391 | +| DenseNet201 | 224 | 256 | 8.173 | +| DenseNet264 | 224 | 256 | 11.942 | +| DPN68 | 224 | 256 | 11.805 | +| DPN92 | 224 | 256 | 17.840 | +| DPN98 | 224 | 256 | 21.057 | +| DPN107 | 224 | 256 | 28.685 | +| DPN131 | 224 | 256 | 28.083 | + + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|-------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| DenseNet121 | 224 | 256 | 4.16436 | 7.2126 | 10.50221 | 4.40447 | 9.32623 | 15.25175 | +| DenseNet161 | 224 | 256 | 9.27249 | 14.25326 | 20.19849 | 10.39152 | 22.15555 | 35.78443 | +| DenseNet169 | 224 | 256 | 6.11395 | 10.28747 | 13.68717 | 6.43598 | 12.98832 | 20.41964 | +| DenseNet201 | 224 | 256 | 7.9617 | 13.4171 | 17.41949 | 8.20652 | 17.45838 | 27.06309 | +| DenseNet264 | 224 | 256 | 11.70074 | 19.69375 | 24.79545 | 12.14722 | 26.27707 | 40.01905 | +| DPN68 | 224 | 256 | 11.7827 | 13.12652 | 16.19213 | 11.64915 | 12.82807 | 18.57113 | +| DPN92 | 224 | 256 | 18.56026 | 20.35983 | 29.89544 | 18.15746 | 23.87545 | 38.68821 | +| DPN98 | 224 | 256 | 21.70508 | 24.7755 | 40.93595 | 21.18196 | 33.23925 | 62.77751 | +| DPN107 | 224 | 256 | 27.84462 | 34.83217 | 60.67903 | 27.62046 | 52.65353 | 100.11721 | +| DPN131 | 224 | 256 | 28.58941 | 33.01078 | 55.65146 | 28.33119 | 46.19439 | 89.24904 | diff --git a/docs/en/models/EfficientNet_and_ResNeXt101_wsl_en.md b/docs/en/models/EfficientNet_and_ResNeXt101_wsl_en.md new file mode 100644 index 00000000..07dff3da --- /dev/null +++ b/docs/en/models/EfficientNet_and_ResNeXt101_wsl_en.md @@ -0,0 +1,82 @@ +# EfficientNet and ResNeXt101_wsl series + +## Overview + +EfficientNet is a lightweight NAS-based network released by Google in 2019. EfficientNetB7 refreshed the classification accuracy of ImageNet-1k at that time. In this paper, the author points out that the traditional methods to improve the performance of neural networks mainly start with the width of the network, the depth of the network, and the resolution of the input picture. +However, the author found that balancing these three dimensions is essential for improving accuracy and efficiency through experiments. +Therefore, the author summarized how to balance the three dimensions at the same time through a series of experiments. +At the same time, based on this scaling method, the author built a total of 7 networks B1-B7 in the EfficientNet series on the basis of EfficientNetB0, and with the same FLOPS and parameters, the accuracy reached state-of-the-art effect. + +ResNeXt is an improved version of ResNet that proposed by Facebook in 2016. In 2019, Facebook researchers studied the accuracy limit of the series network on ImageNet through weakly-supervised-learning. In order to distinguish the previous ResNeXt network, the suffix of this series network is WSL, where WSL is the abbreviation of weakly-supervised-learning. In order to have stronger feature extraction capability, the researchers further enlarged the network width, among which the largest ResNeXt101_32x48d_wsl has 800 million parameters. It was trained under 940 million weak-labeled images, and the results were finetune trained on imagenet-1k. Finally, the acc-1 of imagenet-1k reaches 85.4%, which is also the network with the highest precision under the resolution of 224x224 on imagenet-1k so far. In Fix-ResNeXt, the author used a larger image resolution, made a special Fix strategy for the inconsistency of image data preprocessing in training and testing, and made ResNeXt101_32x48d_wsl have a higher accuracy. Since it used the Fix strategy, it was named Fix-ResNeXt101_32x48d_wsl. + +The FLOPS, parameters, and inference time on the T4 GPU of this series of models are shown in the figure below. + +![](../../images/models/T4_benchmark/t4.fp32.bs4.EfficientNet.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.EfficientNet.params.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs1.EfficientNet.png) + +![](../../images/models/T4_benchmark/t4.fp16.bs1.EfficientNet.png) + +At present, there are a total of 14 pretrained models of the two types of models that PaddleClas open source. It can be seen from the above figure that the advantages of the EfficientNet series network are very obvious. The ResNeXt101_wsl series model uses more data, and the final accuracy is also higher. EfficientNet_B0_small removes SE_block based on EfficientNet_B0, which has faster inference speed. + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| ResNeXt101_
32x8d_wsl | 0.826 | 0.967 | 0.822 | 0.964 | 29.140 | 78.440 | +| ResNeXt101_
32x16d_wsl | 0.842 | 0.973 | 0.842 | 0.972 | 57.550 | 152.660 | +| ResNeXt101_
32x32d_wsl | 0.850 | 0.976 | 0.851 | 0.975 | 115.170 | 303.110 | +| ResNeXt101_
32x48d_wsl | 0.854 | 0.977 | 0.854 | 0.976 | 173.580 | 456.200 | +| Fix_ResNeXt101_
32x48d_wsl | 0.863 | 0.980 | 0.864 | 0.980 | 354.230 | 456.200 | +| EfficientNetB0 | 0.774 | 0.933 | 0.773 | 0.935 | 0.720 | 5.100 | +| EfficientNetB1 | 0.792 | 0.944 | 0.792 | 0.945 | 1.270 | 7.520 | +| EfficientNetB2 | 0.799 | 0.947 | 0.803 | 0.950 | 1.850 | 8.810 | +| EfficientNetB3 | 0.812 | 0.954 | 0.817 | 0.956 | 3.430 | 11.840 | +| EfficientNetB4 | 0.829 | 0.962 | 0.830 | 0.963 | 8.290 | 18.760 | +| EfficientNetB5 | 0.836 | 0.967 | 0.837 | 0.967 | 19.510 | 29.610 | +| EfficientNetB6 | 0.840 | 0.969 | 0.842 | 0.968 | 36.270 | 42.000 | +| EfficientNetB7 | 0.843 | 0.969 | 0.844 | 0.971 | 72.350 | 64.920 | +| EfficientNetB0_
small | 0.758 | 0.926 | | | 0.720 | 4.650 | + + +## Inference speed based on V100 GPU + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|-------------------------------|-----------|-------------------|--------------------------| +| ResNeXt101_
32x8d_wsl | 224 | 256 | 19.127 | +| ResNeXt101_
32x16d_wsl | 224 | 256 | 23.629 | +| ResNeXt101_
32x32d_wsl | 224 | 256 | 40.214 | +| ResNeXt101_
32x48d_wsl | 224 | 256 | 59.714 | +| Fix_ResNeXt101_
32x48d_wsl | 320 | 320 | 82.431 | +| EfficientNetB0 | 224 | 256 | 2.449 | +| EfficientNetB1 | 240 | 272 | 3.547 | +| EfficientNetB2 | 260 | 292 | 3.908 | +| EfficientNetB3 | 300 | 332 | 5.145 | +| EfficientNetB4 | 380 | 412 | 7.609 | +| EfficientNetB5 | 456 | 488 | 12.078 | +| EfficientNetB6 | 528 | 560 | 18.381 | +| EfficientNetB7 | 600 | 632 | 27.817 | +| EfficientNetB0_
small | 224 | 256 | 1.692 | + + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|---------------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| ResNeXt101_
32x8d_wsl | 224 | 256 | 18.19374 | 21.93529 | 34.67802 | 18.52528 | 34.25319 | 67.2283 | +| ResNeXt101_
32x16d_wsl | 224 | 256 | 18.52609 | 36.8288 | 62.79947 | 25.60395 | 71.88384 | 137.62327 | +| ResNeXt101_
32x32d_wsl | 224 | 256 | 33.51391 | 70.09682 | 125.81884 | 54.87396 | 160.04337 | 316.17718 | +| ResNeXt101_
32x48d_wsl | 224 | 256 | 50.97681 | 137.60926 | 190.82628 | 99.01698256 | 315.91261 | 551.83695 | +| Fix_ResNeXt101_
32x48d_wsl | 320 | 320 | 78.62869 | 191.76039 | 317.15436 | 160.0838242 | 595.99296 | 1151.47384 | +| EfficientNetB0 | 224 | 256 | 3.40122 | 5.95851 | 9.10801 | 3.442 | 6.11476 | 9.3304 | +| EfficientNetB1 | 240 | 272 | 5.25172 | 9.10233 | 14.11319 | 5.3322 | 9.41795 | 14.60388 | +| EfficientNetB2 | 260 | 292 | 5.91052 | 10.5898 | 17.38106 | 6.29351 | 10.95702 | 17.75308 | +| EfficientNetB3 | 300 | 332 | 7.69582 | 16.02548 | 27.4447 | 7.67749 | 16.53288 | 28.5939 | +| EfficientNetB4 | 380 | 412 | 11.55585 | 29.44261 | 53.97363 | 12.15894 | 30.94567 | 57.38511 | +| EfficientNetB5 | 456 | 488 | 19.63083 | 56.52299 | - | 20.48571 | 61.60252 | - | +| EfficientNetB6 | 528 | 560 | 30.05911 | - | - | 32.62402 | - | - | +| EfficientNetB7 | 600 | 632 | 47.86087 | - | - | 53.93823 | - | - | +| EfficientNetB0_small | 224 | 256 | 2.39166 | 4.36748 | 6.96002 | 2.3076 | 4.71886 | 7.21888 | diff --git a/docs/en/models/HRNet_en.md b/docs/en/models/HRNet_en.md new file mode 100644 index 00000000..22935b8f --- /dev/null +++ b/docs/en/models/HRNet_en.md @@ -0,0 +1,64 @@ +# HRNet series + +## Overview + +HRNet is a brand new neural network proposed by Microsoft research Asia in 2019. Different from the previous convolutional neural network, this network can still maintain high resolution in the deep layer of the network, so the heat map of the key points predicted is more accurate, and it is also more accurate in space. In addition, the network performs particularly well in other visual tasks sensitive to resolution, such as detection and segmentation. + +The FLOPS, parameters, and inference time on the T4 GPU of this series of models are shown in the figure below. + +![](../../images/models/T4_benchmark/t4.fp32.bs4.HRNet.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.HRNet.params.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.HRNet.png) + +![](../../images/models/T4_benchmark/t4.fp16.bs4.HRNet.png) + +At present, there are 7 pretrained models of such models open-sourced by PaddleClas, and their indicators are shown in the figure. Among them, the reason why the accuracy of the HRNet_W48_C indicator is abnormal may be due to fluctuations in training. + + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| HRNet_W18_C | 0.769 | 0.934 | 0.768 | 0.934 | 4.140 | 21.290 | +| HRNet_W18_C_ssld | 0.816 | 0.958 | 0.768 | 0.934 | 4.140 | 21.290 | +| HRNet_W30_C | 0.780 | 0.940 | 0.782 | 0.942 | 16.230 | 37.710 | +| HRNet_W32_C | 0.783 | 0.942 | 0.785 | 0.942 | 17.860 | 41.230 | +| HRNet_W40_C | 0.788 | 0.945 | 0.789 | 0.945 | 25.410 | 57.550 | +| HRNet_W44_C | 0.790 | 0.945 | 0.789 | 0.944 | 29.790 | 67.060 | +| HRNet_W48_C | 0.790 | 0.944 | 0.793 | 0.945 | 34.580 | 77.470 | +| HRNet_W48_C_ssld | 0.836 | 0.968 | 0.793 | 0.945 | 34.580 | 77.470 | +| HRNet_W64_C | 0.793 | 0.946 | 0.795 | 0.946 | 57.830 | 128.060 | + + +## Inference speed based on V100 GPU + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|-------------|-----------|-------------------|--------------------------| +| HRNet_W18_C | 224 | 256 | 7.368 | +| HRNet_W18_C_ssld | 224 | 256 | 7.368 | +| HRNet_W30_C | 224 | 256 | 9.402 | +| HRNet_W32_C | 224 | 256 | 9.467 | +| HRNet_W40_C | 224 | 256 | 10.739 | +| HRNet_W44_C | 224 | 256 | 11.497 | +| HRNet_W48_C | 224 | 256 | 12.165 | +| HRNet_W48_C_ssld | 224 | 256 | 12.165 | +| HRNet_W64_C | 224 | 256 | 15.003 | + + + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|-------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| HRNet_W18_C | 224 | 256 | 6.79093 | 11.50986 | 17.67244 | 7.40636 | 13.29752 | 23.33445 | +| HRNet_W18_C_ssld | 224 | 256 | 6.79093 | 11.50986 | 17.67244 | 7.40636 | 13.29752 | 23.33445 | +| HRNet_W30_C | 224 | 256 | 8.98077 | 14.08082 | 21.23527 | 9.57594 | 17.35485 | 32.6933 | +| HRNet_W32_C | 224 | 256 | 8.82415 | 14.21462 | 21.19804 | 9.49807 | 17.72921 | 32.96305 | +| HRNet_W40_C | 224 | 256 | 11.4229 | 19.1595 | 30.47984 | 12.12202 | 25.68184 | 48.90623 | +| HRNet_W44_C | 224 | 256 | 12.25778 | 22.75456 | 32.61275 | 13.19858 | 32.25202 | 59.09871 | +| HRNet_W48_C | 224 | 256 | 12.65015 | 23.12886 | 33.37859 | 13.70761 | 34.43572 | 63.01219 | +| HRNet_W48_C_ssld | 224 | 256 | 12.65015 | 23.12886 | 33.37859 | 13.70761 | 34.43572 | 63.01219 | +| HRNet_W64_C | 224 | 256 | 15.10428 | 27.68901 | 40.4198 | 17.57527 | 47.9533 | 97.11228 | diff --git a/docs/en/models/Inception_en.md b/docs/en/models/Inception_en.md new file mode 100644 index 00000000..99b42dc4 --- /dev/null +++ b/docs/en/models/Inception_en.md @@ -0,0 +1,62 @@ +# Inception series + +## Overview + +GoogLeNet is a new neural network structure designed by Google in 2014, which, together with VGG network, became the twin champions of the ImageNet challenge that year. GoogLeNet introduces the Inception structure for the first time, and stacks the Inception structure in the network so that the number of network layers reaches 22, which is also the mark of the convolutional network exceeding 20 layers for the first time. Since 1x1 convolution is used in the Inception structure to reduce the dimension of channel number, and Global pooling is used to replace the traditional method of processing features in multiple fc layers, the final GoogLeNet network has much less FLOPS and parameters than VGG network, which has become a beautiful scenery of neural network design at that time. + +Xception is another improvement to InceptionV3 that Google proposed after Inception. In Xception, the author used the depthwise separable convolution to replace the traditional convolution operation, which greatly saved the network FLOPS and the number of parameters, but improved the accuracy. In DeeplabV3+, the author further improved the Xception and increased the number of Xception layers, and designed the network of Xception65 and Xception71. + +InceptionV4 is a new neural network designed by Google in 2016, when residual structure were all the rage, but the authors believe that high performance can be achieved using only Inception structure. InceptionV4 uses more Inception structure to achieve even greater precision on Imagenet-1k. + +The FLOPS, parameters, and inference time on the T4 GPU of this series of models are shown in the figure below. + +![](../../images/models/T4_benchmark/t4.fp32.bs4.Inception.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.Inception.params.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.Inception.png) + +![](../../images/models/T4_benchmark/t4.fp16.bs4.Inception.png) + +The figure above reflects the relationship between the accuracy of Xception series and InceptionV4 and other indicators. Among them, Xception_deeplab is consistent with the structure of the paper, and Xception is an improved model developed by PaddleClas, which improves the accuracy by about 0.6% when the inference speed is basically unchanged. Details of the improved model are being updated, so stay tuned. + + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| GoogLeNet | 0.707 | 0.897 | 0.698 | | 2.880 | 8.460 | +| Xception41 | 0.793 | 0.945 | 0.790 | 0.945 | 16.740 | 22.690 | +| Xception41
_deeplab | 0.796 | 0.944 | | | 18.160 | 26.730 | +| Xception65 | 0.810 | 0.955 | | | 25.950 | 35.480 | +| Xception65
_deeplab | 0.803 | 0.945 | | | 27.370 | 39.520 | +| Xception71 | 0.811 | 0.955 | | | 31.770 | 37.280 | +| InceptionV4 | 0.808 | 0.953 | 0.800 | 0.950 | 24.570 | 42.680 | + + + +## Inference speed based on V100 GPU + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|------------------------|-----------|-------------------|--------------------------| +| GoogLeNet | 224 | 256 | 1.807 | +| Xception41 | 299 | 320 | 3.972 | +| Xception41_
deeplab | 299 | 320 | 4.408 | +| Xception65 | 299 | 320 | 6.174 | +| Xception65_
deeplab | 299 | 320 | 6.464 | +| Xception71 | 299 | 320 | 6.782 | +| InceptionV4 | 299 | 320 | 11.141 | + + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|--------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| GoogLeNet | 299 | 320 | 1.75451 | 3.39931 | 4.71909 | 1.88038 | 4.48882 | 6.94035 | +| Xception41 | 299 | 320 | 2.91192 | 7.86878 | 15.53685 | 4.96939 | 17.01361 | 32.67831 | +| Xception41_
deeplab | 299 | 320 | 2.85934 | 7.2075 | 14.01406 | 5.33541 | 17.55938 | 33.76232 | +| Xception65 | 299 | 320 | 4.30126 | 11.58371 | 23.22213 | 7.26158 | 25.88778 | 53.45426 | +| Xception65_
deeplab | 299 | 320 | 4.06803 | 9.72694 | 19.477 | 7.60208 | 26.03699 | 54.74724 | +| Xception71 | 299 | 320 | 4.80889 | 13.5624 | 27.18822 | 8.72457 | 31.55549 | 69.31018 | +| InceptionV4 | 299 | 320 | 9.50821 | 13.72104 | 20.27447 | 12.99342 | 25.23416 | 43.56121 | diff --git a/docs/en/models/Mobile_en.md b/docs/en/models/Mobile_en.md new file mode 100644 index 00000000..66b20854 --- /dev/null +++ b/docs/en/models/Mobile_en.md @@ -0,0 +1,144 @@ +# Mobile and Embedded Vision Applications Network series + +## Overview + +MobileNetV1 is a network launched by Google in 2017 for use on mobile devices or embedded devices. The network replaces the depthwise separable convolution with the traditional convolution operation, that is, the combination of depthwise convolution and pointwise convolution. Compared with the traditional convolution operation, this combination can greatly save the number of parameters and computation. At the same time, MobileNetV1 can also be used for object detection, image segmentation and other visual tasks. + +MobileNetV2 is a lightweight network proposed by Google following MobileNetV1. Compared with MobileNetV1, MobileNetV2 proposed Linear bottlenecks and Inverted residual block as a basic network structures, to constitute MobileNetV2 network architecture through stacking these basic module a lot. In the end, higher classification accuracy was achieved when FLOPS was only half of MobileNetV1. + +The ShuffleNet series network is the lightweight network structure proposed by MEGVII. So far, there are two typical structures in this series network, namely, ShuffleNetV1 and ShuffleNetV2. A Channel Shuffle operation in ShuffleNet can exchange information between groups and perform end-to-end training. In the paper of ShuffleNetV2, the author proposes four criteria for designing lightweight networks, and designs the ShuffleNetV2 network according to the four criteria and the shortcomings of ShuffleNetV1. + +MobileNetV3 is a new and lightweight network based on NAS proposed by Google in 2019. In order to further improve the effect, the activation functions of relu and sigmoid were replaced with hard_swish and hard_sigmoid activation functions, and some improved strategies were introduced to reduce the amount of network computing. + +GhosttNet is a brand-new lightweight network structure proposed by Huawei in 2020. By introducing the ghost module, the problem of redundant calculation of features in traditional deep networks is greatly alleviated, which greatly reduces the amount of network parameters and calculations. + +![](../../images/models/mobile_arm_top1.png) + +![](../../images/models/mobile_arm_storage.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.mobile_trt.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.mobile_trt.params.png) + +Currently there are 32 pretrained models of the mobile series open source by PaddleClas, and their indicators are shown in the figure below. As you can see from the picture, newer lightweight models tend to perform better, and MobileNetV3 represents the latest lightweight neural network architecture. In MobileNetV3, the author used 1x1 convolution after global-avg-pooling in order to obtain higher accuracy,this operation significantly increases the number of parameters but has little impact on the amount of computation, so if the model is evaluated from a storage perspective of excellence, MobileNetV3 does not have much advantage, but because of its smaller computation, it has a faster inference speed. In addition, the SSLD distillation model in our model library performs excellently, refreshing the accuracy of the current lightweight model from various perspectives. Due to the complex structure and many branches of the MobileNetV3 model, which is not GPU friendly, the GPU inference speed is not as good as that of MobileNetV1. + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| MobileNetV1_x0_25 | 0.514 | 0.755 | 0.506 | | 0.070 | 0.460 | +| MobileNetV1_x0_5 | 0.635 | 0.847 | 0.637 | | 0.280 | 1.310 | +| MobileNetV1_x0_75 | 0.688 | 0.882 | 0.684 | | 0.630 | 2.550 | +| MobileNetV1 | 0.710 | 0.897 | 0.706 | | 1.110 | 4.190 | +| MobileNetV1_ssld | 0.779 | 0.939 | | | 1.110 | 4.190 | +| MobileNetV2_x0_25 | 0.532 | 0.765 | | | 0.050 | 1.500 | +| MobileNetV2_x0_5 | 0.650 | 0.857 | 0.654 | 0.864 | 0.170 | 1.930 | +| MobileNetV2_x0_75 | 0.698 | 0.890 | 0.698 | 0.896 | 0.350 | 2.580 | +| MobileNetV2 | 0.722 | 0.907 | 0.718 | 0.910 | 0.600 | 3.440 | +| MobileNetV2_x1_5 | 0.741 | 0.917 | | | 1.320 | 6.760 | +| MobileNetV2_x2_0 | 0.752 | 0.926 | | | 2.320 | 11.130 | +| MobileNetV2_ssld | 0.7674 | 0.9339 | | | 0.600 | 3.440 | +| MobileNetV3_large_
x1_25 | 0.764 | 0.930 | 0.766 | | 0.714 | 7.440 | +| MobileNetV3_large_
x1_0 | 0.753 | 0.923 | 0.752 | | 0.450 | 5.470 | +| MobileNetV3_large_
x0_75 | 0.731 | 0.911 | 0.733 | | 0.296 | 3.910 | +| MobileNetV3_large_
x0_5 | 0.692 | 0.885 | 0.688 | | 0.138 | 2.670 | +| MobileNetV3_large_
x0_35 | 0.643 | 0.855 | 0.642 | | 0.077 | 2.100 | +| MobileNetV3_small_
x1_25 | 0.707 | 0.895 | 0.704 | | 0.195 | 3.620 | +| MobileNetV3_small_
x1_0 | 0.682 | 0.881 | 0.675 | | 0.123 | 2.940 | +| MobileNetV3_small_
x0_75 | 0.660 | 0.863 | 0.654 | | 0.088 | 2.370 | +| MobileNetV3_small_
x0_5 | 0.592 | 0.815 | 0.580 | | 0.043 | 1.900 | +| MobileNetV3_small_
x0_35 | 0.530 | 0.764 | 0.498 | | 0.026 | 1.660 | +| MobileNetV3_small_
x0_35_ssld | 0.556 | 0.777 | 0.498 | | 0.026 | 1.660 | +| MobileNetV3_large_
x1_0_ssld | 0.790 | 0.945 | | | 0.450 | 5.470 | +| MobileNetV3_large_
x1_0_ssld_int8 | 0.761 | | | | | | +| MobileNetV3_small_
x1_0_ssld | 0.713 | 0.901 | | | 0.123 | 2.940 | +| ShuffleNetV2 | 0.688 | 0.885 | 0.694 | | 0.280 | 2.260 | +| ShuffleNetV2_x0_25 | 0.499 | 0.738 | | | 0.030 | 0.600 | +| ShuffleNetV2_x0_33 | 0.537 | 0.771 | | | 0.040 | 0.640 | +| ShuffleNetV2_x0_5 | 0.603 | 0.823 | 0.603 | | 0.080 | 1.360 | +| ShuffleNetV2_x1_5 | 0.716 | 0.902 | 0.726 | | 0.580 | 3.470 | +| ShuffleNetV2_x2_0 | 0.732 | 0.912 | 0.749 | | 1.120 | 7.320 | +| ShuffleNetV2_swish | 0.700 | 0.892 | | | 0.290 | 2.260 | +| GhostNet_x0_5 | 0.668 | 0.869 | 0.662 | 0.866 | 0.082 | 2.600 | +| GhostNet_x1_0 | 0.740 | 0.916 | 0.739 | 0.914 | 0.294 | 5.200 | +| GhostNet_x1_3 | 0.757 | 0.925 | 0.757 | 0.927 | 0.440 | 7.300 | + + +## Inference speed and storage size based on SD855 + +| Models | Batch Size=1(ms) | Storage Size(M) | +|:--:|:--:|:--:| +| MobileNetV1_x0_25 | 3.220 | 1.900 | +| MobileNetV1_x0_5 | 9.580 | 5.200 | +| MobileNetV1_x0_75 | 19.436 | 10.000 | +| MobileNetV1 | 32.523 | 16.000 | +| MobileNetV1_ssld | 32.523 | 16.000 | +| MobileNetV2_x0_25 | 3.799 | 6.100 | +| MobileNetV2_x0_5 | 8.702 | 7.800 | +| MobileNetV2_x0_75 | 15.531 | 10.000 | +| MobileNetV2 | 23.318 | 14.000 | +| MobileNetV2_x1_5 | 45.624 | 26.000 | +| MobileNetV2_x2_0 | 74.292 | 43.000 | +| MobileNetV2_ssld | 23.318 | 14.000 | +| MobileNetV3_large_x1_25 | 28.218 | 29.000 | +| MobileNetV3_large_x1_0 | 19.308 | 21.000 | +| MobileNetV3_large_x0_75 | 13.565 | 16.000 | +| MobileNetV3_large_x0_5 | 7.493 | 11.000 | +| MobileNetV3_large_x0_35 | 5.137 | 8.600 | +| MobileNetV3_small_x1_25 | 9.275 | 14.000 | +| MobileNetV3_small_x1_0 | 6.546 | 12.000 | +| MobileNetV3_small_x0_75 | 5.284 | 9.600 | +| MobileNetV3_small_x0_5 | 3.352 | 7.800 | +| MobileNetV3_small_x0_35 | 2.635 | 6.900 | +| MobileNetV3_small_x0_35_ssld | 2.635 | 6.900 | +| MobileNetV3_large_x1_0_ssld | 19.308 | 21.000 | +| MobileNetV3_large_x1_0_ssld_int8 | 14.395 | 10.000 | +| MobileNetV3_small_x1_0_ssld | 6.546 | 12.000 | +| ShuffleNetV2 | 10.941 | 9.000 | +| ShuffleNetV2_x0_25 | 2.329 | 2.700 | +| ShuffleNetV2_x0_33 | 2.643 | 2.800 | +| ShuffleNetV2_x0_5 | 4.261 | 5.600 | +| ShuffleNetV2_x1_5 | 19.352 | 14.000 | +| ShuffleNetV2_x2_0 | 34.770 | 28.000 | +| ShuffleNetV2_swish | 16.023 | 9.100 | +| GhostNet_x0_5 | 5.714 | 10.000 | +| GhostNet_x1_0 | 13.558 | 20.000 | +| GhostNet_x1_3 | 19.982 | 29.000 | + + +## Inference speed based on T4 GPU + +| Models | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|-----------------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------| +| MobileNetV1_x0_25 | 0.68422 | 1.13021 | 1.72095 | 0.67274 | 1.226 | 1.84096 | +| MobileNetV1_x0_5 | 0.69326 | 1.09027 | 1.84746 | 0.69947 | 1.43045 | 2.39353 | +| MobileNetV1_x0_75 | 0.6793 | 1.29524 | 2.15495 | 0.79844 | 1.86205 | 3.064 | +| MobileNetV1 | 0.71942 | 1.45018 | 2.47953 | 0.91164 | 2.26871 | 3.90797 | +| MobileNetV1_ssld | 0.71942 | 1.45018 | 2.47953 | 0.91164 | 2.26871 | 3.90797 | +| MobileNetV2_x0_25 | 2.85399 | 3.62405 | 4.29952 | 2.81989 | 3.52695 | 4.2432 | +| MobileNetV2_x0_5 | 2.84258 | 3.1511 | 4.10267 | 2.80264 | 3.65284 | 4.31737 | +| MobileNetV2_x0_75 | 2.82183 | 3.27622 | 4.98161 | 2.86538 | 3.55198 | 5.10678 | +| MobileNetV2 | 2.78603 | 3.71982 | 6.27879 | 2.62398 | 3.54429 | 6.41178 | +| MobileNetV2_x1_5 | 2.81852 | 4.87434 | 8.97934 | 2.79398 | 5.30149 | 9.30899 | +| MobileNetV2_x2_0 | 3.65197 | 6.32329 | 11.644 | 3.29788 | 7.08644 | 12.45375 | +| MobileNetV2_ssld | 2.78603 | 3.71982 | 6.27879 | 2.62398 | 3.54429 | 6.41178 | +| MobileNetV3_large_x1_25 | 2.34387 | 3.16103 | 4.79742 | 2.35117 | 3.44903 | 5.45658 | +| MobileNetV3_large_x1_0 | 2.20149 | 3.08423 | 4.07779 | 2.04296 | 2.9322 | 4.53184 | +| MobileNetV3_large_x0_75 | 2.1058 | 2.61426 | 3.61021 | 2.0006 | 2.56987 | 3.78005 | +| MobileNetV3_large_x0_5 | 2.06934 | 2.77341 | 3.35313 | 2.11199 | 2.88172 | 3.19029 | +| MobileNetV3_large_x0_35 | 2.14965 | 2.7868 | 3.36145 | 1.9041 | 2.62951 | 3.26036 | +| MobileNetV3_small_x1_25 | 2.06817 | 2.90193 | 3.5245 | 2.02916 | 2.91866 | 3.34528 | +| MobileNetV3_small_x1_0 | 1.73933 | 2.59478 | 3.40276 | 1.74527 | 2.63565 | 3.28124 | +| MobileNetV3_small_x0_75 | 1.80617 | 2.64646 | 3.24513 | 1.93697 | 2.64285 | 3.32797 | +| MobileNetV3_small_x0_5 | 1.95001 | 2.74014 | 3.39485 | 1.88406 | 2.99601 | 3.3908 | +| MobileNetV3_small_x0_35 | 2.10683 | 2.94267 | 3.44254 | 1.94427 | 2.94116 | 3.41082 | +| MobileNetV3_small_x0_35_ssld | 2.10683 | 2.94267 | 3.44254 | 1.94427 | 2.94116 | 3.41082 | +| MobileNetV3_large_x1_0_ssld | 2.20149 | 3.08423 | 4.07779 | 2.04296 | 2.9322 | 4.53184 | +| MobileNetV3_small_x1_0_ssld | 1.73933 | 2.59478 | 3.40276 | 1.74527 | 2.63565 | 3.28124 | +| ShuffleNetV2 | 1.95064 | 2.15928 | 2.97169 | 1.89436 | 2.26339 | 3.17615 | +| ShuffleNetV2_x0_25 | 1.43242 | 2.38172 | 2.96768 | 1.48698 | 2.29085 | 2.90284 | +| ShuffleNetV2_x0_33 | 1.69008 | 2.65706 | 2.97373 | 1.75526 | 2.85557 | 3.09688 | +| ShuffleNetV2_x0_5 | 1.48073 | 2.28174 | 2.85436 | 1.59055 | 2.18708 | 3.09141 | +| ShuffleNetV2_x1_5 | 1.51054 | 2.4565 | 3.41738 | 1.45389 | 2.5203 | 3.99872 | +| ShuffleNetV2_x2_0 | 1.95616 | 2.44751 | 4.19173 | 2.15654 | 3.18247 | 5.46893 | +| ShuffleNetV2_swish | 2.50213 | 2.92881 | 3.474 | 2.5129 | 2.97422 | 3.69357 | diff --git a/docs/en/models/Others_en.md b/docs/en/models/Others_en.md new file mode 100644 index 00000000..ddeb489d --- /dev/null +++ b/docs/en/models/Others_en.md @@ -0,0 +1,62 @@ +# Other networks + +## Overview + +In 2012, AlexNet network proposed by Alex et al. won the ImageNet competition by far surpassing the second place, and the convolutional neural network and even deep learning attracted wide attention. AlexNet used relu as the activation function of CNN to solve the gradient dispersion problem of sigmoid when the network is deep. During the training, Dropout was used to randomly lose a part of the neurons, avoiding the overfitting of the model. In the network, overlapping maximum pooling is used to replace the average pooling commonly used in CNN, which avoids the fuzzy effect of average pooling and improves the feature richness. In a sense, AlexNet has exploded the research and application of neural networks. + +SqueezeNet achieved the same precision as AlexNet on Imagenet-1k, but only with 1/50 parameters. The core of the network is the Fire module, which used the convolution of 1x1 to achieve channel dimensionality reduction, thus greatly saving the number of parameters. The author created SqueezeNet by stacking a large number of Fire modules. + +VGG is a convolutional neural network developed by researchers at Oxford University's Visual Geometry Group and DeepMind. The network explores the relationship between the depth of the convolutional neural network and its performance. By repeatedly stacking the small convolutional kernel of 3x3 and the maximum pooling layer of 2x2, the multi-layer convolutional neural network is successfully constructed and has achieved good convergence accuracy. In the end, VGG won the runner-up of ILSVRC 2014 classification and the champion of positioning. + +DarkNet53 is designed for object detection by YOLO author in the paper. The network is basically composed of 1x1 and 3x3 kernel, with a total of 53 layers, named DarkNet53. + + + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| AlexNet | 0.567 | 0.792 | 0.5720 | | 1.370 | 61.090 | +| SqueezeNet1_0 | 0.596 | 0.817 | 0.575 | | 1.550 | 1.240 | +| SqueezeNet1_1 | 0.601 | 0.819 | | | 0.690 | 1.230 | +| VGG11 | 0.693 | 0.891 | | | 15.090 | 132.850 | +| VGG13 | 0.700 | 0.894 | | | 22.480 | 133.030 | +| VGG16 | 0.720 | 0.907 | 0.715 | 0.901 | 30.810 | 138.340 | +| VGG19 | 0.726 | 0.909 | | | 39.130 | 143.650 | +| DarkNet53 | 0.780 | 0.941 | 0.772 | 0.938 | 18.580 | 41.600 | +| ResNet50_ACNet | 0.767 | 0.932 | | | 10.730 | 33.110 | +| ResNet50_ACNet
_deploy | 0.767 | 0.932 | | | 8.190 | 25.550 | + + + +## Inference speed based on V100 GPU + + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|---------------------------|-----------|-------------------|----------------------| +| AlexNet | 224 | 256 | 1.176 | +| SqueezeNet1_0 | 224 | 256 | 0.860 | +| SqueezeNet1_1 | 224 | 256 | 0.763 | +| VGG11 | 224 | 256 | 1.867 | +| VGG13 | 224 | 256 | 2.148 | +| VGG16 | 224 | 256 | 2.616 | +| VGG19 | 224 | 256 | 3.076 | +| DarkNet53 | 256 | 256 | 3.139 | +| ResNet50_ACNet
_deploy | 224 | 256 | 5.626 | + + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|-----------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| AlexNet | 224 | 256 | 1.06447 | 1.70435 | 2.38402 | 1.44993 | 2.46696 | 3.72085 | +| SqueezeNet1_0 | 224 | 256 | 0.97162 | 2.06719 | 3.67499 | 0.96736 | 2.53221 | 4.54047 | +| SqueezeNet1_1 | 224 | 256 | 0.81378 | 1.62919 | 2.68044 | 0.76032 | 1.877 | 3.15298 | +| VGG11 | 224 | 256 | 2.24408 | 4.67794 | 7.6568 | 3.90412 | 9.51147 | 17.14168 | +| VGG13 | 224 | 256 | 2.58589 | 5.82708 | 10.03591 | 4.64684 | 12.61558 | 23.70015 | +| VGG16 | 224 | 256 | 3.13237 | 7.19257 | 12.50913 | 5.61769 | 16.40064 | 32.03939 | +| VGG19 | 224 | 256 | 3.69987 | 8.59168 | 15.07866 | 6.65221 | 20.4334 | 41.55902 | +| DarkNet53 | 256 | 256 | 3.18101 | 5.88419 | 10.14964 | 4.10829 | 12.1714 | 22.15266 | +| ResNet50_ACNet | 256 | 256 | 3.89002 | 4.58195 | 9.01095 | 5.33395 | 10.96843 | 18.70368 | +| ResNet50_ACNet_deploy | 224 | 256 | 2.6823 | 5.944 | 7.16655 | 3.49161 | 7.78374 | 13.94361 | diff --git a/docs/en/models/ResNeSt_RegNet_en.md b/docs/en/models/ResNeSt_RegNet_en.md new file mode 100644 index 00000000..959597a8 --- /dev/null +++ b/docs/en/models/ResNeSt_RegNet_en.md @@ -0,0 +1,22 @@ +## Overview + +The ResNeSt series was proposed in 2020. The original resnet network structure has been improved by introducing K groups and adding an attention module similar to SEBlock in different groups, the accuracy is greater than that of the basic model ResNet, but the parameter amount and flops are almost the same as the basic ResNet. + +RegNet was proposed in 2020 by Facebook to deepen the concept of design space. Based on AnyNetX, the model performance is gradually improved by shared bottleneck ratio, shared group width, adjusting network depth or width and other strategies. What's more, the design space structure is simplified, whose interpretability is also be improved. The quality of design space is improved while its diversity is maintained. Under similar conditions, the performance of the designed RegNet model performs better than EfficientNet and 5 times faster than EfficientNet. + +## Accuracy, FLOPs and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| ResNeSt50_fast_1s1x64d | 0.8035 | 0.9528| 0.8035 | -| 8.68 | 26.3 | +| ResNeSt50 | 0.8102 | 0.9542| 0.8113 | -| 10.78 | 27.5 | +| RegNetX_4GF | 0.7850 | 0.9416| 0.7860 | -| 8.0 | 22.1 | + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|--------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| ResNeSt50_fast_1s1x64d | 224 | 256 | 3.46466 | 5.56647 | 9.11848 | 3.45405 | 8.72680 | 15.48710 | +| ResNeSt50 | 224 | 256 | 7.05851 | 8.97676 | 13.34704 | 6.16248 | 12.0633 | 21.49936 | +| RegNetX_4GF | 224 | 256 | 6.69042 | 8.01664 | 11.60608 | 6.46478 | 11.19862 | 16.89089 | diff --git a/docs/en/models/ResNet_and_vd_en.md b/docs/en/models/ResNet_and_vd_en.md new file mode 100644 index 00000000..5a947081 --- /dev/null +++ b/docs/en/models/ResNet_and_vd_en.md @@ -0,0 +1,96 @@ +# ResNet and ResNet_vd series + +## Overview + +The ResNet series model was proposed in 2015 and won the championship in the ILSVRC2015 competition with a top5 error rate of 3.57%. The network innovatively proposed the residual structure, and built the ResNet network by stacking multiple residual structures. Experiments show that using residual blocks can improve the convergence speed and accuracy effectively. + +Joyce Xu of Stanford university calls ResNet one of three architectures that "really redefine the way we think about neural networks." Due to the outstanding performance of ResNet, more and more scholars and engineers from academia and industry have improved its structure. The well-known ones include wide-resnet, resnet-vc, resnet-vd, Res2Net, etc. The number of parameters and FLOPs of resnet-vc and resnet-vd are almost the same as those of ResNet, so we hereby unified them into the ResNet series. + +The models of the ResNet series released this time include 14 pre-trained models including ResNet50, ResNet50_vd, ResNet50_vd_ssld, and ResNet200_vd. At the training level, ResNet adopted the standard training process for training ImageNet, while the rest of the improved model adopted more training strategies, such as cosine decay for the decline of learning rate and the regular label smoothing method,mixup was added to the data preprocessing, and the total number of iterations increased from 120 epoches to 200 epoches. + +Among them, ResNet50_vd_v2 and ResNet50_vd_ssld adopted knowledge distillation, which further improved the accuracy of the model while keeping the structure unchanged. Specifically, the teacher model of ResNet50_vd_v2 is ResNet152_vd (top1 accuracy 80.59%), the training set is imagenet-1k, the teacher model of ResNet50_vd_ssld is ResNeXt101_32x16d_wsl (top1 accuracy 84.2%), and the training set is the combination of 4 million data mined by imagenet-22k and ImageNet-1k . The specific methods of knowledge distillation are being continuously updated. + +The FLOPS, parameters, and inference time on the T4 GPU of this series of models are shown in the figure below. + +![](../../images/models/T4_benchmark/t4.fp32.bs4.ResNet.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.ResNet.params.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.ResNet.png) + +![](../../images/models/T4_benchmark/t4.fp16.bs4.ResNet.png) + + +As can be seen from the above curves, the higher the number of layers, the higher the accuracy, but the corresponding number of parameters, calculation and latency will increase. ResNet50_vd_ssld further improves the accuracy of top-1 of the ImageNet-1k validation set by using stronger teachers and more data, reaching 82.39%, refreshing the accuracy of ResNet50 series models. + + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| ResNet18 | 0.710 | 0.899 | 0.696 | 0.891 | 3.660 | 11.690 | +| ResNet18_vd | 0.723 | 0.908 | | | 4.140 | 11.710 | +| ResNet34 | 0.746 | 0.921 | 0.732 | 0.913 | 7.360 | 21.800 | +| ResNet34_vd | 0.760 | 0.930 | | | 7.390 | 21.820 | +| ResNet34_vd_ssld | 0.797 | 0.949 | | | 7.390 | 21.820 | +| ResNet50 | 0.765 | 0.930 | 0.760 | 0.930 | 8.190 | 25.560 | +| ResNet50_vc | 0.784 | 0.940 | | | 8.670 | 25.580 | +| ResNet50_vd | 0.791 | 0.944 | 0.792 | 0.946 | 8.670 | 25.580 | +| ResNet50_vd_v2 | 0.798 | 0.949 | | | 8.670 | 25.580 | +| ResNet101 | 0.776 | 0.936 | 0.776 | 0.938 | 15.520 | 44.550 | +| ResNet101_vd | 0.802 | 0.950 | | | 16.100 | 44.570 | +| ResNet152 | 0.783 | 0.940 | 0.778 | 0.938 | 23.050 | 60.190 | +| ResNet152_vd | 0.806 | 0.953 | | | 23.530 | 60.210 | +| ResNet200_vd | 0.809 | 0.953 | | | 30.530 | 74.740 | +| ResNet50_vd_ssld | 0.824 | 0.961 | | | 8.670 | 25.580 | +| ResNet50_vd_ssld_v2 | 0.830 | 0.964 | | | 8.670 | 25.580 | +| Fix_ResNet50_vd_ssld_v2 | 0.840 | 0.970 | | | 17.696 | 25.580 | +| ResNet101_vd_ssld | 0.837 | 0.967 | | | 16.100 | 44.570 | + +* Note: `ResNet50_vd_ssld_v2` is obtained by adding AutoAugment in training process on the basis of `ResNet50_vd_ssld` training strategy.`Fix_ResNet50_vd_ssld_v2` stopped all parameter updates of `ResNet50_vd_ssld_v2` except the FC layer,and fine-tuned on ImageNet1k dataset, the resolution is 320x320. + + +## Inference speed based on V100 GPU + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|------------------|-----------|-------------------|--------------------------| +| ResNet18 | 224 | 256 | 1.499 | +| ResNet18_vd | 224 | 256 | 1.603 | +| ResNet34 | 224 | 256 | 2.272 | +| ResNet34_vd | 224 | 256 | 2.343 | +| ResNet34_vd_ssld | 224 | 256 | 2.343 | +| ResNet50 | 224 | 256 | 2.939 | +| ResNet50_vc | 224 | 256 | 3.041 | +| ResNet50_vd | 224 | 256 | 3.165 | +| ResNet50_vd_v2 | 224 | 256 | 3.165 | +| ResNet101 | 224 | 256 | 5.314 | +| ResNet101_vd | 224 | 256 | 5.252 | +| ResNet152 | 224 | 256 | 7.205 | +| ResNet152_vd | 224 | 256 | 7.200 | +| ResNet200_vd | 224 | 256 | 8.885 | +| ResNet50_vd_ssld | 224 | 256 | 3.165 | +| ResNet101_vd_ssld | 224 | 256 | 5.252 | + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|-------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| ResNet18 | 224 | 256 | 1.3568 | 2.5225 | 3.61904 | 1.45606 | 3.56305 | 6.28798 | +| ResNet18_vd | 224 | 256 | 1.39593 | 2.69063 | 3.88267 | 1.54557 | 3.85363 | 6.88121 | +| ResNet34 | 224 | 256 | 2.23092 | 4.10205 | 5.54904 | 2.34957 | 5.89821 | 10.73451 | +| ResNet34_vd | 224 | 256 | 2.23992 | 4.22246 | 5.79534 | 2.43427 | 6.22257 | 11.44906 | +| ResNet34_vd | 224 | 256 | 2.23992 | 4.22246 | 5.79534 | 2.43427 | 6.22257 | 11.44906 | +| ResNet50 | 224 | 256 | 2.63824 | 4.63802 | 7.02444 | 3.47712 | 7.84421 | 13.90633 | +| ResNet50_vc | 224 | 256 | 2.67064 | 4.72372 | 7.17204 | 3.52346 | 8.10725 | 14.45577 | +| ResNet50_vd | 224 | 256 | 2.65164 | 4.84109 | 7.46225 | 3.53131 | 8.09057 | 14.45965 | +| ResNet50_vd_v2 | 224 | 256 | 2.65164 | 4.84109 | 7.46225 | 3.53131 | 8.09057 | 14.45965 | +| ResNet101 | 224 | 256 | 5.04037 | 7.73673 | 10.8936 | 6.07125 | 13.40573 | 24.3597 | +| ResNet101_vd | 224 | 256 | 5.05972 | 7.83685 | 11.34235 | 6.11704 | 13.76222 | 25.11071 | +| ResNet152 | 224 | 256 | 7.28665 | 10.62001 | 14.90317 | 8.50198 | 19.17073 | 35.78384 | +| ResNet152_vd | 224 | 256 | 7.29127 | 10.86137 | 15.32444 | 8.54376 | 19.52157 | 36.64445 | +| ResNet200_vd | 224 | 256 | 9.36026 | 13.5474 | 19.0725 | 10.80619 | 25.01731 | 48.81399 | +| ResNet50_vd_ssld | 224 | 256 | 2.65164 | 4.84109 | 7.46225 | 3.53131 | 8.09057 | 14.45965 | +| ResNet50_vd_ssld_v2 | 224 | 256 | 2.65164 | 4.84109 | 7.46225 | 3.53131 | 8.09057 | 14.45965 | +| Fix_ResNet50_vd_ssld_v2 | 320 | 320 | 3.42818 | 7.51534 | 13.19370 | 5.07696 | 14.64218 | 27.01453 | +| ResNet101_vd_ssld | 224 | 256 | 5.05972 | 7.83685 | 11.34235 | 6.11704 | 13.76222 | 25.11071 | diff --git a/docs/en/models/SEResNext_and_Res2Net_en.md b/docs/en/models/SEResNext_and_Res2Net_en.md new file mode 100644 index 00000000..7d614a0b --- /dev/null +++ b/docs/en/models/SEResNext_and_Res2Net_en.md @@ -0,0 +1,116 @@ +# SEResNeXt and Res2Net series + +## Overview + +ResNeXt, one of the typical variants of ResNet, was presented at the CVPR conference in 2017. Prior to this, the methods to improve the model accuracy mainly focused on deepening or widening the network, which increased the number of parameters and calculation, and slowed down the inference speed accordingly. The concept of cardinality was proposed in ResNeXt structure. The author found that increasing the number of channel groups was more effective than increasing the depth and width through experiments. It can improve the accuracy without increasing the parameter complexity and reduce the number of parameters at the same time, so it is a more successful variant of ResNet. + +SENet is the winner of the 2017 ImageNet classification competition. It proposes a new SE structure that can be migrated to any other network. It controls the scale to enhance the important features between each channel, and weaken the unimportant features. So that the extracted features are more directional. + +Res2Net is a brand-new improvement of ResNet proposed in 2019. The solution can be easily integrated with other excellent modules. Without increasing the amount of calculation, the performance on ImageNet, CIFAR-100 and other data sets exceeds ResNet. Res2Net, with its simple structure and superior performance, further explores the multi-scale representation capability of CNN at a more fine-grained level. Res2Net reveals a new dimension to improve model accuracy, called scale, which is an essential and more effective factor in addition to the existing dimensions of depth, width, and cardinality. The network also performs well in other visual tasks such as object detection and image segmentation. + +The FLOPS, parameters, and inference time on the T4 GPU of this series of models are shown in the figure below. + + +![](../../images/models/T4_benchmark/t4.fp32.bs4.SeResNeXt.flops.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.SeResNeXt.params.png) + +![](../../images/models/T4_benchmark/t4.fp32.bs4.SeResNeXt.png) + +![](../../images/models/T4_benchmark/t4.fp16.bs4.SeResNeXt.png) + + +At present, there are a total of 24 pretrained models of the three categories open sourced by PaddleClas, and the indicators are shown in the figure. It can be seen from the diagram that under the same Flops and Params, the improved model tends to have higher accuracy, but the inference speed is often inferior to the ResNet series. On the other hand, Res2Net performed better. Compared with group operation in ResNeXt and SE structure operation in SEResNet, Res2Net tended to have better accuracy in the same Flops, Params and inference speed. + + + +## Accuracy, FLOPS and Parameters + +| Models | Top1 | Top5 | Reference
top1 | Reference
top5 | FLOPS
(G) | Parameters
(M) | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| Res2Net50_26w_4s | 0.793 | 0.946 | 0.780 | 0.936 | 8.520 | 25.700 | +| Res2Net50_vd_26w_4s | 0.798 | 0.949 | | | 8.370 | 25.060 | +| Res2Net50_14w_8s | 0.795 | 0.947 | 0.781 | 0.939 | 9.010 | 25.720 | +| Res2Net101_vd_26w_4s | 0.806 | 0.952 | | | 16.670 | 45.220 | +| Res2Net200_vd_26w_4s | 0.812 | 0.957 | | | 31.490 | 76.210 | +| Res2Net200_vd_26w_4s_ssld | **0.851** | 0.974 | | | 31.490 | 76.210 | +| ResNeXt50_32x4d | 0.778 | 0.938 | 0.778 | | 8.020 | 23.640 | +| ResNeXt50_vd_32x4d | 0.796 | 0.946 | | | 8.500 | 23.660 | +| ResNeXt50_64x4d | 0.784 | 0.941 | | | 15.060 | 42.360 | +| ResNeXt50_vd_64x4d | 0.801 | 0.949 | | | 15.540 | 42.380 | +| ResNeXt101_32x4d | 0.787 | 0.942 | 0.788 | | 15.010 | 41.540 | +| ResNeXt101_vd_32x4d | 0.803 | 0.951 | | | 15.490 | 41.560 | +| ResNeXt101_64x4d | 0.784 | 0.945 | 0.796 | | 29.050 | 78.120 | +| ResNeXt101_vd_64x4d | 0.808 | 0.952 | | | 29.530 | 78.140 | +| ResNeXt152_32x4d | 0.790 | 0.943 | | | 22.010 | 56.280 | +| ResNeXt152_vd_32x4d | 0.807 | 0.952 | | | 22.490 | 56.300 | +| ResNeXt152_64x4d | 0.795 | 0.947 | | | 43.030 | 107.570 | +| ResNeXt152_vd_64x4d | 0.811 | 0.953 | | | 43.520 | 107.590 | +| SE_ResNet18_vd | 0.733 | 0.914 | | | 4.140 | 11.800 | +| SE_ResNet34_vd | 0.765 | 0.932 | | | 7.840 | 21.980 | +| SE_ResNet50_vd | 0.795 | 0.948 | | | 8.670 | 28.090 | +| SE_ResNeXt50_32x4d | 0.784 | 0.940 | 0.789 | 0.945 | 8.020 | 26.160 | +| SE_ResNeXt50_vd_32x4d | 0.802 | 0.949 | | | 10.760 | 26.280 | +| SE_ResNeXt101_32x4d | 0.791 | 0.942 | 0.793 | 0.950 | 15.020 | 46.280 | +| SENet154_vd | 0.814 | 0.955 | | | 45.830 | 114.290 | + + + +## Inference speed based on V100 GPU + +| Models | Crop Size | Resize Short Size | FP32
Batch Size=1
(ms) | +|-----------------------|-----------|-------------------|--------------------------| +| Res2Net50_26w_4s | 224 | 256 | 4.148 | +| Res2Net50_vd_26w_4s | 224 | 256 | 4.172 | +| Res2Net50_14w_8s | 224 | 256 | 5.113 | +| Res2Net101_vd_26w_4s | 224 | 256 | 7.327 | +| Res2Net200_vd_26w_4s | 224 | 256 | 12.806 | +| ResNeXt50_32x4d | 224 | 256 | 10.964 | +| ResNeXt50_vd_32x4d | 224 | 256 | 7.566 | +| ResNeXt50_64x4d | 224 | 256 | 13.905 | +| ResNeXt50_vd_64x4d | 224 | 256 | 14.321 | +| ResNeXt101_32x4d | 224 | 256 | 14.915 | +| ResNeXt101_vd_32x4d | 224 | 256 | 14.885 | +| ResNeXt101_64x4d | 224 | 256 | 28.716 | +| ResNeXt101_vd_64x4d | 224 | 256 | 28.398 | +| ResNeXt152_32x4d | 224 | 256 | 22.996 | +| ResNeXt152_vd_32x4d | 224 | 256 | 22.729 | +| ResNeXt152_64x4d | 224 | 256 | 46.705 | +| ResNeXt152_vd_64x4d | 224 | 256 | 46.395 | +| SE_ResNet18_vd | 224 | 256 | 1.694 | +| SE_ResNet34_vd | 224 | 256 | 2.786 | +| SE_ResNet50_vd | 224 | 256 | 3.749 | +| SE_ResNeXt50_32x4d | 224 | 256 | 8.924 | +| SE_ResNeXt50_vd_32x4d | 224 | 256 | 9.011 | +| SE_ResNeXt101_32x4d | 224 | 256 | 19.204 | +| SENet154_vd | 224 | 256 | 50.406 | + + +## Inference speed based on T4 GPU + +| Models | Crop Size | Resize Short Size | FP16
Batch Size=1
(ms) | FP16
Batch Size=4
(ms) | FP16
Batch Size=8
(ms) | FP32
Batch Size=1
(ms) | FP32
Batch Size=4
(ms) | FP32
Batch Size=8
(ms) | +|-----------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------| +| Res2Net50_26w_4s | 224 | 256 | 3.56067 | 6.61827 | 11.41566 | 4.47188 | 9.65722 | 17.54535 | +| Res2Net50_vd_26w_4s | 224 | 256 | 3.69221 | 6.94419 | 11.92441 | 4.52712 | 9.93247 | 18.16928 | +| Res2Net50_14w_8s | 224 | 256 | 4.45745 | 7.69847 | 12.30935 | 5.4026 | 10.60273 | 18.01234 | +| Res2Net101_vd_26w_4s | 224 | 256 | 6.53122 | 10.81895 | 18.94395 | 8.08729 | 17.31208 | 31.95762 | +| Res2Net200_vd_26w_4s | 224 | 256 | 11.66671 | 18.93953 | 33.19188 | 14.67806 | 32.35032 | 63.65899 | +| ResNeXt50_32x4d | 224 | 256 | 7.61087 | 8.88918 | 12.99674 | 7.56327 | 10.6134 | 18.46915 | +| ResNeXt50_vd_32x4d | 224 | 256 | 7.69065 | 8.94014 | 13.4088 | 7.62044 | 11.03385 | 19.15339 | +| ResNeXt50_64x4d | 224 | 256 | 13.78688 | 15.84655 | 21.79537 | 13.80962 | 18.4712 | 33.49843 | +| ResNeXt50_vd_64x4d | 224 | 256 | 13.79538 | 15.22201 | 22.27045 | 13.94449 | 18.88759 | 34.28889 | +| ResNeXt101_32x4d | 224 | 256 | 16.59777 | 17.93153 | 21.36541 | 16.21503 | 19.96568 | 33.76831 | +| ResNeXt101_vd_32x4d | 224 | 256 | 16.36909 | 17.45681 | 22.10216 | 16.28103 | 20.25611 | 34.37152 | +| ResNeXt101_64x4d | 224 | 256 | 30.12355 | 32.46823 | 38.41901 | 30.4788 | 36.29801 | 68.85559 | +| ResNeXt101_vd_64x4d | 224 | 256 | 30.34022 | 32.27869 | 38.72523 | 30.40456 | 36.77324 | 69.66021 | +| ResNeXt152_32x4d | 224 | 256 | 25.26417 | 26.57001 | 30.67834 | 24.86299 | 29.36764 | 52.09426 | +| ResNeXt152_vd_32x4d | 224 | 256 | 25.11196 | 26.70515 | 31.72636 | 25.03258 | 30.08987 | 52.64429 | +| ResNeXt152_64x4d | 224 | 256 | 46.58293 | 48.34563 | 56.97961 | 46.7564 | 56.34108 | 106.11736 | +| ResNeXt152_vd_64x4d | 224 | 256 | 47.68447 | 48.91406 | 57.29329 | 47.18638 | 57.16257 | 107.26288 | +| SE_ResNet18_vd | 224 | 256 | 1.61823 | 3.1391 | 4.60282 | 1.7691 | 4.19877 | 7.5331 | +| SE_ResNet34_vd | 224 | 256 | 2.67518 | 5.04694 | 7.18946 | 2.88559 | 7.03291 | 12.73502 | +| SE_ResNet50_vd | 224 | 256 | 3.65394 | 7.568 | 12.52793 | 4.28393 | 10.38846 | 18.33154 | +| SE_ResNeXt50_32x4d | 224 | 256 | 9.06957 | 11.37898 | 18.86282 | 8.74121 | 13.563 | 23.01954 | +| SE_ResNeXt50_vd_32x4d | 224 | 256 | 9.25016 | 11.85045 | 25.57004 | 9.17134 | 14.76192 | 19.914 | +| SE_ResNeXt101_32x4d | 224 | 256 | 19.34455 | 20.6104 | 32.20432 | 18.82604 | 25.31814 | 41.97758 | +| SENet154_vd | 224 | 256 | 49.85733 | 54.37267 | 74.70447 | 53.79794 | 66.31684 | 121.59885 | diff --git a/docs/en/models/Tricks_en.md b/docs/en/models/Tricks_en.md new file mode 100644 index 00000000..55ddc515 --- /dev/null +++ b/docs/en/models/Tricks_en.md @@ -0,0 +1,95 @@ +# Tricks for Training + +## Choice of Optimizers: +Since the development of deep learning, there have been many researchers working on the optimizer. The purpose of the optimizer is to make the loss function as small as possible, so as to find suitable parameters to complete a certain task. At present, the main optimizers used in model training are SGD, RMSProp, Adam, AdaDelt and so on. The SGD optimizers with momentum is widely used in academia and industry, so most of models we release are trained by SGD optimizer with momentum. But the SGD optimizer with momentum has two disadvantages, one is that the convergence speed is slow, the other is that the initial learning rate is difficult to set, however, if the initial learning rate is set properly and the models are trained in sufficient iterations, the models trained by SGD with momentum can reach higher accuracy compared with the models trained by other optimizers. Some other optimizers with adaptive learning rate such as Adam, RMSProp and so on tent to converge faster, but the final convergence accuracy will be slightly worse. If you want to train a model in faster convergence speed, we recommend you use the optimizers with adaptive learning rate, but if you want to train a model with higher accuracy, we recommend you to use SGD optimizer with momentum. + +## Choice of Learning Rate and Learning Rate Declining Strategy: +The choice of learning rate is related to the optimizer, data set and tasks. Here we mainly introduce the learning rate of training ImageNet-1K with momentum + SGD as the optimizer and the choice of learning rate decline. + +### Concept of Learning Rate: +the learning rate is the hyperparameter to control the learning speed, the lower the learning rate, the slower the change of the loss value, though using a low learning rate can ensure that you will not miss any local minimum, but it also means that the convergence speed is slow, especially when the gradient is trapped in a gradient plateau area. + +### Learning Rate Decline Strategy: +During training, if we always use the same learning rate, we cannot get the model with highest accuracy, so the learning rate should be adjust during training. In the early stage of training, the weights are in a random initialization state and the gradients are tended to descent, so we can set a relatively large learning rate for faster convergence. In the late stage of training, the weights are close to the optimal values, the optimal value cannot be reached by a relatively large learning rate, so a relatively smaller learning rate should be used. During training, many researchers use the piecewise_decay learning rate reduction strategy, which is a stepwise decline learning rate. For example, in the training of ResNet50, the initial learning rate we set is 0.1, and the learning rate drops to 1/10 every 30 epoches, the total epoches for training is 120. Besides the piecewise_decay, many researchers also proposed other ways to decrease the learning rate, such as polynomial_decay, exponential_decay and cosine_decay and so on, among them, cosine_decay has become the preferred learning rate reduction method for improving model accuracy beacause there is no need to adjust hyperparameters and the robustness is relatively high. The learning rate curves of cosine_decay and piecewise_decay are shown in the following figures, it is easy to observe that during the entire training process, cosine_decay keeps a relatively large learning rate, so its convergence is slower, but the final convergence accuracy is better than the one using piecewise_decay. + +![](../../images/models/lr_decay.jpeg) + +In addition, we can also see from the figures that the number of epoches with a small learning rate in cosine_decay is fewer, which will affect the final accuracy, so in order to make cosine_decay play a better effect, it is recommended to use cosine_decay in large epoched, such as 200 epoches. + +### Warmup Strategy +If a large batch_size is adopted to train nerual network, we recommend you to adopt warmup strategy. as the name suggests, the warmup strategy is to let model learning first warm up, we do not directly use the initial learning rate at the begining of training, instead, we use a gradually increasing learning rate to train the model, when the increasing learning rate reaches the initial learning rate, the learning rate reduction method mentioned in the learning rate reduction strategy is then used to decay the learning rate. Experiments show that when the batch size is large, warmup strategy can improve the accuracy. Some model training with large batch_size such as MobileNetV3 training, we set the epoch in warmup to 5 by default, that is, first in 5 epoches, the learning rate increases from 0 to initial learning rate, then learning rate decay begins. + +## Choice of Batch_size +Batch_size is an important hyperparameter in training neural networks, batch_size determines how much data is sent to the neural network to for training at a time. In the paper [1], the author found in experiments that when batch_size is linearly related to the learning rate, the convergence accuracy is hardly affected. When training ImageNet data, an initial learning rate of 0.1 are commonly chosen for training, and batch_size is 256, so according to the actual model size and memory, you can set the learning rate to 0.1\*k, batch_size to 256\*k. + +## Choice of Weight_decay +Overfitting is a common term in machine learning. A simple understanding is that the model performs well on the training data, but it performs poorly on the test data. In the convolutional neural network, there also exists the problem of overfitting. To avoid overfitting, many regular ways have been proposed. Among them, weight_decay is one of the widely used ways to avoid overfitting. After the final loss function, L2 regularization(weight_decay) is added to the loss function, with the help of L2 regularization, the weight of the network tend to choose a smaller value, and finally the parameters in the entire network tends to 0, and the generalization performance of the model is improved accordingly. In different kinds of Deep learning frame, the meaning of L2_decay is the coefficient of L2 regularization, on paddle, the name of this value is L2_decay, so in the following the value is called L2_decay. the larger the coefficient, the more the model tends to be underfitting. In the task of training ImageNet, this parameter is set to 1e-4 in most network. In some small networks such as MobileNet networks, in order to avoid network underfitting, the value is set to 1e-5 ~ 4e-5. Of course, the setting of this value is also related to the specific data set, When the data set is large, the network itself tends to be under-fitted, and the value can be appropriately reduced. When the data set is small, the network tends to overfit itself, so the value can be increased appropriately. The following table shows the accuracy of MobileNetV1_x0_25 using different l2_decay on ImageNet-1k. Since MobileNetV1_x0_25 is a relatively small network, the large l2_decay will make the network tend to be underfitting, so in this network, 3e-5 are better choices compared with 1e-4. + +| Model | L2_decay | Train acc1/acc5 | Test acc1/acc5 | +|:--:|:--:|:--:|:--:| +| MobileNetV1_x0_25 | 1e-4 | 43.79%/67.61% | 50.41%/74.70% | +| MobileNetV1_x0_25 | 3e-5 | 47.38%/70.83% | 51.45%/75.45% | + +In addition, the setting of L2_decay is also related to whether other regularization is used during training. If the data argument during the training is more complicated, which means that the training becomes more difficult, L2_decay can be appropriately reduced. The following table shows that the precision of ResNet50 using a different l2_decay on ImageNet-1K. It is easy to observe that after the training becomes difficult, using a smaller l2_decay helps to improve the accuracy of the model. + +| Model | L2_decay | Train acc1/acc5 | Test acc1/acc5 | +|:--:|:--:|:--:|:--:| +| ResNet50 | 1e-4 | 75.13%/90.42% | 77.65%/93.79% | +| ResNet50 | 7e-5 | 75.56%/90.55% | 78.04%/93.74% | + +In summary, l2_decay can be adjusted according to specific tasks and models. Usually simple tasks or larger models are recommended to use Larger l2_decay, complex tasks or smaller models are recommended to use smaller l2_decay. + +## Choice of Label_smoothing +Label_smoothing is a regularization method in deep learning. Its full name is Label Smoothing Regularization (LSR), that is, label smoothing regularization. In the traditional classification task, when calculating the loss function, the real one hot label and the output of the neural network are calculated in cross-entropy formula, the label smoothing aims to make the real one hot label become smooth label, which makes the neural network no longer learn from the hard labels, but the soft labels with a probability value, where the probability of the position corresponding to the category is the largest and the probability of other positions are very small value, specific calculation method can be seen in the paper[2]. In label-smoothing, there is an epsilon parameter describing the degree of softening the label. The larger epsilon, the smaller the probability and smoother the label, on the contrary, the label tends to be hard label. during training on ImageNet-1K, the parameter is usually set to 0.1. In the experiments of training ResNet50, when using label_smoothing, the accuracy is higher than the one without label_smoothing, the following table shows the performance of ResNet50_vd with label smoothing and without label smoothing. + +| Model | Use_label_smoothing | Test acc1 | +|:--:|:--:|:--:| +| ResNet50_vd | 0 | 77.9% | +| ResNet50_vd | 1 | 78.4% | + +But, because label smoothing can be regarded as a regular way, on relatively small models, the accuracy improvement is not obvious or even decreases, the following table shows the accuracy performance of ResNet18 with label smoothing and without label smoothing on ImageNet-1K, it can be clearly seen that after using label smoothing, the accuracy of ResNet has decreased. + +| Model | Use_label_smoohing | Train acc1/acc5 | Test acc1/acc5 | +|:--:|:--:|:--:|:--:| +| ResNet18 | 0 | 69.81%/87.70% | 70.98%/89.92% | +| ResNet18 | 1 | 68.00%/86.56% | 70.81%/89.89% | + + +In summary, the use of label_smoohing for larger models can effectively improve the accuracy of the model, and the use of label_smoohing for smaller models may reduce the accuracy of the model, so before deciding whether to use label_smoohing, you need to evaluate the size of the model and the difficulty of the task. + +## Change the Crop Area and Stretch Transformation Degree of the Images for Small Models +In the standard preprocessing of ImageNet-1k data, two values of scale and ratio are defined in the random_crop function. These two values respectively determine the size of the image crop and the degree of stretching of the image. The default value of scale is 0.08-1(lower_scale-upper_scale), the default value range of ratio is 3/4-4/3(lower_ratio-upper_ratio). In small network training, such data argument will make the network underfitting, resulting in a decrease in accuracy. In order to improve the accuracy of the network, you can make the data argument weaker, that is, increase the crop area of the images or weaken the degree of stretching and transformation of the images, we can achieve weaker image transformation by increasing the value of lower_scale or narrowing the gap between lower_ratio and upper_scale. The following table lists the accuracy of training MobileNetV2_x0_25 with different lower_scale. It can be seen that the training accuracy and validation accuracy are improved after increasing the crop area of the images + +| Model | Scale Range | Train_acc1/acc5 | Test_acc1/acc5 | +|:--:|:--:|:--:|:--:| +| MobileNetV2_x0_25 | [0.08,1] | 50.36%/72.98% | 52.35%/75.65% | +| MobileNetV2_x0_25 | [0.2,1] | 54.39%/77.08% | 53.18%/76.14% | + +## Use Data Augmentation to Improve Accuracy +In general, the size of the data set is critical to the performances, but the annotation of images are often more expensive, so the number of annotated images are often scarce. In this case, the data argument is particularly important. In the standard data augmentation for training on ImageNet-1k, two data augmentation methods which are random_crop and random_flip are mainly used. However, in recent years, more and more data augmentation methods have been proposed, such as cutout, mixup, cutmix, AutoAugment, etc. Experiments show that these data augmentation methods can effectively improve the accuracy of the model. The following table lists the performance of ResNet50 in 8 different data augmentation methods. It can be seen that compared to the baseline, all data augmentation methods can be useful for the accuracy of ResNet50, among them cutmix is currently the most effective data argument. More data argument can be seen here[**Data Argument**](https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/ImageAugment.html). + +| Model | Data Argument | Test top-1 | +|:--:|:--:|:--:| +| ResNet50 | Baseline | 77.31% | +| ResNet50 | Auto-Augment | 77.95% | +| ResNet50 | Mixup | 78.28% | +| ResNet50 | Cutmix | 78.39% | +| ResNet50 | Cutout | 78.01% | +| ResNet50 | Gridmask | 77.85% | +| ResNet50 | Random-Augment | 77.70% | +| ResNet50 | Random-Erasing | 77.91% | +| ResNet50 | Hide-and-Seek | 77.43% | + +## Determine the Tuning Strategy by Train_acc and Test_acc +In the process of training the network, the training set accuracy rate and validation set accuracy rate of each epoch are usually printed. Generally speaking, the accuracy of the training set is slightly higher than the accuracy of the validation set or the same are good state in training, but if you find that the accuracy of training set is much higher than the one of validation set, it means that overfitting happens in your task, which need more regularization, such as increase the value of L2_decay, using more data argument or label smoothing and so on. If you find that the accuracy of training set is lower than the one of validation set, it means that underfitting happens in your task, which recommend you to decrease the value of L2_decay, using fewer data argument, increase the area of the crop area of the images, weaken the stretching transformation of the images, remove label_smoothing, etc. + +## Improve the Accuracy of Your Own Data Set with Existing Pre-trained Models +In the field of computer vision, it has become common to load pre-trained models to train one's own tasks. Compared with starting training from random initialization, loading pre-trained models can often improve the accuracy of specific tasks. In general, the pre-trained model widely used in the industry is obtained from the ImageNet-1k dataset. The fc layer weight of the pre-trained model is a matrix of k\*1000, where k is The number of neurons before, and the weights of the fc layer is not need to load because of the different tasks. In terms of learning rate, if your training data set is particularly small (such as less than 1,000), we recommend that you use a smaller initial learning rate, such as 0.001 (batch_size: 256, the same below), to avoid a large learning rate undermine pre-training weights, if your training data set is relatively large (greater than 100,000), we recommend that you try a larger initial learning rate, such as 0.01 or greater. + + +> If you think this guide is helpful to you, welcome to star our repo:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) + +## Reference +[1]P. Goyal, P. Dolla ́r, R. B. Girshick, P. Noordhuis, L. Wesolowski, A. Kyrola, A. Tulloch, Y. Jia, and K. He. Accurate, large minibatch SGD: training imagenet in 1 hour. CoRR, abs/1706.02677, 2017. + +[2]C.Szegedy,V.Vanhoucke,S.Ioffe,J.Shlens,andZ.Wojna. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015. diff --git a/docs/en/models/index.rst b/docs/en/models/index.rst index 0fa65a89..73b2a1c1 100644 --- a/docs/en/models/index.rst +++ b/docs/en/models/index.rst @@ -4,13 +4,13 @@ models .. toctree:: :maxdepth: 1 - models_intro.md - Tricks.md - ResNet_and_vd.md - Mobile.md - SEResNext_and_Res2Net.md - Inception.md - HRNet.md - DPN_DenseNet.md - EfficientNet_and_ResNeXt101_wsl.md - Others.md + models_intro_en.md + Tricks_en.md + ResNet_and_vd_en.md + Mobile_en.md + SEResNext_and_Res2Net_en.md + Inception_en.md + HRNet_en.md + DPN_DenseNet_en.md + EfficientNet_and_ResNeXt101_wsl_en.md + Others_en.md diff --git a/docs/en/models/models_intro_en.md b/docs/en/models/models_intro_en.md new file mode 100644 index 00000000..32fba01f --- /dev/null +++ b/docs/en/models/models_intro_en.md @@ -0,0 +1,280 @@ +# Model Library Overview + +## Overview + +Based on the ImageNet1k classification dataset, the 23 classification network structures supported by PaddleClas and the corresponding 117 image classification pretrained models are shown below. Training trick, a brief introduction to each series of network structures, and performance evaluation will be shown in the corresponding chapters. + +## Evaluation environment +* CPU evaluation environment is based on Snapdragon 855 (SD855). +* The GPU evaluation environment is based on V100 and TensorRT, and the evaluation script is as follows. + +```shell +#!/usr/bin/env bash + +export PYTHONPATH=$PWD:$PYTHONPATH + +python tools/infer/predict.py \ + --model_file='pretrained/infer/model' \ + --params_file='pretrained/infer/params' \ + --enable_benchmark=True \ + --model_name=ResNet50_vd \ + --use_tensorrt=True \ + --use_fp16=False \ + --batch_size=1 +``` + +![](../../images/models/T4_benchmark/t4.fp32.bs4.main_fps_top1.png) + +![](../../images/models/V100_benchmark/v100.fp32.bs1.main_fps_top1_s.jpg) + +![](../../images/models/mobile_arm_top1.png) + + +> If you think this document is helpful to you, welcome to give a star to our project:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) + + +## Pretrained model list and download address +- ResNet and ResNet_vd series + - ResNet series[[1](#ref1)]([paper link](http://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html)) + - [ResNet18](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_pretrained.tar) + - [ResNet34](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_pretrained.tar) + - [ResNet50](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_pretrained.tar) + - [ResNet101](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_pretrained.tar) + - [ResNet152](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet152_pretrained.tar) + - ResNet_vc、ResNet_vd series[[2](#ref2)]([paper link](https://arxiv.org/abs/1812.01187)) + - [ResNet50_vc](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vc_pretrained.tar) + - [ResNet18_vd](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar) + - [ResNet34_vd](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_vd_pretrained.tar) + - [ResNet34_vd_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_vd_ssld_pretrained.tar) + - [ResNet50_vd](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_pretrained.tar) + - [ResNet50_vd_v2](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_v2_pretrained.tar) + - [ResNet101_vd](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_pretrained.tar) + - [ResNet152_vd](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet152_vd_pretrained.tar) + - [ResNet200_vd](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet200_vd_pretrained.tar) + - [ResNet50_vd_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar) + - [ResNet50_vd_ssld_v2](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_v2_pretrained.tar) + - [Fix_ResNet50_vd_ssld_v2](https://paddle-imagenet-models-name.bj.bcebos.com/Fix_ResNet50_vd_ssld_v2_pretrained.tar) + - [ResNet101_vd_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_ssld_pretrained.tar) + + +- Mobile and Embedded Vision Applications Network series + - MobileNetV3 series[[3](#ref3)]([paper link](https://arxiv.org/abs/1905.02244)) + - [MobileNetV3_large_x0_35](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_35_pretrained.tar) + - [MobileNetV3_large_x0_5](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar) + - [MobileNetV3_large_x0_75](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_75_pretrained.tar) + - [MobileNetV3_large_x1_0](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_pretrained.tar) + - [MobileNetV3_large_x1_25](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_25_pretrained.tar) + - [MobileNetV3_small_x0_35](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_35_pretrained.tar) + - [MobileNetV3_small_x0_5](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_5_pretrained.tar) + - [MobileNetV3_small_x0_75](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x0_75_pretrained.tar) + - [MobileNetV3_small_x1_0](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_pretrained.tar) + - [MobileNetV3_small_x1_25](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_25_pretrained.tar) + - [MobileNetV3_large_x1_0_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_pretrained.tar) + - [MobileNetV3_large_x1_0_ssld_int8](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_int8_pretrained.tar) + - [MobileNetV3_small_x1_0_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_ssld_pretrained.tar) + - MobileNetV2 series[[4](#ref4)]([paper link](https://arxiv.org/abs/1801.04381)) + - [MobileNetV2_x0_25](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_25_pretrained.tar) + - [MobileNetV2_x0_5](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_5_pretrained.tar) + - [MobileNetV2_x0_75](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_75_pretrained.tar) + - [MobileNetV2](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_pretrained.tar) + - [MobileNetV2_x1_5](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x1_5_pretrained.tar) + - [MobileNetV2_x2_0](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x2_0_pretrained.tar) + - [MobileNetV2_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_ssld_pretrained.tar) + - MobileNetV1 series[[5](#ref5)]([paper link](https://arxiv.org/abs/1704.04861)) + - [MobileNetV1_x0_25](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_25_pretrained.tar) + - [MobileNetV1_x0_5](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_5_pretrained.tar) + - [MobileNetV1_x0_75](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_x0_75_pretrained.tar) + - [MobileNetV1](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_pretrained.tar) + - [MobileNetV1_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_ssld_pretrained.tar) + - ShuffleNetV2 series[[6](#ref6)]([paper link](https://arxiv.org/abs/1807.11164)) + - [ShuffleNetV2_x0_25](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_25_pretrained.tar) + - [ShuffleNetV2_x0_33](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_33_pretrained.tar) + - [ShuffleNetV2_x0_5](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x0_5_pretrained.tar) + - [ShuffleNetV2](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_pretrained.tar) + - [ShuffleNetV2_x1_5](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x1_5_pretrained.tar) + - [ShuffleNetV2_x2_0](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_x2_0_pretrained.tar) + - [ShuffleNetV2_swish](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_swish_pretrained.tar) + - GhostNet series[[23](#ref23)]([paper link](https://arxiv.org/pdf/1911.11907.pdf)) + - [GhostNet_x0_5](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x0_5_pretrained.pdparams) + - [GhostNet_x1_0](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x1_0_pretrained.pdparams) + - [GhostNet_x1_3](https://paddle-imagenet-models-name.bj.bcebos.com/GhostNet_x1_3_pretrained.pdparams) + + +- SEResNeXt and Res2Net series + - ResNeXt series[[7](#ref7)]([paper link](https://arxiv.org/abs/1611.05431)) + - [ResNeXt50_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_32x4d_pretrained.tar) + - [ResNeXt50_64x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_64x4d_pretrained.tar) + - [ResNeXt101_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x4d_pretrained.tar) + - [ResNeXt101_64x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_64x4d_pretrained.tar) + - [ResNeXt152_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_32x4d_pretrained.tar) + - [ResNeXt152_64x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_64x4d_pretrained.tar) + - ResNeXt_vd series + - [ResNeXt50_vd_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_vd_32x4d_pretrained.tar) + - [ResNeXt50_vd_64x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt50_vd_64x4d_pretrained.tar) + - [ResNeXt101_vd_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_32x4d_pretrained.tar) + - [ResNeXt101_vd_64x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_64x4d_pretrained.tar) + - [ResNeXt152_vd_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_vd_32x4d_pretrained.tar) + - [ResNeXt152_vd_64x4d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt152_vd_64x4d_pretrained.tar) + - SE_ResNet_vd series[[8](#ref8)]([paper link](https://arxiv.org/abs/1709.01507)) + - [SE_ResNet18_vd](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet18_vd_pretrained.tar) + - [SE_ResNet34_vd](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet34_vd_pretrained.tar) + - [SE_ResNet50_vd](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNet50_vd_pretrained.tar) + - SE_ResNeXt series + - [SE_ResNeXt50_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt50_32x4d_pretrained.tar) + - [SE_ResNeXt101_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt101_32x4d_pretrained.tar) + - SE_ResNeXt_vd series + - [SE_ResNeXt50_vd_32x4d](https://paddle-imagenet-models-name.bj.bcebos.com/SE_ResNeXt50_vd_32x4d_pretrained.tar) + - [SENet154_vd](https://paddle-imagenet-models-name.bj.bcebos.com/SENet154_vd_pretrained.tar) + - Res2Net series[[9](#ref9)]([paper link](https://arxiv.org/abs/1904.01169)) + - [Res2Net50_26w_4s](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_26w_4s_pretrained.tar) + - [Res2Net50_vd_26w_4s](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_vd_26w_4s_pretrained.tar) + - [Res2Net50_14w_8s](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net50_14w_8s_pretrained.tar) + - [Res2Net101_vd_26w_4s](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net101_vd_26w_4s_pretrained.tar) + - [Res2Net200_vd_26w_4s](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net200_vd_26w_4s_pretrained.tar) + - [Res2Net200_vd_26w_4s_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/Res2Net200_vd_26w_4s_ssld_pretrained.tar) + + +- Inception series + - GoogLeNet series[[10](#ref10)]([paper link](https://arxiv.org/pdf/1409.4842.pdf)) + - [GoogLeNet](https://paddle-imagenet-models-name.bj.bcebos.com/GoogLeNet_pretrained.tar) + - Inception series[[11](#ref11)]([paper link](https://arxiv.org/abs/1602.07261)) + - [InceptionV4](https://paddle-imagenet-models-name.bj.bcebos.com/InceptionV4_pretrained.tar) + - Xception series[[12](#ref12)]([paper link](http://openaccess.thecvf.com/content_cvpr_2017/html/Chollet_Xception_Deep_Learning_CVPR_2017_paper.html)) + - [Xception41](https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_pretrained.tar) + - [Xception41_deeplab](https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_deeplab_pretrained.tar) + - [Xception65](https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_pretrained.tar) + - [Xception65_deeplab](https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_deeplab_pretrained.tar) + - [Xception71](https://paddle-imagenet-models-name.bj.bcebos.com/Xception71_pretrained.tar) + + +- HRNet series + - HRNet series[[13](#ref13)]([paper link](https://arxiv.org/abs/1908.07919)) + - [HRNet_W18_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_pretrained.tar) + - [HRNet_W18_C_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_ssld_pretrained.tar) + - [HRNet_W30_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W30_C_pretrained.tar) + - [HRNet_W32_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W32_C_pretrained.tar) + - [HRNet_W40_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W40_C_pretrained.tar) + - [HRNet_W44_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W44_C_pretrained.tar) + - [HRNet_W48_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W48_C_pretrained.tar) + - [HRNet_W48_C_ssld](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W48_C_ssld_pretrained.tar) + - [HRNet_W64_C](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W64_C_pretrained.tar) + + +- DPN and DenseNet series + - DPN series[[14](#ref14)]([paper link](https://arxiv.org/abs/1707.01629)) + - [DPN68](https://paddle-imagenet-models-name.bj.bcebos.com/DPN68_pretrained.tar) + - [DPN92](https://paddle-imagenet-models-name.bj.bcebos.com/DPN92_pretrained.tar) + - [DPN98](https://paddle-imagenet-models-name.bj.bcebos.com/DPN98_pretrained.tar) + - [DPN107](https://paddle-imagenet-models-name.bj.bcebos.com/DPN107_pretrained.tar) + - [DPN131](https://paddle-imagenet-models-name.bj.bcebos.com/DPN131_pretrained.tar) + - DenseNet series[[15](#ref15)]([paper link](https://arxiv.org/abs/1608.06993)) + - [DenseNet121](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet121_pretrained.tar) + - [DenseNet161](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet161_pretrained.tar) + - [DenseNet169](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet169_pretrained.tar) + - [DenseNet201](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet201_pretrained.tar) + - [DenseNet264](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet264_pretrained.tar) + + +- EfficientNet and ResNeXt101_wsl series + - EfficientNet series[[16](#ref16)]([paper link](https://arxiv.org/abs/1905.11946)) + - [EfficientNetB0_small](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB0_small_pretrained.tar) + - [EfficientNetB0](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB0_pretrained.tar) + - [EfficientNetB1](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB1_pretrained.tar) + - [EfficientNetB2](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB2_pretrained.tar) + - [EfficientNetB3](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB3_pretrained.tar) + - [EfficientNetB4](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB4_pretrained.tar) + - [EfficientNetB5](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB5_pretrained.tar) + - [EfficientNetB6](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB6_pretrained.tar) + - [EfficientNetB7](https://paddle-imagenet-models-name.bj.bcebos.com/EfficientNetB7_pretrained.tar) + - ResNeXt101_wsl series[[17](#ref17)]([paper link](https://arxiv.org/abs/1805.00932)) + - [ResNeXt101_32x8d_wsl](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x8d_wsl_pretrained.tar) + - [ResNeXt101_32x16d_wsl](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x16d_wsl_pretrained.tar) + - [ResNeXt101_32x32d_wsl](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x32d_wsl_pretrained.tar) + - [ResNeXt101_32x48d_wsl](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_32x48d_wsl_pretrained.tar) + - [Fix_ResNeXt101_32x48d_wsl](https://paddle-imagenet-models-name.bj.bcebos.com/Fix_ResNeXt101_32x48d_wsl_pretrained.tar) + + + +- ResNeSt and RegNet series + - ResNeSt series[[24](#ref24)]([paper link](https://arxiv.org/abs/2004.08955)) + - [ResNeSt50_fast_1s1x64d](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeSt50_fast_1s1x64d_pretrained.pdparams) + - [ResNeSt50](https://paddle-imagenet-models-name.bj.bcebos.com/ResNeSt50_pretrained.pdparams) + - RegNet series[[25](#ref25)]([paper link](https://arxiv.org/abs/2003.13678)) + - [RegNetX_4GF](https://paddle-imagenet-models-name.bj.bcebos.com/RegNetX_4GF_pretrained.pdparams) + + + +- Other models + - AlexNet series[[18](#ref18)]([paper link](https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)) + - [AlexNet](https://paddle-imagenet-models-name.bj.bcebos.com/AlexNet_pretrained.tar) + - SqueezeNet series[[19](#ref19)]([paper link](https://arxiv.org/abs/1602.07360)) + - [SqueezeNet1_0](https://paddle-imagenet-models-name.bj.bcebos.com/SqueezeNet1_0_pretrained.tar) + - [SqueezeNet1_1](https://paddle-imagenet-models-name.bj.bcebos.com/SqueezeNet1_1_pretrained.tar) + - VGG series[[20](#ref20)]([paper link](https://arxiv.org/abs/1409.1556)) + - [VGG11](https://paddle-imagenet-models-name.bj.bcebos.com/VGG11_pretrained.tar) + - [VGG13](https://paddle-imagenet-models-name.bj.bcebos.com/VGG13_pretrained.tar) + - [VGG16](https://paddle-imagenet-models-name.bj.bcebos.com/VGG16_pretrained.tar) + - [VGG19](https://paddle-imagenet-models-name.bj.bcebos.com/VGG19_pretrained.tar) + - DarkNet series[[21](#ref21)]([paper link](https://arxiv.org/abs/1506.02640)) + - [DarkNet53](https://paddle-imagenet-models-name.bj.bcebos.com/DarkNet53_ImageNet1k_pretrained.tar) + - ACNet series[[22](#ref22)]([paper link](https://arxiv.org/abs/1908.03930)) + - [ResNet50_ACNet_deploy](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_ACNet_deploy_pretrained.tar) + +**Note**: The pretrained models of EfficientNetB1-B7 in the above models are transferred from [pytorch version of EfficientNet](https://github.com/lukemelas/EfficientNet-PyTorch), and the ResNeXt101_wsl series of pretrained models are transferred from [Official repo](https://github.com/facebookresearch/WSL-Images), the remaining pretrained models are obtained by training with the PaddlePaddle framework, and the corresponding training hyperparameters are given in configs. + +## References + + +[1] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778. + +[2] He T, Zhang Z, Zhang H, et al. Bag of tricks for image classification with convolutional neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 558-567. + +[3] Howard A, Sandler M, Chu G, et al. Searching for mobilenetv3[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 1314-1324. + +[4] Sandler M, Howard A, Zhu M, et al. Mobilenetv2: Inverted residuals and linear bottlenecks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 4510-4520. + +[5] Howard A G, Zhu M, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017. + +[6] Ma N, Zhang X, Zheng H T, et al. Shufflenet v2: Practical guidelines for efficient cnn architecture design[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 116-131. + +[7] Xie S, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1492-1500. + + +[8] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141. + + +[9] Gao S, Cheng M M, Zhao K, et al. Res2net: A new multi-scale backbone architecture[J]. IEEE transactions on pattern analysis and machine intelligence, 2019. + +[10] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9. + + +[11] Szegedy C, Ioffe S, Vanhoucke V, et al. Inception-v4, inception-resnet and the impact of residual connections on learning[C]//Thirty-first AAAI conference on artificial intelligence. 2017. + +[12] Chollet F. Xception: Deep learning with depthwise separable convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1251-1258. + +[13] Wang J, Sun K, Cheng T, et al. Deep high-resolution representation learning for visual recognition[J]. arXiv preprint arXiv:1908.07919, 2019. + +[14] Chen Y, Li J, Xiao H, et al. Dual path networks[C]//Advances in neural information processing systems. 2017: 4467-4475. + +[15] Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708. + + +[16] Tan M, Le Q V. Efficientnet: Rethinking model scaling for convolutional neural networks[J]. arXiv preprint arXiv:1905.11946, 2019. + +[17] Mahajan D, Girshick R, Ramanathan V, et al. Exploring the limits of weakly supervised pretraining[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 181-196. + +[18] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105. + +[19] Iandola F N, Han S, Moskewicz M W, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size[J]. arXiv preprint arXiv:1602.07360, 2016. + +[20] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014. + +[21] Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788. + +[22] Ding X, Guo Y, Ding G, et al. Acnet: Strengthening the kernel skeletons for powerful cnn via asymmetric convolution blocks[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 1911-1920. + +[23] Han K, Wang Y, Tian Q, et al. GhostNet: More features from cheap operations[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 1580-1589. + +[24] Zhang H, Wu C, Zhang Z, et al. Resnest: Split-attention networks[J]. arXiv preprint arXiv:2004.08955, 2020. + +[25] Radosavovic I, Kosaraju R P, Girshick R, et al. Designing network design spaces[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 10428-10436. diff --git a/docs/en/tutorials/config_en.md b/docs/en/tutorials/config_en.md new file mode 100644 index 00000000..3f32a3f4 --- /dev/null +++ b/docs/en/tutorials/config_en.md @@ -0,0 +1,82 @@ +#Configuration + +--- + +## Introduction + +This document introduces the configuration(filed in `config/*.yaml`) of PaddleClas. + +### Basic + +| name | detail | default value | optional value | +|:---:|:---:|:---:|:---:| +| mode | mode | "train" | ["train"," valid"] | +| architecture | model name | "ResNet50_vd" | one of 23 architectures | +| pretrained_model | pretrained model path | "" | Str | +| model_save_dir | model stored path | "" | Str | +| classes_num | class number | 1000 | int | +| total_images | total images | 1281167 | int | +| save_interval | save interval | 1 | int | +| validate | whether to validate when training | TRUE | bool | +| valid_interval | valid interval | 1 | int | +| epochs | epoch | | int | +| topk | K value | 5 | int | +| image_shape | image size | [3,224,224] | list, shape: (3,) | +| use_mix | whether to use mixup | False | ['True', 'False'] | +| ls_epsilon | label_smoothing epsilon value| 0 | float | + +### Optimizer & Learning rate + +learning rate + +| name | detail | default value |Optional value | +|:---:|:---:|:---:|:---:| +| function | decay type | "Linear" | ["Linear", "Cosine",
"Piecewise", "CosineWarmup"] | +| params.lr | initial learning rate | 0.1 | float | +| params.decay_epochs | milestone in piecewisedecay | | list | +| params.gamma | gamma in piecewisedecay | 0.1 | float | +| params.warmup_epoch | warmup epoch | 5 | int | +| parmas.steps | decay steps in lineardecay | 100 | int | +| params.end_lr | end lr in lineardecay | 0 | float | + +optimizer + +| name | detail | default value | optional value | +|:---:|:---:|:---:|:---:| +| function | optimizer name | "Momentum" | ["Momentum", "RmsProp"] | +| params.momentum | momentum value | 0.9 | float | +| regularizer.function | regularizer method name | "L2" | ["L1", "L2"] | +| regularizer.factor | regularizer factor | 0.0001 | float | + +### reader + +| name | detail | +|:---:|:---:| +| batch_size | batch size | +| num_workers | worker number | +| file_list | train list path | +| data_dir | train dataset path | +| shuffle_seed | seed | + +processing + +| function name | attribute name | detail | +|:---:|:---:|:---:| +| DecodeImage | to_rgb | decode to RGB | +| | to_np | to numpy | +| | channel_first | Channel first | +| RandCropImage | size | random crop | +| RandFlipImage | | random flip | +| NormalizeImage | scale | normalize image | +| | mean | mean | +| | std | std | +| | order | order | +| ToCHWImage | | to CHW | +| CropImage | size | crop size | +| ResizeImage | resize_short | resize according to short size | + +mix preprocessing + +| name| detail| +|:---:|:---:| +| MixupOperator.alpha | alpha value in mixup| diff --git a/docs/en/tutorials/data_en.md b/docs/en/tutorials/data_en.md new file mode 100644 index 00000000..1bf7d6fb --- /dev/null +++ b/docs/en/tutorials/data_en.md @@ -0,0 +1,77 @@ +# Data + +--- + +## Introducation +This document introduces the preparation of ImageNet1k and flowers102 + +## Dataset + +Dataset | train dataset size | valid dataset size | category | +:------:|:---------------:|:---------------------:|:--------:| +[flowers102](https://www.robots.ox.ac.uk/~vgg/data/flowers/102/)|1k | 6k | 102 | +[ImageNet1k](http://www.image-net.org/challenges/LSVRC/2012/)|1.2M| 50k | 1000 | + +* Data format + +Please follow the steps mentioned below to organize data, include train_list.txt and val_list.txt + +```shell +# delimiter: "space" + +ILSVRC2012_val_00000001.JPEG 65 +... + +``` +### ImageNet1k +After downloading data, please organize the data dir as below + +```bash +PaddleClas/dataset/imagenet/ +|_ train/ +| |_ n01440764 +| | |_ n01440764_10026.JPEG +| | |_ ... +| |_ ... +| | +| |_ n15075141 +| |_ ... +| |_ n15075141_9993.JPEG +|_ val/ +| |_ ILSVRC2012_val_00000001.JPEG +| |_ ... +| |_ ILSVRC2012_val_00050000.JPEG +|_ train_list.txt +|_ val_list.txt +``` +### Flowers102 Dataset + +Download [Data](https://www.robots.ox.ac.uk/~vgg/data/flowers/102/) then decompress: + +```shell +jpg/ +setid.mat +imagelabels.mat +``` + +Please put all the files under ```PaddleClas/dataset/flowers102``` + +generate generate_flowers102_list.py and train_list.txt和val_list.txt + +```bash +python generate_flowers102_list.py jpg train > train_list.txt +python generate_flowers102_list.py jpg valid > val_list.txt + +``` + +Please organize data dir as below + +```bash +PaddleClas/dataset/flowers102/ +|_ jpg/ +| |_ image_03601.jpg +| |_ ... +| |_ image_02355.jpg +|_ train_list.txt +|_ val_list.txt +``` diff --git a/docs/en/tutorials/getting_started_en.md b/docs/en/tutorials/getting_started_en.md new file mode 100644 index 00000000..dccaec8f --- /dev/null +++ b/docs/en/tutorials/getting_started_en.md @@ -0,0 +1,186 @@ +# Getting Started +--- +Please refer to [Installation](install.md) to setup environment at first, and prepare ImageNet1K data by following the instruction mentioned in the [data](data.md) + +## 1. Training and Evaluation on Windows or CPU + +If training and evaluation are performed on Windows system or CPU, it is recommended to use the `tools/train_multi_platform.py` and `tools/eval_multi_platform.py` scripts. + + +## 1.1 Model training + +After preparing the configuration file, The training process can be started in the following way. + +``` +python tools/train_multi_platform.py \ + -c configs/ResNet/ResNet50.yaml \ + -o model_save_dir=./output/ \ + -o use_gpu=True +``` + +Among them, `-c` is used to specify the path of the configuration file, `-o` is used to specify the parameters needed to be modified or added, `-o model_save_dir=./output/` means to modify the `model_save_dir` in the configuration file to ` ./output/`. `-o use_gpu=True` means to use GPU for training. If you want to use the CPU for training, you need to set `use_gpu` to `False`. + + +Of course, you can also directly modify the configuration file to update the configuration. For specific configuration parameters, please refer to [Configuration Document](config.md). + +* The output log examples are as follows: + * If mixup or cutmix is used in training, only loss, lr (learning rate) and training time of the minibatch will be printed in the log. + + ``` + train step:890 loss: 6.8473 lr: 0.100000 elapse: 0.157s + ``` + + * If mixup or cutmix is not used during training, in addition to loss, lr (learning rate) and the training time of the minibatch, top-1 and top-k( The default is 5) will also be printed in the log. + + ``` + epoch:0 train step:13 loss:7.9561 top1:0.0156 top5:0.1094 lr:0.100000 elapse:0.193s + ``` + +During training, you can view loss changes in real time through `VisualDL`. The command is as follows. + +```bash +visualdl --logdir ./scalar --host --port +``` + +### 1.2 Model finetuning + +* After configuring the configuration file, you can finetune it by loading the pretrained weights, The command is as shown below. + +``` +python tools/train_multi_platform.py \ + -c configs/ResNet/ResNet50.yaml \ + -o pretrained_model="./pretrained/ResNet50_pretrained" +``` + +Among them, `pretrained_model` is used to set the address to load the pretrained weights. When using it, you need to replace it with your own pretrained weights' path, or you can modify the path directly in the configuration file. + +### 1.3 Resume Training + +* If the training process is terminated for some reasons, you can also load the checkpoints to continue training. + +``` +python tools/train_multi_platform.py \ + -c configs/ResNet/ResNet50.yaml \ + -o checkpoints="./output/ResNet/0/ppcls" +``` + +The configuration file does not need to be modified. You only need to add the `checkpoints` parameter during training, which represents the path of the checkpoints. The parameter weights, earning rate, optimizer and other information will be loaded using this parameter. + + +### 1.4 Model evaluation + +* The model evaluation process can be started as follows. + +```bash +python tools/eval_multi_platform.py \ + -c ./configs/eval.yaml \ + -o ARCHITECTURE.name="ResNet50_vd" \ + -o pretrained_model=path_to_pretrained_models +``` + +You can modify the `ARCHITECTURE.name` field and `pretrained_model` field in `configs/eval.yaml` to configure the evaluation model, and you also can update the configuration through the -o parameter. + + +**Note:** When loading the pretrained model, you need to specify the prefix of the pretrained model. For example, the pretrained model path is `output/ResNet50_vd/19`, and the pretrained model filename is `output/ResNet50_vd/19/ppcls.pdparams`, the parameter `pretrained_model` needs to be specified as `output/ResNet50_vd/19/ppcls`, PaddleClas will automatically fill in the `.pdparams` suffix. + +### 2. Training and evaluation on Linux+GPU + +If you want to run PaddleClas on Linux with GPU, it is highly recommended to use the model training and evaluation scripts provided by PaddleClas: `tools/train.py` and `tools/eval.py`. + +### 2.1 Model training + +After preparing the configuration file, The training process can be started in the following way. + +```bash +# PaddleClas starts multi-card and multi-process training through launch +# Specify the GPU running card number by setting FLAGS_selected_gpus +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + tools/train.py \ + -c ./configs/ResNet/ResNet50_vd.yaml +``` + +The configuration can be updated by adding the `-o` parameter. + +```bash +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + tools/train.py \ + -c ./configs/ResNet/ResNet50_vd.yaml \ + -o use_mix=1 \ + --vdl_dir=./scalar/ +``` + +The format of output log information is the same as above. + + + +### 2.2 Model finetuning + +* After configuring the configuration file, you can finetune it by loading the pretrained weights, The command is as shown below. + +``` +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + tools/train.py \ + -c configs/ResNet/ResNet50.yaml \ + -o pretrained_model="./pretrained/ResNet50_pretrained" +``` + +Among them, `pretrained_model` is used to set the address to load the pretrained weights. When using it, you need to replace it with your own pretrained weights' path, or you can modify the path directly in the configuration file. + +* There contains a lot of examples of model finetuning in [The quick start tutorial](./quick_start_en.md). You can refer to this tutorial to finetune the model on a specific dataset. + +### 2.3 Resume Training + +* If the training process is terminated for some reasons, you can also load the checkpoints to continue training. + +``` +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + tools/train.py \ + -c configs/ResNet/ResNet50.yaml \ + -o checkpoints="./output/ResNet/0/ppcls" +``` + +The configuration file does not need to be modified. You only need to add the `checkpoints` parameter during training, which represents the path of the checkpoints. The parameter weights, learning rate, optimizer and other information will be loaded using this parameter. + +### 2.4 Model evaluation + +* The model evaluation process can be started as follows. + +```bash +python tools/eval_multi_platform.py \ + -c ./configs/eval.yaml \ + -o ARCHITECTURE.name="ResNet50_vd" \ + -o pretrained_model=path_to_pretrained_models +``` + +You can modify the `ARCHITECTURE.name` field and `pretrained_model` field in `configs/eval.yaml` to configure the evaluation model, and you also can update the configuration through the -o parameter. + + +## 3. Model inference + +PaddlePaddle provides three ways to perform model inference. Next, how to use the inference engine to perforance model inference will be introduced. + +Firstly, you should export inference model using `tools/export_model.py`. + +```bash +python tools/export_model.py \ + --model=model_name \ + --pretrained_model=pretrained_model_dir \ + --output_path=save_inference_dir + +``` + +Secondly, Inference engine can be started using the following commands. + +```bash +python tools/infer/predict.py \ + -m model_path \ + -p params_path \ + -i image path \ + --use_gpu=1 \ + --use_tensorrt=True +``` +please refer to [inference](../extension/paddle_inference_en.md) for more details. diff --git a/docs/en/tutorials/index.rst b/docs/en/tutorials/index.rst index e763bccb..469fd1f0 100644 --- a/docs/en/tutorials/index.rst +++ b/docs/en/tutorials/index.rst @@ -4,6 +4,8 @@ tutorials .. toctree:: :maxdepth: 1 - install.md - getting_started.md - config.md + install_en.md + quick_start_en.md + data_en.md + getting_started_en.md + config_en.md diff --git a/docs/en/tutorials/install_en.md b/docs/en/tutorials/install_en.md new file mode 100644 index 00000000..8f646a45 --- /dev/null +++ b/docs/en/tutorials/install_en.md @@ -0,0 +1,62 @@ +# Installation + +--- + +## Introducation + +This document introduces how to install PaddleClas and its requirements. + +## Install PaddlePaddle + +Python 3.5, CUDA 9.0, CUDNN7.0 nccl2.1.2 and later version are required at first, For now, PaddleClas only support training on the GPU device. Please follow the instructions in the [Installation](http://www.paddlepaddle.org.cn/install/quick) if the PaddlePaddle on the device is lower than v1.7 + +Install PaddlePaddle + +```bash +pip install paddlepaddle-gpu --upgrade +``` + +or compile from source code, please refer to [Installation](http://www.paddlepaddle.org.cn/install/quick). + +Verify Installation + +```python +import paddle.fluid as fluid +fluid.install_check.run_check() +``` + +Check PaddlePaddle version: + +```bash +python -c "import paddle; print(paddle.__version__)" +``` + +Note: +- Make sure the compiled version is later than v1.7 +- Indicate **WITH_DISTRIBUTE=ON** when compiling, Please refer to [Instruction](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/install/Tables.html#id3) for more details. + + +## Install PaddleClas + +**Clone PaddleClas: ** + +``` +cd path_to_clone_PaddleClas +git clone https://github.com/PaddlePaddle/PaddleClas.git +``` + +**Install requirements** + + +``` +pip install --upgrade -r requirements.txt +``` + +If the install process of visualdl failed, you can try the following commands. + +``` +pip3 install --upgrade visualdl==2.0.0b3 -i https://mirror.baidu.com/pypi/simple + +``` + +What's more, visualdl is just supported in python3, so python3 is needed if you want to use visualdl. diff --git a/docs/en/tutorials/quick_start_en.md b/docs/en/tutorials/quick_start_en.md new file mode 100644 index 00000000..746d2c51 --- /dev/null +++ b/docs/en/tutorials/quick_start_en.md @@ -0,0 +1,223 @@ +# Trial in 30mins + +Based on the flowers102 dataset, it takes only 30 mins to experience PaddleClas, include training varieties of backbone and pretrained model, SSLD distillation, and multiple data augmentation, Please refer to [Installation](install.md) to install at first. + + +## Preparation + +* enter insatallation dir + +``` +cd path_to_PaddleClas +``` + +* enter `dataset/flowers102`, download and decompress flowers102 dataset. + +```shell +cd dataset/flowers102 +wget https://www.robots.ox.ac.uk/~vgg/data/flowers/102/102flowers.tgz +wget https://www.robots.ox.ac.uk/~vgg/data/flowers/102/imagelabels.mat +wget https://www.robots.ox.ac.uk/~vgg/data/flowers/102/setid.mat +tar -xf 102flowers.tgz +``` + +* create train/val/test label files + +```shell +python generate_flowers102_list.py jpg train > train_list.txt +python generate_flowers102_list.py jpg valid > val_list.txt +python generate_flowers102_list.py jpg test > extra_list.txt +cat train_list.txt extra_list.txt > train_extra_list.txt +``` + +**Note:** In order to offer more data to SSLD training task, train_list.txt and extra_list.txt will merge into train_extra_list.txft + +* return `PaddleClas` dir + +``` +cd ../../ +``` + +## Environment + +### Set PYTHONPATH + +```bash +export PYTHONPATH=./:$PYTHONPATH +``` + +### Download pretrained model + + +```bash +python tools/download.py -a ResNet50_vd -p ./pretrained -d True +python tools/download.py -a ResNet50_vd_ssld -p ./pretrained -d True +python tools/download.py -a MobileNetV3_large_x1_0 -p ./pretrained -d True +``` + +Paramters: ++ `architecture`(shortname: a): model name. ++ `path`(shortname: p) download path. ++ `decompress`(shortname: d) whether to decompress. + + + +* All experiments are running on the NVIDIA® Tesla® V100 sigle card. + + +## Training + +### Train from scratch + +* Train ResNet50_vd + +```shell +export CUDA_VISIBLE_DEVICES=0 +python -m paddle.distributed.launch \ +    --selected_gpus="0" \ +    tools/train.py \ +        -c ./configs/quick_start/ResNet50_vd.yaml + +``` + +The validation `Top1 Acc` curve is showmn below. + +![](../../images/quick_start/r50_vd_acc.png) + + +### Finetune - ResNet50_vd pretrained model (Acc 79.12\%) + +* finetune ResNet50_vd_ model pretrained on the 1000-class Imagenet dataset + +```shell +export CUDA_VISIBLE_DEVICES=0 +python -m paddle.distributed.launch \ +    --selected_gpus="0" \ +    tools/train.py \ +        -c ./configs/quick_start/ResNet50_vd_finetune.yaml + +``` + +The validation `Top1 Acc` curve is shown below + +![](../../images/quick_start/r50_vd_pretrained_acc.png) + +Compare with training from scratch, it improve by 65\% to 94.02\% + + +### SSLD finetune - ResNet50_vd_ssld pretrained model (Acc 82.39\%) + +Note: when finetuning model, which has been trained by SSLD, please use smaller learning rate in the middle of net. + +```yaml +ARCHITECTURE: + name: 'ResNet50_vd' + params: + lr_mult_list: [0.1, 0.1, 0.2, 0.2, 0.3] +pretrained_model: "./pretrained/ResNet50_vd_ssld_pretrained" +``` + +Tringing script + +```shell +export CUDA_VISIBLE_DEVICES=0 +python -m paddle.distributed.launch \ +    --selected_gpus="0" \ +    tools/train.py \ +        -c ./configs/quick_start/ResNet50_vd_ssld_finetune.yaml +``` + +Compare with finetune on the 79.12% pretrained model, it improve by 0.9% to 95%. + + +### More architecture - MobileNetV3 + +Training script + +```shell +export CUDA_VISIBLE_DEVICES=0 +python -m paddle.distributed.launch \ +    --selected_gpus="0" \ +    tools/train.py \ +        -c ./configs/quick_start/MobileNetV3_large_x1_0_finetune.yaml +``` + +Compare with ResNet50_vd pretrained model, it decrease by 5% to 90%. Different architecture generates different performance, actually it is a task-oriented decision to apply the best performance model, should consider the inference time, storage, heterogeneous device, etc. + + +### RandomErasing + +Data augmentation works when training data is small. + +Training script + +```shell +export CUDA_VISIBLE_DEVICES=0 +python -m paddle.distributed.launch \ +    --selected_gpus="0" \ +    tools/train.py \ +        -c ./configs/quick_start/ResNet50_vd_ssld_random_erasing_finetune.yaml +``` + +It improves by 1.27\% to 96.27\% + +* Save ResNet50_vd pretrained model to experience next chapter. + +```shell +cp -r output/ResNet50_vd/19/ ./pretrained/flowers102_R50_vd_final/ +``` + +### Distillation + +* Use extra_list.txt as unlabeled data, Note: + * Samples in the `extra_list.txt` and `val_list.txt` don't have intersection + * Because of in the source code, label information is unused, This is still unlabeled distillation + * Teacher model use the pretrained_model trained on the flowers102 dataset, and student model use the MobileNetV3_large_x1_0 pretrained model(Acc 75.32\%) trained on the ImageNet1K dataset + + +```yaml +total_images: 7169 +ARCHITECTURE: + name: 'ResNet50_vd_distill_MobileNetV3_large_x1_0' +pretrained_model: + - "./pretrained/flowers102_R50_vd_final/ppcls" + - "./pretrained/MobileNetV3_large_x1_0_pretrained/” +TRAIN: + file_list: "./dataset/flowers102/train_extra_list.txt" +``` + +Final training script + +```shell +export CUDA_VISIBLE_DEVICES=0 +python -m paddle.distributed.launch \ +    --selected_gpus="0" \ +    tools/train.py \ +        -c ./configs/quick_start/R50_vd_distill_MV3_large_x1_0.yaml +``` + +It significantly imporve by 6.47% to 96.47% with more unlabeled data and teacher model. + +### All accuracy + + +|Configuration | Top1 Acc | +|- |:-: | +| ResNet50_vd.yaml | 0.2735 | +| MobileNetV3_large_x1_0_finetune.yaml | 0.9000 | +| ResNet50_vd_finetune.yaml | 0.9402 | +| ResNet50_vd_ssld_finetune.yaml | 0.9500 | +| ResNet50_vd_ssld_random_erasing_finetune.yaml | 0.9627 | +| R50_vd_distill_MV3_large_x1_0.yaml | 0.9647 | + + +The whole accuracy curves are shown below + + +![](../../images/quick_start/all_acc.png) + + + +* **NOTE**: As flowers102 is a small dataset, validatation accuracy maybe float 1%. + +* Please refer to [Getting_started](./getting_started) for more details diff --git a/docs/en/update_history_en.md b/docs/en/update_history_en.md new file mode 100644 index 00000000..b5cc5682 --- /dev/null +++ b/docs/en/update_history_en.md @@ -0,0 +1,36 @@ +# Release Notes + +- 2020.10.12 + * Add Paddle-Lite demo. + +- 2020.10.10 + * Add cpp inference demo. + * Improve FAQ tutorials. + +* 2020.09.17 + * Add `HRNet_W48_C_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 83.62%. + * Add `ResNet34_vd_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 79.72%. + +* 2020.09.07 + * Add `HRNet_W18_C_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 81.16%. + * Add `MobileNetV3_small_x0_35_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 55.55%. + +* 2020.07.14 + * Add `Res2Net200_vd_26w_4s_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 85.13%. + * Add `Fix_ResNet50_vd_ssld_v2` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 84.00%. + +* 2020.06.17 + * Add English documents. + +* 2020.06.12 + * Add support for training and evaluation on Windows or CPU. + +* 2020.05.17 + * Add support for mixed precision training. + +* 2020.05.09 + * Add user guide about Paddle Serving and Paddle-Lite. + * Add benchmark about FP16/FP32 on T4 GPU. + +* 2020.04.14 + * First commit. diff --git a/docs/images/distillation/distillation_perform_s.jpg b/docs/images/distillation/distillation_perform_s.jpg index 07b1bf6790d4748b625529f5669c5ff581dab58d..181a490122ae5930c66dac0f496f9eeb55a3845e 100644 GIT binary patch literal 76063 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 d+p|n4CxG#7;rbF5^X@a$>lzBJ^H$3-;y#a{pb literal 53917 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 diff --git a/docs/images/image_aug/image_aug_samples_s_en.jpg b/docs/images/image_aug/image_aug_samples_s_en.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2cd1a3a9fd686a37e79287162c8a1f0da98eb750 GIT binary patch literal 1381853 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 c?QeNOCUq7A2=)+D=*#F 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