Raspberry Pi 3 B/B+ && OpenVINO / Movidius NCS 环境搭建

选购 Raspberry PI

Raspberry Pi 3B+

Raspberry Pi 3B+

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

Raspberry Pi 3B

Raspberry Pi 3B

1.2GHz, 4核 CPU
1GB RAM

Raspberry Pi Zero W

Raspberry Pi Zero W

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

选购 TF 卡

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

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

这几款我都买了,读写速度相当,都很快。属于一个档次。价钱嘛,嘿嘿,避免做广告之嫌,自己去搜吧。便宜的也有好货。


image.png

image.png

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

[官网Raspian下载:https://www.raspberrypi.org/downloads/raspbian/]

image.png

官网下载:
download -> Raspian Desktop (推荐)
download -> Raspian Desktop & recommended software
download -> Raspian Lite

[角蜂鸟 百度网盘 密码: k1x6]

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

TF卡烧img

windows

Win32DiskImager 工具, 速度比 linux/mac 用 dd 命令快很多倍。

Mac OS

  1. 使用工具:Etcher (速度很快)
Etcher

Linux

  1. 使用 dd 指令
    参考: https://www.cnblogs.com/bindong/p/5818497.html

1) 查看U盘盘符

➜  ~ df -lh
Filesystem     Size   Used  Avail Capacity iused               ifree %iused  Mounted on
/dev/disk1s1  466Gi  223Gi  240Gi    49% 2305126 9223372036852470681    0%   /
/dev/disk1s4  466Gi  2.0Gi  240Gi     1%       2 9223372036854775805    0%   /private/var/vm
/dev/disk2s1   64Mi   53Mi   11Mi    84%     206          4294967073    0%   /Volumes/MacX
/dev/disk3s1  32Gi  0Gi  32Gi    0%       0                   0  100%   /Volumes/TF-CARD
➜
➜  ~ diskutil list
...
/dev/disk3 (external, physical):
   #:           TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme            *32 GB        disk3
   1:     Windows_FAT_32 TF-CARD             32 GB        disk3s1
...

2) 取消U盘挂载

➜  ~  diskutil umountDisk /dev/disk3
 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试试,是不是快点?

➜  ~  sudo dd bs=4m if=/linux.dmg of=/dev/disk3
2934+1 records in
2934+1 records out
3076767744 bytes transferred in 149.567568 secs (20571089 bytes/sec)

4) 查看磁盘进度,可以用iostat命令查看磁盘写入状态

➜  ~ iostat -w 2
disk0 disk2 disk3 cpu load average
KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us sy id 1m 5m 15m
102.71 25 2.49 598.70 0 0.15 24.76 1 0.02 5 4 90 2.04 1.71 1.69
512.00 48 23.93 1024.00 24 23.93 0.00 0 0.00 1 3 96 2.11 1.74 1.69
473.00 26 11.99 1024.00 12 11.98 0.00 0 0.00 3 3 93 2.11 1.74 1.69
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盘弹出

➜  ~  diskutil eject /dev/disk2
Disk /dev/disk2 ejected

开机后必须要干的几件事

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

raspi-config 系统配置

 pi@raspberrypi-HS2:~ $ sudo raspi-config

raspi-config

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服务

显示器屏幕配置

 pi@raspberrypi-HS2:/boot $ sudo vi /bootconfig.txt
# 自适应屏幕分辨率
 hdmi_group=2
 hdmi_mode=58
# 屏幕旋转 270 度
 display_rotate=3

注:这块要小心,改错了可能就启动不了了。如果真发生了,可以用读卡器把卡插入别的电脑修改这个文件。如果实在搞不定,可以删除这个文件再重启。

其他配置

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

更新 apt-get

apt-get 换源 & 更新:

$ sudo vi /etc/apt/source.list
    #deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
    # Uncomment line below then 'apt-get update' to enable 'apt-get source'
    #deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi

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

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

$ sudo reboot

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

# 安装常用工具
$ sudo apt-get install vim

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

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

Python3 虚拟环境

