OpenVINO開發必備知識點——環境搭建

OpenVINO简介

OpenVINO是Intel推出的计算机视觉深度网络加速框架。因为是针对计算机视觉的加速库,而在计算机视觉方面最主流的网络结构是卷积神经网络(Convolutional Neural Network, CNN),因此不严谨的说OpenVINO是CNN的推理加速库。了解AI推理框架的同学们可能对TensorRT, Tengine, NCNN比较熟悉。TensorRT是基于CUDA的Inference框架,主要通过NVidia GPU完成加速。Tengine和NCNN在Arm平台上使用的比较多,主要是通过Arm CPU和Mali GPU完成加速。 而OpenVINO是通过Intel芯片完成加速。

在硬件支持方面,OpenVINO支持全系列的Intel芯片,包括

  • CPU

OpenVINO支持全型号的Intel CPU,但是不同架构、新旧程度不同的芯片加速比不同。

  • 核心显卡

OpenVINO支持Intel核心显卡对CNN进行硬件加速。核心显卡做CNN加速时一个明显的特点是模型加载时间较长,远远长于CPU的模型加载时间,但是加速比还是比较可观的。

  • Movidius神经计算棒

Movidius是Intel在2016年收购的一家AI芯片公司,该公司的主打产品是神经计算棒(Neural Computer Stick),主要用于CNN的加速。神经计算棒提供USB接口,形态类似U盘。神经计算棒不能单独工作,必须与Arm或Intel CPU主机相结合。CPU完成图像的预处理、模型的初始化等操作,神经网络推理部分由神经计算棒来完成。

  • VPU

Intel VPU实际上是采用PCIE接口的Movidius芯片。一个VPU上可能会有多颗movidius芯片,而软件编程的时候如果没有特殊需求是不用关心模型被调度到哪颗芯片上的。因此VPU可以在提供较大吞吐量的同时保持较低的编程难度。

  • FPGA

Intel在2015年收购了FPGA寡头Altera。众所周知FPGA可以为AI提供更高计算密度,与NVidia GPU相比在功耗上有明显的优势。然而FPGA的开发难度较高,基于硬件描述语言(HDL)来开发几乎是不可能的事情,因此Altera, Xilinx也相继推出了高层次编译,支持开发者使用C++来使用FPGA。而OpenVINO对FPGA的支持使得FPGA的使用更加的简单。因为笔者并未使用过FPGA做CNN加速,因此不太了解真实的使用门槛和加速比,也不知道成熟度如何,以及是否有坑。

OpenVINO环境安装

以我的个人经验,做AI开发的同学以Linux平台居多,而其中大多数使用Ubuntu发行版。因此OpenVINO环境安装部分我会以Ubuntu16.04来介绍。

Intel官方的安装文档比较简单、全面,因此采用Windows, CentOS平台的同学可以参考Intel的官方教程。

OpenVINO的版本还是比较重要的,当前OpenVINO的最新版本是2020.1。建议安装最新版本,2020.1之前的版本在使用CPU进行加速时需要额外编译和使用动态库libcpu_extension.so,编程时代码也需要相应的调整,比较麻烦。

Ubuntu下环境部署推荐使用APT包管理工具。

1.首先配置APT源

  • 下载OpenVINO源公钥
<code>

wget

-O GPG-PUB-KEY-INTEL-OPENVINO-

2020

https://apt.repos.intel.com/openvino/2020/GPG-PUB-KEY-INTEL-OPENVINO-2020?elq_cid=5964428&erpm_id=9029385 /<code>

其中,-O是对下载后的文件重命名。可以通过wget --help来查看更多参数。

  • 将公钥加入系统环境中
<code>sudo apt-key 

add

GPG-PUB-KEY-INTEL-OPENVINO

-2020

/<code>

将wget下载的公钥加入apt包的软件密钥中,因为通过apt安装软件包时,apt会通过密钥对软件进行认证。可以通过apt-key list命令来查看系统中安装了哪些密钥。

下图是我系统中已安装的密钥,其中红框是本次安装的OpenVINO的密钥。从截图中可以看出密钥被保存在了/etc/apt/trusted.gpg文件中。


OpenVINO开发必备知识点——环境搭建


  • 在APT源中增加OpenVINO
<code>

echo

"deb https://apt.repos.intel.com/openvino/2020 all main"

> intel-openvino

-2020.

list

; sudo mv intel-openvino

-2020.

list

/etc/apt/sources.

list

.d/intel-openvino

-2020.

list

/<code>
  • 刷新APT缓存
<code>

sudo

apt update/<code>

刷新过apt缓存之后可以通过apt-cache search openvino查看到OpenVINO相关的安装包,如下图所示。


OpenVINO开发必备知识点——环境搭建

其中

1) intel-openvino-dev-ubuntu16-2020.1.023是openvino Ubuntu16.04开发包,包括C++头文件、动态库、python包、模型转换工具、benchmark脚本等,适合于开发环境;

2)intel-openvino-runtime-ubuntu16-2020.1.023是openvino Ubuntu16.04运行时库,也就是只有动态库,有了这些动态库编译好的程序可以直接运行, 适合于量产时部署环境。

2.部署OpenVINO环境

<code>

sudo

apt

install

intel-openvino-dev-ubuntu16-2020

.1

.023

/<code>

命令执行完成后,openvino开发包会被安装在/opt/intel/openvino。通过执行tree -L 2 /opt/intel/openvino -P *.sh可以得到下图所示的openvino安装目录的文件结构,因为文件太多,所以我通过-L 2限制结果只展示两层目录结构,通过-P *.sh限制结果只展示shell脚本文件。


OpenVINO开发必备知识点——环境搭建

  • bin/setupvars.sh是openvino的bash环境初始化脚本,使用openvino前必须将openvino环境加入bash环境:source /opt/intel/openvino/bin/setupvars.sh
  • deployment_tools下存放了开发时所需要的各种工具。inference_engine下存放了完整的C++依赖环境,包括头文件、动态库和cmake文件。
  • model_optimizer 下存放了模型转换所需的脚本。下一篇文章会讲述如何将基于mxnet的人脸特征提取模型转换为OpenVINO模型并进行量化,因此我们需要安装mxnet所有的环境(sudo pip install -r reqirements_mxnet.txt)。大家可以根据自身的情况来选择安装不同的环境。


OpenVINO开发必备知识点——环境搭建

  • opencv 存放了完整的较新版本的OpenCV开发包,可以使用该版本OpenCV代替apt源中的libopencv-dev。与OpenVINO相同,在使用该OpenCV构建C++工程时需要先将OpenCV环境加入bash环境:source /opt/intel/openvino/opencv/setupvars.sh

To be continued...

  • OpenVINO环境重要目录、文件深入介绍(如setupvars.sh, mo.py等)
  • 基于OpenVINO实现人脸特征提取程序开发全流程(模型转换、C++编码、CMake工程构建等)


分享到:


相關文章: