
前言(废话)
本人对于嵌入式的知识就是白纸一张,但无奈项目要用,这两天一直在配环境。各种试错下终于安上了。本篇类似备忘录,只是方便日后再用到时不用套娃开爆浏览器标签。
本片只安装基于python的深度学习框架,使用C++的祝愿你早日来教俺。
由于给的试验机已经安好debian系统,其他不是ubuntu和debian版本的linux系统命令会有所不同。
安装Python3
目前arm上的python已经支持到了3.9,直接上最新版。
sudo apt-get install python3 如果默认安装 sudo apt-get install python 则会自动安装 python2.7。
如果已经安装过python2.7,那使用命令 python 会默认进入python2.7。只有使用命令 python3 才会进入 python3.9。
安装numpy
需要在安装pytorch之前安装numpy,不然安装的pytorch将无法支持numpy。
pip3 install numpy 同样需要使用 pip3 安装python3的库,直接使用 pip 将安装成python2.7的依赖。
安装OpenCV
sudo apt-get install python3-opencv 同理使用 sudo apt-get install python-opencv 将装成python2.7的依赖。

进入python3.9中测试:import没有问题,安装成功
安装Pytorch+torchvision
之前基本不会出啥幺蛾子,这里就比较头疼了。由于官方没有提供ARM架构的二进制安装包,就需要自己扒源码下来make了。有一种比较快捷的方式就是那别人make好的轮子下下来直接装,但问题就是你的系统和使用的python版本跟make轮子的人刚好对得上那没问题,对不上就GG。
这里放两个提供轮子的大佬,有需要的可以去下
https://github.com/nmilosev/pytorch-arm-builds
https://github.com/Qengineering/PyTorch-Raspberry-Pi-64-OS (只提供64位)
使用 uname -a 和 getconf LONG_BIT 命令可以查看系统版本和位数
uname -a
getconf LONG_BIT

查看系统版本和位数
反正俺用现成的轮子装就是各种GG,最后无奈还是决定自己make
首先就是安装一堆make要用到的库
sudo apt-get install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools 设置一下build的选项
export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export BUILD_TEST=0
export MAX_JOBS=4 像CUDA这些不支持的选项都需要设置成 false,由于是在 Pi4 上编译,有四核,MAX_JOBS 可以设置为4,如果是 Pi4 之前的树莓派版本就只有单核。
下载源码(Pytorch)
git clone https://github.com/pytorch/pytorch --recursive
cd pytorch
git checkout v1.7.0
git submodule sync
git submodule update --init --recursive 俺安装的是1.7.0版本,想要安装别的版本也可以。
开始build (Pytorch)
python3 setup.py bdist_wheel 注意: 需要使用 python3
不过大概build到55%的时候俺也遇到了错误
No matching function for call to 'google::protobuf::io::CodeInputStream::SetTotalBytesLimit(long long int, long long int)' 查了一下大概是build需要的 protobuf 的版本跟安装的版本不匹配,安装的 protobuf 版本过低,更新一下就行
wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.18.2.tar.gz #下载源码
tar -zxvf v3.18.2.tar.gz # 需要找到下载的路径,一般是在 /home/pi/Downloads
cd v-3.18.2/
sudo ./autogen.sh
sudo ./configure # 生成Makefile文件来build
sudo make
sudo make install
sudo ldconfig # 更新共享库缓存
显示一下 protobuf 更新后的版本

显示对应版本,更新成功
之后再build应该就不会有问题了,就只是需要漫长的等待了,俺是放着build就溜回家了,第二天早上来看的时候已经build完了。网上大概说是需要4-5小时。
进行安装(Pytorch)
build完后生成的轮子在 dist 文件夹下,使用 pip3 安装轮子即可
cd dist/
pip3 install ./torch-1.7.0a0-cp39-cp39-linux_armv7l.whl 
安装生成的轮子
由于项目是视觉相关,所以也会用到torchvision, 安装方法和Pytorch一样,可以找现有的轮子,也可以自己make。
编译torchvision
git clone https://github.com/pytorch/vision
cd vision
git checkout v0.8.1
git submodule sync
git submodule update --init --recursive
python3 setup.py bdist_wheel torchvision 编译的时间很快,大概十来分钟就好,俺运气好没碰上啥error, 只能祝各位好运。
安装torchvision
和pytorch一样,生成的轮子也在 dist 文件夹中
cd dist/
pip3 install ./torchvision-0.8.0a0+45f960c-cp39-cp39-linux_armv7l.whl

安装生成的轮子
最后进python3测试一下

import 没有问题,安装成功
至此就完事了,如果后续有新的问题还会跟进。

对自己要有清晰的认知