syyxsxx %!s(int64=5) %!d(string=hai) anos
pai
achega
9468817b85
Modificáronse 2 ficheiros con 92 adicións e 0 borrados
  1. 91 0
      docs/deploy/raspberry/NCS2.md
  2. 1 0
      docs/deploy/raspberry/index.rst

+ 91 - 0
docs/deploy/raspberry/NCS2.md

@@ -0,0 +1,91 @@
+# 神经计算棒2代  
+PaddleX支持在树莓派上插入NCS2(神经计算棒2代)通过OpenVINO部署PadlleX训练出来的分类模型  
+
+**注意**:目前仅支持分类模型、仅支持Armv7hf的树莓派  
+
+## 前置条件  
+* OS: Raspbian OS 
+* PaddleX 1.0+
+* OpenVINO 2020.3+  
+
+- Raspbian OS:树莓派操作操作系统下载与安装请参考[树莓派系统安装与环境配置](./Raspberry.md#硬件环境配置)  
+- PaddleX: PaddleX安装请参考[PaddleX](https://paddlex.readthedocs.io/zh_CN/develop/install.html)  
+- OpenVINO: OpenVINO的安装请参考[OpenVINO-Raspbian](https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_raspbian.html)  
+
+**注意**:安装完OpenVINO后需要初始化OpenVINO环境,并且需要对USB进行配置:请参考  
+  
+```
+#初始化OpenVINO环境
+source /opt/intel/openvino/bin/setupvars.sh
+#将初始化OpenVINO环境的规则加入到bashrc中
+echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
+#配置USB
+sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
+```
+  
+## 部署流程  
+  
+部署流程主要分为模型转换与转换后模型部署两个步骤,下面以MobilnetV2模型为例,介绍如何将PaddleX训练好的模型通过OpenVINO部署到插入NCS2的树莓派  
+教程的示例项目训练MobilenetV2模型,请参考[PaddleX模型训练示例](https://aistudio.baidu.com/aistudio/projectdetail/439860)  
+
+## 模型转换
+  
+模型转换指的是将PaddleX训练出来的Paddle模型转换为OpenVINO的IR,对于模型转换教程可以参考[OpenVINO模型转换](../openvino/export_openvino_model.md)  
+
+**注意**:树莓派上面安装的OpenVINO是不带Model Optmizier模块的,不能在上面进行模型转换,请在Host下载与树莓派一直的OpenVINO版本,然后进行模型转换。  
+
+以转换训练好的MobileNetV2为示例,请参考以下命令:
+```
+#安装paddlex
+pip install paddlex
+
+#下载PaddleX代码
+git clone https://github.com/PaddlePaddle/PaddleX.git
+
+#进入模型转换脚本文件夹
+cd PaddleX/deploy/openvino/python
+
+#导出inference模型,执行命令前务必将训练好的MobileNetV2模型拷贝到当前目录,并命名为MobileNetV2
+paddlex --export_inference --model_dir ./MobileNetV2 --save_dir ./MobileNetV2 --fixed_input_shape [224,224]
+#完成导出后会在MobileNetV2文件夹下面出现,__model__、__params__、model.yml三个文件
+
+#转换Paddle inference模型到OpenVINO IR
+python converter.py --model_dir ./MobileNetV2 --save_dir ./MobileNetV2 --fixed_input_shape [224,224] --data_type FP16
+#转换成功后会在MobileNetV2目录下面出现 paddle2onnx.xml、paddle2onnx.mapping、paddle2onnx.bin三个文件
+```
+
+## 模型部署
+
+PaddleX支持Python和C++两种方式在树莓派上通过NCS2部署:  
+- C++:C++部署教程请参考[OpenVINO_Raspberry](../openvino/linux.md)
+- python:python部署教程请参考[OpenVINO_python](../openvino/python.md)  
+
+以转换好的MobileNetV2模型为示例  
+
+**准备工作**
+```
+#在树莓派上下载PaddleX代码
+git clone https://github.com/PaddlePaddle/PaddleX.git
+#进入OpenVINO部署代码
+cd PaddleX/deploy/openvino
+#将MobileNetV2转好的OpenVINO IR以及测试图片拷贝到树莓派上面,并以及MobileNetV2文件夹放到OpenVINO部署的代码的目录
+```
+  
+**C++部署**
+```
+#修改编译文件script/build.sh,将ARCH参数修改为armv7
+vim script/build.sh
+#编译代码
+sh script/build.sh
+#OpenVINO部署
+./build/classfier --model_dir MobileNetV2/paddle2onnx.xml --image [测试图片路径] --device MYRIAD --cfg_file MobileNetV2/model.yml --save_dir output
+```
+执行成功后会在output文件夹面保存测试图片的可视化结果  
+
+**python部署**
+```
+进入python部署代码目录
+cd python
+#python部署
+python demo.py --model_dir ../MobileNetV2/paddle2onnx.xml --img [测试图片路径] --device MYRIAD --cfg_file MobileNetV2/model.yml
+```

+ 1 - 0
docs/deploy/raspberry/index.rst

@@ -9,3 +9,4 @@
    Raspberry.md
    python.md
    export_nb_model.md 
+   NCS2.md