Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
fa6b0730
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看板
提交
fa6b0730
编写于
8月 14, 2020
作者:
S
syyxsxx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update openvino doc
上级
121a9f0f
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
378 addition
and
2 deletion
+378
-2
docs/deploy/openvino/export_openvino_model.md
docs/deploy/openvino/export_openvino_model.md
+37
-0
docs/deploy/openvino/index.rst
docs/deploy/openvino/index.rst
+3
-1
docs/deploy/openvino/intel_movidius.md
docs/deploy/openvino/intel_movidius.md
+0
-1
docs/deploy/openvino/introduction.md
docs/deploy/openvino/introduction.md
+29
-0
docs/deploy/openvino/linux.md
docs/deploy/openvino/linux.md
+147
-0
docs/deploy/openvino/python.md
docs/deploy/openvino/python.md
+51
-0
docs/deploy/openvino/windows.md
docs/deploy/openvino/windows.md
+111
-0
未找到文件。
docs/deploy/openvino/export_openvino_model.md
0 → 100644
浏览文件 @
fa6b0730
# OpenVINO模型转换
将Paddle模型转换为OpenVINO的Inference Engine
## 环境依赖
*
ONNX 1.5.0
*
PaddleX 1.0+
*
OpenVINO 2020.4
**说明**
:PaddleX安装请参考
[
PaddleX
](
https://paddlex.readthedocs.io/zh_CN/latest/install.html
)
, OpenVINO安装请参考
[
OpenVINO
](
https://docs.openvinotoolkit.org/latest/index.html
)
,ONNX请安装1.5.0版本否则会出现转模型错误。
请确保系统已经安装好上述基本软件,
**下面所有示例以工作目录 `/root/projects/`演示**
。
## 导出inference模型
paddle模型转openvino之前需要先把paddle模型导出为inference格式模型,导出的模型将包括__model__、__params__和model.yml三个文件名。导出命令如下
```
paddlex --export_inference --model_dir=/path/to/paddle_model --save_dir=./inference_model --fixed_input_shape=[w,h]
```
## 导出OpenVINO模型
```
cd /root/projects/python
python convertor.py --model_dir /path/to/inference_model --save_dir /path/to/openvino_model --fixed_input_shape [w,h]
```
**转换成功后会在save_dir下出现后缀名为.xml、.bin、.mapping三个文件**
转换参数说明如下:
| 参数 | 说明 |
| ---- | ---- |
| --model_dir | Paddle模型路径,请确保__model__,
\_\_
params__model.yml在同一个目录|
| --save_dir | openvino模型保存路径 |
| --fixed_input_shape | 模型输入的[W,H] |
| --data type(option) | FP32、FP16,默认为FP32,VPU下的IR需要为FP16 |
docs/deploy/openvino/index.rst
浏览文件 @
fa6b0730
...
...
@@ -6,6 +6,8 @@ OpenVINO部署
:maxdepth: 2
:caption: 文档目录:
introduction.md
windows.md
linux.md
intel_movidius.md
python.md
export_openvino_model.md
docs/deploy/openvino/intel_movidius.md
已删除
100644 → 0
浏览文件 @
121a9f0f
# Intel计算棒
docs/deploy/openvino/introduction.md
0 → 100644
浏览文件 @
fa6b0730
# OpenVINO部署简介
PaddleX支持将训练好的paddle模型通过openvino实现模型的预测加速,OpenVINO详细资料与安装流程请参考
[
OpenVINO
](
https://docs.openvinotoolkit.org/latest/index.html
)
## 部署支持情况
下表提供了PaddleX在不同环境下对使用OpenVINO加速支持情况
|硬件平台|Linux|Windows|Raspbian OS|c++|python |分类|检测|分割|
| ----| ---- | ---- | ----| ---- | ---- |---- | ---- |---- |---- | ---- |
|CPU|支持|支持|不支持|支持|支持|支持|支持|支持|
|VPU|支持|支持|支持|支持|支持|支持|不支持|不支持|
其中Raspbian OS为树莓派操作系统。
## 部署流程
**PaddleX到OpenVINO的部署流程可以分为如下两步**
:
*
**模型转换**
:将paddle的模型转换为openvino的Inference Engine
*
**预测部署**
:使用Inference Engine进行预测
## 模型转换
**模型转换请参考文档[模型转换](./export_openvino_model.md)**
**说明**
:由于不同软硬件平台下OpenVINO模型转换方法一致,后续文档中不再赘述。
## 预测部署
由于不同软硬下部署OpenVINO实现预测的方式不完全一致,具体请参考:
**[Linux](./linux.md)**
:介绍了PaddleX在操作系统为Linux或者Raspbian OS,编程语言为C++,硬件平台为
CPU或者VPU的情况下使用OpenVINO进行预测加速
**[Windows](./windows.md)**
:介绍了PaddleX在操作系统为Window,编程语言为C++,硬件平台为CPU或者VPU的情况下使用OpenVINO进行预测加速
**[python](./windows.md)**
:介绍了PaddleX在python下使用OpenVINO进行预测加速
\ No newline at end of file
docs/deploy/openvino/linux.md
浏览文件 @
fa6b0730
# Linux平台
## 前置条件
*
OS: Ubuntu、Raspbian OS
*
GCC
*
5.4.0
*
CMake 3.0+
*
PaddleX 1.0+
*
OpenVINO 2020.4
*
硬件平台:CPU、VPU
**说明**
:PaddleX安装请参考
[
PaddleX
](
https://paddlex.readthedocs.io/zh_CN/latest/install.html
)
, OpenVINO安装请参考
[
OpenVINO-Linux
](
https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html
)
或者
[
OpenVINO-Raspbian
](
https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_raspbian.html
)
请确保系统已经安装好上述基本软件,并配置好相应环境,
**下面所有示例以工作目录 `/root/projects/`演示**
。
## 预测部署
文档提供了c++下预测部署的方法,如果需要在python下预测部署请参考
[
python预测部署
](
./python.md
)
### Step1 下载PaddleX预测代码
```
mkdir -p /root/projects
cd /root/projects
git clone https://github.com/PaddlePaddle/PaddleX.git
```
**说明**
:其中C++预测代码在PaddleX
\d
eploy
\o
penvino 目录,该目录不依赖任何PaddleX下其他目录。
### Step2 软件依赖
提供了依赖软件预编包或者一键编译,用户不需要单独下载或编译第三方依赖软件。若需要自行编译第三方依赖软件请参考:
-
gflags:编译请参考
[
编译文档
](
https://gflags.github.io/gflags/#download
)
-
glog:编译请参考
[
编译文档
](
https://github.com/google/glog
)
-
opencv: 编译请参考
[
编译文档
](
https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
)
### Step3: 编译
编译
`cmake`
的命令在
`scripts/build.sh`
中,若在树莓派(Raspbian OS)上编译请修改ARCH参数x86为armv7,若自行编译第三方依赖软件请根据Step1中编译软件的实际情况修改主要参数,其主要内容说明如下:
```
# openvino预编译库的路径
OPENVINO_DIR=$INTEL_OPENVINO_DIR/inference_engine
# gflags预编译库的路径
GFLAGS_DIR=$(pwd)/deps/gflags
# glog预编译库的路径
GLOG_DIR=$(pwd)/deps/glog
# ngraph lib预编译库的路径
NGRAPH_LIB=$INTEL_OPENVINO_DIR/deployment_tools/ngraph/lib
# opencv预编译库的路径
OPENCV_DIR=$(pwd)/deps/opencv/
#cpu架构(x86或armv7)
ARCH=x86
```
执行
`build`
脚本:
```
shell
sh ./scripts/build.sh
```
### Step4: 预测
编译成功后,分类任务的预测可执行程序为
`classifier`
,分割任务的预测可执行程序为
`segmenter`
,检测任务的预测可执行程序为
`detector`
,其主要命令参数说明如下:
| 参数 | 说明 |
| ---- | ---- |
| --model_dir | 模型转换生成的.xml文件路径,请保证模型转换生成的三个文件在同一路径下|
| --image | 要预测的图片文件路径 |
| --image_list | 按行存储图片路径的.txt文件 |
| --device | 运行的平台,可选项{"CPU","MYRIAD"},默认值为"CPU",如在VPU上请使用"MYRIAD"|
| --cfg_dir | PaddleX model 的.yml配置文件 |
| --save_dir | 可视化结果图片保存地址,仅适用于检测和分割任务,默认值为" "既不保存可视化结果 |
### 样例
`样例一`
:
linux系统在CPU下做单张图片的分类任务预测
测试图片
`/path/to/test_img.jpeg`
```
shell
./build/classifier
--model_dir
=
/path/to/openvino_model
--image
=
/path/to/test_img.jpeg
--cfg_dir
=
/path/to/PadlleX_model.yml
```
`样例二`
:
linux系统在CPU下做多张图片的分割任务预测,并保存预测可视化结果
预测多个图片
`/path/to/image_list.txt`
,image_list.txt内容的格式如下:
```
/path/to/images/test_img1.jpeg
/path/to/images/test_img2.jpeg
...
/path/to/images/test_imgn.jpeg
```
```
shell
./build/segmenter
--model_dir
=
/path/to/models/openvino_model
--image_list
=
/root/projects/images_list.txt
--cfg_dir
=
/path/to/PadlleX_model.yml
--save_dir
./output
```
`样例三`
:
树莓派(Raspbian OS)在VPU下做单张图片分类任务预测
测试图片
`/path/to/test_img.jpeg`
```
shell
./build/classifier
--model_dir
=
/path/to/openvino_model
--image
=
/path/to/test_img.jpeg
--cfg_dir
=
/path/to/PadlleX_model.yml
--device
=
MYRIAD
```
## 性能测试
`测试一`
:
在服务器CPU下测试了OpenVINO对PaddleX部署的加速性能:
-
cpu:Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
-
openvino: 2020.4
-
paddleX:采用paddle预测库(1.8),打开mkldnn加速,打开多线程。
-
模型来自paddleX tutorials,Batch Size均为1,耗时单位为ms/image,只计算模型运行时间,不包括数据的预处理和后处理,20张图片warmup,100张图片测试性能。
|模型| paddleX| openvino | 图片输入大小|
|---|---|---|---|
|resnet-50 | 20.56 | 16.12 | 224
*
224 |
|mobilenet-V2 | 5.16 | 2.31 |224
*
224|
|hrnet | None | 63.35 |512
*
512|
|unet | 276.40 | 211.49 |512
*
512|
|deeplabv3 | None | 25.91 |512
*
512|
|yolov3-mobilnetv1 |76.63| 46.26|608
*
608 |
`测试二`
:
在PC机上插入VPU架构的神经计算棒(NCS2),通过Openvino加速。
-
cpu:Intel(R) Core(TM) i5-4300U 1.90GHz
-
vpu:Movidius Neural Compute Stick2
-
openvino: 2020.4
-
模型来自paddleX tutorials,Batch Size均为1,耗时单位为ms/image,只计算模型运行时间,不包括数据的预处理和后处理,20张图片warmup,100张图片测试性能。
|模型|openvino|输入图片|
|---|---|---|
|mobilenetV2|24.00|224
*
224|
|resnet50_vd_ssld|58.53|224
*
224|
`测试三`
:
在树莓派3B上插入VPU架构的神经计算棒(NCS2),通过Openvino加速。
-
cpu :ARM Cortex-A72 1.2GHz 64bit
-
vpu:Movidius Neural Compute Stick2
-
openvino: 2020.4
-
模型来自paddleX tutorials,Batch Size均为1,耗时单位为ms/image,只计算模型运行时间,不包括数据的预处理和后处理,20张图片warmup,100张图片测试性能。
|模型|openvino|输入图片大小|
|---|---|---|
|mobilenetV2|43.15|224
*
224|
|resnet50|82.66|224
*
224|
docs/deploy/openvino/python.md
0 → 100644
浏览文件 @
fa6b0730
# Python预测部署
文档说明了在python下基于OpenVINO的预测部署,部署前需要先将paddle模型转换为OpenVINO的Inference Engine,请参考
[
模型转换
](
docs/deploy/openvino/export_openvino_model.md
)
。目前CPU硬件上支持PadlleX的分类、检测、分割模型;VPU上支持PaddleX的分类模型。
## 前置条件
*
Python 3.6+
*
OpenVINO 2020.4
**说明**
:OpenVINO安装请参考
[
OpenVINO
](
https://docs.openvinotoolkit.org/latest/index.html
)
请确保系统已经安装好上述基本软件,
**下面所有示例以工作目录 `/root/projects/`演示**
。
## 预测部署
运行/root/projects/PaddleX/deploy/openvino/python目录下demo.py文件可以进行预测,其命令参数说明如下:
| 参数 | 说明 |
| ---- | ---- |
| --model_dir | 模型转换生成的.xml文件路径,请保证模型转换生成的三个文件在同一路径下|
| --img | 要预测的图片文件路径 |
| --image_list | 按行存储图片路径的.txt文件 |
| --device | 运行的平台, 默认值为"CPU" |
| --cfg_dir | PaddleX model 的.yml配置文件 |
### 样例
`样例一`
:
测试图片
`/path/to/test_img.jpeg`
```
cd /root/projects/python
python demo.py --model_dir /path/to/openvino_model --img /path/to/test_img.jpeg --cfg_dir /path/to/PadlleX_model.yml
```
样例二
`:
预测多个图片`
/path/to/image_list.txt
`,image_list.txt内容的格式如下:
```
/path/to/images/test_img1.jpeg
/path/to/images/test_img2.jpeg
...
/path/to/images/test_imgn.jpeg
```
```
cd /root/projects/python
python demo.py --model_dir /path/to/models/openvino_model --image_list /root/projects/images_list.txt --cfg_dir=/path/to/PadlleX_model.yml
``
`
docs/deploy/openvino/windows.md
浏览文件 @
fa6b0730
# Windows平台
## 说明
Windows 平台下,我们使用
`Visual Studio 2019 Community`
进行了测试。微软从
`Visual Studio 2017`
开始即支持直接管理
`CMake`
跨平台编译项目,但是直到
`2019`
才提供了稳定和完全的支持,所以如果你想使用CMake管理项目编译构建,我们推荐你使用
`Visual Studio 2019`
环境下构建。
## 前置条件
*
Visual Studio 2019
*
OpenVINO 2020.4
*
CMake 3.0+
**说明**
:PaddleX安装请参考
[
PaddleX
](
https://paddlex.readthedocs.io/zh_CN/latest/install.html
)
, OpenVINO安装请参考
[
OpenVINO-Windows
](
hhttps://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_windows.html
)
**注意**
:安装完OpenVINO后需要手动添加OpenVINO目录到系统环境变量,否则在运行程序时会出现找不到dll的情况。以OpenVINO不改变OpenVINO安装目录情况下为示例,流程如下
-
我的电脑->属性->高级系统设置->环境变量
-
在系统变量中找到Path(如没有,自行创建),并双击编辑
-
新建,将OpenVINO以下路径填入并保存:
`C:\Program File (x86)\IntelSWTools\openvino\inference_engine\bin\intel64\Release`
`C:\Program File (x86)\IntelSWTools\openvino\inference_engine\external\tbb\bin`
`C:\Program File (x86)\IntelSWTools\openvino\deployment_tools\ngraph\lib`
请确保系统已经安装好上述基本软件,并配置好相应环境,
**下面所有示例以工作目录为 `D:\projects`演示。**
## 预测部署
文档提供了c++下预测部署的方法,如果需要在python下预测部署请参考
[
python预测部署
](
./python.md
)
### Step1: 下载PaddleX预测代码
```
shell
d:
mkdir
projects
cd
projects
git clone https://github.com/PaddlePaddle/PaddleX.git
```
**说明**
:其中
`C++`
预测代码在
`PaddleX\deploy\openvino`
目录,该目录不依赖任何
`PaddleX`
下其他目录。
### Step2 软件依赖
提供了依赖软件预编译库,
[
gflas-glog
](
https://bj.bcebos.com/paddlex/deploy/windows/third-parts.zip
)
,
[
opencv
](
https://bj.bcebos.com/paddleseg/deploy/opencv-3.4.6-vc14_vc15.exe
)
,请下载上面两个连接的预编译库。若需要自行下载请参考:
-
gflags:
[
下载地址
](
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/gflags
)
-
glog:
[
编译文档
](
https://github.com/google/glog
)
-
opencv:
[
下载地址
](
https://opencv.org/releases/
)
下载完opencv后需要配置环境变量,如下流程所示
-
我的电脑->属性->高级系统设置->环境变量
-
在系统变量中找到Path(如没有,自行创建),并双击编辑
-
新建,将opencv路径填入并保存,如
`D:\projects\opencv\build\x64\vc14\bin`
### Step3: 使用Visual Studio 2019直接编译CMake
1.
打开Visual Studio 2019 Community,点击
`继续但无需代码`
2.
点击:
`文件`
->
`打开`
->
`CMake`
选择C++预测代码所在路径(例如
`D:\projects\PaddleX\deploy\openvino`
),并打开
`CMakeList.txt`
:
3.
点击:
`项目`
->
`CMake设置`
4.
点击
`浏览`
,分别设置编译选项指定
`OpenVINO`
、
`Gflags`
、
`GLOG`
、
`NGRAPH`
、
`OPENCV`
的路径
| 参数名 | 含义 |
| ---- | ---- |
| OPENCV_DIR | opencv库路径 |
| OPENVINO_DIR | OpenVINO推理库路径,在OpenVINO安装目录下的deployment/inference_engine目录,若未修改OpenVINO默认安装目录可以不用修改 |
| NGRAPH——LIB | OpenVINO的ngraph库路径,在OpenVINO安装目录下的deployment/ngraph/lib目录,若未修改OpenVINO默认安装目录可以不用修改 |
| GFLAGS_DIR | gflags库路径 |
| GLOG_DIR | glog库路径 |
| WITH_STATIC_LIB | 是否静态编译,默认为True |
**设置完成后**
, 点击
`保存并生成CMake缓存以加载变量`
。
5.
点击
`生成`
->
`全部生成`
### Step5: 预测
上述
`Visual Studio 2019`
编译产出的可执行文件在
`out\build\x64-Release`
目录下,打开
`cmd`
,并切换到该目录:
```
D:
cd D:\projects\PaddleX\deploy\cpp\out\build\x64-Release
```
*
编译成功后,图片预测demo的入口程序为
`detector.exe`
,
`classifier.exe`
,
`segmenter.exe`
,用户可根据自己的模型类型选择,其主要命令参数说明如下:
| 参数 | 说明 |
| ---- | ---- |
| --model_dir | 模型转换生成的.xml文件路径,请保证模型转换生成的三个文件在同一路径下|
| --image | 要预测的图片文件路径 |
| --image_list | 按行存储图片路径的.txt文件 |
| --device | 运行的平台,可选项{"CPU","MYRIAD"},默认值为"CPU",如在VPU上请使用"MYRIAD"|
| --cfg_dir | PaddleX model 的.yml配置文件 |
| --save_dir | 可视化结果图片保存地址,仅适用于检测和分割任务,默认值为" "既不保存可视化结果 |
### 样例
`样例一`
:
在CPU下做单张图片的分类任务预测
测试图片
`/path/to/test_img.jpeg`
```
shell
./classifier.exe
--model_dir
=
/path/to/openvino_model
--image
=
/path/to/test_img.jpeg
--cfg_dir
=
/path/to/PadlleX_model.yml
```
`样例二`
:
在CPU下做多张图片的分割任务预测,并保存预测可视化结果
预测多个图片
`/path/to/image_list.txt`
,image_list.txt内容的格式如下:
```
/path/to/images/test_img1.jpeg
/path/to/images/test_img2.jpeg
...
/path/to/images/test_imgn.jpeg
```
```
shell
./segmenter.exe
--model_dir
=
/path/to/models/openvino_model
--image_list
=
/root/projects/images_list.txt
--cfg_dir
=
/path/to/PadlleX_model.yml
--save_dir
./output
```
`样例三`
:
在VPU下做单张图片分类任务预测
测试图片
`/path/to/test_img.jpeg`
```
shell
.classifier.exe
--model_dir
=
/path/to/openvino_model
--image
=
/path/to/test_img.jpeg
--cfg_dir
=
/path/to/PadlleX_model.yml
--device
=
MYRIAD
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录