本着在学习在嵌入式Linux系统(例如树莓派
)上运行AI项目(例如人脸识别),开启了这个嵌入式AI专题,来记录学习进展和踩过的一些坑。
对于Linux系统,我发现不管是电脑x86的Ubuntu
还是树莓派arm的raspberry
系统,在系统安装完毕后,总是自带一个特定版本的python.
例如我的ubuntu22.04自带的python版本是3.10,而高版本的python不一定能向下兼容第三方库,例如我要安装tf-lite时,会有以下结果
红字的意思就是没有找到满足适配当前python3.10
版本的tflite-runtime
库,因此导致无法安装,无法使用。
因此面临两个解决方案
方案1.删除原系统的python,再重新安装新的python
方案1带来的问题就是,会使得系统原来依赖python的程序出错甚至无法使用,而且安装新的python需要编译,比较复杂。且安装完需要再装一些关键库,这些库可能原本是封装再系统中,现在要重新手动装,会出现一系列无法安装或者找不到适合版本的连锁问题。
因此方案1(X)
方案2.使用多环境管理,创建不同python环境,并且与主系统环境隔离。每个环境之间的python版本,还有python包都是相互独立的。这里的多环境管理器使用的就是ANACONDA(大蟒蛇),如其名,非常主流的python多环境管理器。
那么,下面我们就进行Linux系统上(PC机x86 ubuntu
和树莓派Raspberry Pi系统
)的Anaconda安装。(Win系统安装较为简单,这里不介绍)
1.1安装
Linux版本:Ubuntu22.04
进入Anaconda官网,https://www.anaconda.com/
直接点击下载按钮进行下载,注意选择linux系统,如果网络不好,建议换镜像网站进行下载,这里不再赘述。下载完毕是一个.sh的安装脚本文件
,使用bash
或者sh
命令运行脚本进行安装(注意不要用sudo,不然会安装到root
文件夹下,不用sudo直接安装在home
文件夹下)。详细可以参考这篇博客。
需要注意的是,如果安装完毕在命令行前没有出现(base)
字样,只需要关闭当前命令行,重开即可。
1.2换源
在命令行中直接输入以下命令即可
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes
当首次设置好源之后,我们会发现在home下面就会有.condarc
这样的隐藏文件,我们可以使用gedit
打开直接编辑修改源。
我的.condarc
内容如下,你可以直接复制我的,或者搜索其他博主的源进行更换。
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true
系统版本:树莓派3B,官方系统64位,aarch64
树莓派上的安装:由于树莓派资源受限,700MB的Anaconda显得过大(我用psftp传了很久也没传过去)。树莓派上使用的是Miniconda
,即专为嵌入式系统设计的Anaconda改进版本。
这里有个大坑就是我的树莓派安装其他版本的Miniconda都会报错,只有带py37_4.9.2的版本是可以安装的(与这篇中所说的情况大致相同)。当然,如果是树莓派2B或者安装的是32位系统需要安装对应armv7l架构的版本。
下载
wget http://repo.continuum.io/miniconda/Miniconda3-py37_4.9.2-Linux-aarch64.sh
安装
接着使用bash
或者sh
指令进行安装,与ubuntu相似,也不要加sudo,同样的流程安装下来即可。
换源
与上一节相同,不赘述。
不要更新conda,因为前面说了,只有这个版本支持,如果更新conda就会造成无法使用的情况。
由于Miniconda是Anaconda的轻量版本,因此其操作指令基本相同。
环境创建与删除
#创建环境(版本指定两位不会出错,指定3位有时候会找不到相应python版本)
conda create -n [环境名] python=x.x(.x) -y
#删除环境
conda remove -n [环境名] --all
环境切入与退出
#切入指定python环境
conda activate [环境名]
#退出环境,重复执行直至前面没有括号为止
conda deactivate
其他
#在当前环境下安装
conda install/pip install
#查看所有conda环境
conda env list
#查看当前环境下的python版本
python3 --version
#删除conda安装的python包
conda remove [包名]
这里ubuntu和树莓派的搭建方法也完全一致,这也得益于python非常优秀的跨平台特性。
首先创建tflite环境
conda create -n tflite python=3.7 -y
接着安装必要的python库
#tflite-runtime
python3 -m pip install tflite-runtime
#树莓派上可能会报错,换成pip install tflite-runtime或者pip3 install tflite-runtime
#安装好后进入python3 import确认一下是否安装完毕
#安装gi和gtk3,这里因为虚拟环境中没有自带gi,需要安装gi,这个安装也是个小坑
conda install -c conda-forge pygobject
#import gi确认是否成功
#再安装gtk3
conda install -c conda-forge gtk3
#numpy
pip3 install numpy
#cv2
pip3 install cv2
#PIL
pip3 install pillow
至此,环境搭建就完成了。你可以再电脑上或者树莓派上切入创建的tflite
环境,然后运行一些tflite
的demo来进行检验环境是否安装完毕。
(在此过程中,我的树莓派摄像头打不开了,重新检查连线是否松动,然后重启后问题解决了)
demo传送门:
https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/raspberry_pi
在PC和树莓派上都试试看吧!