Skip to content

Commit

Permalink
docs: refactor & fix link & rename
Browse files Browse the repository at this point in the history
  • Loading branch information
TingquanGao committed Sep 16, 2022
1 parent d355571 commit 7e0411c
Show file tree
Hide file tree
Showing 71 changed files with 576 additions and 437 deletions.
14 changes: 7 additions & 7 deletions docs/zh_CN/FAQ/faq_2020_s1.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ ResNet_va 至 vd 的结构如下图所示,ResNet 最早提出时为 va 结构
**A**:

ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度几乎不变的情况下,精度有非常明显的提升,因此推荐大家使用 ResNet_vd 系列模型。
[ResNet 及其 vd 系列模型文档](../models/ResNet_and_vd.md)中给出了 batch size=4 的情况下,在 T4 GPU 上,不同模型的的预测耗时、FLOPs、Params 与精度的变化曲线,可以根据自己自己的实际部署场景中的需求,去选择合适的模型,如果希望模型存储大小尽可能小或者预测速度尽可能快,则可以使用 ResNet18_vd 模型,如果希望获得尽可能高的精度,则建议使用 ResNet152_vd 或者 ResNet200_vd 模型。更多关于 ResNet 系列模型的介绍可以参考文档:[ResNet 及其 vd 系列模型文档](../models/ResNet_and_vd.md)
[ResNet 及其 vd 系列模型文档](../models/ImageNet1k/ResNet_and_vd.md)中给出了 batch size=4 的情况下,在 T4 GPU 上,不同模型的的预测耗时、FLOPs、Params 与精度的变化曲线,可以根据自己自己的实际部署场景中的需求,去选择合适的模型,如果希望模型存储大小尽可能小或者预测速度尽可能快,则可以使用 ResNet18_vd 模型,如果希望获得尽可能高的精度,则建议使用 ResNet152_vd 或者 ResNet200_vd 模型。更多关于 ResNet 系列模型的介绍可以参考文档:[ResNet 及其 vd 系列模型文档](../models/ImageNet1k/ResNet_and_vd.md)

* 精度-预测速度变化曲线

Expand All @@ -55,7 +55,7 @@ ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度
### Q1.7 大卷积核一定可以带来正向收益吗?

