要写论文,做点真正能用的智慧设备,顺便用在自己果园里,降低人工成本。
首先是要建一个图像识别+视觉导航实验的平台。
考虑到后期可能要真的投入使用并推广,没采用nVidia Jetson TX2这样的豪华配置(比树莓派+NCS2贵差不多3000块)。
折腾了一天多,总算是弄好了,考虑到自己岁数大了,容易忘事。把整个过程写下来,以便后面参考。
关于OpenVINO和神经计算棒,可以先看OpenVINO的介绍和这篇文章。
基本上就是把做好的神经网络部署到嵌入式环境用的。训练模型还是在PC机上。
树莓派 Raspberry Pi 3B+
Intel Movidius Neural Compute Stick 2
到树莓派官网去下载最新版的Raspbian。由于后续工作需要用到图形界面,选
Raspbian Stretch with desktop。树莓派官网推荐用etcher安装,听官方的没错。下载etcher并安装。
由于操作系统安装在SD卡上,SD卡的读写速度直接影响系统运行速度,因此SD卡要选尽量快的。我用的是32G的98MB/S的SD卡。
我下载的镜像文件是 2018-11-13-raspbian-stretch.zip
在电脑上插上SD卡。不用解压,直接用etcher打开下载来的压缩包。
Flash之。得等一会儿。
我没买树莓派专用的显示器和键盘鼠标(将来都是电子垃圾,能少一样是一样),按照下面的文章来安装。
https://segmentfault.com/a/1190000010976507
为了能顺利启动ssh,需要在SD卡的根目录写一个文件名为ssh的空文件,还有让它能自动连接WiFi。
但问题来了,烧写后的SD卡boot分区是readonly的,需要用usbroot工具来去掉readonly标志。需要的话自行百度“usbroot”并下载。
重新插拔SD卡,并打开usbroot,选“用0重置参数”,然后开始。
通上电(电脑USB或者充电宝),就能从路由器里看到树莓派了。
默认的名字是“dhcpcd-6.11.5-armv71”。用ssh客户端(我用bitwise ssh client)。
用户名pi,密码raspberry。
这时候用VNC Viewer去连接,还不能连接图形界面。
下一节解决软件安装的问题。
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
弹出来一个配置窗口
选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能连接了。
网上有文章教怎么设置固定IP,我的路由器一旦分配了IP后不改变,这步就略了。
参考官方网站:
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文件的内容
运行
source inference_engine_vpu_arm/bin/setupvars.sh
设置环境,显示
[setupvars.sh] 64 bitness for Python 3.5 is requred
[setupvars.sh] OpenVINO environment initialized
sudo apt-get install cmake
编译安装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
就能用。
执行
sudo usermod -a -G users "$(whoami)"
logout
然后重新登录。
详见 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文件的内容
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
看官方文档接着搞吧。
https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI#add-usb-rules
让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
明天再慢慢整理。