系统自带python3.5.3。我曾自己编译安装过 python3.6.8。后来发现,有些常用库(例如:opencv-python)在Raspian上,只有python3.5的版本。后来还是放弃了用python3.6

$ sudo pip3 install virtualenv
$ mkdir ~/env 
$ cd ~/env
$ virtualenv ReatailX
$ source ~/env/RetailX/bin/activate
# You could add "source ~/env/RetailX/bin/activate" to .bashrc

(RetailX) pi@raspberrypi:~ $ _

pip 换源

Add file ~/.pip/pip.conf

[global]
timeout=6000
index-url = https://pypi.doubanio.com/simple/
#index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
use-mirrors = true
mirrors = https://pypi.doubanio.com/simple/
#mirrors = http://mirrors.aliyun.com/pypi/simple/

安装OpenCV

(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libhdf5-dev
(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libhdf5-serial-dev
(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libatlas-base-dev
(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libjasper-dev 
(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libqtgui4 
(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libqt4-test
(RetailX) pi@raspberrypi:~/Downloads $ pip install opencv-python

安装 TensorFlow

(RetailX) pi@raspberrypi:~/Downloads $ sudo apt-get install libatlas-base-dev
(RetailX) pi@raspberrypi:~/Downloads $ pip install tensorflow


OpenVINO™ toolkit

[OpenVIONO 官网]
[OpenVINO for Raspian 下载]



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的问题,所以补充了一个下载链接)

wget https://github.com/movidius/ncsdk/archive/v2.05.00.02.tar.gz
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/

解包

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的卸载和安装都去掉了。

.PHONY: install
# 删除此行
# install: prereqs uninstallopencv
# 替换为:
install: prereqs
        @echo "\nmake install starting."
        ./install.sh

安装NCSDK

进入目录

cd ncsdk-2.05.00.02

安装

sudo make install

安装ncsdk时,保证网速不能太慢。安装过程会非常长,要有心里准备。

错误处理

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

例如:


scikit-image

这是安装scikit-img时报错。别慌!
细看 Makefile -> install.sh -> requirements.txt

...
scikit-image>=0.11.3,<=0.13.0
...

手动安装试试

sudo pip3 install scikit-image=0.13.0

依然报错,安装低版本试试?

sudo pip3 install scikit-image=0.11.3

成功了!
这就是版本过新,出现了冲突错误,所以先别着急 apt-get update
如果遇到错误,多看 install.sh吧。基本上就是换源,指定模块版本这些事。

安装 Tensorflow

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

官方发布

官方安装Raspberry Pi 版Tensorflow

安装Caffe 内存不足报错

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

默认Rasbian虚拟内存只有100M,建议升到1~3G。

方法一(「坑」linux常规方法,树莓派用这个方法,一重启就恢复回100M。)

1) 关闭旧的虚拟内存

sudo swapoff /var/swap

2) 扩展swap大小 1G=1M * 1024

sudo dd bs=1M if=/dev/zero of=/var/swap count=1024

3) 格式化swap

sudo mkswap /var/swap

4) 开启swap虚拟内存

sudo swapon /var/swap

5) 检查swap内存是否开启

sudo swapon -s
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文件

sudo vi /etc/dphys-swapfile

将 CONF_SWAPSIZE 的值修改成你想要的大小。 一般在内存小于2G的情况下,交换分区应为内存的2倍!

# 修改
CONF_SWAPSIZE=2048

然后,重新启动 dphys-swapfile 文件服务:

sudo /etc/init.d/dphys-swapfile restart

最后查看大小:

$ free -h
total used free shared buff/cache available
Mem: 976M 66M 801M 12M 108M 849M
Swap: 2.0G 0B 2.0G

增加 Caffe 环境变量

pi@raspberrypi:~ $ vi .bashrc 
...
# 增加
export PYTHONPATH="${PYTHONPATH}:/opt/movidius/caffe/python"
....
# 使生效
pi@raspberrypi:~ $ source .bashrc
# 查看环境变量
pi@raspberrypi:~ $ env

自此大功告成

大功告成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容