未验证 提交 f03596d9 编写于 作者: L littletomatodonkey 提交者: GitHub

add faq20210105 (#535)

* add faq20210105

* add faq

* fix mainpage

* fix desc

* fix faq
上级 a138a6ee
...@@ -11,13 +11,11 @@ ...@@ -11,13 +11,11 @@
- 2020.12.16 添加对cpp预测的tensorRT支持,预测加速更明显。 - 2020.12.16 添加对cpp预测的tensorRT支持,预测加速更明显。
- 2020.12.06 添加`SE_HRNet_W64_C_ssld`模型,在ImageNet-1k上Top-1 Acc可达84.75%。 - 2020.12.06 添加`SE_HRNet_W64_C_ssld`模型,在ImageNet-1k上Top-1 Acc可达84.75%。
- 2020.11.23 添加`GhostNet_x1_3_ssld `模型,在ImageNet-1k上Top-1 Acc可达79.38%。 - 2020.11.23 添加`GhostNet_x1_3_ssld `模型,在ImageNet-1k上Top-1 Acc可达79.38%。
- 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.09 添加`InceptionV3 `结构和模型,在ImageNet-1k上Top-1 Acc可达79.14%。
- 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.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.12 添加Paddle-Lite demo。
- 2020.10.10 添加cpp inference demo,完善`FAQ 30问`教程。 - 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.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%。
- [more](./docs/zh_CN/update_history.md) - [more](./docs/zh_CN/update_history.md)
...@@ -90,7 +88,7 @@ ...@@ -90,7 +88,7 @@
- [10万类图像分类预训练模型](./docs/zh_CN/application/transfer_learning.md) - [10万类图像分类预训练模型](./docs/zh_CN/application/transfer_learning.md)
- [通用目标检测](./docs/zh_CN/application/object_detection.md) - [通用目标检测](./docs/zh_CN/application/object_detection.md)
- FAQ - FAQ
- [图像分类2020第一季精选问题(近期更新2020.12.31)](./docs/zh_CN/faq_series/faq_2020_s1.md) - [图像分类2021第一季精选问题(近期更新2021.01.05)](./docs/zh_CN/faq_series/faq_2021_s1.md)
- [图像分类通用30个问题](./docs/zh_CN/faq.md) - [图像分类通用30个问题](./docs/zh_CN/faq.md)
- [PaddleClas实战15个问题](./docs/zh_CN/faq.md) - [PaddleClas实战15个问题](./docs/zh_CN/faq.md)
- [赛事支持](./docs/zh_CN/competition_support.md) - [赛事支持](./docs/zh_CN/competition_support.md)
......
...@@ -7,4 +7,5 @@ ...@@ -7,4 +7,5 @@
## 目录 ## 目录
* [【精选】图像分类30个问题及PaddleClas常见使用问题](./faq.md) * [【精选】图像分类30个问题及PaddleClas常见使用问题](./faq.md)
* [2020 FAQ第一季](./faq_series/faq_2020_s1.md)(最近更新2020.12.17) * [2020 FAQ第一季](./faq_series/faq_2020_s1.md)(最近更新2020.12.31)
* [2021 FAQ第一季](./faq_series/faq_2021_s1.md)(最近更新2021.01.05)
...@@ -294,7 +294,7 @@ Cosine_decay和piecewise_decay的学习率变化曲线如下图所示,容易 ...@@ -294,7 +294,7 @@ Cosine_decay和piecewise_decay的学习率变化曲线如下图所示,容易
**A**:一般来说,数据集的规模对性能影响至关重要,但是图片的标注往往比较昂贵,所以有标注的图片数量往往比较稀少,在这种情况下,数据的增广尤为重要。在训练ImageNet-1k的标准数据增广中,主要使用了Random_Crop与Random_Flip两种数据增广方式,然而,近些年,越来越多的数据增广方式被提出,如cutout、mixup、cutmix、AutoAugment等。实验表明,这些数据的增广方式可以有效提升模型的精度。具体到数据集来说: **A**:一般来说,数据集的规模对性能影响至关重要,但是图片的标注往往比较昂贵,所以有标注的图片数量往往比较稀少,在这种情况下,数据的增广尤为重要。在训练ImageNet-1k的标准数据增广中,主要使用了Random_Crop与Random_Flip两种数据增广方式,然而,近些年,越来越多的数据增广方式被提出,如cutout、mixup、cutmix、AutoAugment等。实验表明,这些数据的增广方式可以有效提升模型的精度。具体到数据集来说:
- ImageNet-1k:下表列出了ResNet50在8种不同的数据增广方式的表现,可以看出,相比baseline,所有的数据增广方式均有收益,其中cutmix是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/ImageAugment.html) - ImageNet-1k:下表列出了ResNet50在8种不同的数据增广方式的表现,可以看出,相比baseline,所有的数据增广方式均有收益,其中cutmix是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](../advanced_tutorials/image_augmentation/ImageAugment.md)
| 模型 | 数据增广方式 | Test top-1 | | 模型 | 数据增广方式 | Test top-1 |
|:--:|:--:|:--:| |:--:|:--:|:--:|
......
# 图像分类常见问题汇总 - 2021 第1季
## 目录
* [第1期](#第1期)(2021.01.05)
<a name="第1期"></a>
## 第1期
### Q1.1: 在模型导出时,发现导出的inference model预测精度很低,这块是为什么呢?
**A**:可以从以下几个方面排查
* 需要先排查下预训练模型路径是否正确。
* 模型导出时,默认的类别数为1000,如果预训练模型是自定义的类别数,则在导出的时候需要指定参数`--class_num=k`,k是自定义的类别数。
* 可以对比下`tools/infer/infer.py``tools/infer/predict.py`针对相同输入的输出class id与score,如果完全相同,则可能是预训练模型自身的精度很差。
### Q1.2: 训练样本的类别不均衡,这个该怎么处理呢?
**A**:有以下几种比较常用的处理方法。
* 从采样的角度出发的话
* 可以对样本根据类别进行动态采样,每个类别都设置不同的采样概率,保证不同类别的图片在同一个minibatch或者同一个epoch内,不同类别的训练样本数量基本一致或者符合自己期望的比例。
* 可以使用过采样的方法,对图片数量较少的类别进行过采样。
* 从损失函数的角度出发的话
* 可以使用OHEM(online hard example miniing)的方法,对根据样本的loss进行筛选,筛选出hard example用于模型的梯度反传和参数更新。
* 可以使用Focal loss的方法,对一些比较容易的样本的loss赋予较小的权重,对于难样本的loss赋予较大的权重,从而让容易样本的loss对网络整体的loss有贡献,但是又不会主导loss。
### Q1.3 在docker中训练的时候,数据路径和配置均没问题,但是一直报错`SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception`,这是为什么呢?
**A**:这可能是因为docker中共享内存太小导致的。创建docker的时候,`/dev/shm`的默认大小为64M,如果使用多进程读取数据,共享内存可能不够,因此需要给`/dev/shm`分配更大的空间,在创建docker的时候,传入`--shm-size=8g`表示给`/dev/shm`分配8g的空间,一般是够用的。
### Q1.4 PaddleClas提供的10W类图像分类预训练模型在哪里下载,应该怎么使用呢?
**A**:基于ResNet50_vd, 百度开源了自研的大规模分类预训练模型,其中训练数据为10万个类别,4300万张图片。10万类预训练模型的下载地址:[下载地址](https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_10w_pretrained.tar),在这里需要注意的是,该预训练模型没有提供最后的FC层参数,因此无法直接拿来预测;但是可以使用它作为预训练模型,在自己的数据集上进行微调。经过验证,该预训练模型相比于基于ImageNet1k数据集的ResNet50_vd预训练模型,在不同的数据集上均有比较明显的精度收益,最多可达30%,更多的对比实验可以参考:[图像分类迁移学习教程](../application/transfer_learning.md)
### Q1.5 使用C++进行预测部署的时候怎么进行加速呢?
**A**:可以从以下几个方面加速预测过程。
1. 如果是CPU预测的话,可以开启mkldnn进行预测,同时适当增大运算的线程数(cpu_math_library_num_threads,在`tools/config.txt`中),一般设置为6~10比较有效。
2. 如果是GPU预测的话,在硬件条件允许的情况下,可以开启TensorRT预测以及FP16预测,这可以进一步加快预测速度。
3. 在内存或者显存足够的情况下,可以增大预测的batch size。
4. 可以将图像预处理的逻辑(主要设计resize、crop、normalize等)放在GPU上运行,这可以进一步加速预测过程。
更多的预测部署加速技巧,也欢迎大家补充。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册