查看: 4284|回复: 0

[教程] 树莓派 && OpenVINO / Movidius NCS 环境搭建

[复制链接]

主题

好友

1457

积分

进士

  • TA的每日心情
    擦汗
    2019-1-15 13:35
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-2-15 13:14:20 |显示全部楼层
    选购 Raspberry PI

    Raspberry Pi 3B+
    1.png

    CPU: 1.4GHz, 4核
    RAM:1GB
    OS:Raspberry Pi 3B+ 只能安装 Raspbian系统。目前还不能支持 ubuntu。
    个人感觉,没必要非得装ubuntu的,买3B+吧。


    Raspberry Pi 3B
    2.png

    1.2GHz, 4核 CPU
    1GB RAM


    Raspberry Pi Zero W
    3.png

    1GHz, 单核 CPU
    512MB RAM(其中会分出128MB当作显存用)


    选购 TF 卡
    要16G以上的,8G根本不够用。条件可以,尽量选购读写速度快的。建议选32G 读100M/S 写90M/S的卡。


    模型转换时,1G内存根本不够用,需要开虚拟内存。
    这时候卡速就很关键了,不差钱,就一步到位吧。


    下载树莓派专用系统镜像 img


    4.png




    角蜂鸟 百度网盘
    https://pan.baidu.com/s/1rj1xBfA55xwVsOV9zN6Ifw
    密码:k1x6

    角蜂鸟镜像作者,换了国内apt-get和pip源。
    如果不用角蜂鸟的镜像,是需要自己换源的。
    要看一下自己机器是什么架构,树莓派 3B/B+ 的话,记得选择armv7 架构的源
    要看一下自己机器是什么架构,Raspberry Pi Zero W 的话,记得选择armv6 架构的源

    TF卡烧img
    windows
    Win32DiskImager 工具, 速度比 linux/mac 用 dd 命令快很多倍。

    Mac OS
    使用工具:Etcher (速度很快)
    5.png

    Linux
    使用 dd 指令
    1) 查看U盘盘符
    1. ➜  ~ df -lh
    2. Filesystem     Size   Used  Avail Capacity iused               ifree %iused  Mounted on
    3. /dev/disk1s1  466Gi  223Gi  240Gi    49% 2305126 9223372036852470681    0%   /
    4. /dev/disk1s4  466Gi  2.0Gi  240Gi     1%       2 9223372036854775805    0%   /private/var/vm
    5. /dev/disk2s1   64Mi   53Mi   11Mi    84%     206          4294967073    0%   /Volumes/MacX
    6. /dev/disk3s1  32Gi  0Gi  32Gi    0%       0                   0  100%   /Volumes/TF-CARD

    7. ➜  ~ diskutil list
    8. ...
    9. /dev/disk3 (external, physical):
    10.    #:           TYPE NAME                    SIZE       IDENTIFIER
    11.    0:     FDisk_partition_scheme            *32 GB        disk3
    12.    1:     Windows_FAT_32 TF-CARD             32 GB        disk3s1
    13. ...
    复制代码
    2) 取消U盘挂载
    1. ➜  ~  diskutil umountDisk /dev/disk3
    2. Unmount of all volumes on disk3 was successful
    复制代码
    3) 用dd命令写入U盘
    注意 M 大小写:linux bs=4M macOS: bs=4m
    M=mB? m=mb? 一个说的是位bit一个说的是字节Byte?不清楚,没测试。
    反正mac下只支持小m, 你可以用bs=1024m试试,是不是快点?
    1. ➜  ~  sudo dd bs=4m if=/linux.dmg of=/dev/disk3
    2. 2934+1 records in
    3. 2934+1 records out
    4. 3076767744 bytes transferred in 149.567568 secs (20571089 bytes/sec)
    复制代码
    4) 查看磁盘进度,可以用iostat命令查看磁盘写入状态
    1. ➜  ~ iostat -w 2
    2. disk0 disk2 disk3 cpu load average
    3. KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us sy id 1m 5m 15m
    4. 102.71 25 2.49 598.70 0 0.15 24.76 1 0.02 5 4 90 2.04 1.71 1.69
    5. 512.00 48 23.93 1024.00 24 23.93 0.00 0 0.00 1 3 96 2.11 1.74 1.69
    6. 473.00 26 11.99 1024.00 12 11.98 0.00 0 0.00 3 3 93 2.11 1.74 1.69
    7. 491.68 50 23.99 1024.00 24 23.99 0.00 0 0.00 24 8 68 2.11 1.74 1.69
    复制代码
    5) 操作完毕后将U盘弹出
    1. ➜  ~  diskutil eject /dev/disk2
    2. Disk /dev/disk2 ejected
    复制代码

    开机后必须要干的几件事
    注:2018年11月13日之后的的Raspian版本,有些操作会自动帮你做,比如磁盘resize,修改密码等。

    raspi-config 系统配置

    1. pi@raspberrypi-HS2:~ $ sudo raspi-config
    复制代码
    6.png

    1) Change User Password
    修改 pi 初始密码

    2) Boot Options -> B1 Desktop / CLI -> B1 Console
    开机进入Concole,这样省内存。后面配置环境在console下,有更多内存可用,会更快。
    随时可以用 startx 从命令行进入图形界面。

    3) Advanced Options -> A1 Expand Filesystem
    烧好的镜像,系统只有8G(TF卡可是有32G呀)。这8G用爆了(都用掉了),你的系统就废了。
    所以这一步至关重要,千万别忘了。

    4) Interfacing Options -> P2 SSH
    开启SSH服务

    显示器屏幕配置

    1. pi@raspberrypi-HS2:/boot $ sudo vi /bootconfig.txt
    2. # 自适应屏幕分辨率
    3. hdmi_group=2
    4. hdmi_mode=58
    5. # 屏幕旋转 270 度
    6. display_rotate=3
    复制代码
    注:这块要小心,改错了可能就启动不了了。如果真发生了,可以用读卡器把卡插入别的电脑修改这个文件。如果实在搞不定,可以删除这个文件再重启。

    其他配置

    进入图形界面,链接无线外设
    1) wifi
    2)蓝牙 鼠标、键盘

    更新 apt-get

    apt-get 换源 & 更新:
    1. $ sudo vi /etc/apt/source.list
    2.     #deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
    3.     # Uncomment line below then 'apt-get update' to enable 'apt-get source'
    4.     #deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi

    5.     deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
    6.     deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib

    7.     deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib
    8.     deb-src  http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib

    9. $ sudo reboot

    10. $ sudo apt-get update
    11. $ sudo apt-get upgrade
    12. $ sudo apt-get dist-upgrade

    13. # 安装常用工具
    14. $ sudo apt-get install vim
    复制代码

    这个比较简单,我就不详细写了。
    其实不升级也是件好事,避免新版本的冲突问题。

    到此Raspbian系统就配置好了。接下来要安装Movidius的运行环境了。

    Python3 虚拟环境

    系统自带python3.5.3。我曾自己编译安装过 python3.6.8。后来发现,有些常用库(例如:opencv-python)在Raspian上,只有python3.5的版本。后来还是放弃了用python3.6
    1. $ sudo pip3 install virtualenv
    2. $ mkdir ~/env
    3. $ cd ~/env
    4. $ virtualenv ReatailX
    5. $ source ~/env/RetailX/bin/activate
    6. # You could add "source ~/env/RetailX/bin/activate" to .bashrc

    7. (RetailX) pi@raspberrypi:~ $ _
    复制代码

    pip 换源

    Add file ~/.pip/pip.conf
    1. [global]
    2. timeout=6000
    3. index-url = https://pypi.doubanio.com/simple/
    4. #index-url = http://mirrors.aliyun.com/pypi/simple/
    5. [install]
    6. use-mirrors = true
    7. mirrors = https://pypi.doubanio.com/simple/
    8. #mirrors = http://mirrors.aliyun.com/pypi/simple/
    复制代码

    安装OpenCV
    1. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libhdf5-dev
    2. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libhdf5-serial-dev
    3. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libatlas-base-dev
    4. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libjasper-dev
    5. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libqtgui4
    6. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libqt4-test
    7. (RetailX) pi@raspberrypi:~/Downloads $ pip install opencv-python
    复制代码

    安装 TensorFlow
    1. (RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libatlas-base-dev
    2. (RetailX) pi@raspberrypi:~/Downloads $ pip install tensorflow
    复制代码

    OpenVINO™ toolkit

    Movidius NCS (现在这部分Intel已经不支持了,这里仅供参考)

    下载 NCSDK 2.05
    【注意】NCSDK在github上,从 master上 clone下来的是 1.12 的版本。

    找它release的最新版,目前是2.05:
    最新支持 tensorflow 1.7

    ncsdk 2.05.00.02下载 (最近ncsdk从github上撤了,据说是licence的问题,所以补充了一个下载链接)
    1. wget https://github.com/movidius/ncsdk/archive/v2.05.00.02.tar.gz
    2. wget https://ncs-forum-uploads.s3.amazonaws.com/ncsdk/ncsdk-02_05_00_02-full/ncsdk-2.05.00.02.tar.gz
    复制代码
    ncsdk 官方文档
    https://movidius.github.io/ncsdk/

    解包
    1. tar -xf v2.05.00.02.tar.gz
    复制代码

    换源

    建议用角蜂鸟的镜像,已经换过源了。我这里就不写怎么换源了。
    主要是换 apt-get 和 pip3 的源。
    注意一下,树莓派 3B/B+ 是 armv7l 芯片,选择相应版本的源。

    修改NCSDK 的 Makefile 取消 卸载 OpenCV的过程

    「坑」NCSDK会卸载OpenCV,导致用角蜂鸟的SDK时,无法用OpenCV读网络摄像头了。
    角蜂鸟的镜像有已经安装好了的OpenCV。因为角蜂鸟和NCSDK都是基于Movidius VPU 开发的,如果对OpenCV有特殊需求,我认为应该也是一致的。在此我大胆的修改了NCSDK的Makefile,把关于OpenCV的卸载和安装都去掉了。
    1. .PHONY: install
    2. # 删除此行
    3. # install: prereqs uninstallopencv
    4. # 替换为:
    5. install: prereqs
    6.         @echo "\nmake install starting."
    7.         ./install.sh
    复制代码

    安装NCSDK

    进入目录
    1. cd ncsdk-2.05.00.02
    复制代码
    安装
    1. sudo make install
    复制代码
    安装ncsdk时,保证网速不能太慢。安装过程会非常长,要有心里准备。

    错误处理

    安装 NCSDK 依赖包时可能出现版本冲突的错误

    例如:
    8.png

    这是安装scikit-img时报错。别慌!
    细看 Makefile -> install.sh -> requirements.txt
    1. ...
    2. scikit-image>=0.11.3,<=0.13.0
    3. ...
    复制代码

    手动安装试试
    1. sudo pip3 install scikit-image=0.13.0
    复制代码

    依然报错,安装低版本试试?
    1. sudo pip3 install scikit-image=0.11.3
    复制代码
    成功了!
    这就是版本过新,出现了冲突错误,所以先别着急 apt-get update
    如果遇到错误,多看 install.sh吧。基本上就是换源,指定模块版本这些事。

    安装 Tensorflow

    Tensorflow官方终于提供Raspberry Pi 的版本了,可以直接用pip3安装了,比起以前自己编译方便了很多。因此需要修改 ncsdk 的Makefile,不需要再用它去安装Tensorflow了。(和修改不安装opencv差不多,这里暂时先不写了)


    7.png

    安装Caffe 内存不足报错

    Caffe的编译过程需要较大的内存。树莓派内存只有1G不够用的时候就会报错。
    不进入图形界面,开机进入console下,会有更多内存可用。
    根本解决问题,需要给系统扩充虚拟内存

    默认Rasbian虚拟内存只有100M,建议升到1~3G。
    方法一(「坑」linux常规方法,树莓派用这个方法,一重启就恢复回100M。)
    1) 关闭旧的虚拟内存
    1. sudo swapoff /var/swap
    复制代码
    2) 扩展swap大小 1G=1M * 1024
    1. sudo dd bs=1M if=/dev/zero of=/var/swap count=1024
    复制代码
    3) 格式化swap
    1. sudo mkswap /var/swap
    复制代码
    4) 开启swap虚拟内存
    1. sudo swapon /var/swap
    复制代码
    5) 检查swap内存是否开启
    1. sudo swapon -s
    2. free -m
    复制代码
    「坑」再强调下,方法一是个坑!Raspberr Pi 一重启机器,swap就还原了成100M了。
    「坑」再强调下,方法一是个坑!Raspberr Pi 一重启机器,swap就还原了成100M了。
    「坑」再强调下,方法一是个坑!Raspberr Pi 一重启机器,swap就还原了成100M了。

    方法二(树莓派专用)
    找到更好的方法请参考,源自:
    http://shumeipai.nxez.com/2017/12/18/how-to-modify-raspberry-pi-swap-partition.html

    修改 /etc/dphys-swapfile文件
    1. sudo vi /etc/dphys-swapfile
    复制代码
    将 CONF_SWAPSIZE 的值修改成你想要的大小。 一般在内存小于2G的情况下,交换分区应为内存的2倍!
    1. # 修改
    2. CONF_SWAPSIZE=2048
    复制代码
    然后,重新启动 dphys-swapfile 文件服务:
    1. sudo /etc/init.d/dphys-swapfile restart
    复制代码
    最后查看大小:
    1. $ free -h
    2. total used free shared buff/cache available
    3. Mem: 976M 66M 801M 12M 108M 849M
    4. Swap: 2.0G 0B 2.0G
    复制代码

    增加 Caffe 环境变量
    1. pi@raspberrypi:~ $ vi .bashrc
    2. ...
    3. # 增加
    4. export PYTHONPATH="${PYTHONPATH}:/opt/movidius/caffe/python"
    5. ....
    6. # 使生效
    7. pi@raspberrypi:~ $ source .bashrc
    8. # 查看环境变量
    9. pi@raspberrypi:~ $ env
    复制代码

    自此大功告成

    大功告成!

    本文作者 _49_
    来源:简书


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|电路城

    GMT+8, 2019-5-26 03:53 , Processed in 0.109892 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部