diff --git a/README_cn.md b/README_cn.md index f79e8b99e0322892a9e97a740641d111ffe75d98..5fda1958f22c7533ba0928671276db83ca876be0 100644 --- a/README_cn.md +++ b/README_cn.md @@ -8,8 +8,9 @@ **近期更新** +- 2020.11.11 添加图像分类[常见问题2020第一季第二期](./docs/zh_CN/faq_series/faq_2020_s1.md) 5个新问题,并且计划以后每周会更新,欢迎大家持续关注。 - 2020.11.09 添加`InceptionV3 `结构和模型,在ImageNet-1k上Top-1 Acc可达79.14%。 -- 2020.11.04 添加图像分类[常见问题2020第一季第一期](./docs/zh_CN/faq_series/faq_2020_s1.md) 7个新问题,并且计划以后每周一会更新,欢迎大家持续关注。 +- 2020.11.04 添加图像分类[常见问题2020第一季第一期](./docs/zh_CN/faq_series/faq_2020_s1.md) 7个新问题,并且计划以后每周会更新,欢迎大家持续关注。 - 2020.10.20 添加 `Res2Net50_vd_26w_4s_ssld `模型,在ImageNet-1k上Top-1 Acc可达83.1%;添加 `Res2Net101_vd_26w_4s_ssld `模型,在ImageNet-1k上Top-1 Acc可达83.9%。 - 2020.10.12 添加Paddle-Lite demo。 - 2020.10.10 添加cpp inference demo,完善`FAQ 30问`教程。 diff --git a/docs/zh_CN/faq_series/faq_2020_s1.md b/docs/zh_CN/faq_series/faq_2020_s1.md index 9b0af81a824f1202e27e1db1d4e245f5ce8be1aa..a76ab14beb2fb2337b988b6c573ae421857d8fcb 100644 --- a/docs/zh_CN/faq_series/faq_2020_s1.md +++ b/docs/zh_CN/faq_series/faq_2020_s1.md @@ -3,8 +3,9 @@ ## 目录 * [第1期](#第1期)(2020.11.03) +* [第2期](#第2期)(2020.11.11) - + ## 第1期 ### Q1.1: PaddleClas可以用来做什么? @@ -65,3 +66,37 @@ ResNet系列模型中,相比于其他模型,ResNet_vd模型在预测速度 **A**: 不一定,将网络中的所有卷积核都增大未必会带来性能的提升,甚至会有有损性能,在论文[MixConv: Mixed Depthwise Convolutional Kernels](https://arxiv.org/abs/1907.09595) 中指出,在一定范围内提升卷积核大小对精度的提升有正向作用,但是超出后会有损精度。所以考虑到模型的大小、计算量等问题,一般不选用大的卷积核去设计网络。 + + +## 第2期 + +### Q2.1: PaddleClas如何训练自己的backbone? + +**A**:具体流程如下: +* 首先在ppcls/modeling/architectures/文件夹下新建一个自己的模型结构文件,即你自己的backbone,模型搭建可以参考resnet.py; +* 然后在ppcls/modeling/\_\_init\_\_.py中添加自己设计的backbone的类; +* 其次配置训练的yaml文件,此处可以参考configs/ResNet/ResNet50.yaml; +* 最后启动训练即可。 + + +### Q2.2: 如何利用已有的模型和权重对自己的分类任务进行迁移? + +**A**: 具体流程如下: +* 首先,好的预训练模型往往会有更好的迁移效果,所以建议选用精度较高的预训练模型,PaddleClas提供了一系列业界领先的预训练模型,建议使用; +* 其次,要根据迁移的数据集的规模来确定训练超参数,一般超参数需要调试才可以寻找到一个局部最优值,如果没有相关经验,建议先从learning rate开始调起,一般来说,规模较小的数据集使用较小的learning rate,如0.001,另外,建议学习率使用warmup策略,避免过大的学习率破坏预训练模型的权重。在迁移过程中,也可以设置backbone中不同层的学习率,往往从网络的头部到尾补学习率逐渐减小效果较好。在数据集规模较小的时候,也可以使用数据增强策略,PaddleClas提供了8中强有力的数据增强策略,为更高的精度保驾护航。 +* 训练结束后,可以反复迭代上述过程,直到寻找到局部最优值。 + +### Q2.3: PaddleClas中configs下的默认参数适合任何一个数据集吗? + +**A**: PaddleClas中的configs下的默认参数是ImageNet-1k的训练参数,这个参数并不适合所有的数据集,具体数据集需要在此基础上进一步调试,调试方法会在之后出一个单独的faq,敬请期待。 + + +### Q2.4 PaddleClas中的不同的模型使用了不同的分辨率,标配的应该是多少呢? + +**A**: PaddleClas严格遵循了论文作者的使用的分辨率。自2012年AlexNet以来,大多数的卷积神经网络在ImageNet上训练的分辨率为224x224,Google在设计InceptionV3的时候为了适应网络结构将分辨率调至299x299,之后其推出的Xception、InceptionV4也是使用的该分辨率。此外,在EfficeintNet中,作者分析了不同规模的网络应该使用不同的分辨率,所以该系列网络中每个不同大小的网络都使用了不同的分辨率。在实际使用场景中,推荐使用默认的分辨率,当然,层数较深或者宽度较大的网络也可以尝试使用更大的分辨率。 + + +### 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蒸馏策略](https://github.com/PaddlePaddle/PaddleClas/blob/master/docs/zh_CN/advanced_tutorials/distillation/distillation.md)部分介绍了知识蒸馏对于分类任务迁移的收益。 +