add menu and modify documentation

pull/1546/head
sibo2rr 2021-11-25 15:40:40 +08:00 committed by gaotingquan
parent 0fa1fd71e9
commit 7dbf7d66ea
61 changed files with 1093 additions and 712 deletions

View File

@ -5,8 +5,6 @@
## 目录
- [ImageNet 预训练模型库](#imagenet-预训练模型库)
- [目录](#目录)
- [1. 模型库概览图](#1)
- [2. SSLD 知识蒸馏预训练模型](#2)
- [2.1 服务器端知识蒸馏模型](#2.1)

View File

@ -7,19 +7,19 @@ PaddlePaddle 支持导出 inference 模型用于部署推理场景,相比于
## 目录
- [环境准备](#环境准备)
- [分类模型导出](#分类模型导出)
- [主体检测模型导出](#主体检测模型导出)
- [识别模型导出](#识别模型导出)
- [命令参数说明](#命令参数说明)
- [1. 环境准备](#1)
- [2. 分类模型导出](#2)
- [3. 主体检测模型导出](#3)
- [4. 识别模型导出](#4)
- [5. 命令参数说明](#5)
<a name="环境准备"></a>
<a name="1"></a>
## 1. 环境准备
首先请参考文档[安装 PaddlePaddle](../installation/install_paddle.md)和文档[安装 PaddleClas](../installation/install_paddleclas.md)配置运行环境。
<a name="分类模型导出"></a>
<a name="2"></a>
## 2. 分类模型导出
进入 PaddleClas 目录下:
@ -43,12 +43,12 @@ python tools/export_model.py \
-o Global.save_inference_dir=./deploy/models/class_ResNet50_vd_ImageNet_infer
```
<a name="主体检测模型导出"></a>
<a name="3"></a>
## 3. 主体检测模型导出
主体检测模型的导出,可以参考[主题检测介绍](../image_recognition_pipeline/mainbody_detection.md)。
<a name="识别模型导出"></a>
<a name="4"></a>
## 4. 识别模型导出
进入 PaddleClas 目录下:
@ -74,7 +74,7 @@ python3 tools/export_model.py \
注意,此处保存的 inference 模型在 embedding 特征层做了截断,即导出后模型最终的输出为 n 维 embedding 特征。
<a name="命令参数说明"></a>
<a name="5"></a>
## 5. 命令参数说明
在上述模型导出命令中,所使用的配置文件需要与该模型的训练文件相同,在配置文件中有以下字段用于配置模型导出参数:

View File

@ -6,15 +6,15 @@ PaddleClas 支持通过 PaddleHub 快速进行服务化部署。目前支持图
## 目录
- [简介](#1)
- [准备环境](#2)
- [下载推理模型](#3)
- [安装服务模块](#4)
- [启动服务](#5)
- [1. 简介](#1)
- [2. 准备环境](#2)
- [3. 下载推理模型](#3)
- [4. 安装服务模块](#4)
- [5. 启动服务](#5)
- [5.1 命令行命令启动](#5.1)
- [5.2 配置文件启动](#5.2)
- [发送预测请求](#6)
- [自定义修改服务模块](#7)
- [6. 发送预测请求](#6)
- [7. 自定义修改服务模块](#7)
<a name="1"></a>

View File

@ -10,19 +10,19 @@ Paddle Lite是飞桨轻量化推理引擎为手机、IOT端提供高效推理
---
## 目录
- [准备环境](#1)
- [1. 准备环境](#1)
- [1.1 准备交叉编译环境](#1.1)
- [1.2 准备预测库](#1.2)
- [开始运行](#2)
- [2. 开始运行](#2)
- [2.1 模型优化](#2.1)
- [2.1.1 pip 安装 paddlelite 并进行转换](#2.1.1)
- [2.1.2 源码编译 Paddle-Lite 生成 opt 工具](#2.1.2)
- [2.1.3 转换示例](#2.1.3)
- [2.2 与手机联调](#2.2)
- [FAQ](#3)
- [3. FAQ](#3)
<a name="1"></a>
## 一、准备环境
## 1. 准备环境
Paddle Lite 目前支持以下平台部署:
* 电脑(编译 Paddle Lite
@ -89,7 +89,7 @@ inference_lite_lib.android.armv8/
```
<a name="2"></a>
## 二、开始运行
## 2. 开始运行
<a name="2.1"></a>
### 2.1 模型优化
@ -117,7 +117,7 @@ pip install paddlelite==2.8
|--param_file|待优化的 PaddlePaddle 模型combined 形式)的权重文件路径|
|--optimize_out_type|输出模型类型目前支持两种类型protobuf 和 naive_buffer其中 naive_buffer 是一种更轻量级的序列化/反序列化实现。若您需要在 mobile 端执行模型预测,请将此选项设置为 naive_buffer。默认为 protobuf|
|--optimize_out|优化模型的输出路径|
|--valid_targets|指定模型可执行的backend默认为arm。目前可支持x86、arm、opencl、npu、xpu可以同时指定多个backend(以空格分隔)Model Optimize Tool将会自动选择最佳方式。如果需要支持华为NPUKirin 810/990 Soc搭载的达芬奇架构NPU应当设置为npu, arm|
|--valid_targets|指定模型可执行的 backend默认为 arm。目前可支持 x86、arm、opencl、npu、xpu可以同时指定多个 backend以空格分隔Model Optimize Tool 将会自动选择最佳方式。如果需要支持华为 NPUKirin 810/990 Soc 搭载的达芬奇架构 NPU应当设置为 npu, arm|
|--record_tailoring_info|当使用 根据模型裁剪库文件 功能时,则设置该选项为 true以记录优化后模型含有的 kernel 和 OP 信息,默认为 false|
`--model_file` 表示 inference 模型的 model 文件地址,`--param_file` 表示 inference 模型的 param 文件地址;`optimize_out` 用于指定输出文件的名称(不需要添加 `.nb` 的后缀)。直接在命令行中运行 `paddle_lite_opt`,也可以查看所有参数及其说明。
@ -275,7 +275,7 @@ export LD_LIBRARY_PATH=/data/local/tmp/debug:$LD_LIBRARY_PATH
</div>
<a name="3"></a>
## 三、FAQ
## 3. FAQ
Q1如果想更换模型怎么办需要重新按照流程走一遍吗
A1如果已经走通了上述步骤更换模型只需要替换 `.nb` 模型文件即可,同时要注意修改下配置文件中的 `.nb` 文件路径以及类别映射文件(如有必要)。

View File

@ -46,7 +46,6 @@ pip3 install paddle-serving-server-gpu==0.7.0.post112 # GPU with CUDA11.2 + Tens
```shell
pip install paddle-serving-server
```
<a name="3"></a>
## 3. 图像分类服务部署
<a name="3.1"></a>
@ -81,7 +80,7 @@ ResNet50_vd 推理模型转换完成后,会在当前文件夹多出 `ResNet50_
|- serving_client_conf.prototxt
|- serving_client_conf.stream.prototxt
```
得到模型文件之后,需要修改 `ResNet50_vd_server` 下文件 `serving_server_conf.prototxt` 中的 alias 名字:将 `fetch_var` 中的 `alias_name` 改为 `prediction`
得到模型文件之后,需要修改 serving_server_conf.prototxt 中的 alias 名字: 将`feed_var`中的`alias_name`改为`image`, 将`fetch_var`中的`alias_name`改为`prediction`
**备注**: Serving 为了兼容不同模型的部署,提供了输入输出重命名的功能。这样,不同的模型在推理部署时,只需要修改配置文件的 alias_name 即可,无需修改代码即可完成推理部署。
修改后的 serving_server_conf.prototxt 如下所示:
@ -233,4 +232,4 @@ unset https_proxy
unset http_proxy
```
更多的服务部署类型,如 `RPC 预测服务` 等,可以参考 Serving 的[github 官网](https://github.com/PaddlePaddle/Serving/tree/v0.7.0/examples)
更多的服务部署类型,如 `RPC 预测服务` 等,可以参考 Serving 的[github 官网](https://github.com/PaddlePaddle/Serving/tree/develop/python/examples/imagenet)

View File

@ -6,12 +6,12 @@
## 目录
- [图像分类推理](#图像分类推理)
- [主体检测模型推理](#主体检测模型推理)
- [特征提取模型推理](#特征提取模型推理)
- [主体检测、特征提取和向量检索串联](#主体检测、特征提取和向量检索串联)
- [1. 图像分类推理](#1)
- [2. 主体检测模型推理](#2)
- [3. 特征提取模型推理](#3)
- [4. 主体检测、特征提取和向量检索串联](#4)
<a name="图像分类推理"></a>
<a name="1"></a>
## 1. 图像分类推理
首先请参考文档[模型导出](./export_model.md)准备 inference 模型,然后进入 PaddleClas 的 `deploy` 目录下:
@ -39,9 +39,9 @@ python python/predict_cls.py -c configs/inference_cls.yaml
**注意**:
* 如果使用 VisionTransformer 系列模型,如 `DeiT_***_384`, `ViT_***_384` 等,请注意模型的输入数据尺寸,部分模型需要修改参数: `PreProcess.resize_short=384`, `PreProcess.resize=384`
* 如果你希望提升评测模型速度,使用gpu评测时建议开启TensorRT加速预测使用cpu评测时建议开启MKL-DNN加速预测。
* 如果你希望提升评测模型速度,使用 GPU 评测时,建议开启 TensorRT 加速预测,使用 CPU 评测时,建议开启 MKL-DNN 加速预测。
<a name="主体检测模型推理"></a>
<a name="2"></a>
## 2. 主体检测模型推理
进入 PaddleClas 的 `deploy` 目录下:
@ -70,7 +70,7 @@ python python/predict_det.py -c configs/inference_det.yaml
* `Global.use_gpu` 是否使用 GPU 预测,默认为 `True`
<a name="特征提取模型推理"></a>
<a name="3"></a>
## 3. 特征提取模型推理
下面以商品特征提取为例,介绍特征提取模型推理。首先进入 PaddleClas 的 `deploy` 目录下:
@ -90,7 +90,7 @@ tar -xf ./models/product_ResNet50_vd_aliproduct_v1.0_infer.tar -C ./models/
上述预测命令可以得到一个 512 维的特征向量,直接输出在在命令行中。
<a name="主体检测、特征提取和向量检索串联"></a>
<a name="4"></a>
## 4. 主体检测、特征提取和向量检索串联
主体检测、特征提取和向量检索的串联预测,可以参考图像识别[快速体验](../quick_start/quick_start_recognition.md)。

View File

@ -6,10 +6,10 @@ PaddleClas 支持 Python Whl 包方式进行预测,目前 Whl 包方式仅支
## 目录
- [安装paddleclas](#1)
- [快速开始](#2)
- [参数解释](#3)
- [使用示例](#4)
- [1. 安装 paddleclas](#1)
- [2. 快速开始](#2)
- [3. 参数解释](#3)
- [4. 使用示例](#4)
- [4.1 查看帮助信息](#4.1)
- [4.2 使用 PaddleClas 提供的预训练模型进行预测](#4.2)
- [4.3 使用本地模型文件预测](#4.3)
@ -19,8 +19,9 @@ PaddleClas 支持 Python Whl 包方式进行预测,目前 Whl 包方式仅支
- [4.7 保存预测结果](#4.7)
- [4.8 指定 label name](#4.8)
<a name="1"></a>
## 一、安装paddleclas
## 1. 安装 paddleclas
* pip 安装
@ -36,7 +37,7 @@ pip3 install dist/*
```
<a name="2"></a>
## 二、快速开始
## 2. 快速开始
* 使用`ResNet50`模型,以下图(`PaddleClas/docs/images/inference_deployment/whl_demo.jpg`)为例进行说明。
<div align="center">
@ -72,7 +73,7 @@ Predict complete!
```
<a name="3"></a>
## 三、参数解释
## 3. 参数解释
以下参数可在命令行方式使用中通过参数指定,或在 Python 代码中实例化 PaddleClas 对象时作为构造函数的参数使用。
* model_name(str): 模型名称,使用 PaddleClas 提供的基于 ImageNet1k 的预训练模型。
* inference_model_dir(str): 本地模型文件目录,当未指定 `model_name` 时该参数有效。该目录下需包含 `inference.pdmodel``inference.pdiparams` 两个模型文件。
@ -81,7 +82,7 @@ Predict complete!
* gpu_mem(int): 使用的 GPU 显存大小,当 `use_gpu``True` 时有效,默认为 8000。
* use_tensorrt(bool): 是否开启 TensorRT 预测,可提升 GPU 预测性能,需要使用带 TensorRT 的预测库,默认为 `False`
* enable_mkldnn(bool): 是否开启 MKLDNN`use_gpu``False` 时有效,默认 `False`
* cpu_num_threads(int): cpu预测时的线程数,当 `use_gpu``False``enable_mkldnn``True` 时有效,默认值为 `10`
* cpu_num_threads(int): CPU 预测时的线程数,当 `use_gpu``False``enable_mkldnn``True` 时有效,默认值为 `10`
* batch_size(int): 预测时每个 batch 的样本数量,默认为 `1`
* resize_short(int): 按图像较短边进行等比例缩放,默认为 `256`
* crop_size(int): 将图像裁剪到指定大小,默认为 `224`
@ -104,7 +105,7 @@ clas = PaddleClas(model_name='ViT_base_patch16_384', resize_short=384, crop_size
```
<a name="4"></a>
## 四、使用示例
## 4. 使用示例
PaddleClas 提供两种使用方式:
1. Python 代码中使用;

View File

@ -1,9 +1,17 @@
# 安装 PaddlePaddle
---
## 目录
- [1. 环境要求](#1)
- [2.(建议)使用 Docker 环境](#2)
- [3. 通过 pip 安装 PaddlePaddle](#3)
- [4. 验证安装](#4)
目前, **PaddleClas** 要求 **PaddlePaddle** 版本 `>=2.0`。建议使用我们提供的 Docker 运行 PaddleClas有关 Docker、nvidia-docker 的相关使用教程可以参考[链接](https://www.runoob.com/Docker/Docker-tutorial.html)。如果不使用 Docker可以直接跳过 [2.(建议)使用 Docker 环境](#2) 部分内容,从 [3. 通过 pip 安装 PaddlePaddle](#3) 部分开始。
<a name='1'></a>
## 1. 环境要求
**版本要求**
@ -71,6 +79,7 @@ pip3 install paddlepaddle-gpu --upgrade -i https://mirror.baidu.com/pypi/simple
* 如果先安装了 CPU 版本的 PaddlePaddle之后想切换到 GPU 版本,那么需要使用 pip 先卸载 CPU 版本的 PaddlePaddle再安装 GPU 版本的 PaddlePaddle否则容易导致 PaddlePaddle 冲突。
* 您也可以从源码编译安装 PaddlePaddle请参照 [PaddlePaddle 安装文档](http://www.paddlepaddle.org.cn/install/quick) 中的说明进行操作。
<a name='4'></a>
## 4. 验证安装
使用以下命令可以验证 PaddlePaddle 是否安装成功。

View File

@ -1,6 +1,12 @@
# 安装 PaddleClas
---
## 目录
* [1. 克隆 PaddleClas](#1)
* [2. 安装 Python 依赖库](#2)
<a name='1'></a>
## 1. 克隆 PaddleClas
@ -15,6 +21,7 @@ git clone https://github.com/PaddlePaddle/PaddleClas.git -b release/2.3
```shell
git clone https://gitee.com/paddlepaddle/PaddleClas.git -b release/2.3
```
<a name='2'></a>
## 2. 安装 Python 依赖库

View File

@ -1,11 +1,18 @@
# DLA系列
----
## 目录
* [1. 概述](#1)
* [2. 精度、FLOPS和参数量](#2)
## 概述
<a name='1'></a>
## 1. 概述
DLA (Deep Layer Aggregation)。 视觉识别需要丰富的表示形式其范围从低到高范围从小到大分辨率从精细到粗糙。即使卷积网络中的要素深度很深仅靠隔离层还是不够的将这些表示法进行复合和聚合可改善对内容和位置的推断。尽管已合并了残差连接以组合各层但是这些连接本身是“浅”的并且只能通过简单的一步操作来融合。作者通过更深层的聚合来增强标准体系结构以更好地融合各层的信息。Deep Layer Aggregation 结构迭代地和分层地合并了特征层次结构以使网络具有更高的准确性和更少的参数。跨体系结构和任务的实验表明与现有的分支和合并方案相比Deep Layer Aggregation 可提高识别和分辨率。[论文地址](https://arxiv.org/abs/1707.06484)。
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS和参数量
| Model | Params (M) | FLOPs (G) | Top-1 (%) | Top-5 (%) |
|:-----------------:|:----------:|:---------:|:---------:|:---------:|

View File

@ -1,6 +1,15 @@
# DPN 与 DenseNet 系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 V100 GPU 的预测速度](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
DenseNet 是 2017 年 CVPR best paper 提出的一种新的网络结构,该网络设计了一种新的跨层连接的 block即 dense-block。相比 ResNet 中的 bottleneckdense-block 设计了一个更激进的密集连接机制即互相连接所有的层每个层都会接受其前面所有层作为其额外的输入。DenseNet 将所有的 dense-block 堆叠,组合成了一个密集连接型网络。密集的连接方式使得 DenseNe 更容易进行梯度的反向传播,使得网络更容易训练。
DPN 的全称是 Dual Path Networks即双通道网络。该网络是由 DenseNet 和 ResNeXt 结合的一个网络,其证明了 DenseNet 能从靠前的层级中提取到新的特征,而 ResNeXt 本质上是对之前层级中已提取特征的复用。作者进一步分析发现ResNeXt 对特征有高复用率但冗余度低DenseNet 能创造新特征,但冗余度高。结合二者结构的优势,作者设计了 DPN 网络。最终 DPN 网络在同样 FLOPS 和参数量下,取得了比 ResNeXt 与 DenseNet 更好的结果。
@ -18,7 +27,8 @@ DPN的全称是Dual Path Networks即双通道网络。该网络是由DenseNet
对于 DPN 系列网络,模型的 FLOPS 和参数量越大,模型的精度越高。其中,由于 DPN107 的网络宽度最大,所以其是该系列网络中参数量与计算量最大的网络。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -35,8 +45,8 @@ DPN的全称是Dual Path Networks即双通道网络。该网络是由DenseNet
## 基于V100 GPU的预测速度
<a name='3'></a>
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
|-------------|-----------|-------------------|--------------------------|
@ -52,8 +62,8 @@ DPN的全称是Dual Path Networks即双通道网络。该网络是由DenseNet
| DPN131 | 224 | 256 | 28.083 |
## 基于T4 GPU的预测速度
<a name='4'></a>
## 4. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|-------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,10 +1,19 @@
# ESNet系列
---
## 目录
## 概述
* [1. 概述](#)
* [2. 精度、FLOPs和参数量](#FLOPs)
<a name='1'></a>
## 1. 概述
ESNet(Enhanced ShuffleNet)是百度自研的一个轻量级网络,该网络在 ShuffleNetV2 的基础上融合了 MobileNetV3、GhostNet、PPLCNet 的优点,组合成了一个在 ARM 设备上速度更快、精度更高的网络,由于其出色的表现,所以在 PaddleDetection 推出的 [PP-PicoDet](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.3/configs/picodet) 使用了该模型做 backbone配合更强的目标检测算法最终的指标一举刷新了目标检测模型在 ARM 设备上的 SOTA 指标。
## 精度、FLOPs和参数量
<a name='2'></a>
## 2.精度、FLOPs和参数量
| Models | Top1 | Top5 | FLOPs<br>(M) | Params<br/>(M) |
|:--:|:--:|:--:|:--:|:--:|

View File

@ -1,6 +1,14 @@
# EfficientNet 与 ResNeXt101_wsl系列
-----
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS和参数量](#2)
* [3. 基于 V100 GPU的预测速度](#3)
* [4. 基于 T4 GPU的预测速度](#4)
<a name='1'></a>
## 1. 概述
EfficientNet 是 Google 于 2019 年发布的一个基于 NAS 的轻量级网络,其中 EfficientNetB7 刷新了当时 ImageNet-1k 的分类准确率。在该文章中,作者指出,传统的提升神经网络性能的方法主要是从网络的宽度、网络的深度、以及输入图片的分辨率入手,但是作者通过实验发现,平衡这三个维度对精度和效率的提升至关重要,于是,作者通过一系列的实验中总结出了如何同时平衡这三个维度的放缩,与此同时,基于这种放缩方法,作者在 EfficientNet_B0 的基础上,构建了 EfficientNet 系列中 B1-B7 共 7 个网络,并在同样 FLOPS 与参数量的情况下,精度达到了 state-of-the-art 的效果。
ResNeXt 是 facebook 于 2016 年提出的一种对 ResNet 的改进版网络。在 2019 年facebook 通过弱监督学习研究了该系列网络在 ImageNet 上的精度上限,为了区别之前的 ResNeXt 网络,该系列网络的后缀为 wsl其中 wsl 是弱监督学习weakly-supervised-learning的简称。为了能有更强的特征提取能力研究者将其网络宽度进一步放大其中最大的 ResNeXt101_32x48d_wsl 拥有 8 亿个参数,将其在 9.4 亿的弱标签图片下训练并在 ImageNet-1k 上做 finetune最终在 ImageNet-1k 的 top-1 达到了 85.4%,这也是迄今为止在 ImageNet-1k 的数据集上以 224x224 的分辨率下精度最高的网络。Fix-ResNeXt 中,作者使用了更大的图像分辨率,针对训练图片和验证图片数据预处理不一致的情况下做了专门的 Fix 策略,并使得 ResNeXt101_32x48d_wsl 拥有了更高的精度,由于其用到了 Fix 策略,故命名为 Fix-ResNeXt101_32x48d_wsl。
@ -18,7 +26,8 @@ ResNeXt是facebook于2016年提出的一种对ResNet的改进版网络。在2019
目前 PaddleClas 开源的这两类模型的预训练模型一共有 14 个。从上图中可以看出 EfficientNet 系列网络优势非常明显ResNeXt101_wsl 系列模型由于用到了更多的数据最终的精度也更高。EfficientNet_B0_Small 是去掉了 SE_block 的 EfficientNet_B0其具有更快的推理速度。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -37,8 +46,9 @@ ResNeXt是facebook于2016年提出的一种对ResNet的改进版网络。在2019
| EfficientNetB7 | 0.843 | 0.969 | 0.844 | 0.971 | 72.350 | 64.920 |
| EfficientNetB0_<br>small | 0.758 | 0.926 | | | 0.720 | 4.650 |
<a name='3'></a>
## 基于V100 GPU的预测速度
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
|-------------------------------|-----------|-------------------|--------------------------|
@ -58,8 +68,9 @@ ResNeXt是facebook于2016年提出的一种对ResNet的改进版网络。在2019
| EfficientNetB0_<br>small | 224 | 256 | 1.692 |
<a name='4'></a>
## 基于T4 GPU的预测速度
## 4. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|---------------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,6 +1,15 @@
# HRNet 系列
-----
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 V100 GPU 的预测速度](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
HRNet 是 2019 年由微软亚洲研究院提出的一种全新的神经网络,不同于以往的卷积神经网络,该网络在网络深层仍然可以保持高分辨率,因此预测的关键点热图更准确,在空间上也更精确。此外,该网络在对分辨率敏感的其他视觉任务中,如检测、分割等,表现尤为优异。
该系列模型的 FLOPS、参数量以及 T4 GPU 上的预测耗时如下图所示。
@ -15,8 +24,8 @@ HRNet是2019年由微软亚洲研究院提出的一种全新的神经网络
目前 PaddleClas 开源的这类模型的预训练模型一共有 7 个,其指标如图所示,其中 HRNet_W48_C 指标精度异常的原因可能是因为网络训练的正常波动。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -31,8 +40,8 @@ HRNet是2019年由微软亚洲研究院提出的一种全新的神经网络
| HRNet_W64_C | 0.793 | 0.946 | 0.795 | 0.946 | 57.830 | 128.060 |
| SE_HRNet_W64_C_ssld | 0.847 | 0.973 | | | 57.830 | 128.970 |
## 基于V100 GPU的预测速度
<a name='3'></a>
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
|-------------|-----------|-------------------|--------------------------|
@ -47,8 +56,8 @@ HRNet是2019年由微软亚洲研究院提出的一种全新的神经网络
| HRNet_W64_C | 224 | 256 | 15.003 |
## 基于T4 GPU的预测速度
<a name='4'></a>
## 4. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|-------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,10 +1,18 @@
# HarDNet系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
HarDNetHarmonic DenseNet是 2019 年由国立清华大学提出的一种全新的神经网络,在低 MAC 和内存流量的条件下实现了高效率。与 FC-DenseNet-103DenseNet-264ResNet-50ResNet-152 和 SSD-VGG 相比,新网络的推理时间减少了 35%36%30%32% 和 45%。我们使用了包括 Nvidia Profiler 和 ARM Scale-Sim 在内的工具来测量内存流量,并验证推理延迟确实与内存流量消耗成正比,并且所提议的网络消耗的内存流量很低。[论文地址](https://arxiv.org/abs/1909.00948)。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Model | Params (M) | FLOPs (G) | Top-1 (%) | Top-5 (%) |
|:---------------------:|:----------:|:---------:|:---------:|:---------:|

View File

@ -1,6 +1,15 @@
# Inception 系列
-----
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 V100 GPU 的预测速度](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
GoogLeNet 是 2014 年由 Google 设计的一种新的神经网络结构,其与 VGG 网络并列成为当年 ImageNet 挑战赛的双雄。GoogLeNet 首次引入 Inception 结构,在网络中堆叠该结构使得网络层数达到了 22 层,这也是卷积网络首次超过 20 层的标志。由于在 Inception 结构中使用了 1x1 的卷积用于通道数降维,并且使用了 Global-pooling 代替传统的多 fc 层加工特征的方式,最终的 GoogLeNet 网络的 FLOPS 和参数量远小于 VGG 网络,成为当时神经网络设计的一道亮丽风景线。
@ -24,8 +33,9 @@ InceptionV4是2016年由Google设计的新的神经网络当时残差结构
上图反映了 Xception 系列和 InceptionV4 的精度和其他指标的关系。其中 Xception_deeplab 与论文结构保持一致Xception 是 PaddleClas 的改进模型,在预测速度基本不变的情况下,精度提升约 0.6%。关于该改进模型的详细介绍正在持续更新中,敬请期待。
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -39,8 +49,9 @@ InceptionV4是2016年由Google设计的新的神经网络当时残差结构
| InceptionV4 | 0.808 | 0.953 | 0.800 | 0.950 | 24.570 | 42.680 |
<a name='3'></a>
## 基于V100 GPU的预测速度
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
|------------------------|-----------|-------------------|--------------------------|
@ -53,8 +64,9 @@ InceptionV4是2016年由Google设计的新的神经网络当时残差结构
| InceptionV4 | 299 | 320 | 11.141 |
<a name='4'></a>
## 基于T4 GPU的预测速度
## 4. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|--------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,9 +1,19 @@
# LeViT
## 概述
---
## 目录
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
LeViT 是一种快速推理的、用于图像分类任务的混合神经网络。其设计之初考虑了网络模型在不同的硬件平台上的性能,因此能够更好地反映普遍应用的真实场景。通过大量实验,作者找到了卷积神经网络与 Transformer 体系更好的结合方式,并且提出了 attention-based 方法,用于整合 Transformer 中的位置信息编码。[论文地址](https://arxiv.org/abs/2104.01136)。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(M) | Params<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|

View File

@ -1,6 +1,13 @@
# MixNet系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
MixNet是谷歌出的一篇关于轻量级网络的文章主要工作就在于探索不同大小的卷积核的组合。作者发现目前网络有以下两个问题
@ -9,8 +16,9 @@ MixNet是谷歌出的一篇关于轻量级网络的文章主要工作就在
为了解决上面两个问题,文中提出一种新的混合深度分离卷积(MDConv)(mixed depthwise convolution)将不同的核大小混合在一个卷积运算中并且基于AutoML的搜索空间提出了一系列的网络叫做MixNets在ImageNet上取得了较好的效果。[论文地址](https://arxiv.org/pdf/1907.09595.pdf)
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS和参数量
| Models | Top1 | Top5 | Reference<br>top1| FLOPS<br>(M) | Params<br/>(M) |
|:--:|:--:|:--:|:--:|:--:|----|

View File

@ -1,6 +1,15 @@
# 移动端系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 SD855 的预测速度和存储大小](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
MobileNetV1 是 Google 于 2017 年发布的用于移动设备或嵌入式设备中的网络。该网络将传统的卷积操作替换深度可分离卷积,即 Depthwise 卷积和 Pointwise 卷积的组合相比传统的卷积操作该组合可以大大节省参数量和计算量。与此同时MobileNetV1 也可以用于目标检测、图像分割等其他视觉任务中。
MobileNetV2 是 Google 继 MobileNetV1 提出的一种轻量级网络。相比 MobileNetV1MobileNetV2 提出了 Linear bottlenecks 与 Inverted residual block 作为网络基本结构,通过大量地堆叠这些基本模块,构成了 MobileNetV2 的网络结构。最终,在 FLOPS 只有 MobileNetV1 的一半的情况下取得了更高的分类精度。
@ -22,8 +31,9 @@ GhostNet是华为于2020年提出的一种全新的轻量化网络结构
目前 PaddleClas 开源的的移动端系列的预训练模型一共有 35 个其指标如图所示。从图片可以看出越新的轻量级模型往往有更优的表现MobileNetV3代表了目前主流的轻量级神经网络结构。在 MobileNetV3 中,作者为了获得更高的精度,在 global-avg-pooling 后使用了 1x1 的卷积。该操作大幅提升了参数量但对计算量影响不大所以如果从存储角度评价模型的优异程度MobileNetV3优势不是很大但由于其更小的计算量使得其有更快的推理速度。此外我们模型库中的 ssld 蒸馏模型表现优异,从各个考量角度下,都刷新了当前轻量级模型的精度。由于 MobileNetV3 模型结构复杂,分支较多,对 GPU 并不友好GPU 预测速度不如 MobileNetV1。GhostNet 于 2020 年提出,通过引入 ghost 的网络设计理念,大大降低了计算量和参数量,同时在精度上也超过前期最高的 MobileNetV3 网络结构。
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -65,8 +75,9 @@ GhostNet是华为于2020年提出的一种全新的轻量化网络结构
| GhostNet_x1_3 | 0.757 | 0.925 | 0.757 | 0.927 | 0.440 | 7.300 |
| GhostNet_x1_3_ssld | 0.794 | 0.945 | 0.757 | 0.927 | 0.440 | 7.300 |
<a name='3'></a>
## 基于SD855的预测速度和存储大小
## 3. 基于 SD855 的预测速度和存储大小
| Models | Batch Size=1(ms) | Storage Size(M) |
|:--:|:--:|:--:|
@ -108,8 +119,9 @@ GhostNet是华为于2020年提出的一种全新的轻量化网络结构
| GhostNet_x1_3 | 19.982 | 29.000 |
| GhostNet_x1_3_ssld | 19.982 | 29.000 |
<a name='4'></a>
## 基于T4 GPU的预测速度
## 4. 基于 T4 GPU 的预测速度
| Models | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|-----------------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|

View File

@ -1,6 +1,15 @@
# 其他模型
-----
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 V100 GPU 的预测速度](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
2012 年Alex 等人提出的 AlexNet 网络在 ImageNet 大赛上以远超第二名的成绩夺冠卷积神经网络乃至深度学习引起了广泛的关注。AlexNet 使用 relu 作为 CNN 的激活函数,解决了 sigmoid 在网络较深时的梯度弥散问题。训练时使用 Dropout 随机丢掉一部分神经元,避免了模型过拟合。网络中使用重叠的最大池化代替了此前 CNN 中普遍使用的平均池化避免了平均池化的模糊效果提升了特征的丰富性。从某种意义上说AlexNet 引爆了神经网络的研究与应用热潮。
SqueezeNet 在 ImageNet-1k 上实现了与 AlexNet 相同的精度,但只用了 1/50 的参数量。该网络的核心是 Fire 模块Fire 模块通过使用 1x1 的卷积实现通道降维,从而大大节省了参数量。作者通过大量堆叠 Fire 模块组成了 SqueezeNet。
@ -9,8 +18,8 @@ VGG由牛津大学计算机视觉组和DeepMind公司研究员一起研发的卷
DarkNet53 是 YOLO 作者在论文设计的用于目标检测的 backbone该网络基本由 1x1 与 3x3 卷积构成,共 53 层,取名为 DarkNet53。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -24,8 +33,8 @@ DarkNet53是YOLO作者在论文设计的用于目标检测的backbone该网
| DarkNet53 | 0.780 | 0.941 | 0.772 | 0.938 | 18.580 | 41.600 |
## 基于V100 GPU的预测速度
<a name='3'></a>
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
@ -40,7 +49,7 @@ DarkNet53是YOLO作者在论文设计的用于目标检测的backbone该网
| DarkNet53 | 256 | 256 | 3.139 |
<a name='4'></a>
## 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |

View File

@ -3,33 +3,33 @@
## 目录
- [摘要](#1)
- [介绍](#2)
- [方法](#3)
- [1. 摘要](#1)
- [2. 介绍](#2)
- [3. 方法](#3)
- [3.1 更好的激活函数](#3.1)
- [3.2 合适的位置添加 SE 模块](#3.2)
- [3.3 合适的位置添加更大的卷积核](#3.3)
- [3.4 GAP 后使用更大的 1x1 卷积层](#3.4)
- [实验部分](#4)
- [4. 实验部分](#4)
- [图像分类](#4.1)
- [目标检测](#4.2)
- [语义分割](#4.3)
- [总结](#5)
- [引用](#6)
- [5. 总结](#5)
- [6. 引用](#6)
<a name="1"></a>
## 一、摘要
## 1. 摘要
在计算机视觉领域中,骨干网络的好坏直接影响到整个视觉任务的结果。在之前的一些工作中,相关的研究者普遍将 FLOPs 或者 Params 作为优化目的,但是在工业界真实落地的场景中,推理速度才是考量模型好坏的重要指标,然而,推理速度和准确性很难兼得。考虑到工业界有很多基于 Intel CPU 的应用,所以我们本次的工作旨在使骨干网络更好的适应 Intel CPU从而得到一个速度更快、准确率更高的轻量级骨干网络与此同时目标检测、语义分割等下游视觉任务的性能也同样得到提升。
<a name="2"></a>
## 二、介绍
## 2. 介绍
近年来,有很多轻量级的骨干网络问世,尤其最近两年,各种 NAS 搜索出的网络层出不穷,这些网络要么主打 FLOPs 或者 Params 上的优势,要么主打 ARM 设备上的推理速度的优势,很少有网络专门针对 Intel CPU 做特定的优化,导致这些网络在 Intel CPU 端的推理速度并不是很完美。基于此,我们针对 Intel CPU 设备以及其加速库 MKLDNN 设计了特定的骨干网络 PP-LCNet比起其他的轻量级的 SOTA 模型,该骨干网络可以在不增加推理时间的情况下,进一步提升模型的性能,最终大幅度超越现有的 SOTA 模型。与其他模型的对比图如下。
<div align=center><img src="../../images/PP-LCNet/PP-LCNet-Acc.png" width="500" height="400"/></div>
<a name="3"></a>
## 三、方法
## 3. 方法
网络结构整体如下图所示。
<div align=center><img src="../../images/PP-LCNet/PP-LCNet.png" width="700" height="400"/></div>
@ -86,7 +86,7 @@ BaseNet经过以上四个方面的改进得到了PP-LCNet。下表进一步
| <b>1<b> | <b>1<b> | <b>1<b> | <b>1<b> | <b>63.14<b> | <b>2.05<b> |
<a name="4"></a>
## 四、实验部分
## 4. 实验部分
<a name="4.1"></a>
### 4.1 图像分类
@ -151,12 +151,12 @@ MobileNetV3-large-0.75x | 64.53 | 151 |
<b>PP-LCNet-1x<b> | <b>66.03<b> | <b>96<b> |
<a name="5"></a>
## 五、总结
## 5. 总结
PP-LCNet 没有像学术界那样死扣极致的 FLOPs 与 Params而是着眼于分析如何添加对 Intel CPU 友好的模块来提升模型的性能,这样可以更好的平衡准确率和推理时间,其中的实验结论也很适合其他网络结构设计的研究者,同时也为 NAS 搜索研究者提供了更小的搜索空间和一般结论。最终的 PP-LCNet 在产业界也可以更好的落地和应用。
<a name="6"></a>
## 六、引用
## 6. 引用
如果你的论文用到了 PP-LCNet 的方法,请添加如下 cite
```

View File

@ -1,11 +1,20 @@
# ReXNet系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
ReXNet 是 NAVER 集团 ClovaAI 研发中心基于一种网络架构设计新范式而构建的网络。针对现有网络中存在的`Representational Bottleneck`问题,作者提出了一组新的设计原则。作者认为传统的网络架构设计范式会产生表达瓶颈,进而影响模型的性能。为研究此问题,作者研究了上万个随机网络生成特征的 `matric rank`,同时进一步研究了网络层中通道配置方案。基于此,作者提出了一组简单而有效的设计原则,以消除表达瓶颈问题。[论文地址](https://arxiv.org/pdf/2007.00992.pdf)
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1| FLOPS<br/>(G) | Params<br/>(M) |
|:--:|:--:|:--:|:--:|:--:|----|

View File

@ -1,11 +1,17 @@
# RedNet系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
在 ResNet 的 Backbone 和 Backbone 的所有 Bottleneck 位置上使用 Involution 替换掉了卷积,但保留了所有的卷积用于通道映射和融合。这些精心重新设计的实体联合起来,形成了一种新的高效 Backbone 网络,称为 RedNet。[论文地址](https://arxiv.org/abs/2103.06255)。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Model | Params (M) | FLOPs (G) | Top-1 (%) | Top-5 (%) |
|:---------------------:|:----------:|:---------:|:---------:|:---------:|

View File

@ -1,11 +1,17 @@
# RepVGG 系列
---
## 目录
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 概述
RepVGGMaking VGG-style ConvNets Great Again系列模型是由清华大学(丁贵广团队)、旷视科技(孙剑等人)、港科大和阿伯里斯特威斯大学在2021年提出的一个简单但强大的卷积神经网络架构该架构具有类似于VGG的推理时间主体该主体仅由3x3卷积和ReLU的堆栈组成而训练时间模型具有多分支拓扑。训练时间和推理时间架构的这种解耦是通过结构重新参数化(re-parameterization)技术实现的因此该模型称为RepVGG。[论文地址](https://arxiv.org/abs/2101.03697)。
RepVGG(Making VGG-style ConvNets Great Again)系列模型是由清华大学(丁贵广团队)、旷视科技(孙剑等人)、港科大和阿伯里斯特威斯大学在2021 年提出的一个简单但强大的卷积神经网络架构,该架构具有类似于 VGG 的推理时间主体,该主体仅由 3x3 卷积和ReLU 的堆栈组成,而训练时间模型具有多分支拓扑。训练时间和推理时间架构的这种解耦是通过结构重新参数化(re-parameterization)技术实现的因此该模型称为RepVGG。[论文地址](https://arxiv.org/abs/2101.03697)。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1| FLOPS<br>(G) |
|:--:|:--:|:--:|:--:|:--:|

View File

@ -1,13 +1,22 @@
# ResNeSt 与 RegNet 系列
----
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 T4 GPU 的预测速度](#3)
<a name='1'></a>
## 1. 概述
ResNeSt 系列模型是在 2020 年提出的,在原有的 resnet 网络结构上做了改进,通过引入 K 个 Group 和在不同 Group 中加入类似于 SEBlock 的 attention 模块,使得精度相比于基础模型 ResNet 有了大幅度的提高,且参数量和 flops 与基础的 ResNet 基本保持一致。
RegNet 是由 facebook 于 2020 年提出,旨在深化设计空间理念的概念,在 AnyNetX 的基础上逐步改进,通过加入共享瓶颈 ratio、共享组宽度、调整网络深度与宽度等策略最终实现简化设计空间结构、提高设计空间的可解释性、改善设计空间的质量并保持设计空间的模型多样性的目的。最终设计出的模型在类似的条件下性能还要优于 EfficientNet并且在 GPU 上的速度提高了 5 倍。
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -15,8 +24,9 @@ RegNet是由facebook于2020年提出旨在深化设计空间理念的概念
| ResNeSt50 | 0.8083 | 0.9542| 0.8113 | -| 10.78 | 27.5 |
| RegNetX_4GF | 0.7850 | 0.9416| 0.7860 | -| 8.0 | 22.1 |
<a name='3'></a>
## 基于T4 GPU的预测速度
## 3. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|--------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,6 +1,15 @@
# ResNet 及其 Vd 系列
-----
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 V100 GPU 的预测速度](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
ResNet 系列模型是在 2015 年提出的,一举在 ILSVRC2015 比赛中取得冠军top5 错误率为 3.57%。该网络创新性的提出了残差结构,通过堆叠多个残差结构从而构建了 ResNet 网络。实验表明使用残差块可以有效地提升收敛速度和精度。
@ -23,8 +32,8 @@ ResNet系列模型是在2015年提出的一举在ILSVRC2015比赛中取得冠
通过上述曲线可以看出层数越多准确率越高但是相应的参数量、计算量和延时都会增加。ResNet50_vd_ssld 通过用更强的 teacher 和更多的数据,将其在 ImageNet-1k 上的验证集 top-1 精度进一步提高,达到了 82.39%,刷新了 ResNet50 系列模型的精度。
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -50,8 +59,9 @@ ResNet系列模型是在2015年提出的一举在ILSVRC2015比赛中取得冠
* 注:`ResNet50_vd_ssld_v2`是在`ResNet50_vd_ssld`训练策略的基础上加上 AutoAugment 训练得到,`Fix_ResNet50_vd_ssld_v2`是固定`ResNet50_vd_ssld_v2`除 FC 层外所有的网络参数,在 320x320 的图像输入分辨率下,基于 ImageNet1k 数据集微调得到。
<a name='3'></a>
## 基于V100 GPU的预测速度
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
|------------------|-----------|-------------------|--------------------------|
@ -72,8 +82,9 @@ ResNet系列模型是在2015年提出的一举在ILSVRC2015比赛中取得冠
| ResNet50_vd_ssld | 224 | 256 | 3.165 |
| ResNet101_vd_ssld | 224 | 256 | 5.252 |
<a name='4'></a>
## 基于T4 GPU的预测速度
## 4. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|-------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,6 +1,16 @@
# SEResNeXt 与 Res2Net 系列
## 概述
-----
## 目录
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
* [3. 基于 V100 GPU 的预测速度](#3)
* [4. 基于 T4 GPU 的预测速度](#4)
<a name='1'></a>
## 1. 概述
ResNeXt 是 ResNet 的典型变种网络之一ResNeXt 发表于 2017 年的 CVPR 会议。在此之前提升模型精度的方法主要集中在将网络变深或者变宽这样增加了参数量和计算量推理速度也会相应变慢。ResNeXt 结构提出了通道分组cardinality的概念作者通过实验发现增加通道的组数比增加深度和宽度更有效。其可以在不增加参数复杂度的前提下提高准确率同时还减少了参数的数量所以是比较成功的 ResNet 的变种。
SENet 是 2017 年 ImageNet 分类比赛的冠军方案,其提出了一个全新的 SE 结构,该结构可以迁移到任何其他网络中,其通过控制 scale 的大小,把每个通道间重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。
@ -22,8 +32,9 @@ Res2Net是2019年提出的一种全新的对ResNet的改进方案该方案可
目前 PaddleClas 开源的这三类的预训练模型一共有 24 个,其指标如图所示,从图中可以看出,在同样 Flops 和 Params 下,改进版的模型往往有更高的精度,但是推理速度往往不如 ResNet 系列。另一方面Res2Net 表现也较为优秀,相比 ResNeXt 中的 group 操作、SEResNet 中的 SE 结构操作Res2Net 在相同 Flops、Params 和推理速度下往往精度更佳。
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
@ -56,8 +67,9 @@ Res2Net是2019年提出的一种全新的对ResNet的改进方案该方案可
| SENet154_vd | 0.814 | 0.955 | | | 45.830 | 114.290 |
<a name='3'></a>
## 基于V100 GPU的预测速度
## 3. 基于 V100 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) |
|-----------------------|-----------|-------------------|--------------------------|
@ -87,7 +99,9 @@ Res2Net是2019年提出的一种全新的对ResNet的改进方案该方案可
| SENet154_vd | 224 | 256 | 50.406 |
## 基于T4 GPU的预测速度
<a name='4'></a>
## 4. 基于 T4 GPU 的预测速度
| Models | Crop Size | Resize Short Size | FP16<br>Batch Size=1<br>(ms) | FP16<br>Batch Size=4<br>(ms) | FP16<br>Batch Size=8<br>(ms) | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|-----------------------|-----------|-------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|------------------------------|

View File

@ -1,10 +1,18 @@
# SwinTransformer
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
Swin Transformer 是一种新的视觉 Transformer 网络可以用作计算机视觉领域的通用骨干网路。SwinTransformer 由移动窗口shifted windows表示的层次 Transformer 结构组成。移动窗口将自注意计算限制在非重叠的局部窗口上,同时允许跨窗口连接,从而提高了网络性能。[论文地址](https://arxiv.org/abs/2103.14030)。
<a name='2'></a>
## 精度、FLOPS和参数量
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Params<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|

View File

@ -1,11 +1,19 @@
# TNT 系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
TNTTransformer-iN-Transformer系列模型由华为诺亚于2021年提出用于对 patch 级别和 pixel 级别的表示进行建模。在每个 TNT 块中outer transformer block 用于处理 patch 嵌入inner transformer block 从 pixel 嵌入中提取局部特征。通过线性变换层将 pixel 级特征投影到 patch 嵌入空间,然后加入到 patch 中。通过对 TNT 块的叠加,建立了用于图像识别的 TNT 模型。在ImageNet 基准测试和下游任务上的实验证明了该 TNT 体系结构的优越性和有效性。例如,在计算量相当的情况下 TNT 能在 ImageNet 上达到 81.3% 的 top-1 精度,比 DeiT 高 1.5%。[论文地址](https://arxiv.org/abs/2103.00112)。
<a name='1'></a>
## 1. 概述
## 精度、FLOPS和参数量
TNT(Transformer-iN-Transformer)系列模型由华为诺亚于 2021 年提出,用于对 patch 级别和 pixel 级别的表示进行建模。在每个 TNT 块中outer transformer block 用于处理 patch 嵌入inner transformer block 从 pixel 嵌入中提取局部特征。通过线性变换层将 pixel 级特征投影到 patch 嵌入空间,然后加入到 patch 中。通过对 TNT 块的叠加,建立了用于图像识别的 TNT 模型。在 ImageNet 基准测试和下游任务上的实验证明了该 TNT 体系结构的优越性和有效性。例如,在计算量相当的情况下 TNT 能在 ImageNet 上达到 81.3% 的 top-1 精度,比 DeiT 高 1.5%。[论文地址](https://arxiv.org/abs/2103.00112)。
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Model | Params (M) | FLOPs (G) | Top-1 (%) | Top-5 (%) |
|:---------------------:|:----------:|:---------:|:---------:|:---------:|

View File

@ -1,27 +1,56 @@
# 训练技巧
---
## 目录
* [1.优化器的选择](#1)
* [2.学习率以及学习率下降策略的选择](#2)
* [2.1 学习率的概念](#2.1)
* [2.2 学习率下降策略](#2.2)
* [2.3 warmup 策略](#2.3)
* [3.batch_size 的选择](#3)
* [4.weight_decay 的选择](#4)
* [5.label_smoothing 的选择](#5)
* [6.针对小模型更改图片的 crop 面积与拉伸变换程度](#6)
* [7.使用数据增广方式提升精度](#7)
* [8. 通过 train_acc 和 test_acc 确定调优策略](#8)
* [9.通过已有的预训练模型提升自己的数据集的精度](#9)
* [10. 参考文献](#10)
<a name='1'></a>
## 1.优化器的选择
自深度学习发展以来,就有很多关于优化器的研究者工作,优化器的目的是为了让损失函数尽可能的小,从而找到合适的参数来完成某项任务。目前业界主要用到的优化器 有 SGD、RMSProp、Adam、AdaDelt 等,其中由于带 momentum 的 SGD 优化器广泛应用于学术界和工业界,所以我们发布的模型也大都使用该优化器来实现损失函数的梯度下降。带 momentum 的 SGD 优化器有两个劣势,其一是收敛速度慢,其二是初始学习率的设置需要依靠大量的经验,然而如果初始学习率设置得当并且迭代轮数充足,该优化器也会在众多的优化器中脱颖而出,使得其在验证集上获得更高的准确率。一些自适应学习率的优化器如 Adam、RMSProp 等,收敛速度往往比较快,但是最终的收敛精度会稍差一些。如果追求更快的收敛速度,我们推荐使用这些自适应学习率的优化器,如果追求更高的收敛精度,我们推荐使用带 momentum 的 SGD 优化器。
<a name='2'></a>
## 2.学习率以及学习率下降策略的选择
学习率的选择往往和优化器以及数据和任务有关系。这里主要介绍以 momentum+SGD 作为优化器训练 ImageNet-1k 的学习率以及学习率下降的选择。
### 学习率的概念:
<a name='2.1'></a>
### 2.1 学习率的概念:
学习率是通过损失函数的梯度调整网络权重的超参数的速度。学习率越低,损失函数的变化速度就越慢。虽然使用低学习率可以确保不会错过任何局部极小值,但也意味着将花费更长的时间来进行收敛,特别是在被困在高原区域的情况下。
### 学习率下降策略:
<a name='2.2'></a>
### 2.2 学习率下降策略:
在整个训练过程中,我们不能使用同样的学习率来更新权重,否则无法到达最优点,所以需要在训练过程中调整学习率的大小。在训练初始阶段,由于权重处于随机初始化的状态,损失函数相对容易进行梯度下降,所以可以设置一个较大的学习率。在训练后期,由于权重参数已经接近最优值,较大的学习率无法进一步寻找最优值,所以需要设置一个较小的学习率。在训练整个过程中,很多研究者使用的学习率下降方式是 piecewise_decay即阶梯式下降学习率如在 ResNet50 标准的训练中,我们设置的初始学习率是 0.1,每 30 epoch 学习率下降到原来的 1/10一共迭代 120 epoch。除了 piecewise_decay很多研究者也提出了学习率的其他下降方式如 polynomial_decay多项式下降、exponential_decay指数下降,cosine_decay余弦下降其中 cosine_decay 无需调整超参数鲁棒性也比较高所以成为现在提高模型精度首选的学习率下降方式。Cosine_decay 和 piecewise_decay 的学习率变化曲线如下图所示容易观察到在整个训练过程中cosine_decay 都保持着较大的学习率,所以其收敛较为缓慢,但是最终的收敛效果较 peicewise_decay 更好一些。
![](../../images/models/lr_decay.jpeg)
另外从图中我们也可以看到cosine_decay 里学习率小的轮数较少,这样会影响到最终的精度,所以为了使得 cosine_decay 发挥更好的效果,建议迭代更多的轮数,如 200 轮。
### warmup策略
<a name='2.3'></a>
### 2.3 warmup 策略
如果使用较大的 batch_size 训练神经网络时,我们建议您使用 warmup 策略。Warmup 策略顾名思义就是让学习率先预热一下,在训练初期我们不直接使用最大的学习率,而是用一个逐渐增大的学习率去训练网络,当学习率增大到最高点时,再使用学习率下降策略中提到的学习率下降方式衰减学习率的值。实验表明,在 batch_size 较大时warmup 可以稳定提升模型的精度。在训练 MobileNetV3 等 batch_size 较大的实验中,我们默认将 warmup 中的 epoch 设置为 5即先用 5 epoch 将学习率从 0 增加到最大值,再去做相应的学习率衰减。
<a name='3'></a>
## 3.batch_size 的选择
batch_size 是训练神经网络中的一个重要的超参数,该值决定了一次将多少数据送入神经网络参与训练。在论文[1]中,作者通过实验发现,当 batch_size 的值与学习率的值呈线性关系时,收敛精度几乎不受影响。在训练 ImageNet 数据时,大部分的神经网络选择的初始学习率为 0.1batch_size 是 256所以根据实际的模型大小和显存情况可以将学习率设置为 0.1\*k,batch_size 设置为 256\*k。
<a name='4'></a>
## 4.weight_decay 的选择
过拟合是机器学习中常见的一个名词简单理解即为模型在训练数据上表现很好但在测试数据上表现较差在卷积神经网络中同样存在过拟合的问题为了避免过拟合很多正则方式被提出其中weight_decay 是其中一个广泛使用的避免过拟合的方式。Weight_decay 等价于在最终的损失函数后添加 L2 正则化L2 正则化使得网络的权重倾向于选择更小的值,最终整个网络中的参数值更趋向于 0模型的泛化性能相应提高。在各大深度学习框架的实现中该值表达的含义是 L2 正则前的系数,在 paddle 框架中,该值的名称是 l2_decay所以以下都称其为 l2_decay。该系数越大表示加入的正则越强模型越趋于欠拟合状态。在训练 ImageNet 的任务中,大多数的网络将该参数值设置为 1e-4在一些小的网络如 MobileNet 系列网络中,为了避免网络欠拟合,该值设置为 1e-5~4e-5 之间。当然,该值的设置也和具体的数据集有关系,当任务的数据集较大时,网络本身趋向于欠拟合状态,可以将该值适当减小,当任务的数据集较小时,网络本身趋向于过拟合状态,可以将该值适当增大。下表展示了 MobileNetV1_x0_25 在 ImageNet-1k 上使用不同 l2_decay 的精度情况。由于 MobileNetV1_x0_25 是一个比较小的网络,所以 l2_decay 过大会使网络趋向于欠拟合状态,所以在该网络中,相对 1e-43e-5 是更好的选择。
@ -39,6 +68,8 @@ batch_size是训练神经网络中的一个重要的超参数该值决定了
综上所述l2_decay 可以根据具体的任务和模型去做相应的调整,通常简单的任务或者较大的模型,推荐使用较大的 l2_decay,复杂的任务或者较小的模型,推荐使用较小的 l2_decay。
<a name='5'></a>
## 5.label_smoothing 的选择
Label_smoothing 是深度学习中的一种正则化方法,其全称是 Label Smoothing Regularization(LSR),即标签平滑正则化。在传统的分类任务计算损失函数时,是将真实的 one hot 标签与神经网络的输出做相应的交叉熵计算,而 label_smoothing 是将真实的 one hot 标签做一个标签平滑的处理,使得网络学习的标签不再是一个 hard label而是一个有概率值的 soft label其中在类别对应的位置的概率最大其他位置概率是一个非常小的数。具体的计算方式参见论文[2]。在 label_smoothing 里,有一个 epsilon 的参数值,该值描述了将标签软化的程度,该值越大,经过 label smoothing 后的标签向量的标签概率值越小,标签越平滑,反之,标签越趋向于 hard label在训练 ImageNet-1k 的实验里通常将该值设置为 0.1。
在训练 ImageNet-1k 的实验中我们发现ResNet50 大小级别及其以上的模型在使用 label_smooting 后,精度有稳定的提升。下表展示了 ResNet50_vd 在使用 label_smoothing 前后的精度指标。
@ -58,6 +89,8 @@ Label_smoothing是深度学习中的一种正则化方法其全称是 Label S
综上所述,较大的模型使用 label_smoohing 可以有效提升模型的精度,较小的模型使用 label_smoohing 可能会降低模型的精度,所以在决定是否使用 label_smoohing 前,需要评估模型的大小和任务的难易程度。
<a name='6'></a>
## 6.针对小模型更改图片的 crop 面积与拉伸变换程度
在 ImageNet-1k 数据的标准预处理中random_crop 函数中定义了 scale 和 ratio 两个值,两个值分别确定了图片 crop 的大小和图片的拉伸程度,其中 scale 的默认取值范围是 0.08-1(lower_scale-upper_scale),ratio 的默认取值范围是 3/4-4/3(lower_ratio-upper_ratio)。在非常小的网络训练中,此类数据增强会使得网络欠拟合,导致精度有所下降。为了提升网络的精度,可以使其数据增强变的更弱,即增大图片的 crop 区域或者减弱图片的拉伸变换程度。我们可以分别通过增大 lower_scale 的值或缩小 lower_ratio 与 upper_scale 的差距来实现更弱的图片变换。下表列出了使用不同 lower_scale 训练 MobileNetV2_x0_25 的精度,可以看到,增大图片的 crop 区域面积后训练精度和验证精度均有提升。
@ -66,6 +99,8 @@ Label_smoothing是深度学习中的一种正则化方法其全称是 Label S
| MobileNetV2_x0_25 | [0.08,1] | 50.36%/72.98% | 52.35%/75.65% |
| MobileNetV2_x0_25 | [0.2,1] | 54.39%/77.08% | 53.18%/76.14% |
<a name='7'></a>
## 7.使用数据增广方式提升精度
一般来说,数据集的规模对性能影响至关重要,但是图片的标注往往比较昂贵,所以有标注的图片数量往往比较稀少,在这种情况下,数据的增广尤为重要。在训练 ImageNet-1k 的标准数据增广中,主要使用了 random_crop 与 random_flip 两种数据增广方式,然而,近些年,越来越多的数据增广方式被提出,如 cutout、mixup、cutmix、AutoAugment 等。实验表明,这些数据的增广方式可以有效提升模型的精度,下表列出了 ResNet50 在 8 种不同的数据增广方式的表现,可以看出,相比 baseline所有的数据增广方式均有收益其中 cutmix 是目前最有效的数据增广。更多数据增广的介绍请参考[**数据增广章节**](https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/ImageAugment.html)。
@ -81,16 +116,22 @@ Label_smoothing是深度学习中的一种正则化方法其全称是 Label S
| ResNet50 | Random-Erasing | 77.91% |
| ResNet50 | Hide-and-Seek | 77.43% |
<a name='8'></a>
## 8. 通过 train_acc 和 test_acc 确定调优策略
在训练网络的过程中,通常会打印每一个 epoch 的训练集准确率和验证集准确率,二者刻画了该模型在两个数据集上的表现。通常来说,训练集的准确率比验证集准确率微高或者二者相当是比较不错的状态。如果发现训练集的准确率比验证集高很多,说明在这个任务上已经过拟合,需要在训练过程中加入更多的正则,如增大 l2_decay 的值,加入更多的数据增广策略,加入 label_smoothing 策略等;如果发现训练集的准确率比验证集低一些,说明在这个任务上可能欠拟合,需要在训练过程中减弱正则效果,如减小 l2_decay 的值,减少数据增广方式,增大图片 crop 区域面积,减弱图片拉伸变换,去除 label_smoothing 等。
<a name='9'></a>
## 9.通过已有的预训练模型提升自己的数据集的精度
在现阶段计算机视觉领域中,加载预训练模型来训练自己的任务已成为普遍的做法,相比从随机初始化开始训练,加载预训练模型往往可以提升特定任务的精度。一般来说,业界广泛使用的预训练模型是通过训练 128 万张图片 1000 类的 ImageNet-1k 数据集得到的,该预训练模型的 fc 层权重是是一个 k\*1000 的矩阵,其中 k 是 fc 层以前的神经元数,在加载预训练权重时,无需加载 fc 层的权重。在学习率方面,如果您的任务训练的数据集特别小(如小于 1 千张),我们建议你使用较小的初始学习率,如 0.001batch_size:256,下同),以免较大的学习率破坏预训练权重。如果您的训练数据集规模相对较大(大于 10 万),我们建议你尝试更大的初始学习率,如 0.01 或者更大。
> 如果您觉得此文档对您有帮助,欢迎 star 我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas)
## 参考文献
<a name='10'></a>
## 10. 参考文献
[1]P. Goyal, P. Dolla ́r, R. B. Girshick, P. Noordhuis, L. Wesolowski, A. Kyrola, A. Tulloch, Y. Jia, and K. He. Accurate, large minibatch SGD: training imagenet in 1 hour. CoRR, abs/1706.02677, 2017.
[2]C.Szegedy,V.Vanhoucke,S.Ioffe,J.Shlens,andZ.Wojna. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015.

View File

@ -1,9 +1,18 @@
# Twins
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
Twins 网络包括 Twins-PCPVT 和 Twins-SVT其重点对空间注意力机制进行了精心设计得到了简单却更为有效的方案。由于该体系结构仅涉及矩阵乘法而目前的深度学习框架中对矩阵乘法有较高的优化程度因此该体系结构十分高效且易于实现。并且该体系结构在图像分类、目标检测和语义分割等多种下游视觉任务中都能够取得优异的性能。[论文地址](https://arxiv.org/abs/2104.13840)。
## 精度、FLOPs和参数量
<a name='2'></a>
## 2. 精度、FLOPs 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPs<br>(G) | Params<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|

View File

@ -1,6 +1,13 @@
# ViT 与 DeiT 系列
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 精度、FLOPS 和参数量](#2)
<a name='1'></a>
## 1. 概述
ViTVision Transformer系列模型是 Google 在 2020 年提出的,该模型仅使用标准的 Transformer 结构,完全抛弃了卷积结构,将图像拆分为多个 patch 后再输入到 Transformer 中,展示了 Transformer 在 CV 领域的潜力。[论文地址](https://arxiv.org/abs/2010.11929)。
@ -8,8 +15,8 @@ DeiTData-efficient Image Transformers系列模型是由FaceBook在2020年
## 精度、FLOPS和参数量
<a name='2'></a>
## 2. 精度、FLOPS 和参数量
| Models | Top1 | Top5 | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Params<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|

View File

@ -1,10 +1,21 @@
# 模型库概览
---
## 目录
## 概述
* [1. 概述](#1)
* [2. 评估环境](#2)
* [3. 预训练模型列表及下载地址](#3)
* [4. 参考文献](#4)
<a name='1'></a>
## 1. 概述
基于 ImageNet1k 分类数据集PaddleClas 支持的 36 种系列分类网络结构以及对应的 175 个图像分类预训练模型如下所示,训练技巧、每个系列网络结构的简单介绍和性能评估将在相应章节展现。
## 评估环境
<a name='2'></a>
## 2. 评估环境
* CPU 的评估环境基于骁龙 855SD855
* Intel CPU 的评估环境基于 Intel(R) Xeon(R) Gold 6148。
* GPU 评估环境基于 V100 和 TensorRT。
@ -19,8 +30,9 @@
> 如果您觉得此文档对您有帮助,欢迎 star 我们的项目:[https://github.com/PaddlePaddle/PaddleClas](https://github.com/PaddlePaddle/PaddleClas)
<a name='3'></a>
## 预训练模型列表及下载地址
## 3. 预训练模型列表及下载地址
- ResNet 及其 Vd 系列
- ResNet 系列<sup>[[1](#ref1)]</sup>([论文地址](http://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html))
@ -309,7 +321,9 @@
**注意**:以上模型中 EfficientNetB1-B7 的预训练模型转自[pytorch版 EfficientNet](https://github.com/lukemelas/EfficientNet-PyTorch)ResNeXt101_wsl 系列预训练模型转自[官方 repo](https://github.com/facebookresearch/WSL-Images),剩余预训练模型均基于飞桨训练得到的,并在 configs 里给出了相应的训练超参数。
## 参考文献
<a name='4'></a>
## 4. 参考文献
<a name="ref1">[1]</a> He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

View File

@ -17,7 +17,7 @@
- [2.1 数据及其预处理](#2.1)
- [2.2 模型准备](#2.2)
- [2.3 模型训练](#2.3)
- [2.3 模型评估](#2.4)
- [2.4 模型评估](#2.4)
- [3. 使用方法介绍](#3)
- [3.1 基于 CPU /单卡 GPU 上的训练与评估](#3.1)
- [3.1.1 模型训练](#3.1.1)

View File

@ -19,8 +19,8 @@
- [1.4 优化器(Optimizer)](#1.4)
- [1.5 数据读取模块(DataLoader)](#1.5)
- [1.5.1 dataset](#1.5.1)
- [1.5.1 sampler](#1.5.2)
- [1.5.1 loader](#1.5.3)
- [1.5.2 sampler](#1.5.2)
- [1.5.3 loader](#1.5.3)
- [1.6 评估指标(Metric)](#1.6)
- [2. 蒸馏模型](#2)
- [2.1 结构(Arch)](#2.1)

View File

@ -1,12 +1,24 @@
# 使用 VisualDL 可视化训练过程
--------
## 目录
* [1. 前言](#1)
* [2. 在 PaddleClas 中使用 VisualDL](#2)
* [2.1 设置 config 文件并启动训练](#2.1)
* [2.2 启动 VisualDL](#2.2)
## 前言
<a name='1'></a>
## 1. 前言
VisualDL 是飞桨可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布等。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。更多细节请查看[VisualDL](https://github.com/PaddlePaddle/VisualDL/)。
## 在PaddleClas中使用VisualDL
<a name='2'></a>
## 2. 在 PaddleClas 中使用 VisualDL
现在 PaddleClas 支持在训练阶段使用 VisualDL 查看训练过程中学习率learning rate、损失值loss以及准确率accuracy的变化情况。
### 设置config文件并启动训练
<a name='2.1'></a>
### 2.1 设置 config 文件并启动训练
在 PaddleClas 中使用 VisualDL只需在训练配置文件config 文件)中设置字段 `Global.use_visualdl``True`
```yaml
@ -22,8 +34,9 @@ PaddleClas 会将 VisualDL 的日志保存在 `Global.output_dir` 字段指定
```shell
python3 tools/train.py -c config.yaml
```
<a name='2.2'></a>
### 启动VisualDL
### 2.2 启动 VisualDL
在启动训练程序后,可以在新的终端 session 中启动 VisualDL 服务:
```shell

View File

@ -1,10 +1,21 @@
# 特征图可视化指南
-----
## 目录
## 一、概述
* [1. 概述](#1)
* [2. 准备工作](#2)
* [3. 修改模型](#3)
* [4. 结果](#4)
<a name='1'></a>
## 1. 概述
特征图是输入图片在卷积网络中的特征表达,对特征图的研究可以有利于我们对于模型的理解与设计,所以基于动态图我们使用本工具来可视化特征图。
## 二、准备工作
<a name='2'></a>
## 2. 准备工作
首先需要选定研究的模型,本文设定 ResNet50 作为研究模型,将模型组网代码[resnet.py](../../../ppcls/arch/backbone/legendary_models/resnet.py)拷贝到[目录](../../../ppcls/utils/feature_maps_visualization/)下,并下载[ResNet50 预训练模型](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_pretrained.pdparams),或使用以下命令下载。
@ -14,7 +25,9 @@ wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_pretrain
其他模型网络结构代码及预训练模型请自行下载:[模型库](../../../ppcls/arch/backbone/)[预训练模型](../models/models_intro.md)。
## 三、修改模型
<a name='3'></a>
## 3. 修改模型
找到我们所需要的特征图位置,设置 self.fm 将其 fetch 出来,本文以 resnet50 中的 stem 层之后的特征图为例。
@ -63,7 +76,9 @@ python tools/feature_maps_visualization/fm_vis.py \
+ `--save_path`:保存路径,如:`./tools/`
+ `--use_gpu`:是否使用 GPU 预测默认值True
## 四、结果
<a name='4'></a>
## 4. 结果
* 输入图片:

View File

@ -1,13 +1,27 @@
# Paddle-Lite
---
## 目录
## 一、简介
* [1. 简介](#1)
* [2. 评估步骤](#2)
* [2.1 导出 inference 模型](#2.1)
* [2.2 benchmark 二进制文件下载](#2.2)
* [2.3 模型速度 benchmark](#2.3)
* [2.4 模型优化与速度评估](#2.4)
<a name='1'></a>
## 1. 简介
[Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite) 是飞桨推出的一套功能完善、易用性强且性能卓越的轻量化推理引擎。
轻量化体现在使用较少比特数用于表示神经网络的权重和激活,能够大大降低模型的体积,解决终端设备存储空间有限的问题,推理性能也整体优于其他框架。
[PaddleClas](https://github.com/PaddlePaddle/PaddleClas) 使用 Paddle-Lite 进行了[移动端模型的性能评估](../models/Mobile.md),本部分以`ImageNet1k`数据集的`MobileNetV1`模型为例,介绍怎样使用`Paddle-Lite`,在移动端(基于骁龙855 的安卓开发平台)对进行模型速度评估。
<a name='2'></a>
## 二、评估步骤
## 2. 评估步骤
<a name='2.1'></a>
### 2.1 导出 inference 模型
@ -22,6 +36,7 @@ python tools/export_model.py \
在上述命令中,通过参数 `Arch.pretrained` 指定训练过程中保存的模型参数文件,也可以指定参数 `Arch.pretrained=True` 加载 PaddleClas 提供的基于 ImageNet1k 的预训练模型参数,最终在 `inference/MobileNetV1` 文件夹下会保存得到 `inference.pdmodel``inference.pdiparmas` 文件。
<a name='2.2'></a>
### 2.2 benchmark 二进制文件下载
@ -45,6 +60,8 @@ wget -c https://paddle-inference-dist.bj.bcebos.com/PaddleLite/benchmark_0/bench
wget -c https://paddle-inference-dist.bj.bcebos.com/PaddleLite/benchmark_0/benchmark_bin_v7
```
<a name='2.3'></a>
### 2.3 模型速度 benchmark
PC 端和手机连接成功后,使用下面的命令开始模型评估。
@ -69,6 +86,7 @@ MobileNetV1 min = 10.03200 max = 9.94300 averag
这里给出了不同线程数下的模型预测速度,单位为 FPS以线程数为 1 为例MobileNetV1 在骁龙855 上的平均速度为 `30.79750FPS`
<a name='2.4'></a>
### 2.4 模型优化与速度评估

View File

@ -1,13 +1,27 @@
# 图像分类昆仑模型介绍(持续更新中)
------
## 目录
* [1. 前言](#1)
* [2. 昆仑训练](#2)
* [2.1 ResNet50](#2.1)
* [2.2 MobileNetV3](#2.2)
* [2.3 HRNet](#2.3)
* [2.4 VGG16/19](#2.4)
## 前言
<a name='1'></a>
## 1. 前言
* 本文档介绍了目前昆仑支持的模型以及如何在昆仑设备上训练这些模型。支持昆仑的 PaddlePaddle 安装参考 install_kunlun(https://github.com/PaddlePaddle/FluidDoc/blob/develop/doc/paddle/install/install_Kunlun_zh.md)
## 昆仑训练
<a name='2'></a>
## 2. 昆仑训练
* 数据来源和预训练模型参考[quick_start](../quick_start/quick_start_classification_new_user.md)。昆仑训练效果与 CPU/GPU 对齐。
### ResNet50
<a name='2.1'></a>
### 2.1 ResNet50
* 命令:
```shell
@ -20,7 +34,9 @@ python3.7 ppcls/static/train.py \
与 cpu/gpu 训练的区别是加上 -o use_xpu=True, 表示执行在昆仑设备上。
### MobileNetV3
<a name='2.2'></a>
### 2.2 MobileNetV3
* 命令:
```shell
@ -31,7 +47,9 @@ python3.7 ppcls/static/train.py \
-o is_distributed=False
```
### HRNet
<a name='2.3'></a>
### 2.3 HRNet
* 命令:
```shell
@ -42,8 +60,9 @@ python3.7 ppcls/static/train.py \
-o use_gpu=False
```
<a name='2.4'></a>
### VGG16/19
### 2.4 VGG16/19
* 命令:
```shell

View File

@ -1,11 +1,21 @@
# 使用 DALI 加速训练
----
## 目录
* [1. 前言](#1)
* [2. 安装 DALI](#2)
* [3. 使用 DALI](#3)
* [4. 使用 FP16 训练](#4)
## 前言
<a name='1'></a>
## 1. 前言
[NVIDIA 数据加载库](https://docs.nvidia.com/deeplearning/dali/user-guide/docs/index.html)The NVIDIA Data Loading LibraryDALI是用于数据加载和预处理的开源库用于加速深度学习训练、推理过程它可以直接构建飞桨 Paddle 的 DataLoader 数据读取器。
由于深度学习程序在训练阶段依赖大量数据,这些数据需要经过加载、预处理等操作后,才能送入训练程序,而这些操作通常在 CPU 完成,因此限制了训练速度进一步提高,特别是在 batch_size 较大时,数据读取可能成为训练速度的瓶颈。 DALI 可以基于 GPU 的高并行特性实现数据加载及预处理操作,可以进一步提高训练速度。
## 安装DALI
<a name='2'></a>
## 2.安装 DALI
目前 DALI 仅支持 Linux x64 平台,且 CUDA 版本大于等于 10.2。
* 对于 CUDA 10:
@ -18,7 +28,9 @@
关于更多 DALI 安装的信息,可以参考[DALI 官方](https://docs.nvidia.com/deeplearning/dali/user-guide/docs/installation.html)。
## 使用DALI
<a name='3'></a>
## 3. 使用 DALI
PaddleClas 支持在静态图训练方式中使用 DALI 加速,由于 DALI 仅支持 GPU 训练,因此需要设置 GPU且 DALI 需要占用 GPU 显存,需要为 DALI 预留显存。使用 DALI 训练只需在训练配置文件中设置字段`use_dali=True`,或通过以下命令启动训练即可:
```shell
@ -44,7 +56,9 @@ python -m paddle.distributed.launch \
-o use_dali=True
```
## 使用FP16训练
<a name='4'></a>
## 4. 使用 FP16 训练
在上述基础上,使用 FP16 半精度训练,可以进一步提高速度,可以参考下面的配置与运行命令。
```shell

View File

@ -1,15 +1,30 @@
# 图像分类迁移学习
迁移学习是机器学习领域的一个重要分支,广泛应用于文本、图像等各种领域,此处我们主要介绍的是图像分类领域的迁移学习,也就是我们常说的域迁移,比如将 ImageNet 分类模型迁移到我们自己场景的图像分类任务上,如花卉分类。
## 一、 超参搜索
----------
## 目录
* [1. 超参搜索](#1)
* [1.1 网格搜索](#1.1)
* [1.2 贝叶斯搜索](#1.2)
* [2. 大规模分类模型](#2)
* [3. 参考文献](#3)
<a name='1'></a>
## 1. 超参搜索
ImageNet 作为业界常用的图像分类数据被大家广泛使用,已经总结出一系列经验性的超参,使用这些超参往往能够得到不错的训练精度,而这些经验性的参数在迁移到自己的业务中时,有时效果不佳。有两种常用的超参搜索方法可以用于获得更好的模型超参。
<a name='1.1'></a>
### 1.1 网格搜索
网格搜索,即穷举搜索,通过查找搜索空间内所有的点,确定最优值。方法简单有效,但当搜索空间较大时,需要消耗大量的计算资源。
<a name='1.2'></a>
### 1.2 贝叶斯搜索
贝叶斯搜索,即贝叶斯优化,在搜索空间中随机选取超参数点,采用高斯过程,即根据上一个超参数点的结果,更新当前的先验信息,计算前面 n 个超参数点的后验概率分布,得到搜索空间中每一个超参数点的期望均值和方差,其中期望均值越大表示接近最优指标的可能性越大,方差越大表示不确定性越大。通常将选择期望均值大的超参数点称为`exporitation`,选择方差大的超参数点称为`exploration`。在贝叶斯优化中通过定义`acquisition function`权衡期望均值和方差。贝叶斯搜索认为当前选择的超参数点是处于最大值可能出现的位置。
@ -55,7 +70,9 @@ Mixup: [False, True]
- 上述实验验证了贝叶斯搜索相比网格搜索,在减少搜索次数 10 倍左右条件下,精度只下降 0%~0.4%。
- 当搜索空间进一步扩大时,例如将是否进行 AutoAugmentRandAugmentCutout Cutmix 以及 Dropout 这些正则化策略作为选择时,贝叶斯搜索能够在获取较优精度的前提下,有效地降低搜索次数。
## 二、 大规模分类模型
<a name='2'></a>
## 2. 大规模分类模型
在实际应用中,由于训练数据的匮乏,往往将 ImageNet1k 数据集训练的分类模型作为预训练模型,进行图像分类的迁移学习。为了进一步助力解决实际问题,基于 ResNet50_vd, 百度开源了自研的大规模分类预训练模型,其中训练数据为 10 万个类别4300 万张图片。10 万类预训练模型的下载地址:[**下载地址**](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vd_10w_pretrained.pdparams)
@ -78,8 +95,8 @@ Mixup: [False, True]
- 通过上述的实验验证了当使用一组固定参数时,相比于 ImageNet 预训练模型,使用大规模分类模型作为预训练模型在大多数情况下能够提升模型在新的数据集上得效果,通过参数搜索可以进一步提升精度。
## 参考文献
<a name='3'></a>
## 3. 参考文献
[1] Kornblith, Simon, Jonathon Shlens, and Quoc V. Le. "Do better imagenet models transfer better?." *Proceedings of the IEEE conference on computer vision and pattern recognition*. 2019.

View File

@ -1,6 +1,12 @@
# 版本更新信息
----------
## 目录
* [1. v2.3](#1)
* [2. v2.2](#2)
## v2.3
<a name='1'></a>
## 1. v2.3
- 模型更新
- 添加轻量化模型预训练权重,包括检测模型、特征模型
@ -22,7 +28,9 @@
- PaddleSlim 版本2.2.0
- PaddleServing 版本0.6.1
## v2.2
<a name='2'></a>
## 2. v2.2
- 模型更新
- 添加 LeViT、Twins、TNT、DLA、HardNet、RedNet、SwinTransfomer 模型

View File

@ -3,7 +3,21 @@
此教程主要针对初级用户,即深度学习相关理论知识处于入门阶段,具有一定的 Python 基础,能够阅读简单代码的用户。此内容主要包括使用 PaddleClas 进行图像分类网络训练及模型预测。
---
## 目录
- [1. 基础知识](#1)
- [2. 环境安装与配置](#2)
- [3. 数据的准备与处理](#3)
- [4. 模型训练](#4)
- [4.1 使用 CPU 进行模型训练](#4.1)
- [4.1.1 不使用预训练模型进行训练](#4.1.1)
- [4.1.2 不使用预训练模型进行训练](#4.1.2)
- [4.2 使用 GPU 进行模型训练](#4.2)
- [4.2.1 不使用预训练模型进行训练](#4.2.1)
- [4.2.2 不使用预训练模型进行训练](#4.2.2)
- [5. 模型预测](#5)
<a name="1"></a>
## 1. 基础知识
图像分类顾名思义就是一个模式分类问题,是计算机视觉中最基础的任务,它的目标是将不同的图像,划分到不同的类别。以下会对整个模型训练过程中需要了解到的一些概念做简单的解释,希望能够对初次体验 PaddleClas 的你有所帮助:
@ -75,7 +89,6 @@ cd ../../
## 4. 模型训练
<a name="4.1"></a>
### 4.1 使用 CPU 进行模型训练
由于使用 CPU 来进行模型训练,计算速度较慢,因此,此处以 ShuffleNetV2_x0_25 为例。此模型计算量较小,在 CPU 上计算速度较快。但是也因为模型较小,训练好的模型精度也不会太高。
@ -101,6 +114,7 @@ python tools/train.py -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25
可以使用将使用与不使用预训练模型训练进行对比,观察 loss 的下降情况。
<a name="4.2"></a>
### 4.2 使用 GPU 进行模型训练
由于 GPU 训练速度更快,可以使用更复杂模型,因此以 ResNet50_vd 为例。与 ShuffleNetV2_x0_25 相比,此模型计算量较大,训练好的模型精度也会更高。
@ -131,7 +145,8 @@ python tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml
<img src="../../images/quick_start/r50_vd_acc.png" width = "800" />
</div>
#### 4.2.1 使用预训练模型进行训练
<a name="4.2.2"></a>
#### 4.2.2 使用预训练模型进行训练
基于 ImageNet1k 分类预训练模型进行微调,训练脚本如下所示