未验证 提交 004e4c4d 编写于 作者: littletomatodonkey's avatar littletomatodonkey 提交者: GitHub

fix link (#5464)

上级 99a1c805
......@@ -23,8 +23,6 @@
MobileNetV3 是 2019 年提出的一种基于 NAS 的新的轻量级网络,为了进一步提升效果,将 relu 和 sigmoid 激活函数分别替换为 hard_swish 与 hard_sigmoid 激活函数,同时引入了一些专门减小网络计算量的改进策略,最终性能超越了当时其他的轻量级骨干网络。
**论文:** [Searching for MobileNetV3](https://arxiv.org/abs/1905.02244)
**参考repo:** [https://github.com/pytorch/vision](https://github.com/pytorch/vision)
......@@ -50,7 +48,8 @@ MobileNetV3 是 2019 年提出的一种基于 NAS 的新的轻量级网络,为
| 模型 | top1/5 acc (参考精度) | top1/5 acc (复现精度) | 下载链接 |
|:---------:|:------:|:----------:|:----------:|
| MobileNetV3_small | 0.602/ | 0.601/0.826 | [预训练模型](https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/mobilenet_v3_small_pretrained.pdparams) \| [Inference模型](https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/mobilenet_v3_small_infer.tar) \| [日志](https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/train_mobilenet_v3_small.log) |
| MobileNetV3_small | 0.602/- | 0.601/0.826 | [预训练模型](https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/mobilenet_v3_small_pretrained.pdparams) \| [Inference模型](https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/mobilenet_v3_small_infer.tar) \| [日志](https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/train_mobilenet_v3_small.log) |
<a name="3"></a>
......@@ -168,7 +167,14 @@ python3 -m paddle.distributed.launch --gpus="0,1,2,3" train.py --data-path="./IL
更多配置参数可以参考[train.py](./train.py)`get_args_parser`函数。
DCU运行需要设置环境变量 `export HIP_VISIBLE_DEVICES=0,1,2,3`,启动命令与Linux GPU完全相同。
* 注意:本文档主要介绍Linux上的基础训练推理过程,如果希望获得更多方法的训练方法,可以参考:
* [混合精度训练教程](docs/train_amp_infer_python.md)
* [多机多卡训练教程](docs/train_fleet_infer_python.md)
* [PACT在线量化训练教程](docs/train_pact_infer_python.md)
* [Windows平台训练教程](docs/windows_train_infer_python.md)
* DCU设备上运行需要设置环境变量 `export HIP_VISIBLE_DEVICES=0,1,2,3`,其余训练评估预测命令与Linux GPU完全相同。
<a name="4.2"></a>
......@@ -218,7 +224,14 @@ python tools/predict.py --pretrained=./mobilenet_v3_small_pretrained.pdparams --
## 5. 模型推理部署
coming soon!
* 基于Paddle Inference的推理过程可以参考:[MobilenetV3 的 Inference 推理教程](./deploy/inference_python/README.md)
* 基于Paddle Serving的服务化部署过程可以参考:[MobilenetV3 的 Serving 服务化部署](./deploy/serving_python/README.md)
* 基于Paddle Lite的推理过程可以参考[MobilenetV3 基于 ARM CPU 部署急教程](./deploy/lite_infer_cpp_arm_cpu/README.md)
* 基于Paddle2ONNX的推理过程可以参考:[MobilenetV3 基于 Paddle2ONNX 的推理教程](./deploy/onnx_python/README.md)
* 基于PaddleSlim的离线量化过程可以参考:[MobilenetV3 离线量化教程](./deploy/ptq_python/README.md)
<a name="6"></a>
......
# Mobilenet_v3 在 ARM CPU 上部署示例
# Mobilenet_v3 基于 ARM CPU 部署
# 目录
......
......@@ -66,15 +66,15 @@ mobilenet_v3_small_infer
使用 Paddle2ONNX 将Paddle静态图模型转换为ONNX模型格式:
```
paddle2onnx --model_dir=./mobilenetv3_model/ \
--model_filename=inference.pdmodel \
--params_filename=inference.pdiparams \
--save_file=./inference/mobilenetv3_model/model.onnx \
--opset_version=10 \
--enable_onnx_checker=True
paddle2onnx --model_dir=./mobilenet_v3_small_infer/ \
--model_filename=inference.pdmodel \
--params_filename=inference.pdiparams \
--save_file=./inference/mobilenetv3_model/model.onnx \
--opset_version=10 \
--enable_onnx_checker=True
```
执行完毕后,ONNX 模型会被保存在 `./inference/mobilenetv3_model/` 路径下
执行完毕后,ONNX 模型会被保存在 `./inference/mobilenetv3_model/` 路径下,文件名为`model.onnx`
更多关于参数的用法,可参考 [Paddle2ONNX官方教程](https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/README_zh.md)
......@@ -94,11 +94,10 @@ ONNX模型测试步骤如下:
执行如下命令:
```
```bash
python3 deploy/onnx_python/infer.py \
--onnx_file ./inference/mobilenetv3_model/model.onnx \
--params_file ./mobilenet_v3_small_pretrained.pdparams \
--img_path ./images/demo.jpg
--onnx_file ./inference/mobilenetv3_model/model.onnx \
--img_path ./images/demo.jpg
```
`ONNXRuntime`输出结果如下。
......@@ -109,18 +108,6 @@ ONNXRuntime predict:
class_id: 8, prob: 0.9091270565986633
```
表示预测的类别ID是`8`,置信度为`0.909`,该结果与基于训练引擎的结果完全一致
`ONNXRuntime`预测结果和`Paddle Inference`预测结果对比,如下。
```
ONNXRuntime and Paddle Inference result diff:
The difference of results between ONNXRuntime and Paddle looks good!
max_abs_diff: 1.5646219e-07
```
`ONNXRuntime``Paddle Inference`的预测结果diff可见,两者的结果几乎完全一致
表示预测的类别ID是`8`,置信度为`0.909`,该结果与基于推理引擎的结果完全一致。
## 3. FAQ
......@@ -13,6 +13,8 @@
# limitations under the License.
import os
import sys
sys.path.insert(0, ".")
import argparse
import numpy as np
from PIL import Image
......@@ -52,37 +54,6 @@ def infer():
print("ONNXRuntime predict: ")
print(f"class_id: {class_id}, prob: {prob}")
# Step2:ONNXRuntime预测结果和Paddle Inference预测结果对比
# 实例化 Paddle 模型
model = mobilenet_v3_small(pretrained=FLAGS.params_file)
model = nn.Sequential(model, nn.Softmax())
# 将模型设置为推理状态
model.eval()
# 对比ONNXRuntime和Paddle预测的结果
paddle_outs = model(paddle.to_tensor(img))
diff = ort_outs[0] - paddle_outs.numpy()
max_abs_diff = np.fabs(diff).max()
print("ONNXRuntime and Paddle Inference result diff: ")
if max_abs_diff < 1e-05:
print(
"The difference of results between ONNXRuntime and Paddle looks good!"
)
else:
relative_diff = max_abs_diff / np.fabs(paddle_outs.numpy()).max()
if relative_diff < 1e-05:
print(
"The difference of results between ONNXRuntime and Paddle looks good!"
)
else:
print(
"The difference of results between ONNXRuntime and Paddle looks bad!"
)
print('relative_diff: ', relative_diff)
print('max_abs_diff: ', max_abs_diff)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description=__doc__)
......@@ -91,11 +62,6 @@ if __name__ == '__main__':
type=str,
default="model.onnx",
help="onnx model filename")
parser.add_argument(
'--params_file',
type=str,
default="model.pdparams",
help="params filename")
parser.add_argument(
'--img_path', type=str, default="image.jpg", help="image filename")
parser.add_argument('--crop_size', default=256, help='crop_szie')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册