Paddle Lite是什么,快速上手Python推理,pdmodel使用

175 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

目录

Paddle Lite是什么

ResNet50 模型是什么

AI paddle 模型使用 ResNet50 模型 

快速上手Python推理

2. 模型准备

3. 推理代码

4. 执行程序

pdmodel使用

Python 应用开发说明


Paddle Lite是什么

“Paddle Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。”

ResNet50 模型是什么

设置参数命令
python python_demo.py --model_file ./resnet50/inference.pdmodel --params_file ./resnet50/inference.pdiparams --batch_size 2

Resnet是残差网络(Residual Network)的缩写,该系列网络广泛用于目标分类等领域以及作为计算机视觉任务主干经典神经网络的一部分,典型的网络有resnet50, resnet101等。Resnet网络的证明网络能够向更深(包含更多隐藏层)的方向发展。

AI paddle 模型使用 ResNet50 模型 

快速上手Python推理

2. 模型准备

下载 ResNet50 模型后解压,得到 Paddle 推理格式的模型,位于文件夹 ResNet50 下。如需查看模型结构,可参考模型结构可视化文档

wget https://paddle-inference-dist.bj.bcebos.com/Paddle-Inference-Demo/resnet50.tgz
tar zxf resnet50.tgz

# 获得模型目录即文件如下
resnet50/
├── inference.pdmodel
├── inference.pdiparams.info
└── inference.pdiparams

3. 推理代码

将以下代码保存为 python_demo.py 文件:

import argparse
import numpy as np

# 引用 paddle inference 推理库
import paddle.inference as paddle_infer

def main():
    args = parse_args()

    # 创建 config
    config = paddle_infer.Config(args.model_file, args.params_file)

    # 根据 config 创建 predictor
    predictor = paddle_infer.create_predictor(config)

    # 获取输入的名称
    input_names = predictor.get_input_names()
    input_handle = predictor.get_input_handle(input_names[0])

    # 设置输入
    fake_input = np.random.randn(args.batch_size, 3, 318, 318).astype("float32")
    input_handle.reshape([args.batch_size, 3, 318, 318])
    input_handle.copy_from_cpu(fake_input)

    # 运行predictor
    predictor.run()

    # 获取输出
    output_names = predictor.get_output_names()
    output_handle = predictor.get_output_handle(output_names[0])
    output_data = output_handle.copy_to_cpu() # numpy.ndarray类型
    print("Output data size is {}".format(output_data.size))
    print("Output data shape is {}".format(output_data.shape))

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--model_file", type=str, help="model filename")
    parser.add_argument("--params_file", type=str, help="parameter filename")
    parser.add_argument("--batch_size", type=int, default=1, help="batch size")
    return parser.parse_args()

if __name__ == "__main__":
    main()

4. 执行程序

# 参数输入为本章节第2步中下载的 ResNet50 模型
python python_demo.py --model_file ./resnet50/inference.pdmodel --params_file ./resnet50/inference.pdiparams --batch_size 2

成功执行之后,得到的推理输出结果如下:

# 程序输出结果如下
Output data size is 2000
Output data shape is (2, 1000)

快速上手Python推理 — Paddle-Inference documentation

pdmodel使用

Python 应用开发说明

Python 代码调用 Paddle Lite 执行预测库仅需以下五步:

(1) 引入必要的库

from paddlelite.lite import *
import numpy as np

(2) 指定模型文件,创建 predictor

# 1. Set config information
config = MobileConfig()
# 2. Set the path to the model generated by opt tools
config.set_model_from_file(args.model_dir)
# 3. Create predictor by config
predictor = create_paddle_predictor(config)

(3) 设置模型输入 (下面以全一输入为例)

input_tensor = predictor.get_input(0)
input_tensor.from_numpy(np.ones((1, 3, 224, 224)).astype("float32"))

如果模型有多个输入,每一个模型输入都需要准确设置 shape 和 data。

(4) 执行预测

predictor.run()

(5) 获得预测结果并将预测结果转化为 numpy 数组

output_tensor = predictor.get_output(0)
output_data = output_tensor.numpy()
print(output_data)

详细的 Python API 说明文档位于 Python API 文件夹内。