我自己在Linux系统和树莓派上安装了OpenVINO,所以下面主要讲这两个,其他的话有时间可能会再添加。
一、树莓派安装
对应于不同的平台,OpenVINO的安装包包含的文件也不同,对应于树莓派的安装包里包含的主要有:
- 推断引擎:运行深度学习模型的引擎
- OpenCV:编译好的社区版
- 样例应用:一些简单的示例
注意:这个包里不包含模型优化器,所以我们需要在Linux主机上也安装对应的OpenVINO。同时,树莓派上的包文件也不包含完整的应用样例,如果需要的话还需要独立下载。安装环境如下:
树莓派 | 3B+,ARMv7-A CPU架构 |
Intel神经计算棒 | 二代 |
系统 | Raspbian Buster,32-bit |
python | 3.7 |
TensorFlow | 1.14 |
CMake | 3.7.2 |
首先到这里下载最新版适用于树莓派的OpenVINO安装包,我们这里用的是2019.3.334版本:l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz
在树莓派上,打开终端,假设你把下载好的OpenVINO文件放在了~/Downloads目录下,运行以下命令:
cd ~/Downloads/
创建安装文件夹:
sudo mkdir -p /opt/intel/openvino
解压安装包:
sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz --strip 1 -C /opt/intel/openvino
安装CMake:
sudo apt install cmake
运行以下命令设置临时环境变量:
source /opt/intel/openvino/bin/setupvars.sh
可选上面设置的环境变量在关闭终端之后将会被清除,所以每一次打开终端都需要执行一边,如果你想方便的话,可以设置像下边设置永久环境变量。不过不推荐,如果你还想跑其他的程序的话。
echo "source/opt/intel/openvino/bin/setupvars.sh" && ~/.bashrc
这样的话随便打开一个新的终端都会有以下的提示:
[setupvars.sh] OpenVINO environment initialized
然后添加当前的用户到Linux users 组:
sudo usermod -a -G users "$(whoami)"
然后用户登出再重新登入使其生效,再次运行以下命令激活OpenVINO环境:
source /opt/intel/openvino/bin/setupvars.sh
安装USB运行规则:
sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
现在你就可以把计算棒插到树莓派上编译运行程序了。
下面我们来用一个预先训练好的人脸检测网络样例测试一下安装是否成功,先进入一个拥有写权限的目录,创建Build文件夹,注意命令中的空格。
mkdir build && cd build
构建目标检测示例:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples
双核编译:
make -j2 object_detection_sample_ssd
然后下载模型文件:
wget --no-check-certificate \
https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.bin
wget --no-check-certificate \
https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.xml
然后运行样例,这里需要给出输入人脸图片的路径<path_to_image>。
./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i <path_to_image>
这个应用会输出名为 out_0.bmp的图片文件,上面会显示标注的人脸区域。然后我们可以测试一下OpenCV是否安装成功。在当前目录下创建一个Python文件,命名为openvino_fd_myriad.py,写入以下内容:
import cv2 as cv
# Load the model.
net = cv.dnn.readNet('face-detection-adas-0001.xml',
'face-detection-adas-0001.bin')
# Specify target device.
net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)
# Read an image.
frame = cv.imread('/path/to/image')
if frame is None:
raise Exception('Image not found!')
# Prepare input blob and perform an inference.
blob = cv.dnn.blobFromImage(frame, size=(672, 384), ddepth=cv.CV_8U)
net.setInput(blob)
out = net.forward()
# Draw detected faces on the frame.
for detection in out.reshape(-1, 7):
confidence = float(detection[2])
xmin = int(detection[3] * frame.shape[1])
ymin = int(detection[4] * frame.shape[0])
xmax = int(detection[5] * frame.shape[1])
ymax = int(detection[6] * frame.shape[0])
if confidence > 0.5:
cv.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(0, 255, 0))
# Save the frame to an image file.
cv.imwrite('out.png', frame)
注意修改自己的文件路径,然后在终端运行:
python3 openvino_fd_myriad.py
如果没有发生错误并能正常得到保存的输出图片则说明安装没有问题。
二、Ubuntu安装
由于树莓派上无法使用模型优化器,所以我们必须用另外一台安装Linux或Windows的主机。下面我们尝试在Ubuntu18.04上安装OpenVINO。
Linux版的OpenVINO安装包内容比较完整,包括:
- 模型优化器
- 推断引擎
- OpenCL
- Intel媒体SDK
- OpenCV
- OpenVX
- 样例应用
- 示例
- 其他工具
- 预训练模型文档
安装的系统环境如下:
CPU | Intel Core i5-6500 |
神经计算棒 | 2代 |
操作系统 | Ubuntu18.04 |
首先到这里下载最新版本的OpenVINO Linux安装包,这里我们用的是2019.3.334版本,然后打开终端,进入到安装包放置的路径,这里假设在~/Downloads/路径下。
进入该文件夹解压文件:
tar -xvzf l_openvino_toolkit_p_2019.3.334.tgz
进入解压后的文件夹:
cd l_openvino_toolkit_p_<version>
此外,如果你之前安装过OpenVINO,删掉下面两个文件夹:
/home/<user>/inference_engine_samples_build
/home/<user>/openvino_models
有两种安装的方法,一是图形用户界面安装,二是命令行安装,可以选择两者中的一种。图形界面安装,运行以下命令:
sudo ./install_GUI.sh
命令行安装,运行以下命令:
sudo ./install.sh
这里我们选择图形界面安装,然后你就会看到安装界面,你可以根据提示选择需要安装的组件,默认的安装路径是/opt/intel/openvino_<version>。
然后安装外部的软件包依赖,首先进入install_dependencies目录:
cd /opt/intel/openvino/install_dependencies
运行脚本下载和安装软件:
sudo -E ./install_openvino_dependencies.sh
然后设置临时环境变量:
source /opt/intel/openvino/bin/setupvars.sh
当然,也可以设置永久环境变量,不过这里我们就不这么做了。接着我们需要配置模型优化器:
cd /opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites
因为我们只用Tensorflow,所以只需要安装其需要的依赖就行了:
sudo ./install_prerequisites_tf.sh
这样就会自动安装Tensorflow等一些软件包,最后,我们可以验证以下安装是否成功:
cd /opt/intel/openvino/deployment_tools/demo
./demo_squeezenet_download_convert_run.sh
这个脚本会下载SqueezeNet模型并将其转换为IR文件,并创建Image Classification Sample Async应用并输入示例目录里的car.png图片,模型的输出是top-10类别的标签和概率。
然后我们运行另一个Demo脚本:
./demo_security_barrier_camera.sh
这个脚本会下载另一个应用Security Barrier Camera Demo,将car_1.bmp图片作为输入,并输出识别出的车属性和车牌。
最后为了在计算棒上进行推断,我们添加当前的用户到users组:
sudo usermod -a -G users "$(whoami)"
登出再重新登陆使其生效,然后安装USB规则:
sudo cp /opt/intel/openvino/inference_engine/external/97-myriad-usbboot.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo ldconfig
最后可能需要重启机器使配置生效,至此安装完成。
留言