树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署

0 前言

要写论文,做点真正能用的智慧设备,顺便用在自己果园里,降低人工成本。
首先是要建一个图像识别+视觉导航实验的平台。
考虑到后期可能要真的投入使用并推广,没采用nVidia Jetson TX2这样的豪华配置(比树莓派+NCS2贵差不多3000块)。
折腾了一天多,总算是弄好了,考虑到自己岁数大了,容易忘事。把整个过程写下来,以便后面参考。
关于OpenVINO和神经计算棒,可以先看OpenVINO的介绍和这篇文章。
基本上就是把做好的神经网络部署到嵌入式环境用的。训练模型还是在PC机上。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第1张图片

1. 材料

树莓派 Raspberry Pi 3B+
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第2张图片
Intel Movidius Neural Compute Stick 2
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第3张图片

2 准备工作

到树莓派官网去下载最新版的Raspbian。由于后续工作需要用到图形界面,选
Raspbian Stretch with desktop。树莓派官网推荐用etcher安装,听官方的没错。下载etcher并安装。

2.1 烧写系统镜像到sd卡

由于操作系统安装在SD卡上,SD卡的读写速度直接影响系统运行速度,因此SD卡要选尽量快的。我用的是32G的98MB/S的SD卡。

我下载的镜像文件是 2018-11-13-raspbian-stretch.zip
在电脑上插上SD卡。不用解压,直接用etcher打开下载来的压缩包。
Flash之。得等一会儿。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第4张图片

2.2 启动树莓派

我没买树莓派专用的显示器和键盘鼠标(将来都是电子垃圾,能少一样是一样),按照下面的文章来安装。
https://segmentfault.com/a/1190000010976507

为了能顺利启动ssh,需要在SD卡的根目录写一个文件名为ssh的空文件,还有让它能自动连接WiFi。

但问题来了,烧写后的SD卡boot分区是readonly的,需要用usbroot工具来去掉readonly标志。需要的话自行百度“usbroot”并下载。

重新插拔SD卡,并打开usbroot,选“用0重置参数”,然后开始。

树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第5张图片

如果提示“无法打开…”,不用管,重新插拔SD卡即可。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第6张图片

写入ssh启动文件和wifi配置文件。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第7张图片

2.3 进入Raspbian系统

通上电(电脑USB或者充电宝),就能从路由器里看到树莓派了。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第8张图片
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第9张图片
默认的名字是“dhcpcd-6.11.5-armv71”。用ssh客户端(我用bitwise ssh client)。
用户名pi,密码raspberry
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第10张图片
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第11张图片

这时候用VNC Viewer去连接,还不能连接图形界面。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第12张图片
下一节解决软件安装的问题。

3 OpenVINO开发环境的部署

3.1 更换国内源

sudo nano /etc/apt/sources.list
#用nano不用vi,vi不好用

把源改成

deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

然后Ctrl+O保存,Ctrl+X退出。

同样

sudo nano /etc/apt/sources.list.d/raspi.list

内容改成

deb https://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src https://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

保存退出。

执行

sudo apt-get update

更新软件源,速度快了很多。

树莓派自带了一个vncserver,我们来配置它

sudo raspi-config

弹出来一个配置窗口
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第13张图片
选5,enable VNC Server. 重启。
然后配置vncseserver,创建配置文件

sudo nano /etc/init.d/vncserver

内容为:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop vncserver
### END INIT INFO
 
# More details see:
# http://www.penguintutor.com/linux/vnc
 
### Customize this entry
# Set the USER variable to the name of the user to start vncserver under
export USER='pi'
### End customization required
 
eval cd ~$USER
 
case "$1" in
  start)
    # 启动命令行。此处自定义分辨率、控制台号码或其它参数。
    su $USER -c '/usr/bin/vncserver -depth 16 -geometry 1024x768 :1'
    echo "Starting VNC server for $USER "
    ;;
  stop)
    # 终止命令行。此处控制台号码与启动一致。
    su $USER -c '/usr/bin/vncserver -kill :1'
    echo "vncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/vncserver {start|stop}"
    exit 1
    ;;
esac
exit 0
sudo chmod 755 /etc/init.d/vncserver  
sudo update-rc.d vncserver defaults 
sudo shutdown -r now

