树莓派4B与Intel Movidius计算棒2代实现人脸识别加速实例
树莓派树莓派介绍教程操作换源部分:安装cmakeIntel 神经计算棒环境配置Intel 神经计算棒简介OpenVINO™ 工具套件下载安装OpenVINO™ 工具套件demo测试验证安装是否成功Opencv + python api调用方法:OpenVINO推理简介openvinotoolkit/open_model_zoo本文参考了从零开始搭建树莓派 + intel movidius 神经元计算棒2代深度学习环境
以及树莓派+英特尔神经棒2代部署人工智能应用
树莓派
树莓派介绍
Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI) 是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。
树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。
它是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。 Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。
教程
链接: 树莓派新手无痛开机指南
链接: 树莓派使用视频教程
操作
内存卡操作 软件 WIN32Diskrpi-imager 操作 向空白内存卡写入新的系统系统备份 文件传输 Filezilla 参见Windows10和树莓派互传文件(filezilla) 远程查看 VNC viewer 参见使用teamviewer树莓派远程控制树莓派Teamviewer 参见使用teamviewer树莓派远程控制树莓派以上为了Filezilla及VNCviewer使用方便,最好将树莓派的IP设置为固定IP。 具体方法参见树莓派4B设置静态IP
下载树莓派镜像、烧写镜像、启动配置树莓派参见从零开始搭建树莓派 + intel movidius 神经元计算棒2代深度学习环境
换源部分:
修改sources.list
使用Linux自带的nano编辑器:
sudo nano /etc/apt/sources.list
在打开的文件中,用#注释掉原文件内容,用以下内容取代:
deb http://mirrors.tuna./raspbian/raspbian/ buster main contrib non-free rpideb-src http://mirrors.tuna./raspbian/raspbian/ buster main contrib non-free rpi
ctrl + O 保存, ctrl + X 退出
修改raspi.list
sudo nano /etc/apt/sources.list.d/raspi.list
用#注释掉原文件内容,用以下内容取代:
deb http://mirror.tuna./raspberrypi/ stretch main uideb-src http://mirror.tuna./raspberrypi/ stretch main ui
ctrl + O 保存, ctrl + X 退出.
使用sudo apt-get update
命令,更新软件源列表,若没有错误,表示换源成功。
安装cmake
编译c/c++程序时需要使用cmake
使用以下命令安装cmake
sudo apt-get install cmake
Intel 神经计算棒环境配置
Intel 神经计算棒简介
见Intel的Movidius神经计算棒基本概念梳理
OpenVINO™ 工具套件
见英特尔® 发行版 OpenVINO™ 工具套件概述及OpenVINO™ 工具套件概述
下载安装OpenVINO™ 工具套件
下载OpenVINO toolkit for Raspbian安装包:
使用以下地址从/网站下载树莓派版的openvino工具套件。
/opencv//openvinotoolkit/R3/l_openvino_toolkit_runtime_raspbian_p_.3.334.tgz
经测试,版本的openvino与版本相比有一定改变,以下的配置和编译方式不适用于版。
下载完后包位于Downloads/目录下,打开命令行
cd ~/Downloads/
解压包:
tar -xf l_openvino_toolkit_runtime_raspbian_p_.3.334.tgz
在home/pi目录下新建一个名为intel文件夹:
mkdir ~/intel
将上述解压好的l_openvino_toolkit_runtime_raspbian_p_.3.334文件夹修改名称为openvino_,移动至intel文件夹下。
配置路径与环境
执行以下命令,会自动对setupvars.sh文件做修改
sed -i "s|<INSTALLDIR>|$(pwd)/openvino_|" openvino_/bin/setupvars.sh
配置环境,添加环境变量
sudo nano /home/pi/.bashrc
打开.bashrc文件,再最后一行添加一句:
source /home/pi/intel/openvino_/bin/setupvars.sh
保存,再打开一个新的终端,如果出现:
[setupvars.sh] OpenVINO environment initialized
就表示成功了
将当前Linux用户添加到users组:
sudo usermod -a -G users "$(whoami)"
接下来配置USB规则,执行:
sh ~intel/openvino_/install_dependencies/install_NCS_udev_rules.sh
到这里就成功安装好计算棒所需的所有东西了
demo测试验证安装是否成功
构建和运行对象检测示例,这个例子是执行人脸检测的。
下面第一步代表转到包含示例源代码的文件夹~/openvino_/deployment_tools/inference_engine/samples,后面三步表示建立新的文件夹build,并执行编译操作。
cd ~/openvino_/deployment_tools/inference_engine/samplesmkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a"make -j2 object_detection_sample_ssd
编译完成后下载网络和权重文件:
wget --no-check-certificate /opencv//open_model_zoo/R3/0905_163000_models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.binwget --no-check-certificate /opencv//open_model_zoo/R3/0905_163000_models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.xml
然后自己在网上找一张人脸的图片,在build文件夹下执行
./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i <path_to_image>#<path_to_image>是人脸图片的绝对路径
如果运行成功,会在build文件夹下输出一副out_0.bmp图片,到这里表示计算棒运行成功!
Opencv + python api调用方法:
有时候我们是在python下做开发,这里也有提供了Opencv + python的运行例子
新建一个文件夹,先建立一个face_detection.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')# 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)
在文件夹中放入刚刚我们下载的那两个文件:face-detection-adas-0001.bin和face-detection-adas-0001.xml
还有用于检测用的脸的图片face.jpeg
然后在终端执行:
python3 face_detection.py
程序成功运行没报错,则表示运行成功,然后我们会在文件夹下看见输出结果,检测成功
OpenVINO推理简介
见OpenVINO推理简介
openvinotoolkit/open_model_zoo
见openvinotoolkit/open_model_zoo
如果遇到下载问题,使用下面百度网盘链接:
链接:/s/1iVX4hfss8n3l0B6JwbnwLw 提取码:s30k
在下面的open_model_zoo仓库里有很多其他应用的权重文件
/opencv//open_model_zoo/R3/0905_163000_models_bin/
比如司机动作识别、面部表情识别、人体姿势识别、行人识别等等。
如果觉得《树莓派4B与Intel Movidius计算棒2代实现深度学习应用加速》对你有帮助,请点赞、收藏,并留下你的观点哦!