**A**: 不一定,将网络中的所有卷积核都增大未必会带来性能的提升,甚至会有有损性能,在论文 [MixConv: Mixed Depthwise Convolutional Kernels](https://arxiv.org/abs/1907.09595)
中指出,在一定范围内提升卷积核大小对精度的提升有正向作用,但是超出后会有损精度。所以考虑到模型的大小、计算量等问题,一般不选用大的卷积核去设计网络。同时,在 [PP-LCNet](../models/PP-LCNet.md) 文章中,也有关于大卷积核的实验。
中指出,在一定范围内提升卷积核大小对精度的提升有正向作用,但是超出后会有损精度。所以考虑到模型的大小、计算量等问题,一般不选用大的卷积核去设计网络。同时,在 [PP-LCNet](../models/ImageNet1k/PP-LCNet.md) 文章中,也有关于大卷积核的实验。

<a name="2"></a>
## 第 2 期
Expand Down Expand Up @@ -88,21 +88,21 @@ ResNet 系列模型中,相比于其他模型,ResNet_vd 模型在预测速度

### Q2.5 PaddleClas 中提供了很多 ssld 模型,其应用的价值是?

**A**: PaddleClas 中提供了很多 ssld 预训练模型,其通过半监督知识蒸馏的方法获得了更好的预训练权重,在迁移任务或者下游视觉任务中,无须替换结构文件、只需要替换精度更高的 ssld 预训练模型即可提升精度,如在 PaddleSeg 中,[HRNet](https://github.com/PaddlePaddle/PaddleSeg/blob/release/v0.7.0/docs/model_zoo.md) 使用了 ssld 预训练模型的权重后,精度大幅度超越业界同样的模型的精度,在 PaddleDetection 中,[PP-YOLO](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/ppyolo/README_cn.md) 使用了 ssld 预训练权重后,在较高的 baseline 上仍有进一步的提升。使用 ssld 预训练权重做分类的迁移表现也很抢眼,在 [SSLD 蒸馏策略](../advanced_tutorials/knowledge_distillation.md) 部分介绍了知识蒸馏对于分类任务迁移的收益。
**A**: PaddleClas 中提供了很多 ssld 预训练模型,其通过半监督知识蒸馏的方法获得了更好的预训练权重,在迁移任务或者下游视觉任务中,无须替换结构文件、只需要替换精度更高的 ssld 预训练模型即可提升精度,如在 PaddleSeg 中,[HRNet](https://github.com/PaddlePaddle/PaddleSeg/blob/release/v0.7.0/docs/model_zoo.md) 使用了 ssld 预训练模型的权重后,精度大幅度超越业界同样的模型的精度,在 PaddleDetection 中,[PP-YOLO](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/ppyolo/README_cn.md) 使用了 ssld 预训练权重后,在较高的 baseline 上仍有进一步的提升。使用 ssld 预训练权重做分类的迁移表现也很抢眼,在 [SSLD 蒸馏策略](../training/advanced/knowledge_distillation.md) 部分介绍了知识蒸馏对于分类任务迁移的收益。


<a name="3"></a>
## 第 3 期

### Q3.1: DenseNet 模型相比于 ResNet 有什么改进呢?有哪些特点或者应用场景呢?

**A**: DenseNet 相比于 ResNet,设计了一个更激进的密集连接机制,通过考虑特征重用和旁路的设置,进一步减少了参数量,而且从一定程度上缓解了梯度弥散的问题,因为引入了更加密集的连接,因此模型更容易训练,而且具有一定的正则化效果。在数据量不是很多的图像分类场景中,DenseNet 是一个不错的选择。更多关于 DenseNet 的介绍与系列模型可以参考 [DenseNet 模型文档](../models/DPN_DenseNet.md)
**A**: DenseNet 相比于 ResNet,设计了一个更激进的密集连接机制,通过考虑特征重用和旁路的设置,进一步减少了参数量,而且从一定程度上缓解了梯度弥散的问题,因为引入了更加密集的连接,因此模型更容易训练,而且具有一定的正则化效果。在数据量不是很多的图像分类场景中,DenseNet 是一个不错的选择。更多关于 DenseNet 的介绍与系列模型可以参考 [DenseNet 模型文档](../models/ImageNet1k/DPN_DenseNet.md)



### Q3.2: DPN 网络相比于 DenseNet 有哪些改进呢?

**A**:DPN 的全称是 Dual Path Networks,即双通道网络。该网络是由 DenseNet 和 ResNeXt 结合的一个网络,其证明了 DenseNet 能从靠前的层级中提取到新的特征,而 ResNeXt 本质上是对之前层级中已提取特征的复用。作者进一步分析发现,ResNeXt 对特征有高复用率,但冗余度低,DenseNet 能创造新特征,但冗余度高。结合二者结构的优势,作者设计了 DPN 网络。最终 DPN 网络在同样 FLOPS 和参数量下,取得了比 ResNeXt 与 DenseNet 更好的结果。更多关于 DPN 的介绍与系列模型可以参考 [DPN 模型文档](../models/DPN_DenseNet.md)
**A**:DPN 的全称是 Dual Path Networks,即双通道网络。该网络是由 DenseNet 和 ResNeXt 结合的一个网络,其证明了 DenseNet 能从靠前的层级中提取到新的特征,而 ResNeXt 本质上是对之前层级中已提取特征的复用。作者进一步分析发现,ResNeXt 对特征有高复用率,但冗余度低,DenseNet 能创造新特征,但冗余度高。结合二者结构的优势,作者设计了 DPN 网络。最终 DPN 网络在同样 FLOPS 和参数量下,取得了比 ResNeXt 与 DenseNet 更好的结果。更多关于 DPN 的介绍与系列模型可以参考 [DPN 模型文档](../models/ImageNet1k/DPN_DenseNet.md)


### Q3.3: 怎么使用多个模型进行预测融合呢?
Expand Down Expand Up @@ -276,7 +276,7 @@ Cosine_decay 和 piecewise_decay 的学习率变化曲线如下图所示,容

**A**:一般来说,数据集的规模对性能影响至关重要,但是图片的标注往往比较昂贵,所以有标注的图片数量往往比较稀少,在这种情况下,数据的增广尤为重要。在训练 ImageNet-1k 的标准数据增广中,主要使用了 Random_Crop 与 Random_Flip 两种数据增广方式,然而,近些年,越来越多的数据增广方式被提出,如 cutout、mixup、cutmix、AutoAugment 等。实验表明,这些数据的增广方式可以有效提升模型的精度。具体到数据集来说:

- ImageNet-1k:下表列出了 ResNet50 在 8 种不同的数据增广方式的表现,可以看出,相比 baseline,所有的数据增广方式均有收益,其中 cutmix 是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](../advanced_tutorials/DataAugmentation.md)。
- ImageNet-1k:下表列出了 ResNet50 在 8 种不同的数据增广方式的表现,可以看出,相比 baseline,所有的数据增广方式均有收益,其中 cutmix 是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](../training/config_discription/data_augmentation.md)。

| 模型 | 数据增广方式 | Test top-1 |
|:--:|:--:|:--:|
Expand Down Expand Up @@ -314,7 +314,7 @@ Cosine_decay 和 piecewise_decay 的学习率变化曲线如下图所示,容

- 挖掘相关数据:用在现有数据集上训练饱和的模型去对相关的数据做预测,将置信度较高的数据打 label 后加入训练集进一步训练,如此循环操作,可进一步提升模型的精度。

- 知识蒸馏:可以先使用一个较大的模型在该数据集上训练一个精度较高的 teacher model,然后使用该 teacher model 去教导一个 Student model,其中,Student model 即为目标模型。PaddleClas 提供了百度自研的 SSLD 知识蒸馏方案,即使在 ImageNet-1k 这么有挑战的分类任务上,其也能稳定提升 3% 以上。SSLD 知识蒸馏的的章节请参考 [**SSLD 知识蒸馏**](../advanced_tutorials/knowledge_distillation.md)。
- 知识蒸馏:可以先使用一个较大的模型在该数据集上训练一个精度较高的 teacher model,然后使用该 teacher model 去教导一个 Student model,其中,Student model 即为目标模型。PaddleClas 提供了百度自研的 SSLD 知识蒸馏方案,即使在 ImageNet-1k 这么有挑战的分类任务上,其也能稳定提升 3% 以上。SSLD 知识蒸馏的的章节请参考 [**SSLD 知识蒸馏**](../training/advanced/knowledge_distillation.md)。


<a name="6"></a>
Expand Down
2 changes: 1 addition & 1 deletion docs/zh_CN/FAQ/faq_2021_s1.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@

### Q2.4: 移动端或嵌入式端上哪些网络具有优势?

建议使用移动端系列的网络,网络详情可以参考[移动端系列网络结构介绍](../models/Mobile.md)。如果任务的速度更重要,可以考虑 MobileNetV3 系列,如果模型大小更重要,可以根据移动端系列网络结构介绍中的 StorageSize-Accuracy 来确定具体的结构。
建议使用移动端系列的网络,网络详情可以参考[移动端系列网络结构介绍](../models/ImageNet1k/Mobile.md)。如果任务的速度更重要,可以考虑 MobileNetV3 系列,如果模型大小更重要,可以根据移动端系列网络结构介绍中的 StorageSize-Accuracy 来确定具体的结构。

### Q2.5: 既然移动端网络非常快,为什么还要使用诸如 ResNet 这样参数量和计算量较大的网络?

Expand Down
2 changes: 1 addition & 1 deletion docs/zh_CN/FAQ/faq_2021_s2.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ w_t+1 = w_t - v_t+1
**A**:主体检测这块的输出数量是可以通过配置文件配置的。在配置文件中 Global.threshold 控制检测的阈值,小于该阈值的检测框被舍弃,Global.max_det_results 控制最大返回的结果数,这两个参数共同决定了输出检测框的数量。

#### Q1.4.2 训练主体检测模型的数据是如何选择的?换成更小的模型会有损精度吗?
**A**:训练数据是在 COCO、Object365、RPC、LogoDet 等公开数据集中随机抽取的子集。目前我们在 2.3 版本中推出了超轻量的主体检测模型,具体信息可以参考[主体检测](../image_recognition_pipeline/mainbody_detection.md#2-模型选择)。关于主体检测模型的更多信息请参考[主体检测](../image_recognition_pipeline/mainbody_detection.md)
**A**:训练数据是在 COCO、Object365、RPC、LogoDet 等公开数据集中随机抽取的子集。目前我们在 2.3 版本中推出了超轻量的主体检测模型,具体信息可以参考[主体检测](../training/PP-ShiTu/mainbody_detection.md#2-模型选择)。关于主体检测模型的更多信息请参考[主体检测](../training/PP-ShiTu/mainbody_detection.md)

#### Q1.4.3: 目前使用的主体检测模型检测在某些场景中会有误检?
**A**:目前的主体检测模型训练时使用了 COCO、Object365、RPC、LogoDet 等公开数据集,如果被检测数据是类似工业质检等于常见类别差异较大的数据,需要基于目前的检测模型重新微调训练。
Expand Down
6 changes: 3 additions & 3 deletions docs/zh_CN/FAQ/faq_selected_30.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
>>
* Q: 怎样根据自己的任务选择合适的模型进行训练?
* A: 如果希望在服务器部署,或者希望精度尽可能地高,对模型存储大小或者预测速度的要求不是很高,那么推荐使用 ResNet_vd、Res2Net_vd、DenseNet、Xception 等适合于服务器端的系列模型;如果希望在移动端侧部署,则推荐使用 MobileNetV3、GhostNet
等适合于移动端的系列模型。同时,我们推荐在选择模型的时候可以参考[模型库](../algorithm_introduction/ImageNet_models.md)中的速度-精度指标图。
等适合于移动端的系列模型。同时,我们推荐在选择模型的时候可以参考[模型库](../models/ImageNet1k/model_list.md)中的速度-精度指标图。

>>
* Q: 如何进行参数初始化,什么样的初始化可以加快模型收敛?
Expand Down Expand Up @@ -126,7 +126,7 @@

>>
* Q: 数据量不足的情况下,目前有哪些常见的数据增广方法来增加训练样本的丰富度呢?
* A: PaddleClas 中将目前比较常见的数据增广方法分为了三大类,分别是图像变换类、图像裁剪类和图像混叠类,图像变换类主要包括 AutoAugment 和 RandAugment,图像裁剪类主要包括 CutOut、RandErasing、HideAndSeek 和 GridMask,图像混叠类主要包括 Mixup 和 Cutmix,更详细的关于数据增广的介绍可以参考:[数据增广章节](../algorithm_introduction/DataAugmentation.md)
* A: PaddleClas 中将目前比较常见的数据增广方法分为了三大类,分别是图像变换类、图像裁剪类和图像混叠类,图像变换类主要包括 AutoAugment 和 RandAugment,图像裁剪类主要包括 CutOut、RandErasing、HideAndSeek 和 GridMask,图像混叠类主要包括 Mixup 和 Cutmix,更详细的关于数据增广的介绍可以参考:[数据增广章节](../algorithm_introduction/data_augmentation.md)
>>
* Q: 对于遮挡情况比较常见的图像分类场景,该使用什么数据增广方法去提升模型的精度呢?
* A: 在训练的过程中可以尝试对训练集使用 CutOut、RandErasing、HideAndSeek 和 GridMask 等裁剪类数据增广方法,让模型也能够不止学习到显著区域,也能关注到非显著性区域,从而在遮挡的情况下,也能较好地完成识别任务。
Expand Down Expand Up @@ -214,7 +214,7 @@

>>
* Q: 怎么在 windows 上或者 cpu 上面模型训练呢?
* A: 可以参考[开始使用教程](../models_training/classification.md),详细介绍了在 Linux、Windows、CPU 等环境中进行模型训练、评估与预测的教程。
* A: 可以参考[开始使用教程](../training/single_label_classification/training.md),详细介绍了在 Linux、Windows、CPU 等环境中进行模型训练、评估与预测的教程。
>>
* Q: 怎样在模型训练的时候使用 label smoothing 呢?
* A: 可以在配置文件中的 `Loss` 字段下进行设置,如下所示,`epsilon=0.1` 表示设置该值为 0.1,若不设置 `epsilon` 字段,则不使用 `label smoothing`
Expand Down
10 changes: 5 additions & 5 deletions docs/zh_CN/algorithm_introduction/ReID.md
Original file line number Diff line number Diff line change
Expand Up @@ -320,31 +320,31 @@

##### 4.2.3 基于 C++ 预测引擎推理

PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考基于 Visual Studio 2019 Community CMake 编译指南完成相应的预测库编译和模型预测工作。
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../deployment/image_classification/cpp/linux.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考基于 Visual Studio 2019 Community CMake 编译指南完成相应的预测库编译和模型预测工作。

#### 4.3 服务化部署

Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考Paddle Serving 代码仓库。

PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/recognition_serving_deploy.md)来完成相应的部署工作。
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../deployment/PP-ShiTu/paddle_serving.md)来完成相应的部署工作。

#### 4.4 端侧部署

Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考Paddle Lite 代码仓库。

PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。
PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../deployment/image_classification/paddle_lite.md)来完成相应的部署工作。