VNC Viewer能连接了。
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第14张图片
树莓派3B+安装OpenVINO,Intel Movidius神经计算棒NCS2的环境部署_第15张图片
网上有文章教怎么设置固定IP,我的路由器一旦分配了IP后不改变,这步就略了。

3.2 安装OpenVINO

参考官方网站:

Install the Intel® Distribution of OpenVINO™ Toolkit for Raspbian* OS

先下载并解压OpenVINO 2018R5

cd Downloads
wget https://download.01.org/openvinotoolkit/2018_R5/packages/l_openvino_toolkit_ie_p_2018.5.445.tgz
tar zxvf l_openvino_toolkit_ie_p_2018.5.445.tgz
cd inference_engine_vpu_arm
nano inference_engine_vpu_arm/bin/setupvars.sh

修改nano inference_engine_vpu_arm/bin/setupvars.sh文件的内容
改为~/Downloads/inference_engine_vpu_arm。
运行

source inference_engine_vpu_arm/bin/setupvars.sh

设置环境,显示

[setupvars.sh] 64 bitness for Python 3.5 is requred
[setupvars.sh] OpenVINO environment initialized

3.3 解决环境依赖的问题

3.3.1 安装cmake

sudo apt-get install cmake

3.3.2 其他

编译安装Python 3.6.8

https://www.python.org/downloads/

编译安装X264

 git clone https://git.videolan.org/git/x264.git

编译安装FFmpeg
http://www.ffmpeg.org/download.html

P.S. 这几个东西要编译好久,之前编译的我都打包存起来了。

搞新的系统的时候直接拷贝过去解压运行

百度网盘:
Python 3.6.8 提取码 phtg
FFmpeg 提取码 yyog
X264 提取码 862b

sudo apt-get install libsdl2-dev
sudo apt-get install libomxil-bellagio-dev 
#挨个解压,进入相应文件夹,运行
sudo make install

就能用。

3.4 使计算棒能即插即用,自动加载

3.4.1 把当前用户增加到users组里面

执行

sudo usermod -a -G users "$(whoami)"
logout

然后重新登录。

3.4.2 配置NCS2的驱动

详见 https://software.intel.com/en-us/neural-compute-stick/get-started
执行以下代码:

cd ~/Downloads
cat <<EOF > 97-myriad-usbboot.rules 
SUBSYSTEM=="usb", ATTRS{idProduct}=="2150", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="2485", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="f63b", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
EOF

sudo cp 97-myriad-usbboot.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo ldconfig
rm 97-myriad-usbboot.rules

P.S. 如果nano inference_engine_vpu_arm/bin/setupvars.sh文件的内容
不是替换成~/Downloads/inference_engine_vpu_arm,这步执行会如果执行

sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh

会报错

pdate udev rules so that the toolkit can communicate with your neural compute stick
File '97-myriad-usbboot.rules' is missing. Please check that you installed 'Inference Engine Runtime for Intel® Movidius™ VPU'.
inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh: 30: exit: Illegal number: -1

配置正确的话会看到

Update udev rules so that the toolkit can communicate with your neural compute stick

3.5 编译samples并且验证

看官方文档接着搞吧。
https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI#add-usb-rules

4. 收尾

让OpenVINO在登录时启动,并把samples的编译输出目录添加到PATH环境变量里面。

 nano ~/.bashrc

增加两行

source ~/Downloads/inference_engine_vpu_arm/bin/setupvars.sh
export PATH=~/Downloads/inference_engine_vpu_arm/inference_engine/samples/armv7l/Release:$PATH

题外话
在OpenVINO之前神经计算棒有NCSDK,通过API的方式来使用Neural Compute Stick
这里是一篇完整的教程。现在不知道Neural Compute Stick2还能不能用了。
下一篇:

《在树莓派+Intel NCS2上跑YoloV3 Tiny》

先放几个参考链接
https://software.intel.com/en-us/forums/computer-vision/topic/800208
https://software.intel.com/en-us/articles/OpenVINO-InferEngine
https://software.intel.com/en-us/forums/computer-vision/topic/800049

明天再慢慢整理。

你可能感兴趣的:(硬件平台)