OrangePi Zero Plus 安装 Python + Tensorflow + Keras

OrangePi Zero Plus 安装 Python + Tensorflow + Keras

  • 前言
  • 硬件及系统环境
  • apt更新
  • 升级Python
  • 安装pip
  • 下载Tensorflow安装包
  • 安装Tensorflow
  • 安装Keras
  • 其它问题
  • 总结
  • 参考资料

前言

首先我要说一下为什么选择OrangePi为开发板来进行深度学习环境的搭建。其中最重要的问题就是价格,因为OrangePi便宜,相较于树莓派而言那几乎是差了将近一倍的价格。其次也是想要验证一下在这类ARM开发板上安装Tensorflow会遇到什么样的问题。这个安装方式也可能用于NanoPi、RK3399等ARM开发板上。
注:本篇的内容均为从零开始搭建会遇到的问题,请注意软件的版本,以及保证连着网运行。

硬件及系统环境

硬件:OrangePi Zero Plus
CPU:全志H5 Cortex-A53四核64位
内存:512MB
存储卡:32GB(千万不要用16GB的卡)
用16GB的卡有在用一段时间后很大概率会报read-only system,我也不知道为什么会这样,也没有仔细尝试8GB的4GB的,但是16GB的确实有这样的问题,而且很多牌子我都试过,如果有哪位大神知道请来解答一下,谢谢。
注:CPU建议贴上散热片使用,温度过高CPU会降频导致性能下降。

系统:Armbian Bionic(没有图行界面的啊,要用自己装)
版本:Armbian_19.11.3_Orangepizeroplus_bionic_current_5.3.9

关于Armbian怎么使用,我在这就不做介绍了,毕竟网上有很多。我用的是putty通过ssh连接,初始的用户名为root、密码1234,一进去会先让你创建一个用户,我是以这个非root用户来完成所有操作的。
很显然Orangepi Zero的内存很小,内存会是安装Tensorflow最大的障碍,强烈吐槽一下为什么OrangePi不给Zero出1G内存版的,这对跑神经网络会有很大帮助。

apt更新

先进行apt软件包的更新,因为我们之后很多python库会用apt安装。

sudo apt-get update
sudo apt-get upgrade

升级Python

系统自带的Python版本为3.6.8,由于这个版本不方便我们周后在github上下载Tensorflow的安装包,因此先将Python通过apt升级至3.7。

sudo apt-get install python3.7 python3.7-dev python3-distutils

OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第1张图片

安装pip

直接到Python官网上先下载一个pip的压缩包和一个setuptools的压缩包。下载好之后传到OrangePi中,可以用U盘拷进去,也可以用FileZilla传进去,rsync同步进去都可以,只要能放进去什么方法都行,后面下载Tensorflow也都一样。
pip下载地址:https://pypi.org/project/pip/#files
setuptools下载地址:https://pypi.org/project/setuptools/#files
我们先来解压安装setuptools,在终端下用unzip来解压。

unzip setuptools-42.0.2.zip

解压出来后cd到解压后的文件夹里编译安装。

sudo python3.7 setup.py build
sudo python3.7 setup.py install

pip的安装也类似。

tar -xvzf pip-19.3.1.tar.gz

tar解压出来后cd到文件夹里用python3.7编译安装。

sudo python3.7 setup.py build
sudo python3.7 setup.py install

其实这个pip应该也可以apt安装的,方法不唯一,安装完成后pip -V查看一下版本和所对应的python编译器对不对。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第2张图片

下载Tensorflow安装包

我们直接到gihub上下载编译好的Python安装包。
项目地址:https://github.com/lhelontra/tensorflow-on-arm
下载地址:https://github.com/lhelontra/tensorflow-on-arm/releases/
下载版本:tensorflow-1.14.0-cp37-none-linux_aarch64.whl(v1.14.0-Buster)
选择aarch64,架构问题我也不懂,反正我都试过,选这个就对了。
这里先不考虑下载2.0,因为2.0版本与之前的版本有很多兼容性问题,我们依旧选择老版本。

安装Tensorflow

这里就到了最重要的一步,也是问题最多的一步了。
我们先开始用pip安装一下试试。

pip install tensorflow-1.14.0-cp37-none-linux_aarch64.whl

这里我们会碰到第一个需要解决的错误。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第3张图片
这个问题一开始我以为是我的sd卡满了,但df看了一下有的是空间而且我一张32GB的卡怎么可能不够。在查了“一堆”资料后,其实是tmp空间不足导致的,具体细节我也没细究,总之大概就是编译的空间不够造成的。
我们在当前目录下创建一个tmp文件夹来解决。

mkdir /home/username/tmp
export TMPDIR=/home/username/tmp
source ~/.bashrc

经常编译这种大文件的话可以把这个加到环境变量里,我们接着安装Tensorflow试试,这个时候应该可以正常安装了,我们可以再开一个终端用htop看看CPU、内存使用率。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第4张图片
现在理想状态我们耐心的等待一会儿应该就可以完成了。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第5张图片
出了个权限问题,我们加上–user。

