PaddlePaddle模型部署
PaddlePaddle模型部署
说明
模型导出
模型部署
基于EdgeBoard1.8.0模型部署
上传模型
修改模型配置文件
修改系统配置文件
执行程序
基于EdgeBoard1.5.1模型部署
说明
EdgeBoard预置PaddleLite预测框架,支持PaddlePaddle训练的模型,模型训练完成后需要进一步导出适合端部署的inference模型格式,
使用paddlepaddle2.0以下版本训练的模型,inference模型导出后包含__model__
、__params__
、model.yml
三个文件
使用paddlepaddle2.0及以上版本训练,导出的模型为model.pdmodel
、model.pdiparams
、model.pdiparams.info
、infer_cfg.yml
四个文件。
模型导出
基于PaddleDetection训练的模型可使用如下脚本导出:
cd PaddleDetection && python tools/export_model.py -c configs/yolov3_r34_voc.yml \
--output_dir=inference_model \
-o weights=output/yolov3_r34_voc/best_model \
TestReader.inputs_def.image_shape=[3,608,608]
详情参考Paddledetection Github链接:https://github.com/PaddlePaddle/PaddleDetection
其他模型导出方式可咨询paddle官方群:https://www.paddlepaddle.org.cn/
模型部署
基于EdgeBoard1.8.0示例模型部署
上传模型
模型训练完成后,将模型文件上传到EdgeBoard内,存放于/home/root/workspace/PaddleLiteDemo/res/models
选择与模型相对应的文件夹,比如yolov3模型存放在detection目录,模型文件中需要包含于示例对应的文件,包括
model
, params
:模型文件(paddlepaddle版本不同,训练出的模型名称或有差别,只要在config.json中对应上即可)
label_list.txt
:模型标签文件
img
:放置预测图片的文件夹
config.json
:配置文件,需要基于示例给出的结构,更改为自训练模型的参数
修改模型配置文件
config.json文件内容如下:
{
"network_type":"YOLOV3",
"model_file_name":"model",
"params_file_name":"params",
"labels_file_name":"label_list.txt",
"format":"RGB",
"input_width":608,
"input_height":608,
"mean":[123.675, 116.28, 103.53],
"scale":[0.0171248, 0.017507, 0.0174292],
"threshold":0.3
}
注意:config.json文件内的mean、scale计算方式与训练模型时的计算方式可能不同,一般有如下两种方式:
例如R为一张图片中一个像素点的R通道的值
①(R / 255 – mean‘) / std’
②(R – mean) * scale(EdgeBoard处理方式)
如果训练模型的mean和std为第一种计算方式,就需要通过如下运算,计算为Edgeboard的处理方式。
edgeboard中的mean值 = mean‘ * 255
Edgeboard中的scale值 = 1 / ( 255 * std’ )
修改系统配置文件
系统配置文件存放于/home/root/workspace/PaddleLiteDemo/configs
内,根据模型属性修改对应的配置文件,比如yolov3模型,修改image.json文件中模型文件路径以及预测图片路径。
{
"model_config": "../../res/models/detection/yolov3",
"input": {
"type": "image",
"path": "../../res/models/detection/yolov3/img/screw.jpg"
},
"debug": {
"display_enable": true,
"predict_log_enable": true,
"predict_time_log_enable": false
}
}
具体参数说明请参见1.8.0版本模型预测示例。
执行程序
模型配置文件和系统配置文件修改完成后,运行程序
cd /home/root/workspace/PaddleLiteDemo/C++/build
./detection ../../configs/detection/yolov3/image.json
基于EdgeBoard1.5.1示例版本模型部署
部署步骤:
1、将模型上传至系统自带的sample的不同示例工程中;
EdgeBoard支持图像分类和物体检测两类模型
1)如果是图像分类模型,模型需上传到/home/root/workspace/PaddleLiteSample/classification/models
目录,
2)如果是物体检测模型,模型需上传到/home/root/workspace/PaddleLiteSample/detection/models
目录。
2、模型结构和参数的名称与sample中的模型名称须对应
EdgeBoards示例工程中modes目录的模型文件名称为model和params,如果训练出的模型不一致,需改下模型名称,可以对模型直接重命名,或者在保存模型的API fluid.io.save_inference_model中指定model_filename和params_filename为model和params。
3、修改config文件
- 指定model路径
- 修改数据预处理后的尺寸大小
- 指定预测图片路径
-
修改mean和scale值,图像数据归一化方式有:
举例:R为一张图片中一个像素点的R通道的值
①(R / 255 – mean) / std
②(R – mean’) * scale(EdgeBoard处理方式)
mean’= mean * 255 scale = 1 / ( 255 * std )
4、上传预测图片
上传预测图片到config文件指定预测图片路径中,可使用ftp或者samba工具进行文件上传操作
5、运行模型
参考sample运行模型方式,同样运行自己的模型