OpenVINO⼊门笔记
⼀、简介
使⽤英特尔®分布式OpenVINO™⼯具包开发模拟⼈类视觉的应⽤程序和解决⽅案。该⼯具包基于卷积神经⽹络(CNN),可扩展英特尔®硬件(包括加速器)的⼯作负载,并最⼤限度地提⾼性能。
在边缘启⽤基于CNN的深度学习推理
⽀持跨计算机视觉加速器的异构执⾏ - CPU,GPU,英特尔®Movidius™神经计算棒和FPGA - 使⽤通⽤API
通过功能库和预优化内核加快产品上市速度
包括针对计算机视觉标准的优化调⽤,包括OpenCV *,OpenCL™和OpenVX *
OpenVINO™⼯具包是⼀个开源产品。它包含⽤于英特尔®处理器(⽤于CPU),英特尔®处理器显卡(⽤于GPU)和异构⽀持的深度学习部署⼯具包(DLDT)。它包括⼀个带有预训练模型,样本和演⽰的开放模型库。
OpenVINO™⼯具包:01.org/openvinotoolkit
⼆、开始(基于Ubuntu 16.04LTS,64位)
$ tar -xvzf l_openvino_toolkit_p_<version>.tgz
$ cd l_openvino_toolkit_p_2019.1.144/
# 如果您安装了以前版本的Intel Distribution of OpenVINO⼯具包,请重命名或删除这两个⽬录:
# /home/<user>/inference_engine_samples
# /home/<user>/openvino_models
$ sudo ./install_GUI.sh
# 安装很简单,⼀直下⼀步就⾏。
1.安装外部软件依赖项
这些依赖关系是必需的:
英特尔优化的OpenCV
深度学习推理引擎
深度学习模型优化⼯具
# 切换到install_dependencies⽬录:
$ cd /opt/intel/openvino/install_dependencies/
# 运⾏脚本以下载并安装外部软件依赖项:
$ sudo -E ./install_openvino_dependencies.sh
2.设置环境变量
# 在编译和运⾏OpenVINO™应⽤程序之前,必须更新多个环境变量。运⾏以下脚本以临时设置环境变量:
$ source /opt/intel/openvino/bin/setupvars.sh
# 通过以下⽅式来永久⽣效:
$ gedit ~/.bashrc
# 在⽂件最后⼀⾏添加:
source /opt/intel/openvino/bin/setupvars.sh
# 保存并关闭⽂件
3.配置模型优化⼯具
Model Optimizer是⼀个基于Python *的命令⾏⼯具,⽤于从流⾏的深度学习框架(如Caffe *,TensorFlow *,Apache MXNet
*,ONNX *和Kaldi *)导⼊经过训练的模型。
Model Optimizer是OpenLinkO⼯具包的Intel Distribution的关键组件。如果不通过模型优化器运⾏模型,则⽆法对训练的模型进⾏推理。当您通过模型优化器运⾏预先训练的模型时,您的输出是⽹络的
中间表⽰(IR)。Intermediate Representation是⼀对描述整个模型的⽂件:
.xml:描述⽹络拓扑
.bin:包含权重和偏差⼆进制数据
同时配置所有⽀持的框架
$ cd /opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites
$ sudo ./install_prerequisites.sh
[WARNING] All Model Optimizer dependencies are installed globally.
[WARNING] If you want to keep Model Optimizer in separate sandbox
[WARNING] run install_prerequisites.sh venv {caffe|tf|mxnet|kaldi|onnx}
也可以单独配置每个框架
#For Caffe:
#sudo ./install_prerequisites_caffe.sh
#For TensorFlow:
#sudo ./install_prerequisites_tf.sh
#For MXNet:
#sudo ./install_prerequisites_mxnet.sh
#For ONNX:
#sudo ./install_prerequisites_onnx.sh
#For Kaldi:
#sudo ./install_prerequisites_kaldi.sh
4.运⾏验证脚本以验证安装
$ cd /opt/intel/openvino/deployment_tools/demo
# 运⾏图像分类验证脚本:
$ sudo ./demo_squeezenet_download_convert_run.sh
# 遇到⼀些问题:
[ ERROR ]
Detected not satisfied dependencies:
protobuf: installed: 3.7.1, required: 3.6.1
test-generator: not installed, required: 0.1.1
defusedxml: not installed, required: 0.5.0
# 解决:
$ cd /opt/intel/openvino_2019.1.144/deployment_tools/model_optimizer/install_prerequisites/
$ sudo ./install_prerequisites_caffe.sh
# 运⾏ Inference Pipeline 验证脚本:
$ sudo ./demo_security_barrier_camera.sh
5.英特尔®处理器显卡(GPU)的步骤
$ cd /opt/intel/openvino/install_dependencies/
$ sudo -E su
# 安装使⽤GPU插件所需的OpenCL™驱动程序组件的英特尔®图形计算运⾏时,并为英特尔®集成显卡编写⾃定义图层:
$ ./install_NEO_OCL_driver.sh
# 有以下输出,我暂时没管它,⾄少是成功了。
Installation completed successfully.
Next steps:
Add OpenCL users to the video group: 'sudo usermod -a -G video USERNAME'
ubuntu使用入门教程e.g. if the user running OpenCL host applications is foo, run: sudo usermod -a -G video foo
Current user has been already added to the video group
If you use 8th Generation Intel® Core™ processor, you will need to add:
i915.alpha_support=1
to the 4.14 kernel command line, in order to enable OpenCL functionality for this platform.
6.openVINO卸载
$ cd /opt/intel/openvino/openvino_toolkit_uninstaller/
$ sudo ./uninstall_GUI.sh
7.其他
三、Hello World⼈脸检测教程
本教程将从⼀个基本应⽤程序开始,该应⽤程序可以读⼊图像数据并将图像输出到窗⼝。从那⾥开始,
每个步骤都会添加深度学习模型,⽤于处理图像数据并进⾏推理。在最后⼀步中,完整的应⽤程序将能够检测到⾯部,报告⾯部的年龄和性别,并绘制表⽰每个⾯部的头部姿势的3D轴。
因为我安装的是l_openvino_toolkit_p_2019.1.144版本,所以选择分⽀版本2019 R1.0。
# 源码
$ git clone github/intel-iot-devkit/inference-tutorials-generic.git
$ cd inference-tutorials-generic
$ git checkout openvino_toolkit_2019_r1_0
# 切换到⾯部检测教程⽂件夹:
$ cd face_detection_tutorial
# 下载模型
$ source ./scripts/get_models.sh
我先编译并运⾏了step1,保证openCV没有问题:
$ cd ~/projects/inference-tutorials-generic/face_detection_tutorial/step_1/cmake-build-debug
$ cmake ..
$ make -j12
$ ./intel64/Debug/face_detection_tutorial
# 注:源⽂件内需要修改 FLAGS_i 参数,修改为⾃⼰的摄像头⽹络地址。
然后⼜尝试编译运⾏step2,但运⾏起来有问题没能处理:
$ cd ~/projects/inference-tutorials-generic/face_detection_tutorial/step_2/cmake-build-debug
$ cmake ..
$ make -j12
$ ./intel64/Debug/face_detection_tutorial
# 注:源⽂件内需要修改 FLAGS_i 参数,修改为⾃⼰的摄像头⽹络地址。
#    源⽂件内需要修改 FLAGS_m 参数,修改为模型⽂件⽬录。
#报错:
[ ERROR ] Cannot make shared blob! The blob type cannot be used to store objects of current precision
/opt/intel/openvino_2019.1.144/deployment_tools/inference_engine/include/details/ie_exception_conversion.hpp:71
#思考:可能和依赖的某个程序有关,可能是openCV,在CMake的时候注意openCV的依赖路径。
后来使⽤的是Github上的⼀个openVINO的demo来试的。