#### 4.5 Paddle2ONNX 模型转换与预测

Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考Paddle2ONNX 代码仓库。

PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md)来完成相应的部署工作。
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](../deployment/image_classification/paddle2onnx.md)来完成相应的部署工作。

### 5. 总结

#### 5.1 方法总结与对比

上述算法能快速地迁移至多数的ReID模型中(参考 [PP-ShiTuV2](../PPShiTu/PPShiTuV2_introduction.md) ),能进一步提升ReID模型的性能,
上述算法能快速地迁移至多数的ReID模型中(参考 [PP-ShiTuV2](../models/PP-ShiTu/README.md) ),能进一步提升ReID模型的性能,

#### 5.2 使用建议/FAQ

Expand Down
2 changes: 1 addition & 1 deletion docs/zh_CN/algorithm_introduction/data_augmentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ Mixup 是最先提出的图像混叠增广方案,其原理简单、方便实

![][test_cutmix]

关于数据增强相关的实战部分实参考[数据增强实战](../advanced_tutorials/DataAugmentation.md)
关于数据增强相关的实战部分实参考[数据增强实战](../training/config_discription/data_augmentation.md)


## 参考文献
Expand Down
2 changes: 1 addition & 1 deletion docs/zh_CN/algorithm_introduction/deep_hashing.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ LCDSH是一种局部约束深度监督哈希算法。该方案通过学习图像
`DSHSD`: ppcls/configs/DeepHash/DSHSD.yaml
`LCDSH`: ppcls/configs/DeepHash/LCDSH.yaml

具体训练方法,请参考[分类模型训练文档](../models_training/classification.md)
具体训练方法,请参考[分类模型训练文档](../training/single_label_classification/training.md)

<a name='4'></a>
## 4. 总结及建议
Expand Down
Loading

0 comments on commit 7e0411c

Please sign in to comment.