版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41665225/article/details/86508556
0 前言
要写论文,做点真正能用的智慧设备,顺便用在自己果园里,降低人工成本。
首先是要建一个图像识别+视觉导航实验的平台。
考虑到后期可能要真的投入使用并推广,没采用nVidia Jetson TX2这样的豪华配置(比树莓派+NCS2贵差不多3000块)。
折腾了一天多,总算是弄好了,考虑到自己岁数大了,容易忘事。把整个过程写下来,以便后面参考。
关于OpenVINO和神经计算棒,可以先看OpenVINO的介绍和这篇文章。
基本上就是把做好的神经网络部署到嵌入式环境用的。训练模型还是在PC机上。
1. 材料
树莓派 Raspberry Pi 3B+
Intel Movidius Neural Compute Stick 2
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之。得等一会儿。
2.2 启动树莓派
我没买树莓派专用的显示器和键盘鼠标(将来都是电子垃圾,能少一样是一样),按照下面的文章来安装。
https://segmentfault.com/a/1190000010976507
为了能顺利启动ssh,需要在SD卡的根目录写一个文件名为ssh的空文件,还有让它能自动连接WiFi。
但问题来了,烧写后的SD卡boot分区是readonly的,需要用usbroot工具来去掉readonly标志。需要的话自行百度“usbroot”并下载。
重新插拔SD卡,并打开usbroot,选“用0重置参数”,然后开始。
如果提示“无法打开…”,不用管,重新插拔SD卡即可。
写入ssh启动文件和wifi配置文件。
2.3 进入Raspbian系统
通上电(电脑USB或者充电宝),就能从路由器里看到树莓派了。
默认的名字是“dhcpcd-6.11.5-armv71”。用ssh客户端(我用bitwise ssh client)。
用户名pi,密码raspberry。
这时候用VNC Viewer去连接,还不能连接图形界面。
下一节解决软件安装的问题。
3 OpenVINO开发环境的部署
3.1 更换国内源
sudo nano /etc/apt/sources.list
#用nano不用vi,vi不好用
1
2
把源改成
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
1
2
然后Ctrl+O保存,Ctrl+X退出。
同样
sudo nano /etc/apt/sources.list.d/raspi.list
1
内容改成
deb https://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src https://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
1
2
保存退出。
执行
sudo apt-get update
1
更新软件源,速度快了很多。
树莓派自带了一个vncserver,我们来配置它
sudo raspi-config
1
弹出来一个配置窗口
选5,enable VNC Server. 重启。
然后配置vncseserver,创建配置文件
sudo nano /etc/init.d/vncserver
1
内容为:
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
sudo chmod 755 /etc/init.d/vncserver
sudo update-rc.d vncserver defaults
sudo shutdown -r now
1
2
3
4
VNC Viewer能连接了。
网上有文章教怎么设置固定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
1
2
3
4
5
修改nano inference_engine_vpu_arm/bin/setupvars.sh文件的内容
<INSTALLDIR> 改为~/Downloads/inference_engine_vpu_arm。
运行
source inference_engine_vpu_arm/bin/setupvars.sh
1
设置环境,显示
[setupvars.sh] 64 bitness for Python 3.5 is requred
[setupvars.sh] OpenVINO environment initialized
1
2
3.3 解决环境依赖的问题
3.3.1 安装cmake
sudo apt-get install cmake
1
3.3.2 其他
编译安装Python 3.6.8
https://www.python.org/downloads/
编译安装X264
git clone https://git.videolan.org/git/x264.git
1
编译安装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
1
2
3
4
就能用。
3.4 使计算棒能即插即用,自动加载
3.4.1 把当前用户增加到users组里面
执行
sudo usermod -a -G users "$(whoami)"
logout
1
2
然后重新登录。
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
1
2
3
4
5
6
7
8
9
10
11
12
P.S. 如果nano inference_engine_vpu_arm/bin/setupvars.sh文件的内容
<INSTALLDIR> 不是替换成~/Downloads/inference_engine_vpu_arm,这步执行会如果执行
sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh
1
会报错
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
1
2
3
配置正确的话会看到
Update udev rules so that the toolkit can communicate with your neural compute stick
1
3.5 编译samples并且验证
看官方文档接着搞吧。
https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI#add-usb-rules
4. 收尾
让OpenVINO在登录时启动,并把samples的编译输出目录添加到PATH环境变量里面。
nano ~/.bashrc
1
增加两行
source ~/Downloads/inference_engine_vpu_arm/bin/setupvars.sh
export PATH=~/Downloads/inference_engine_vpu_arm/inference_engine/samples/armv7l/Release:$PATH
1
2
题外话
在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
明天再慢慢整理。
————————————————
版权声明:本文为CSDN博主「rosqin」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41665225/article/details/86508556