Bladeren bron

add markdown

Channingss 5 jaren geleden
bovenliggende
commit
8bf14137a7
4 gewijzigde bestanden met toevoegingen van 198 en 0 verwijderingen
  1. 1 0
      deploy/README.md
  2. 33 0
      docs/deploy/deploy.md
  3. 107 0
      docs/deploy/deploy_openvino.md
  4. 57 0
      docs/deploy/encryption.md

+ 1 - 0
deploy/README.md

@@ -3,3 +3,4 @@
 本目录为PaddleX模型部署代码, 编译和使用的教程参考:
 
 - [C++部署文档](../docs/deploy/deploy.md#C部署)
+- [OpenVINO部署文档](../docs/deploy/deploy.md#openvino部署)

+ 33 - 0
docs/deploy/deploy.md

@@ -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)
+
 ### 预测性能对比
 
 #### 测试环境

+ 107 - 0
docs/deploy/deploy_openvino.md

@@ -0,0 +1,107 @@
+# 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 -
+```
+
+

+ 57 - 0
docs/deploy/encryption.md

@@ -0,0 +1,57 @@
+# 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++加密部署
+
+