diff --git a/README_cn.md b/README_cn.md index 2a2f296d06be00abc5fc74c4e4ca08286a14c433..8765593cf86b14bacafa323ea1256167842c4361 100644 --- a/README_cn.md +++ b/README_cn.md @@ -7,9 +7,8 @@ 飞桨图像分类套件PaddleClas是飞桨为工业界和学术界所准备的一个图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。 **近期更新** -- 2020.11.11 添加图像分类[常见问题2020第一季第二期](./docs/zh_CN/faq_series/faq_2020_s1.md) 5个新问题,并且计划以后每周会更新,欢迎大家持续关注。 +- 2020.11.18 添加图像分类[常见问题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.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%。 @@ -88,7 +87,7 @@ - [10万类图像分类预训练模型](./docs/zh_CN/application/transfer_learning.md) - [通用目标检测](./docs/zh_CN/application/object_detection.md) - FAQ - - [图像分类2020第一季精选问题(近期更新2020.11.04)](./docs/zh_CN/faq_series/faq_2020_s1.md) + - [图像分类2020第一季精选问题(近期更新2020.11.18)](./docs/zh_CN/faq_series/faq_2020_s1.md) - [图像分类通用30个问题](./docs/zh_CN/faq.md) - [PaddleClas实战15个问题](./docs/zh_CN/faq.md) - [赛事支持](./docs/zh_CN/competition_support.md) diff --git a/docs/zh_CN/faq_series/faq_2020_s1.md b/docs/zh_CN/faq_series/faq_2020_s1.md index a76ab14beb2fb2337b988b6c573ae421857d8fcb..800d41880b100718cd0ae27f3063dfffb56b6691 100644 --- a/docs/zh_CN/faq_series/faq_2020_s1.md +++ b/docs/zh_CN/faq_series/faq_2020_s1.md @@ -4,6 +4,7 @@ ## 目录 * [第1期](#第1期)(2020.11.03) * [第2期](#第2期)(2020.11.11) +* [第3期](#第3期)(2020.11.18) ## 第1期 @@ -100,3 +101,43 @@ ResNet系列模型中,相比于其他模型,ResNet_vd模型在预测速度 **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)部分介绍了知识蒸馏对于分类任务迁移的收益。 + + +## 第3期 + +### Q3.1: DenseNet模型相比于ResNet有什么改进呢?有哪些特点或者应用场景呢? + +**A**: DenseNet相比于ResNet,设计了一个更激进的密集连接机制,通过考虑特征重用和旁路的设置,进一步减少了参数量,而且从一定程度上缓解了梯度弥散的问题,因为引入了更加密集的连接,因此模型更容易训练,而且具有一定的正则化效果。在数据量不是很多的图像分类场景中,DenseNet是一个不错的选择。更多关于DenseNet的介绍与系列模型可以参考[DenseNet模型文档](../models/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)。 + + +### Q3.3: 怎么使用多个模型进行预测融合呢? + +**A** 使用多个模型进行预测的时候,建议首先将预训练模型导出为inference模型,这样可以摆脱对网络结构定义的依赖,可以参考[模型导出脚本](../../../tools/export_model.py)进行模型导出,之后再参考[inference模型预测脚本](../../../tools/infer/predict.py)进行预测即可,在这里需要根据自己使用模型的数量创建多个predictor。 + + +### Q3.4: PaddleClas中怎么增加自己的数据增广方法呢? + +**A**: + +* 对于单张图像的增广,可以参考[基于单张图片的数据增广脚本](../../../ppcls/data/imaug/operators.py),参考`ResizeImage`或者`CropImage`等数据算子的写法,创建一个新的类,然后在`__call__`中,实现对应的增广方法即可。 +* 对于一个batch图像的增广,可以参考[基于batch数据的数据增广脚本](../../../ppcls/data/imaug/batch_operators.py),参考`MixupOperator`或者`CutmixOperator`等数据算子的写法,创建一个新的类,然后在`__call__`中,实现对应的增广方法即可。 + +## Q3.5: 怎么进一步加速模型训练过程呢? + +**A**: + +* 可以使用自动混合精度进行训练,这在精度几乎无损的情况下,可以有比较明显的速度收益,以ResNet50为例,PaddleClas中使用自动混合精度训练的配置文件可以参考:[ResNet50_fp16.yml](../../../configs/ResNet/ResNet50_fp16.yml),主要就是需要在标准的配置文件中添加以下几行 + +``` +use_fp16: True +amp_scale_loss: 128.0 +use_dynamic_loss_scaling: True +``` + +* 可以开启dali,将数据预处理方法放在GPU上运行,在模型比较小时(reader耗时占比更高一些),开启dali会带来比较明显的精度收益,在训练的时候,添加`-o use_dali=True`即可使用dali进行训练,更多关于dali 安装与介绍可以参考:[dali安装教程](https://docs.nvidia.com/deeplearning/dali/user-guide/docs/installation.html#nightly-builds)。