树莓派4B上配置OpenVINO

在嵌入式设备上一般只进行模型的推断,即在PC上可以先训练好模型,然后拿到嵌入式设备上来使用。OpenVINO的使用可参考博主前面的系列博客

OpenVINO使用介绍(一)_竹叶青lvye的博客-CSDN博客_openvino

 OpenVINO示例介绍_竹叶青lvye的博客-CSDN博客

Intel Movidius Neural Computer Stick 2使用(PC-Based Ubuntu)_竹叶青lvye的博客-CSDN博客

 博主这边介绍下如何在树莓派上配置OpenVINO,并结合Intel Movidius Neural Computer Stick 2来进行加速。

一.树莓派上配置OpenVINO

可参考官网

Install OpenVINO™ toolkit for Raspbian OS — OpenVINO™ documentationhttps://docs.openvino.ai/latest/openvino_docs_install_guides_installing_openvino_raspbian.html博主这里采用源码编译方式来进行编译

BuildingForRaspbianStretchOS · openvinotoolkit/openvino Wiki · GitHub

 1. 下载资源

git clone https://github.com/openvinotoolkit/openvino

 博主下载的资源在此处

2.初始化下载目录里的子模块(submodule)

cd到openvino目录下后,终端执行如下命令

git submodule update --init --recursive

此会自动下载一些文件下来,注意过程中由于网络问题,可能下不全,可手动去下载。或者下面cmake中编译时会提示哪些文件不全,这样就可以通过报错信息有针对的去手动下载文件。比如如下红框内蓝色的文件夹。注意这些个子模块下面也有一些需要手动下载的。

也可以从.gitmodules文件中看出需要额外下载的子模块

3.编译和安装

注:这边下面编译指定的python版本还是博主此篇博客时的版本

树莓派4B安装pytorch_竹叶青lvye的博客-CSDN博客_树莓派4b安装pytorch

在目录下新建一个build文件夹,cd进去后,执行如下命令语句

cmake -DCMAKE_BUILD_TYPE=Release -DTHREADING=SEQ -DENABLE_PYTHON=ON -DPYTHON_EXECUTABLE=/home/pi/python3.7/bin/python3.7 -DPYTHON_LIBRARY=/home/pi/python3.7/lib/libpython3.7m.so -DPYTHON_INCLUDE_DIR=/home/pi/python3.7/include/python3.7m -DCMAKE_INSTALL_PREFIX=/home/pi/openvino/install ..

 cmake成功会出现如下信息:

 再执行make命令,此过程大概会执行1到2个小时,耐心等待

最后再执行下语句进行安装

sudo make install

因为博主在前面编译的时候,指定了安装路径,所以都装到了此处

完毕后,在~./bashrc中添加如下3个环境变量(结合自己的路径)

source /home/pi/openvino/install/setupvars.sh
export LD_LIBRARY_PATH=/home/pi/opencv-3.4.4/install/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/home/pi/openvino/install/runtime/lib/armv71${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

 

 

二.测试

1. 将前面install文件夹下里的openvino文件夹拷贝到对应版本的python的site-packages下(结合自己的路径)

2. cd到如下目录,执行如下命令安装NCS 2驱动(结合自己的了路径)

./install_NCS_udev_rules.sh

3. 这边使用博客中的openvino IR模型

Intel Movidius Neural Computer Stick 2使用(PC-Based Ubuntu)_竹叶青lvye的博客-CSDN博客

代码如下:

import numpy
import openvino.runtime as ov
import numpy as np
import time
from PIL import Image
from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import openvino.runtime as ov

core = ov.Core()
for device in core.available_devices:
    print(device)

core = ov.Core()
model = core.read_model("./saved_model.xml")
model.reshape([1, 224, 224, 3])

compiled_model = core.compile_model(model, "MYRIAD")
infer_request = compiled_model.create_infer_request()

img = image.load_img('2008_002682.jpg', target_size=(224, 224))
img = image.img_to_array(img)
img = preprocess_input(img)
img_np = np.expand_dims(img, axis=0)

# Create tensor from external memory
input_tensor = ov.Tensor(array=img_np, shared_memory=False)

infer_request.set_input_tensor(input_tensor)

t_model = time.perf_counter()
infer_request.start_async()
infer_request.wait()
print(f'do inference cost:{time.perf_counter() - t_model:.8f}s')

# Get output tensor for model with one output
output = infer_request.get_output_tensor()
output_buffer = output.data

# output_buffer[] - accessing output tensor data
print(output_buffer.shape)
print('Predicted:', decode_predictions(output_buffer, top=5)[0])

print("ok")

别忘了在树莓派上插上NCS2

运行结果如下: 

/home/pi/PythonProject/openvinoTest/bin/python3 /home/pi/PycharmProjects/pythonProject/test_openvino.py
MYRIAD
do inference cost:0.05369431s
(1, 1000)
Predicted: [('n02123597', 'Siamese_cat', 0.16870117), ('n02108915', 'French_bulldog', 0.14099121), ('n04409515', 'tennis_ball', 0.08093262), ('n02095314', 'wire-haired_fox_terrier', 0.05609131), ('n02123045', 'tabby', 0.049865723)]
ok

Process finished with exit code 0

 对比博客中的结果可看到

树莓派4B安装Tensorflow2.4.0_竹叶青lvye的博客-CSDN博客_树莓派安装tensorflow

 预测结果是一致的,速度从23s提升至了0.05s,可以看到用了神经加速棒后,提速是很明显的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹叶青lvye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值