diff --git a/README.md b/README.md index 6dad42f2aceb804f881445429285fe888e5797e3..790f9bf6e00e1cf8c6ce5e1aa9357537a31823f6 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ PaddleClas is a toolset for image classification tasks prepared for the industry - 2020.06.12 Add support for training and evaluation on Windows or CPU. - [more](./docs/en/update_history_en.md) - ## Features - Rich model zoo. Based on the ImageNet-1k classification dataset, PaddleClas provides 24 series of classification network structures and training configurations, 122 models' pretrained weights and their evaluation metrics. diff --git a/README_cn.md b/README_cn.md index efcd41fd0727f29f8dcd12c7812f6a58337252cf..3de4a1e96eb9c225bd8a70860ccb05dedff4912b 100644 --- a/README_cn.md +++ b/README_cn.md @@ -6,9 +6,6 @@ 飞桨图像分类套件PaddleClas是飞桨为工业界和学术界所准备的一个图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。 - -**注意**: 百度提出了一个新的图像分类网络结构 **`HS-ResNet`** ,基于ImageNet-1k数据集,`HS-ResNet`在与`ResNet`的params相近的情况下,Top-1 Acc达到了81.3%,相应的Arxiv文章链接可以参考这里:[HS-ResNet: Hierarchical-Split Block on Convolutional Neural Network](https://arxiv.org/pdf/2010.07621.pdf),模型结构和预训练模型参数即将开源,敬请期待! - **近期更新** - 2020.10.12 添加Paddle-Lite demo。 - 2020.10.10 添加cpp inference demo,完善`FAQ 30问`教程。 @@ -80,8 +77,9 @@ - [10万类图像分类预训练模型](./docs/zh_CN/application/transfer_learning.md) - [通用目标检测](./docs/zh_CN/application/object_detection.md) - FAQ - - [图像分类通用问题](./docs/zh_CN/faq.md) - - [PaddleClas实战FAQ](./docs/zh_CN/faq.md) + - [图像分类2020第一季精选问题(近期更新2020.11.04)](./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/images/faq/ResNet_vabcd_structure.png b/docs/images/faq/ResNet_vabcd_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..8aacb67700bd005e824a7b468d837c59f90357cc Binary files /dev/null and b/docs/images/faq/ResNet_vabcd_structure.png differ diff --git a/docs/zh_CN/faq.md b/docs/zh_CN/faq.md index 14c77bde60e8d1544a4834ce24d67d951493d2d2..921a68911067a120305a139c245cd7b41f48d5a1 100644 --- a/docs/zh_CN/faq.md +++ b/docs/zh_CN/faq.md @@ -7,7 +7,7 @@ * 图像分类领域大佬众多,模型和论文更新速度也很快,本文档回答主要依赖有限的项目实践,难免挂一漏万,如有遗漏和不足,也希望有识之士帮忙补充和修正,万分感谢。 -## PaddleClas常见问题汇总(持续更新) +## PaddleClas常见问题汇总 * [图像分类30个问题](#图像分类30个问题) * [基础知识](#基础知识) diff --git a/docs/zh_CN/faq_series.md b/docs/zh_CN/faq_series.md new file mode 100644 index 0000000000000000000000000000000000000000..ca00a9d87c21c887fb4033b9f80c7ecc95c64942 --- /dev/null +++ b/docs/zh_CN/faq_series.md @@ -0,0 +1,10 @@ +# 图像分类FAQ(持续更新) + +## 前言 + +* 本文档收集了大家在使用PaddleClas或者学习图像分类时遇到的一些问题,旨在为图像分类任务的开发者提供一些参考,如果问题欢迎帮忙补充和修正,不胜感激。 + +## 目录 + +* [【精选】图像分类30个问题及PaddleClas常见使用问题](./faq.md) +* [2020 FAQ第一季](./faq_series/faq_2020_s1.md)(最近更新2020.11.03) diff --git a/docs/zh_CN/faq_series/faq_2020_s1.md b/docs/zh_CN/faq_series/faq_2020_s1.md new file mode 100644 index 0000000000000000000000000000000000000000..9b0af81a824f1202e27e1db1d4e245f5ce8be1aa --- /dev/null +++ b/docs/zh_CN/faq_series/faq_2020_s1.md @@ -0,0 +1,67 @@ +# 图像分类常见问题汇总 - 2020 第1季 + + +## 目录 +* [第1期](#第1期)(2020.11.03) + + +## 第1期 + +### Q1.1: PaddleClas可以用来做什么? +**A**:PaddleClas是飞桨为工业界和学术界所准备的一个图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。PaddleClas提供了基于图像分类的模型训练、评估、预测、部署全流程的服务,方便大家更加高效地学习图像分类。具体地,PaddleClas中包含如下一些特性 。 + + +* PaddleClas提供了24个系列的分类网络结构(ResNet, ResNet_vd, MobileNetV3, Res2Net, HRNet等)和训练配置,122个预训练模型和性能评估与预测,供大家选择并使用。 +* PaddleClas提供了TensorRT预测、python inference、c++ inference、Paddle-Lite预测部署等多种预测部署推理方案,在方便在多种环境中进行部署推理。 +* PaddleClas提供了一种简单的SSLD知识蒸馏方案,基于该方案蒸馏模型的识别准确率普遍提升3%以上。 +* PaddleClas支持AutoAugment、Cutout、Cutmix等8种数据增广算法详细介绍、代码复现和在统一实验环境下的效果评估。 +* PaddleClas支持在Windows/Linux/MacOS环境中基于CPU/GPU进行使用。 + +### Q1.2: ResNet系列模型是什么?有哪些模型?为什么在服务器端如此推荐ResNet系列模型? +**A**: ResNet中创新性地引入了残差结构,通过堆叠多个残差结构从而构建了ResNet网络。实验表明使用残差块可以有效地提升收敛速度和精度,PaddleClas中,ResNet从小到达,依次有包含18、34、50、101、152、200层的ResNet结构,ResNet系列模型于2015年被提出,在不同的应用场景中,如分类、检测、分割等,都已经验证过其有效性,业界也早已对其进行了大量优化,该系列模型在速度和精度方面都有着非常明显的优势,对基于TensorRT以及FP16的预测支持得也很好,因而推荐大家使用ResNet系列模型;由于其模型所占存储相对较大,因此常用于服务器端。更多关于ResNet模型的介绍可以参考论文[Deep Residual Learning for Image Recognition](https://arxiv.org/abs/1512.03385)。 + +### Q1.3: ResNet_vd和ResNet、ResNet_vc结构有什么区别呢? +**A**: + +ResNet_va至vd的结构如下图所示,ResNet最早提出时为va结构,在降采样残差模块这个部分,在左边的特征变换通路中(Path A),第一个1x1卷积部分就行了降采样,从而导致信息丢失(卷积的kernel size为1,stride为2,输入特征图中 有部分特征没有参与卷积的计算);在vb结构中,把降采样的步骤从最开始的第一个1x1卷积调整到中间的3x3卷积中,从而避免了信息丢失的问题,PaddleClas中的ResNet模型默认就是ResNet_vb;vc结构则是将最开始这个7x7的卷积变成3个3x3的卷积,在感受野不变的情况下,计算量和存储大小几乎不变,而且实验证明精度相对于vb结构有所提升;vd结构是修改了降采样残差模块右边的特征通路(Path B)。把降采样的过程由平均池化这个操作去替代了,这一系列的改进(va->vd),几乎没有带来新增的预测耗时,结合适当的训练策略,比如说标签平滑以及mixup数据增广,精度可以提升高达2.7%。 + +
+ +
+ +### Q1.4 如果确定使用ResNet系列模型,怎么根据实际的场景需求选用不同的模型呢? +**A**: + +ResNet系列模型中,相比于其他模型,ResNet_vd模型在预测速度几乎不变的情况下,精度有非常明显的提升,因此推荐大家使用ResNet_vd系列模型。 +下面给出了batch size=4的情况下,在T4 GPU上,不同模型的的预测耗时、flops、params与精度的变化曲线,可以根据自己自己的实际部署场景中的需求,去选择合适的模型,如果希望模型存储大小尽可能小或者预测速度尽可能快,则可以使用ResNet18_vd模型,如果希望获得尽可能高的精度,则建议使用ResNet152_vd或者ResNet200_vd模型。更多关于ResNet系列模型的介绍可以参考文档:[ResNet及其vd系列模型文档](../models/ResNet_and_vd.md)。 + +* 精度-预测速度变化曲线 + +
+ +
+ +* 精度-params变化曲线 + +
+ +
+ +* 精度-flops变化曲线 + +
+ +
+ +### Q1.5 在网络中的block里conv-bn-relu是固定的形式吗? + +**A**: 在batch-norm出现之前,主流的卷积神经网络的固定形式是conv-relu。在现阶段的卷积神经网络中,conv-bn-relu是大部分网络中block的固定形式,这样的设计是相对鲁棒的结构,此外,DenseNet中的block选用的是bn-relu-conv的形式,ResNet-V2中也使用的是这种组合方式。在MobileNetV2中,为了不丢失信息,部分block中间的层没有使用relu激活函数,选用的是conv-bn的形式。 + +### Q1.6 ResNet34与ResNet50的区别? + +**A**: ResNet系列中有两种不同的block,分别是basic-block和bottleneck-block,堆叠较多这样的block组成了ResNet网络。basic-block是带有shortcut的两个3x3的卷积核的堆叠,bottleneck-block是带有shortcut的1x1卷积核、3x3卷积核、1x1卷积核的堆叠,所以basic-block中有两层,bottleneck-block有三层。ResNet34和ResNet50中堆叠的block数相同,但是堆叠的种类分别是basic-block和bottleneck-block。 + +### Q1.7 大卷积核一定可以带来正向收益吗? + +**A**: 不一定,将网络中的所有卷积核都增大未必会带来性能的提升,甚至会有有损性能,在论文[MixConv: Mixed Depthwise Convolutional Kernels](https://arxiv.org/abs/1907.09595) +中指出,在一定范围内提升卷积核大小对精度的提升有正向作用,但是超出后会有损精度。所以考虑到模型的大小、计算量等问题,一般不选用大的卷积核去设计网络。