Mobile.md 28.7 KB
Newer Older
W
WuHaobo 已提交
1
# 移动端系列
G
gaotingquan 已提交
2 3
-----

S
sibo2rr 已提交
4
## 目录
W
WuHaobo 已提交
5

G
gaotingquan 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
- [1. 模型介绍](#1)
    - [1.1 模型简介](#1.1)
    - [1.2 模型指标](#1.2)
    - [1.3 Benchmark](#1.3)
      - [1.3.1 基于 V100 GPU 的预测速度](#1.3.1)
- [2. 模型快速体验](#2)
- [3. 模型训练、评估和预测](#3)
- [4. 模型推理部署](#4)
  - [4.1 推理模型准备](#4.1)
  - [4.2 基于 Python 预测引擎推理](#4.2)
  - [4.3 基于 C++ 预测引擎推理](#4.3)
  - [4.4 服务化部署](#4.4)
  - [4.5 端侧部署](#4.5)
  - [4.6 Paddle2ONNX 模型转换与预测](#4.6)

<a name='1'></a>

## 1. 模型介绍
W
WuHaobo 已提交
24

G
gaotingquan 已提交
25 26 27
<a name='1.1'></a>

### 1.1 模型简介
D
dyning 已提交
28

S
sibo2rr 已提交
29
MobileNetV1 是 Google 于 2017 年发布的用于移动设备或嵌入式设备中的网络。该网络将传统的卷积操作替换深度可分离卷积,即 Depthwise 卷积和 Pointwise 卷积的组合,相比传统的卷积操作,该组合可以大大节省参数量和计算量。与此同时,MobileNetV1 也可以用于目标检测、图像分割等其他视觉任务中。
D
dyning 已提交
30

S
sibo2rr 已提交
31
MobileNetV2 是 Google 继 MobileNetV1 提出的一种轻量级网络。相比 MobileNetV1,MobileNetV2 提出了 Linear bottlenecks 与 Inverted residual block 作为网络基本结构,通过大量地堆叠这些基本模块,构成了 MobileNetV2 的网络结构。最终,在 FLOPS 只有 MobileNetV1 的一半的情况下取得了更高的分类精度。
littletomatodonkey's avatar
littletomatodonkey 已提交
32

33
ShuffleNet 系列网络是旷视提出的轻量化网络结构,到目前为止,该系列网络一共有两种典型的结构,即 ShuffleNetV1 与 ShuffleNetV2。ShuffleNet 中的 Channel Shuffle 操作可以将组间的信息进行交换,并且可以实现端到端的训练。在 ShuffleNetV2 的论文中,作者提出了设计轻量级网络的四大准则,并且根据四大准则与 ShuffleNetV1 的不足,设计了 ShuffleNetV2 网络。
S
sibo2rr 已提交
34 35 36 37

MobileNetV3 是 Google 于 2019 年提出的一种基于 NAS 的新的轻量级网络,为了进一步提升效果,将 relu 和 sigmoid 激活函数分别替换为 hard_swish 与 hard_sigmoid 激活函数,同时引入了一些专门减小网络计算量的改进策略。

GhostNet 是华为于 2020 年提出的一种全新的轻量化网络结构,通过引入 ghost module,大大减缓了传统深度网络中特征的冗余计算问题,使得网络的参数量和计算量大大降低。
38

39
![](../../../images/models/mobile_arm_top1.png)
littletomatodonkey's avatar
littletomatodonkey 已提交
40

41
![](../../../images/models/mobile_arm_storage.png)
littletomatodonkey's avatar
littletomatodonkey 已提交
42

43
![](../../../images/models/T4_benchmark/t4.fp32.bs4.mobile_trt.flops.png)
littletomatodonkey's avatar
littletomatodonkey 已提交
44

45
![](../../../images/models/T4_benchmark/t4.fp32.bs4.mobile_trt.params.png)
littletomatodonkey's avatar
littletomatodonkey 已提交
46 47


48
目前 PaddleClas 开源的的移动端系列的预训练模型一共有 35 个,其指标如图所示。从图片可以看出,越新的轻量级模型往往有更优的表现,MobileNetV3 代表了目前主流的轻量级神经网络结构。在 MobileNetV3 中,作者为了获得更高的精度,在 global-avg-pooling 后使用了 1x1 的卷积。该操作大幅提升了参数量但对计算量影响不大,所以如果从存储角度评价模型的优异程度,MobileNetV3 优势不是很大,但由于其更小的计算量,使得其有更快的推理速度。此外,我们模型库中的 ssld 蒸馏模型表现优异,从各个考量角度下,都刷新了当前轻量级模型的精度。由于 MobileNetV3 模型结构复杂,分支较多,对 GPU 并不友好,GPU 预测速度不如 MobileNetV1。GhostNet 于 2020 年提出,通过引入 ghost 的网络设计理念,大大降低了计算量和参数量,同时在精度上也超过前期最高的 MobileNetV3 网络结构。
W
WuHaobo 已提交
49

G
gaotingquan 已提交
50
<a name='1.2'></a>
W
WuHaobo 已提交
51

G
gaotingquan 已提交
52
### 1.2 模型指标
W
WuHaobo 已提交
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

| Models                               | Top1    | Top5    | Reference<br>top1 | Reference<br>top5 | FLOPS<br>(G) | Parameters<br>(M) |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
| MobileNetV1_x0_25                    | 0.514   | 0.755   | 0.506             |                   | 0.070        | 0.460             |
| MobileNetV1_x0_5                     | 0.635   | 0.847   | 0.637             |                   | 0.280        | 1.310             |
| MobileNetV1_x0_75                    | 0.688   | 0.882   | 0.684             |                   | 0.630        | 2.550             |
| MobileNetV1                          | 0.710   | 0.897   | 0.706             |                   | 1.110        | 4.190             |
| MobileNetV1_ssld                     | 0.779   | 0.939   |                   |                   | 1.110        | 4.190             |
| MobileNetV2_x0_25                    | 0.532   | 0.765   |                   |                   | 0.050        | 1.500             |
| MobileNetV2_x0_5                     | 0.650   | 0.857   | 0.654             | 0.864             | 0.170        | 1.930             |
| MobileNetV2_x0_75                    | 0.698   | 0.890   | 0.698             | 0.896             | 0.350        | 2.580             |
| MobileNetV2                          | 0.722   | 0.907   | 0.718             | 0.910             | 0.600        | 3.440             |
| MobileNetV2_x1_5                     | 0.741   | 0.917   |                   |                   | 1.320        | 6.760             |
| MobileNetV2_x2_0                     | 0.752   | 0.926   |                   |                   | 2.320        | 11.130            |
| MobileNetV2_ssld                     | 0.7674  | 0.9339  |                   |                   | 0.600        | 3.440             |
| MobileNetV3_large_<br>x1_25          | 0.764   | 0.930   | 0.766             |                   | 0.714        | 7.440             |
littletomatodonkey's avatar
littletomatodonkey 已提交
69
| MobileNetV3_large_<br>x1_0           | 0.753   | 0.923   | 0.752             |                   | 0.450        | 5.470             |
W
WuHaobo 已提交
70 71 72 73 74 75 76 77
| MobileNetV3_large_<br>x0_75          | 0.731   | 0.911   | 0.733             |                   | 0.296        | 3.910             |
| MobileNetV3_large_<br>x0_5           | 0.692   | 0.885   | 0.688             |                   | 0.138        | 2.670             |
| MobileNetV3_large_<br>x0_35          | 0.643   | 0.855   | 0.642             |                   | 0.077        | 2.100             |
| MobileNetV3_small_<br>x1_25          | 0.707   | 0.895   | 0.704             |                   | 0.195        | 3.620             |
| MobileNetV3_small_<br>x1_0           | 0.682   | 0.881   | 0.675             |                   | 0.123        | 2.940             |
| MobileNetV3_small_<br>x0_75          | 0.660   | 0.863   | 0.654             |                   | 0.088        | 2.370             |
| MobileNetV3_small_<br>x0_5           | 0.592   | 0.815   | 0.580             |                   | 0.043        | 1.900             |
| MobileNetV3_small_<br>x0_35          | 0.530   | 0.764   | 0.498             |                   | 0.026        | 1.660             |
78
| MobileNetV3_small_<br>x0_35_ssld          | 0.556   | 0.777   | 0.498             |                   | 0.026        | 1.660             |
W
WuHaobo 已提交
79 80 81 82 83 84 85 86 87 88
| MobileNetV3_large_<br>x1_0_ssld      | 0.790   | 0.945   |                   |                   | 0.450        | 5.470             |
| MobileNetV3_large_<br>x1_0_ssld_int8 | 0.761   |         |                   |                   |              |                   |
| MobileNetV3_small_<br>x1_0_ssld      | 0.713   | 0.901   |                   |                   | 0.123        | 2.940             |
| ShuffleNetV2                         | 0.688   | 0.885   | 0.694             |                   | 0.280        | 2.260             |
| ShuffleNetV2_x0_25                   | 0.499   | 0.738   |                   |                   | 0.030        | 0.600             |
| ShuffleNetV2_x0_33                   | 0.537   | 0.771   |                   |                   | 0.040        | 0.640             |
| ShuffleNetV2_x0_5                    | 0.603   | 0.823   | 0.603             |                   | 0.080        | 1.360             |
| ShuffleNetV2_x1_5                    | 0.716   | 0.902   | 0.726             |                   | 0.580        | 3.470             |
| ShuffleNetV2_x2_0                    | 0.732   | 0.912   | 0.749             |                   | 1.120        | 7.320             |
| ShuffleNetV2_swish                   | 0.700   | 0.892   |                   |                   | 0.290        | 2.260             |
89 90 91
| GhostNet_x0_5                        | 0.668   | 0.869   | 0.662             | 0.866             | 0.082        | 2.600             |
| GhostNet_x1_0                        | 0.740   | 0.916   | 0.739             | 0.914             | 0.294        | 5.200             |
| GhostNet_x1_3                        | 0.757   | 0.925   | 0.757             | 0.927             | 0.440        | 7.300             |
92
| GhostNet_x1_3_ssld                        | 0.794   | 0.945   | 0.757             | 0.927             | 0.440        | 7.300             |
W
WuHaobo 已提交
93

G
gaotingquan 已提交
94 95 96
### 1.3 Benchmark

<a name='1.3.1'></a>
W
WuHaobo 已提交
97

G
gaotingquan 已提交
98
#### 1.3.1 基于 SD855 的预测速度和存储大小
W
WuHaobo 已提交
99

S
sibo2rr 已提交
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
| Models                               | SD855 time(ms)<br>bs=1, thread=1 | SD855 time(ms)<br/>bs=1, thread=2 | SD855 time(ms)<br/>bs=1, thread=4 | Storage Size(M) |
|:--:|----|----|----|----|
| MobileNetV1_x0_25                    | 2.88        | 1.82        | 1.26        | 1.900           |
| MobileNetV1_x0_5                     | 8.74        | 5.26        | 3.09        | 5.200           |
| MobileNetV1_x0_75                    | 17.84      | 10.61      | 6.21       | 10.000          |
| MobileNetV1                          | 30.24      | 17.86      | 10.30      | 16.000          |
| MobileNetV1_ssld                     | 30.19      | 17.85      | 10.23      | 16.000          |
| MobileNetV2_x0_25                    | 3.46        | 2.51        | 2.03        | 6.100           |
| MobileNetV2_x0_5                     | 7.69        | 4.92        | 3.57        | 7.800           |
| MobileNetV2_x0_75                    | 13.69      | 8.60       | 5.82       | 10.000          |
| MobileNetV2                          | 20.74      | 12.71      | 8.10       | 14.000          |
| MobileNetV2_x1_5                     | 40.79      | 24.49      | 15.50      | 26.000          |
| MobileNetV2_x2_0                     | 67.50      | 40.03      | 25.55      | 43.000          |
| MobileNetV2_ssld                     | 20.71      | 12.70      | 8.06       | 14.000          |
| MobileNetV3_large_x1_25          | 24.52      | 14.76      | 9.89       | 29.000          |
| MobileNetV3_large_x1_0           | 16.55      | 10.09      | 6.84       | 21.000          |
| MobileNetV3_large_x0_75          | 11.53      | 7.06       | 4.94       | 16.000          |
| MobileNetV3_large_x0_5           | 6.50        | 4.22        | 3.15        | 11.000          |
| MobileNetV3_large_x0_35          | 4.43        | 3.11        | 2.41        | 8.600           |
| MobileNetV3_small_x1_25          | 7.88        | 4.91        | 3.45        | 14.000          |
| MobileNetV3_small_x1_0           | 5.63        | 3.65        | 2.60        | 12.000          |
| MobileNetV3_small_x0_75          | 4.50        | 2.96        | 2.19        | 9.600           |
| MobileNetV3_small_x0_5           | 2.89        | 2.04    | 1.62        | 7.800           |
| MobileNetV3_small_x0_35          | 2.23        | 1.66        | 1.43        | 6.900           |
| MobileNetV3_small_x0_35_ssld          |             |             |             | 6.900           |
| MobileNetV3_large_x1_0_ssld      | 16.56      | 10.10      | 6.86       | 21.000          |
| MobileNetV3_large_x1_0_ssld_int8 |            |            |            | 10.000          |
| MobileNetV3_small_x1_0_ssld      | 5.64        | 3.67        | 2.61        | 12.000          |
| ShuffleNetV2                         | 9.72       | 5.97       | 4.13       | 9.000           |
| ShuffleNetV2_x0_25                   | 1.94        | 1.53        | 1.43        | 2.700           |
| ShuffleNetV2_x0_33                   | 2.23        | 1.70        | 1.79        | 2.800           |
| ShuffleNetV2_x0_5                    | 3.67        | 2.63        | 2.06        | 5.600           |
| ShuffleNetV2_x1_5                    | 17.21      | 10.56      | 6.81       | 14.000          |
| ShuffleNetV2_x2_0                    | 31.21      | 18.98      | 11.65      | 28.000          |
| ShuffleNetV2_swish                   | 31.21      | 9.06       | 5.74       | 9.100           |
| GhostNet_x0_5                   | 5.28       | 3.95       | 3.29       | 10.000           |
| GhostNet_x1_0                   | 12.89      | 8.66       | 6.72       | 20.000           |
| GhostNet_x1_3                   | 19.16      | 12.25      | 9.40       | 29.000           |
| GhostNet_x1_3_ssld                   | 19.16      | 17.85      | 10.18      | 29.000           |
littletomatodonkey's avatar
littletomatodonkey 已提交
139

G
gaotingquan 已提交
140
<a name='1.3.2'></a>
littletomatodonkey's avatar
littletomatodonkey 已提交
141

G
gaotingquan 已提交
142
#### 1.3.2 基于 V100 GPU 的预测速度
S
sibo2rr 已提交
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183

| Models                           | Crop Size | Resize Short Size | FP32<br/>Batch Size=1<br/>(ms) | FP32<br/>Batch Size=4<br/>(ms) | FP32<br/>Batch Size=8<br/>(ms) |
| -------------------------------- | --------- | ----------------- | ------------------------------ | ------------------------------ | ------------------------------ |
| MobileNetV1_x0_25                | 224       | 256               | 0.47                           | 0.93                           | 1.39                           |
| MobileNetV1_x0_5                 | 224       | 256               | 0.48                           | 1.09                           | 1.69                           |
| MobileNetV1_x0_75                | 224       | 256               | 0.55                           | 1.34                           | 2.03                           |
| MobileNetV1                      | 224       | 256               | 0.64                           | 1.57                           | 2.48                           |
| MobileNetV1_ssld                 | 224       | 256               | 0.66                           | 1.59                           | 2.58                           |
| MobileNetV2_x0_25                | 224       | 256               | 0.83                           | 1.17                           | 1.78                           |
| MobileNetV2_x0_5                 | 224       | 256               | 0.84                           | 1.45                           | 2.04                           |
| MobileNetV2_x0_75                | 224       | 256               | 0.96                           | 1.62                           | 2.53                           |
| MobileNetV2                      | 224       | 256               | 1.02                           | 1.93                           | 2.89                           |
| MobileNetV2_x1_5                 | 224       | 256               | 1.32                           | 2.58                           | 4.14                           |
| MobileNetV2_x2_0                 | 224       | 256               | 1.57                           | 3.13                           | 4.76                           |
| MobileNetV2_ssld                 | 224       | 256               | 1.01                           | 1.97                           | 2.84                           |
| MobileNetV3_large_x1_25          | 224       | 256               | 1.75                           | 2.87                           | 4.23                           |
| MobileNetV3_large_x1_0           | 224       | 256               | 1.37                           | 2.67                           | 3.46                           |
| MobileNetV3_large_x0_75          | 224       | 256               | 1.37                           | 2.23                           | 3.17                           |
| MobileNetV3_large_x0_5           | 224       | 256               | 1.10                           | 1.85                           | 2.69                           |
| MobileNetV3_large_x0_35          | 224       | 256               | 1.01                           | 1.44                           | 1.92                           |
| MobileNetV3_small_x1_25          | 224       | 256               | 1.20                           | 2.04                           | 2.64                           |
| MobileNetV3_small_x1_0           | 224       | 256               | 1.03                           | 1.76                           | 2.50                           |
| MobileNetV3_small_x0_75          | 224       | 256               | 1.04                           | 1.71                           | 2.37                           |
| MobileNetV3_small_x0_5           | 224       | 256               | 1.01                           | 1.49                           | 2.01                           |
| MobileNetV3_small_x0_35          | 224       | 256               | 1.01                           | 1.44                           | 1.92                           |
| MobileNetV3_small_x0_35_ssld     | 224       | 256               |                                |                                |                                |
| MobileNetV3_large_x1_0_ssld      | 224       | 256               | 1.35                           | 2.47                           | 3.72                           |
| MobileNetV3_large_x1_0_ssld_int8 | 224       | 256               |                                |                                |                                |
| MobileNetV3_small_x1_0_ssld      | 224       | 256               | 1.06                           | 1.89                           | 2.48                           |
| ShuffleNetV2                     | 224       | 256               | 1.05                           | 1.76                           | 2.37                           |
| ShuffleNetV2_x0_25               | 224       | 256               | 0.92                           | 1.27                           | 1.73                           |
| ShuffleNetV2_x0_33               | 224       | 256               | 0.91                           | 1.29                           | 1.81                           |
| ShuffleNetV2_x0_5                | 224       | 256               | 0.89                           | 1.43                           | 1.94                           |
| ShuffleNetV2_x1_5                | 224       | 256               | 0.93                           | 1.99                           | 2.85                           |
| ShuffleNetV2_x2_0                | 224       | 256               | 1.45                           | 2.70                           | 3.35                           |
| ShuffleNetV2_swish               | 224       | 256               | 1.43                           | 1.93                           | 2.69                           |
| GhostNet_x0_5                    | 224       | 256               | 1.66                           | 2.24                           | 2.73                           |
| GhostNet_x1_0                    | 224       | 256               | 1.69                           | 2.73                           | 3.81                           |
| GhostNet_x1_3                    | 224       | 256               | 1.84                           | 2.88                           | 3.94                           |
| GhostNet_x1_3_ssld               | 224       | 256               | 1.85                           | 3.17                           | 4.29                           |

G
gaotingquan 已提交
184
<a name='1.3.3'></a>
S
sibo2rr 已提交
185

G
gaotingquan 已提交
186
#### 1.3.3 基于 T4 GPU 的预测速度
S
sibo2rr 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224

| Models            | Crop Size | Resize Short Size | FP32<br>Batch Size=1<br>(ms) | FP32<br>Batch Size=4<br>(ms) | FP32<br>Batch Size=8<br>(ms) |
|-----------------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|
| MobileNetV1_x0_25           | 224       | 256               | 0.47                         | 0.93                         | 1.39                         |
| MobileNetV1_x0_5            | 224       | 256               | 0.48                         | 1.09                         | 1.69                         |
| MobileNetV1_x0_75           | 224       | 256               | 0.55                         | 1.34                         | 2.03                         |
| MobileNetV1                 | 224       | 256               | 0.64                         | 1.57                         | 2.48                         |
| MobileNetV1_ssld            | 224       | 256               | 0.66                         | 1.59                         | 2.58                         |
| MobileNetV2_x0_25           | 224       | 256               | 0.83                         | 1.17                         | 1.78                         |
| MobileNetV2_x0_5            | 224       | 256               | 0.84                         | 1.45                         | 2.04                         |
| MobileNetV2_x0_75           | 224       | 256               | 0.96                         | 1.62                         | 2.53                         |
| MobileNetV2                 | 224       | 256               | 1.02                         | 1.93                         | 2.89                         |
| MobileNetV2_x1_5            | 224       | 256               | 1.32                         | 2.58                         | 4.14                         |
| MobileNetV2_x2_0            | 224       | 256               | 1.57                         | 3.13                         | 4.76                         |
| MobileNetV2_ssld            | 224       | 256               | 1.01                         | 1.97                         | 2.84                         |
| MobileNetV3_small_x0_35     | 224       | 256               | 1.01                         | 1.44                         | 1.92                         |
| MobileNetV3_small_x0_5      | 224       | 256               | 1.01                         | 1.49                         | 2.01                         |
| MobileNetV3_small_x0_75     | 224       | 256               | 1.04                         | 1.71                         | 2.37                         |
| MobileNetV3_small_x1_0      | 224       | 256               | 1.03                         | 1.76                         | 2.50                         |
| MobileNetV3_small_x1_25     | 224       | 256               | 1.20                         | 2.04                         | 2.64                         |
| MobileNetV3_large_x0_35     | 224       | 256               | 1.10                         | 1.74                         | 2.34                         |
| MobileNetV3_large_x0_5      | 224       | 256               | 1.10                         | 1.85                         | 2.69                         |
| MobileNetV3_large_x0_75     | 224       | 256               | 1.37                         | 2.23                         | 3.17                         |
| MobileNetV3_large_x1_0      | 224       | 256               | 1.37                         | 2.67                         | 3.46                         |
| MobileNetV3_large_x1_25     | 224       | 256               | 1.75                         | 2.87                         | 4.23                         |
| MobileNetV3_small_x1_0_ssld | 224       | 256               | 1.06                         | 1.89                         | 2.48                         |
| MobileNetV3_large_x1_0_ssld | 224       | 256               | 1.35                         | 2.47                         | 3.72                         |
| ShuffleNetV2_swish          | 224       | 256               | 1.43                         | 1.93                         | 2.69                         |
| ShuffleNetV2_x0_25          | 224       | 256               | 0.92                         | 1.27                         | 1.73                         |
| ShuffleNetV2_x0_33          | 224       | 256               | 0.91                         | 1.29                         | 1.81                         |
| ShuffleNetV2_x0_5           | 224       | 256               | 0.89                         | 1.43                         | 1.94                         |
| ShuffleNetV2_x1_0           | 224       | 256               | 1.05                         | 1.76                         | 2.37                         |
| ShuffleNetV2_x1_5           | 224       | 256               | 0.93                         | 1.99                         | 2.85                         |
| ShuffleNetV2_x2_0           | 224       | 256               | 1.45                         | 2.70                         | 3.35                         |
| GhostNet_x0_5               | 224       | 256               | 1.66                         | 2.24                         | 2.73                         |
| GhostNet_x1_0               | 224       | 256               | 1.69                         | 2.73                         | 3.81                         |
| GhostNet_x1_3               | 224       | 256               | 1.84                         | 2.88                         | 3.94                         |
| GhostNet_x1_3_ssld          | 224       | 256               | 1.85                         | 3.17                         | 4.29                         |
G
gaotingquan 已提交
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286

<a name="2"></a>  

## 2. 模型快速体验

安装 paddlepaddle 和 paddleclas 即可快速对图片进行预测,体验方法可以参考[ResNet50 模型快速体验](./ResNet.md#2-模型快速体验)

<a name="3"></a>

## 3. 模型训练、评估和预测

此部分内容包括训练环境配置、ImageNet数据的准备、SwinTransformer 在 ImageNet 上的训练、评估、预测等内容。在 `ppcls/configs/ImageNet/SwinTransformer/` 中提供了 SwinTransformer 的训练配置,可以通过如下脚本启动训练:此部分内容可以参考[ResNet50 模型训练、评估和预测](./ResNet.md#3-模型训练评估和预测)

**备注:** 由于 SwinTransformer 系列模型默认使用的 GPU 数量为 8 个,所以在训练时,需要指定8个GPU,如`python3 -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" tools/train.py -c xxx.yaml`, 如果使用 4 个 GPU 训练,默认学习率需要减小一半,精度可能有损。

<a name="4"></a>

## 4. 模型推理部署

<a name="4.1"></a>

### 4.1 推理模型准备

Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。相比于直接基于预训练模型进行预测,Paddle Inference可使用 MKLDNN、CUDNN、TensorRT 进行预测加速,从而实现更优的推理性能。更多关于Paddle Inference推理引擎的介绍,可以参考[Paddle Inference官网教程](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/infer/inference/inference_cn.html)

Inference 的获取可以参考 [ResNet50 推理模型准备](./ResNet.md#41-推理模型准备)

<a name="4.2"></a>

### 4.2 基于 Python 预测引擎推理

PaddleClas 提供了基于 python 预测引擎推理的示例。您可以参考[ResNet50 基于 Python 预测引擎推理](./ResNet.md#42-基于-python-预测引擎推理) 对 SwinTransformer 完成推理预测。

<a name="4.3"></a>

### 4.3 基于 C++ 预测引擎推理

PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考[服务器端 C++ 预测](../inference_deployment/cpp_deploy.md)来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考[基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md)完成相应的预测库编译和模型预测工作。

<a name="4.4"></a>

### 4.4 服务化部署

Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考[Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)

PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考[模型服务化部署](../inference_deployment/paddle_serving_deploy.md)来完成相应的部署工作。

<a name="4.5"></a>

### 4.5 端侧部署

Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考[Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)

PaddleClas 提供了基于 Paddle Lite 来完成模型端侧部署的示例,您可以参考[端侧部署](../inference_deployment/paddle_lite_deploy.md)来完成相应的部署工作。

<a name="4.6"></a>

### 4.6 Paddle2ONNX 模型转换与预测

Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考[Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)

PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考[Paddle2ONNX 模型转换与预测](@shuilong)来完成相应的部署工作。