pip install --user tensorflow-1.14.0-cp37-none-linux_aarch64.whl

好的接着等待一段时间,结果等了很久都没有反应,仔细观察发现界面不动了卡住了没反应了。如果开了htop可以很直观的看到内存全满了。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第6张图片
htop界面上显示Mem内存和Swp交换分区已经爆了,其实这种情况在任何linux上都有可能发生,原因就是编译的时候内存不足导致系统直接当掉。
内存我是没办法加了,当然也可以试试把内存吹下来换个1GB的,但是实在是太穷了内存颗粒我也买不起。硬的不行就只能考虑软的了,我们考虑增加swap分区来解决这个问题,接着查阅资料来解决这个问题。
重新上个电进入系统,把之前tmp的那段再打一遍,毕竟我还没有加到环境变量里。
关于swap分区给多少的问题,其实没有明确的规定,只要够用就可以了,我们这里给个1GB,当然更多也可以啦,毕竟32GB的卡很充裕。

dd if=/dev/zero of=/home/username/swap bs=1024 count=1024000
/sbin/mkswap /home/username/swap
sudo /sbin/swapon /home/username/swap

改完我们打开htop看看swap分区是不是变大了,这个在重启后同样就无效了,可以写个脚本开机运行一下后面两句,第一句dd开辟空间就不用一直做了。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第7张图片
这里我们可以发现这个swap空间实际上是累加上去的,现在我们继续安装Tensorflow。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第8张图片
这里报了一个h5py的安装错误,这个时候我们可以先用apt安装一下试试。

sudo apt-get install python3-h5py

如果报了其它包的安装错误都可以考虑用apt来安装试试,之后继续安装Tensorflow。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第9张图片
这个时候我们可以打开python3.7来看一下Tensorflow是否正常使用,我们import一下tensorflow。

python3.7
import tensorflow
tensorflow.__version__

在import tensorflow的时候会跳出来一大堆东西,不用在意不是报错,最后显示的就是对应的安装版本,这里我安装的是1.14.0。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第10张图片
至此Tensorflow在OrangePi的安装就告一段落,我们接着开始Keras的安装。

安装Keras

实际上安装完Tensorflow后,Keras的安装就没什么难度了。这里我们先用apt的方式来试试能否安装。

sudo apt-get install python3-keras

安装完成之后,我们同样可以打开python3.7,import keras看看版本。

import keras
keras.__version__

OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第11张图片
apt安装的版本这里为2.1.1,Keras和Tensorflow其实都是很吃版本的,不同版本的函数名以及内部结构可能都有使用上的差异。
模型的训练不可能放在嵌入式设备上完成,总是要移到性能更强的电脑上或服务器上的,这时候我们就要确保训练时的Keras版本和运行在OrangePi上的版本一致。
我的电脑上装的是Keras的2.2.4版本,因此这个时候我们可以通过pip来改变我们的Keras版本。

pip install --user keras==2.2.4

安装完后我们再打python3.7看一下是否改变了。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第12张图片
又又又又报错了,这个时候我们其实就可以优先考虑到还是版本问题导致的,我们可以尝试重新安装一下scipy或者升一下级。

pip install -U scipy

结果还是凉了。。。。。
OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第13张图片
那只能接着找资料了,看来是少了一些库,错误里也显示了没找到lapack/blas。我们用apt来安装。
继续升级scipy仍然会报一个错误,我们还是查询资料来解决,大致是报一个PEP517的错误,具体是啥我也不清楚,总之我们pip装一下试试。

pip install --user pep517

装完后我们再试试升级scipy。

pip install -U --user scipy

这回终于升级成功了,好了我们再次打开python3.7查看Keras是否能使用了。

import keras
keras.__version__

OrangePi Zero Plus 安装 Python + Tensorflow + Keras_第14张图片
到此,Keras的安装就到这里完成了。

其它问题

我在之前在一个安装了环境的系统上安装Tensorflow的时候出现过一次numpy的版本问题,同样是需要将numpy升级来解决。具体的解决办法点这。详细的我不过多描述了。

总结

写了这么多,其实真的安装完才发现整套流程并不困难,但是一下小坑还是比较多的。希望这篇的内容可以帮助大家建立嵌入式系统下的AI环境,开发更强大的功能。

参考资料

[1] https://blog.csdn.net/qq_29837161/article/details/83616364
[2] https://blog.csdn.net/bi_hu_man_wu/article/details/61416306
[3] https://www.cnblogs.com/zhangtianyuan/p/8143558.html
[4] https://www.cnblogs.com/UFO-blogs/p/9435549.html
[5] https://stackoverflow.com/questions/55962678/installing-chatterbot-but-getting-error-could-not-build-wheels-for-spacy-which
[6] https://www.jianshu.com/p/ac43a8175cc5

你可能感兴趣的:(OrangePi Zero Plus 安装 Python + Tensorflow + Keras)