树莓派4B 8G内存版
神经计算棒(NCS2)
USB3.0 的读卡器
64GB SD卡
HDMI线因为要连接显示器
键盘USB接口连接树莓派用
软件
Ubuntu20.04
OpenVINO 2021.3
Raspberry Pi Imager用于烧录系统
任意命令行工具我用的是Windows Terminal
02安装操作系统
1. 从官网下载Ubuntu系统镜像
[Install Ubuntu on a Raspberry Pi | Ubuntu]
➡️ https://ubuntu.com/download/raspberry-pi
2. 等待镜像写入完成后将SD卡插入树莓派。
3. 开机
如果连接显示器后显示没有信号将树莓派重启即可。
如果看不到登录输入回车即可。
默认账号和密码都是 ubunu。
第一次登录后会让你修改密码
03系统配置
1. swap设置
Ubuntu 20.04 默认是没有设置swap的如果你没有比较非内存的应用可以跳过这一步如果有但是没有设置那么很容易出现死机的情况。
这里以8G为例:
sudo fallocate -l 8G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfilesudo sh -c echo "/swapfile\tnone\tswap\tsw\t0\t0" >> /etc/fstab
> 注意第一行的不是数字1而是字母l
2. 设置WIFI
输入 ip a 可以看到如下内容
wlan0即使wifi模块
编辑Netplan文件
sudo vim /etc/netplan/50-cloud-init.yaml
> 在编辑的时候如果输入回车它会自动输入四个空格记得把他们删除掉。
sudo netplan apply
再次输入 ip a
可以看到已经有了IP地址。
3. 用ssh登录
默认是开通了ssh服务的现在我们便可以通过 windows 连接到树莓派了。
> 这样截图会方便很多哈哈哈
设置一下系统时间
timedatectl set-timezone Asia/Shanghai
4. 安装桌面
sudo apt update 根据网络情况而定。
这两个根据自己的喜好选择就可以了。
等待安装完成。
5. 配置vnc
有的时候我们不想用HDMI连接显示器这时可以使用VNC Viewer来查看树莓派的内容。
sudo apt install tightvncserver
启动服务
vncserver
然后启动 windows 上的 vnc viewer 软件。
输入密码
可以看到桌面了。
6. 配置FTP
由于我们后面会经常进行文件的传送因此FTP还是很有必要的。
sudo apt-get install vsftpd
cd /etc/sudo vim vsftpd.conf
通过上面的命令进行配置具体修改内容有以下几个地方
重启服务
service vsftpd restart
打开 Windows 里面的一个文件夹并输入 ftp://192.168.2107。
然后输入密码即可。
04编译 OpenCV 4.5.2-openvino
1. 下载源代码
git clone --depth 1 -b 4.5.2-openvino https://github.com/opencv/opencv.git opencv-4.5.2-openvino
2. 开始编译
sudo apt install libtbb-dev libjpeg-dev libtiff-dev libwebp-devmkdir opencv-4.5.2-openvino/buildcd opencv-4.5.2-openvino/buildcmake\ -DCMAKE_INSTALL_PREFIX/opt/intel/openvino/opencv \ -DCMAKE_BUILD_TYPERelease \ -DWITH_INF_ENGINEON \ -DENABLE_CXX11ON \ -DWITH_TBBON \ -DPYTHON_EXECUTABLE/usr/bin/python3.8 \ -DPYTHON_LIBRARY/usr/lib/aarch64-linux-gnu/libpython3.8.so \ -DPYTHON_INCLUDE_DIR/usr/include/python3.8 .make -j 4sudo make install
这是一个比较漫长的过程大概一个小时左右。
05安装 OpenVINO 开发套件
1. 做一点点事情准备
sudo apt install git-lfs cython3
2. 从 GitHub 拉取资源
cd ~git clone -b 2021.3 https://github.com/openvinotoolkit/openvino.git openvino-2021.3cd openvino-2021.3git submodule update --init --recursive
3. 编译
cd openvino-2021.3./install_build_dependencies.shmkdir build /opt/intel/openvino \ -DCMAKE_BUILD_TYPERelease \ -DENABLE_SSE42OFF \ -DTHREADINGSEQ \ -DENABLE_GNAOFF \ -DENABLE_PYTHONON \ -DPYTHON_EXECUTABLE/usr/bin/python3.8 \ -DPYTHON_LIBRARY/usr/lib/aarch64-linux-gnu/libpython3.8.so \ -DPYTHON_INCLUDE_DIR/usr/include/python3.8 \ .. make -j 4sudo make install
同样需要一个小时左右
4. 配置环境变量
配置完成后新打开一个窗口如果看到下面的画面表示配置成功。
echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
5. 配置NCS驱动
将神经计算棒插入树莓派,并查看。
sudo usermod -a -G users "$(whoami)"sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
sudo usermod -a -G users "$(whoami)"sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
6. 配置一下其他环境变量
export ngraph_DIR/opt/intel/openvino/deployment_tools/ngraph/cmakeexport OpenCV_DIR/opt/intel/openvino/opencv export PYTHONPATH$OpenCV_DIR/lib/python3.8/site-packages:$PYTHONPATH
7. 注意事项
由于安装时软件之间存在依赖关系请按照如下顺序进行安装
OpenCV → OpenVINO →OpenCVPython库
06验证是否安装成功
1. 安装 Open Model Zoo
pip3 install networkx defusedxml protobuf test-generator0.1.1pip3 install opencv-python
2. 下载与OpenVINO版本相符的 Open Model Zoo
cd ~git clone https://github.com/openvinotoolkit/open_model_zoo.git -b 2021.3 --depth 1
3. 下载 Alexnet
cd ./open_model_zoo/tools/downloader./downloader.py --name alexnet --precisionsFP16
4. 转换成Neural Compute Stick可识别的形态
./converter.py --name alexnet --precisionsFP16
5. 最终确认
下载一个图片或者自己通过FTP上传一张也可以。
cd ~wget https://www.pdclipart.org/albums/Food__D-M/lemon_3.pngpython3 ~/openvino/inference-engine/ie_bridges/python/sample/classification_sample_async/classification_sample_async.py -m ~/open_model_zoo/tools/downloader/public/alexnet/FP16/alexnet.xml -i ~/lemon_3.png -d MYRIAD
classid为951时的准确率是0.76这里的 classid 相对于 Alexnet 学习时的图片id我们查看一下发现951的确为 lemon。
text: imagenet 1000 class idx to human readable labels (Fox, E., 因此一个良好的外网环境很有必要。最开始尝试过各种加速方法最终还是用了梯子。顺便重装了一次系统细心的小伙伴发现后面的IP地址从107变成了114。另外整个编译时间大概花费4个小时左右。