Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
8bf14137
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8bf14137
编写于
5月 16, 2020
作者:
C
Channingss
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add markdown
上级
4a00fa70
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
198 addition
and
0 deletion
+198
-0
deploy/README.md
deploy/README.md
+1
-0
docs/deploy/deploy.md
docs/deploy/deploy.md
+33
-0
docs/deploy/deploy_openvino.md
docs/deploy/deploy_openvino.md
+107
-0
docs/deploy/encryption.md
docs/deploy/encryption.md
+57
-0
未找到文件。
deploy/README.md
浏览文件 @
8bf14137
...
...
@@ -3,3 +3,4 @@
本目录为PaddleX模型部署代码, 编译和使用的教程参考:
-
[
C++部署文档
](
../docs/deploy/deploy.md#C部署
)
-
[
OpenVINO部署文档
](
../docs/deploy/deploy.md#openvino部署
)
docs/deploy/deploy.md
浏览文件 @
8bf14137
...
...
@@ -39,6 +39,39 @@ C++部署方案位于目录`deploy/cpp/`下,且独立于PaddleX其他模块。
-
Linux平台:
[
linux
](
deploy_cpp_linux.md
)
-
window平台:
[
windows
](
deploy_cpp_win_vs2019.md
)
### OpenVINO部署demo
OpenVINO部署demo位于目录
`deploy/openvino/`
下,且独立于PaddleX其他模块,该demo目前支持在 Linux 完成编译和部署运行。目前PaddleX到OpenVINO的部署流程如下:
graph LR
PaddleX --> ONNX --> OpenVINO IR --> OpenVINO Inference Engine
#### step1
PaddleX输出ONNX模型方法如下:
```
paddlex --export_onnx --model_dir=./xiaoduxiong_epoch_12 --save_dir=./onnx_model
```
|目前支持的模型|
|-----|
|ResNet18|
|ResNet34|
|ResNet50|
|ResNet101|
|ResNet50_vd|
|ResNet101_vd|
|ResNet50_vd_ssld|
|ResNet101_vd_ssld
|DarkNet53|
|MobileNetV1|
|MobileNetV2|
|DenseNet121|
|DenseNet161|
|DenseNet201|
得到ONNX模型后,OpenVINO的部署参考:
[
OpenVINO部署
](
deploy_openvino.md
)
### 预测性能对比
#### 测试环境
...
...
docs/deploy/deploy_openvino.md
0 → 100644
浏览文件 @
8bf14137
# OpenVINO 分类demo编译
## 说明
本文档在
`Ubuntu`
使用
`GCC 4.8.5`
进行了验证,如果需要使用更多G++版本和平台的OpenVino编译,请参考:
[
OpenVINO
](
https://github.com/openvinotoolkit/openvino/blob/2020/build-instruction.md
)
。
## 验证环境
*
Ubuntu
* 16.04 (64-bit) with GCC*
4.8.5
*
CMake 3.12
*
Python 2.7 or higher
请确保系统已经安装好上述基本软件,
**下面所有示例以工作目录 `/root/projects/`演示**
。
`git clone https://github.com/PaddlePaddle/PaddleX.git`
**说明**
:其中
`C++`
预测代码在
`/root/projects/PaddleX/deploy/openvino`
目录,该目录不依赖任何
`PaddleX`
下其他目录。
### Step1: 软件依赖
-
openvino:
[
编译文档
](
https://github.com/openvinotoolkit/openvino/blob/2020/build-instruction.md#build-steps
)
-
gflags:
[
编译文档
](
https://gflags.github.io/gflags/#download
)
-
opencv:
[
编译文档
](
https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
)
说明:/root/projects/PaddleX/deploy/openvino/scripts/bootstrap.sh提供了预编译版本下载,也可自行编译。
-
ngraph:
说明:openvino编译的过程中会生成ngraph的lib文件,位于{openvino根目录}/bin/intel64/Release/lib/下。
### Step2: 编译demo
编译
`cmake`
的命令在
`scripts/build.sh`
中,请根据Step1中编译软件的实际情况修改主要参数,其主要内容说明如下:
```
# openvino预编译库的路径
OPENVINO_DIR=/path/to/inference_engine/
# gflags预编译库的路径
GFLAGS_DIR=/path/to/gflags
# ngraph lib的路径,编译openvino时通常会生成
NGRAPH_LIB=/path/to/ngraph/lib/
# opencv预编译库的路径, 如果使用自带预编译版本可不修改
OPENCV_DIR=$(pwd)/deps/opencv3gcc4.8/
# 下载自带预编译版本
sh $(pwd)/scripts/bootstrap.sh
rm -rf build
mkdir -p build
cd build
cmake .. \
-DOPENCV_DIR=${OPENCV_DIR} \
-DGFLAGS_DIR=${GFLAGS_DIR} \
-DOPENVINO_DIR=${OPENVINO_DIR} \
-DNGRAPH_LIB=${NGRAPH_LIB}
make
```
修改脚本设置好主要参数后,执行
`build`
脚本:
```
shell
sh ./scripts/build.sh
```
### Step3: 模型转换
将
[](
)生成的onnx文件转换为OpencVINO支持的格式,请参考:[Model
Optimizer文档](https://docs.openvinotoolkit.org/latest/_docs_MO_DG_Deep_Learning_Model_Optimizer_DevGuide.html)
### Step4: 预测
编译成功后,预测demo的可执行程序分别为
`build/classifer`
,其主要命令参数说明如下:
| 参数 | 说明 |
| ---- | ---- |
| --model_dir | Model Optimizer生成的.xml文件路径,请保证Model Optimizer生成的三个文件在同一路径下|
| --image | 要预测的图片文件路径 |
| --image_list | 按行存储图片路径的.txt文件 |
| --device | 运行的平台, 默认值为"CPU" |
## 样例
可使用
[
小度熊识别模型
](
deploy.md#导出inference模型
)
中导出的
`inference_model`
和测试图片进行预测。
`样例一`
:
测试图片
`/path/to/xiaoduxiong.jpeg`
```
shell
./build/classifier
--model_dir
=
/path/to/inference_model
--image
=
/path/to/xiaoduxiong.jpeg
```
`样例二`
:
预测多个图片
`/path/to/image_list.txt`
,image_list.txt内容的格式如下:
```
/path/to/images/xiaoduxiong1.jpeg
/path/to/images/xiaoduxiong2.jpeg
...
/path/to/images/xiaoduxiongn.jpeg
```
```
shell
./build/classifier
--model_dir
=
/path/to/models/inference_model
--image_list
=
/root/projects/images_list.txt -
```
docs/deploy/encryption.md
0 → 100644
浏览文件 @
8bf14137
# Paddle模型加密方案
飞桨团队推出模型加密方案,使用业内主流的AES加密技术对最终模型进行加密。飞桨用户可以通过PaddleX导出模型后,使用该方案对模型进行加密,预测时使用解密SDK进行模型解密并完成推理,大大提升AI应用安全性和开发效率。
## 1. 方案介绍
### 1.1 工具组成
[
链接
](
http://wiki.baidu.com/pages/viewpage.action?pageId=1128566963
)
下载并解压后,目录包含内容为:
```
paddle_model_encrypt
├── include # 头文件:paddle_model_decrypt.h(解密)和paddle_model_encrypt.h(加密)
|
├── lib # libpmodel-encrypt.so和libpmodel-decrypt.so动态库
|
└── tool # paddle_encrypt_tool
```
### 1.2 二进制工具
#### 1.2.1 生成密钥
产生随机密钥信息(用于AES加解密使用)(32字节key + 16字节iv, 注意这里产生的key是经过base64编码后的,这样可以扩充选取key的范围)
```
paddle_encrypt_tool -g
```
#### 1.2.1 文件加密
```
paddle_encrypt_tool -e -key keydata -infile infile -outfile outfile
```
#### 1.3 SDK
```
// 加密API
int paddle_encrypt_model(const char* keydata, const char* infile, const char* outfile);
// 加载加密模型API:
int paddle_security_load_model(
paddle::AnalysisConfig *config,
const char *key,
const char *model_file,
const char *param_file);
```
## 2. PaddleX C++加密部署
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录