diff --git a/docs/zh_CN/advanced_tutorials/distillation/distillation.md b/docs/zh_CN/advanced_tutorials/distillation/distillation.md index 96ae47564e3604071ed7f571cb21a7f1e9e36f20..340a85a64710e19d73c53ae9d26376a3c937790f 100644 --- a/docs/zh_CN/advanced_tutorials/distillation/distillation.md +++ b/docs/zh_CN/advanced_tutorials/distillation/distillation.md @@ -185,7 +185,7 @@ for var in ./*_student; do cp "$var" "../student_model/${var%_student}"; done # # 五、SSLD实战 -本节将基于ImageNet-1K的数据集详细介绍SSLD蒸馏实验,如果想快速体验此方法,可以参考[**30min玩转PaddleClas**](../../tutorials/quick_start.md)中基于Flowers102的SSLD蒸馏实验。 +本节将基于ImageNet-1K的数据集详细介绍SSLD蒸馏实验,如果想快速体验此方法,可以参考[**30分钟玩转PaddleClas**](../../tutorials/quick_start.md)中基于Flowers102的SSLD蒸馏实验。 ## 7.1 参数配置 @@ -196,13 +196,13 @@ for var in ./*_student; do cp "$var" "../student_model/${var%_student}"; done # `ResNeXt101_32x16d_wsl`蒸馏`ResNet50_vd`的配置如下,其中`pretrained model`指定了`ResNeXt101_32x16d_wsl`(教师模型)的预训练模型的路径,该路径也可以同时指定教师模型与学生模型的预训练模型的路径,用户只需要同时传入二者预训练的路径即可(配置中的注释部分)。 ```yaml -ARCHITECTURE: - name: 'ResNeXt101_32x16d_wsl_distill_ResNet50_vd' -pretrained_model: "./pretrained/ResNeXt101_32x16d_wsl_pretrained/" +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 +use_distillation: True ``` ### ResNet50_vd_ssld蒸馏MobileNetV3_large_x1_0 @@ -210,13 +210,13 @@ use_distillation: True 类似于`ResNeXt101_32x16d_wsl`蒸馏`ResNet50_vd`,`ResNet50_vd_ssld`蒸馏`MobileNetV3_large_x1_0`的配置如下: ```yaml -ARCHITECTURE: - name: 'ResNet50_vd_distill_MobileNetV3_large_x1_0' -pretrained_model: "./pretrained/ResNet50_vd_ssld_pretrained/" +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 +use_distillation: True ``` ## 7.2 启动命令 @@ -228,10 +228,10 @@ use_distillation: True ```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 \ +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 ``` @@ -254,7 +254,7 @@ sh tools/run.sh * 若用户准备添加无标签的训练数据,只需要将新的训练数据放置在原本训练数据的路径下,生成新的数据list即可,另外,新生成的数据list需要将无标签的数据添加伪标签(只是为了统一读数据)。 **此处插播一条硬广~** -> 如果您觉得此文档对您有帮助,欢迎star、watch、fork,三连我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) +> 如果您觉得此文档对您有帮助,欢迎star我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) # 参考文献 diff --git a/docs/zh_CN/advanced_tutorials/image_augmentation/ImageAugment.md b/docs/zh_CN/advanced_tutorials/image_augmentation/ImageAugment.md index e73fea6af67f1e31077e999e112f8e4eff07025e..8d3a3e9afa9bd14991a653e8204750c2e63ff794 100644 --- a/docs/zh_CN/advanced_tutorials/image_augmentation/ImageAugment.md +++ b/docs/zh_CN/advanced_tutorials/image_augmentation/ImageAugment.md @@ -438,7 +438,7 @@ new_batch = cutmix_op(batch) # 七、数据增广分类实战 -本节将基于ImageNet-1K的数据集详细介绍数据增广实验,如果想快速体验此方法,可以参考[**30min玩转PaddleClas**](../../tutorials/quick_start.md)中基于Flowers102的数据增广实验。 +本节将基于ImageNet-1K的数据集详细介绍数据增广实验,如果想快速体验此方法,可以参考[**30分钟玩转PaddleClas**](../../tutorials/quick_start.md)中基于Flowers102的数据增广实验。 ## 7.1 参数配置 @@ -449,24 +449,24 @@ new_batch = cutmix_op(batch) `RandAugment`的图像增广方式的配置如下,其中用户需要指定其中的参数`num_layers`与`magnitude`,默认的数值分别是`2`和`5`。`RandAugment`是在uint8的数据格式上转换的,所以其处理过程应该放在归一化操作(`NormalizeImage`)之前。 ```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: + 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 @@ -474,24 +474,24 @@ new_batch = cutmix_op(batch) `Cutout`的图像增广方式的配置如下,其中用户需要指定其中的参数`n_holes`与`length`,默认的数值分别是`1`和`112`。类似其他图像裁剪类的数据增广方式,`Cutout`既可以在uint8格式的数据上操作,也可以在归一化(`NormalizeImage`)后的数据上操作,此处给出的是在归一化后的操作。 ```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: + 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 @@ -499,24 +499,24 @@ new_batch = cutmix_op(batch) `Mixup`的图像增广方式的配置如下,其中用户需要指定其中的参数`alpha`,默认的数值是`0.2`。类似其他图像混合类的数据增广方式,`Mixup`是在图像做完数据处理后将每个batch内的数据做图像混叠,将混叠后的图像和标签输入网络中训练,所以其是在图像数据处理(图像变换、图像裁剪)后操作。另外,在配置文件中,需要将`use_mix`参数设置为`True`。 ```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 + 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 ``` ## 7.2 启动命令 @@ -528,11 +528,11 @@ new_batch = cutmix_op(batch) ```bash export PYTHONPATH=path_to_PaddleClas:$PYTHONPATH -python -m paddle.distributed.launch \ - --selected_gpus="0,1,2,3" \ - --log_dir=ResNet50_Cutout \ - tools/train.py \ - -c ./configs/DataAugment/ResNet50_Cutout.yaml +python -m paddle.distributed.launch \ + --selected_gpus="0,1,2,3" \ + --log_dir=ResNet50_Cutout \ + tools/train.py \ + -c ./configs/DataAugment/ResNet50_Cutout.yaml ``` 运行`run.sh` @@ -552,7 +552,7 @@ sh tools/run.sh * 几乎每一类图像增广均含有超参数,我们只提供了基于ImageNet-1k的超参数,其他数据集需要用户自己调试超参数,具体超参数的含义用户可以阅读相关的论文,调试方法也可以参考训练技巧的章节。 **此处插播一条硬广~** -> 如果您觉得此文档对您有帮助,欢迎star、watch、fork,三连我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) +> 如果您觉得此文档对您有帮助,欢迎star我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) # 参考文献 diff --git a/docs/zh_CN/models/Tricks.md b/docs/zh_CN/models/Tricks.md index 10821e3a0807439bef3eb98d0520086db63f6f1c..a8624cd7e75b202c1bfa846b606ceb70abb24395 100644 --- a/docs/zh_CN/models/Tricks.md +++ b/docs/zh_CN/models/Tricks.md @@ -85,7 +85,11 @@ Label_smoothing是深度学习中的一种正则化方法,其全称是 Label S ## 9.如何通过已有的预训练模型提升自己的数据集的精度 在现阶段计算机视觉领域中,加载预训练模型来训练自己的任务已成为普遍的做法,相比从随机初始化开始训练,加载预训练模型往往可以提升特定任务的精度。一般来说,业界广泛使用的预训练模型是通过训练128万张图片1000类的ImageNet-1k数据集得到的,该预训练模型的fc层权重是是一个k\*1000的矩阵,其中k是fc层以前的神经元数,在加载预训练权重时,无需加载fc层的权重。在学习率方面,如果您的任务训练的数据集特别小(如小于1千张),我们建议你使用较小的初始学习率,如0.001(batch_size:256,下同),以免较大的学习率破坏预训练权重。如果您的训练数据集规模相对较大(大于10万),我们建议你尝试更大的初始学习率,如0.01或者更大。 + +**此处插播一条硬广~** +> 如果您觉得此文档对您有帮助,欢迎star我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) + ## 参考文献 -[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. +[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 +[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/zh_CN/models/models_intro.md b/docs/zh_CN/models/models_intro.md index e7a9e644b8403fac462122a1d8892396eb2e6606..39730ef80d9197fed14551db4217f254d9a14ccd 100644 --- a/docs/zh_CN/models/models_intro.md +++ b/docs/zh_CN/models/models_intro.md @@ -28,7 +28,7 @@ python tools/infer/predict.py \ **此处插播一条硬广~** -> 如果您觉得此文档对您有帮助,欢迎star、watch、fork,三连我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) +> 如果您觉得此文档对您有帮助,欢迎star我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas) ## 预训练模型列表及下载地址 diff --git a/docs/zh_CN/tutorials/getting_started.md b/docs/zh_CN/tutorials/getting_started.md index 467750c4dce8b9a2898557a2fac3e1a0cc0c2dfa..0a3884ce3641c5a82e798060bee6e04ce00add8f 100644 --- a/docs/zh_CN/tutorials/getting_started.md +++ b/docs/zh_CN/tutorials/getting_started.md @@ -1,7 +1,6 @@ # 开始使用 --- -请事先参考[安装指南](install.md)配置运行环境 -有关模型库的基本信息请参考[README](https://github.com/PaddlePaddle/PaddleClas/blob/master/README.md)。 +请事先参考[安装指南](install.md)配置运行环境,并根据[数据说明](./data.md)文档准备ImageNet1k数据,本章节下面所有的实验均以ImageNet1k数据集为例。 ## 一、设置环境变量 @@ -13,10 +12,11 @@ export PYTHONPATH=path_to_PaddleClas:$PYTHONPATH ## 二、模型训练与评估 -PaddleClas 提供模型训练与评估脚本:tools/train.py和tools/eval.py +PaddleClas 提供模型训练与评估脚本:`tools/train.py`和`tools/eval.py` ### 2.1 模型训练 -以flower102数据为例按如下方式启动模型训练,flower数据集准备请参考[数据集准备](./data.md)。 + +按照如下方式启动模型训练。 ```bash # PaddleClas通过launch方式启动多卡多进程训练 @@ -24,9 +24,8 @@ PaddleClas 提供模型训练与评估脚本:tools/train.py和tools/eval.py python -m paddle.distributed.launch \ --selected_gpus="0,1,2,3" \ - --log_dir=log_ResNet50_vd \ tools/train.py \ - -c ./configs/flower.yaml + -c ./configs/ResNet/ResNet50_vd.yaml ``` - 输出日志示例如下: @@ -40,10 +39,9 @@ epoch:0 train step:13 loss:7.9561 top1:0.0156 top5:0.1094 lr:0 ```bash python -m paddle.distributed.launch \ --selected_gpus="0,1,2,3" \ - --log_dir=log_ResNet50_vd \ tools/train.py \ - -c ./configs/flower.yaml \ - -o use_mix=1 + -c ./configs/ResNet/ResNet50_vd.yaml \ + -o use_mix=1 ``` @@ -53,58 +51,28 @@ python -m paddle.distributed.launch \ epoch:0 train step:522 loss:1.6330 lr:0.100000 elapse:0.210 ``` -或是直接修改模型对应的yaml配置文件,具体配置参数参考[配置文档](config.md)。 - -### 2.3 模型微调 - -以ResNet50_vd和ResNet50_vd_ssld预训练模型对flower102数据集进行微调。 - -ResNet50_vd: 在ImageNet1k数据集上训练 top1 acc:79.1% 模型详细信息参考[模型库](https://paddleclas.readthedocs.io/zh_CN/latest/models/ResNet_and_vd.html)。 - -ResNet50_vd_ssld: 在ImageNet1k数据集训练的蒸馏模型 top1: 82.4% 模型详细信息参考[模型库](https://paddleclas.readthedocs.io/zh_CN/latest/models/ResNet_and_vd.html)。 +也可以直接修改模型对应的配置文件更新配置。具体配置参数参考[配置文档](config.md)。 -flower数据集相关信息参考[数据文档](data.md)。 -指定pretrained_model参数初始化预训练模型 -ResNet50_vd: +### 2.2 模型微调 -```bash -python -m paddle.distributed.launch \ - --selected_gpus="0" \ - tools/train.py \ - -c ./configs/finetune/ResNet50_vd_finetune.yaml - -o pretrained_model=path_to_ResNet50_vd_pretrained_models -``` +* [30分钟玩转PaddleClas](./quick_start.md)中包含大量模型微调的示例,可以参考该章节在特定的数据集上进行模型微调。 -ResNet50_vd_ssld: - -```bash -python -m paddle.distributed.launch \ - --selected_gpus="0" \ - tools/train.py \ - -c ./configs/finetune/ResNet50_vd_ssld_finetune.yaml - -o pretrained_model=path_to_ResNet50_vd_ssld_pretrained_models -``` - - -在使用ResNet50_vd预训练模型对flower102数据进行模型微调后,top1 acc 达到 92.71%。 -在使用ResNet50_vd_ssld预训练模型对flower102数据进行模型微调后,top1 acc 达到94.96%。 - - -### 2.2 模型评估 +### 2.3 模型评估 ```bash python tools/eval.py \ -c ./configs/eval.yaml \ - -o architecture="ResNet50_vd" \ + -o ARCHITECTURE.name="ResNet50_vd" \ -o pretrained_model=path_to_pretrained_models ``` -您可以更改configs/eval.yaml中的architecture字段和pretrained_model字段来配置评估模型,或是通过-o参数更新配置。 +可以更改configs/eval.yaml中的`ARCHITECTURE.name`字段和pretrained_model字段来配置评估模型,也可以通过-o参数更新配置。 ## 三、模型推理 PaddlePaddle提供三种方式进行预测推理,接下来介绍如何用预测引擎进行推理: 首先,对训练好的模型进行转换: + ```bash python tools/export_model.py \ -model=模型名字 \ diff --git a/docs/zh_CN/tutorials/install.md b/docs/zh_CN/tutorials/install.md index c0d1807fdc2ab9dba3c249a636aa49aec7cdaeff..63e8f555cd9e51639a687c8f73e54527e519efe8 100644 --- a/docs/zh_CN/tutorials/install.md +++ b/docs/zh_CN/tutorials/install.md @@ -2,13 +2,12 @@ --- -## 1.简介 +## 一、简介 -本章将介绍如何安装PaddleClas及其依赖项. -有关模型库的基本信息请参考[README](https://github.com/PaddlePaddle/PaddleClas/blob/master/README.md) +本章将介绍如何安装PaddleClas及其依赖项。 -## 2.安装PaddlePaddle +## 二、安装PaddlePaddle 运行PaddleClas需要PaddlePaddle Fluid v1.7或更高版本。 @@ -45,7 +44,7 @@ python -c "import paddle; print(paddle.__version__)" - nccl >= 2.1.2 -## 3.安装PaddleClas +## 三、安装PaddleClas **克隆PaddleClas模型库:** @@ -61,14 +60,3 @@ Python依赖库在[requirements.txt](https://github.com/PaddlePaddle/PaddleClas/ ``` pip install --upgrade -r requirements.txt ``` - - -## 4.数据集和预训练模型 - -PaddleClas加载PaddleClas/dataset/中数据进行训练,请参照[数据文档](./data.md)进行准备。 -PaddleClas提供丰富的预训练模型,请参照[数据文档](./data.md)进行准备。 - - -## 5.开始使用 - -请参照[开始使用](./getting_started.md)文档 diff --git a/docs/zh_CN/tutorials/quick_start.md b/docs/zh_CN/tutorials/quick_start.md index 55c89b9ced42b322f3f6dd888305e1a9228fd7c9..76669d2fb496432b6a04246c4a7111740f0b7c32 100644 --- a/docs/zh_CN/tutorials/quick_start.md +++ b/docs/zh_CN/tutorials/quick_start.md @@ -1,4 +1,4 @@ -# 30min玩转PaddleClas +# 30分钟玩转PaddleClas 请事先参考[安装指南](install.md)配置运行环境和克隆PaddleClas代码。 @@ -82,7 +82,9 @@ python -m paddle.distributed.launch \ `Top1 Acc`曲线如下所示,最高准确率为0.2735。 -![](../../images/quick_start/r50_vd_acc.png) +