树梅派3B建立AI开发环境
先放存放在百度网盘的建立好AI开发环境的imgae,直接烧到TF卡,插到树梅派3B就能用
链接:https://pan.baidu.com/s/13JyB872TpXj2GrzFHgJAhw
提取码:3vze
下面写一写搭建树梅派AI开发环境的过程,方便将来参考,同时请大家点评。
树梅派是单板电脑,可以用在很多领域,包括AI的运算。加上Intel的神经计算棒,大大加速AI的运算。
最开始是想拿树梅派挖矿,但是发现与现今用asic和显卡的算力池比,只有极极......极小的算力,几百年才有0.1的币值。因而不做挖矿了。
原计划挖矿,从闲鱼上买了6块(前5块是挖矿,最后一块是AI运算),4块3B,2块4B(2GB和8GB)。
挖矿不搞了,就像搭个mud服务器,自己玩吧(一直开着电脑不方便)。mud服务器最开始搭的不太顺原因是fluffos在2020年5月开始切为支持utf8,好多mud的lib跑不了。
2021年10月重新搭mud服务器fluffos时,注意到了utf8的事情,同时fluffos有了切回以前支持的模式,mud服务器搭的还是比较成功。不过2021年的时候搭mud服务器不是热点了,搭AI开发环境是热点(我的)。
于是从2021年10月开始搭树梅派的AI开发环境。在2020年9月或10月时参考网上的资料是搭过AI的开发环境的,也跑了跑AI的一些极其简单的样本,发现纯树梅派AI运算速度是比较慢的,大约几帧的速度,一时没想到干什么,就干别的去了。
2021年年初看到有Intel神经计算棒(为了简单,就简称i棒),就想到给结合树梅派用。很早就听说i棒,也知道i棒与树梅派的联合使用的事。
经过一阵子的闲鱼逛,买到了1个一代,3个二代的i棒。2021年5,6月份时折腾i棒在树梅派的支持。这里需要问候一下intel,它竟然在2020年年中开始openvino不支持一代的i棒,白白忙活了很长时间。支持一代的ncsdk又不支持二代!同时ncsdk在国内基本搭建不起来,经过反复的修改和尝试,能初步的编译但是有很多的文件下载不下来,就差最后跑算法的一步,一直就没能下载需要用到的文件,就没有跑起来!于是openvino改用2020.1,据intel说这是支持一代和二代的,实际也是的。
这样,就开始了搭建树梅派的AI开发环境。网上的资料东鳞西爪,时间跨度有些大,有些也不是很全,因而走了些弯路和花了很多的时间。树梅派3B的编译速度的确不快,动不动就要几个小时,甚至打24小时。
需要提前准备的是:用国内的源;把swap空间改为4GB;尽量用whl包安装。
下面开始说搭建的过程:从新的建立树梅派的工作环境
#更新树莓派的源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak
sudo nano /etc/apt/sources.list
#sources.list的内容是:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
sudo nano /etc/apt/sources.list.d/raspi.list
#raspi.list的内容是:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
#更新树梅派系统:
sudo apt-get update;sudo apt-get upgrade -y
#安装必须的工具(主要给openvino用的)
sudo apt-get install -y build-essential cmake unzip pkg-config
#安装图像和视频的库
sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev
#安装GTK,UI后端
sudo apt-get install -y libgtk-3-dev
#安装GTK相应的库,减少警告
sudo apt-get install -y libcanberra-gtk*
#安装opencv用到的数学计算库
sudo apt-get install -y libatlas-base-dev gfortran
#安装python3(如果装过,不用装)
sudo apt-get -y install python3-dev
#安装mxnet whl需要安装的包
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
git \
libcurl4-openssl-dev \
libjemalloc-dev \
liblapack-dev \
libopenblas-dev \
libopencv-dev \
libzmq3-dev \
ninja-build \
python-dev \
python-pip \
software-properties-common \
sudo \
virtualenv \
wget
#继续安装用的软件包:
sudo apt-get -y install g++-4.9 c++-4.9 liblapack* libblas* libopencv* libopenblas*
#安装onnx需要安装的包
sudo apt-get install -y scons gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf autoconf libtool xxd
#升级pip和pip3
python3 -m pip install --upgrade pip
python -m pip install --upgrade pip
#察看升级后pip的信息
pip show pip
pip3 show pip
#配置python的源
# 运行此命令切换目录
cd ~/.pip
#如果提示目录不存在,自行创建一个(如果目录存在,可跳过此步),如下:
mkdir ~/.pip
cd ~/.pip
touch pip.conf
nano pip.conf
#pip.conf的内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn # trusted-host 此参数是为了避免麻烦,否则使用的时候可能会提示不受信任
#察看python的源是否成功
# 运行此命令切换目录
cd ~
pip3 config list
pip config list
#配置git
git config --global user.name "xxxxx"
git config --global user.email "xxxx@xxx.com"
cat .gitconfig
#修改swap的大小 --- 3B -> 4096; 4B -> RAM x 2
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=4096 (由100改为4096)
sudo nano /sbin/dphys-swapfile
CONF_MAXSWAP=4096 (由2048转为4096)
sudo reboot #重新启动,free -m 查看
#重新启动,建议做
sudo reboot
#继续准备工作...
#安装onnx需要的pip包
pip3 install pybind11
pip3 install numpy==1.19.2 #(这个最好用whl包,否则安装过程比较长。)
pip3 install pytest
pip3 install scipy==1.7.2 #(这个最好用whl包,否则安装过程比较长。)
#继续安装用的软件包:
pip3 install networkx defusedxml
sudo apt-get install -y libjasper-dev libsnappy-dev libhdf5-dev
sudo apt-get install -y liblapacke-dev
#编译opencv,这里用4.2.0版本,与openvino的一致
#下载opencv用到的源码 (当时opencv放在~/build_opencv420/目录里,opencv_contrib放在~/目录)
#在~/build_opencv420/opencv/目录里创建build目录(mkdir build)
cd ~/build_opencv420/opencv/build/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_OPENMP=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_QT=OFF \
-D WITH_VTK=OFF \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
make clean
make -j4 #大约需要4个小时多,中间会遇到几个错误,从网上能找到答案
sudo make install
sudo ldconfig
#根据情况要保证git能顺利clone代码,可以考虑切换git的下载协议
git config --global url."git://".insteadOf https://
#(gitee 不需要替换https为git)
#编译protobuf,安装onnx就需要通过源码编译的protobuf (使用apt-get安装的不能用)
#创建目录
mkdir sources
cd sources
#下载protobuf源码
git clone git://github.com/google/protobuf.git
cd ~/sources/protobuf/
git checkout 3.12.x
git submodule update --init --recursive
./autogen.sh
./configure CFLAGS="-fPIC" CXXFLAGS="-fPIC"
make #需要较长时间
make check
sudo make install
sudo ldconfig
#安装onnx,建议用whl,直接搜索下面的whl包,下载安装
pip3 install onnx-1.10.2-cp37-cp37m-linux_armv7l.whl
#继续安装需要用到的软件包
pip3 install Cython
sudo apt-get install -y graphviz
sudo apt-get install -y clang #(用这个工具编译mxnet,时间少一些。)
pip3 install pyinstaller==4.7 #(这个最好用whl包)
sudo apt-get install cython3
#以下的三个whl,需要搜索下载。
pip3 install grpcio-1.32.0-cp37-cp37m-linux_armv7l.whl
pip3 install h5py-2.10.0-cp37-cp37m-linux_armv7l.whl
pip3 install tensorflow-2.4.0-cp37-none-linux_armv7l.whl
pip3 install keras==2.4.0
#继续安装需要用到的软件包
sudo apt-get install -y libgoogle-glog-dev libgflags-dev libleveldb-dev liblmdb-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y the python3-dev python3-skimage
pip3 install pydot
#pip3 install graphviz (不太确认是否需要安装,先放这里)
#建议使用whl安装mxnet,因为编译时间太长了。
pip3 install mxnet-2.0.0-py3-none-any.whl
#源码编译mxnet
git clone https://github.com/apache/incubator-mxnet.git mxnet --recursive
$ cd mxnet
#这里编译的是1.8版本
$ mkdir build
$ cd build
#使用clang时,加上下面的2行
$ export CC=clang
$ export CXX=clang++
$ cmake -DUSE_SSE=OFF \
-DUSE_F16C=OFF \
-DUSE_CUDA=OFF \
-DUSE_OPENCV=ON \
-DUSE_OPENMP=ON \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_SIGNAL_HANDLER=ON \
-Dmxnet_LINKER_LIBS=-latomic \
-DCMAKE_BUILD_TYPE=Release ..
$ make -j2 USE_CPP_PACKAGE=1 #(可以不用USE_CPP_PACKAGE=1,建议用上-j参数,使用clang编译)
$ sudo make install
#继续安装需要用到的软件包
sudo apt-get install -y libopenblas-dev libblas-dev m4 cmake cython python3-yaml libatlas-base-dev
pip3 install pyyaml
#下载caffe的代码 (参考这个链接 https://qengineering.eu/install-caffe-on-raspberry-pi-4.html 安装)
$ cd caffe
$ cp Makefile.config.cp37_arm-linux-gnueabihf_example Makefile.config
$ make clean #(似乎有个错误)
$ make all -j4
$ make test -j4
$ make runtest -j4
#下面的两句执行不了?
?$ make pycaffe
?$ make pytest
#把caffe路径添加到用户使用空间
$ cd ~
$ nano ~/.bashrc
# at the end of the file add the next line
export PYTHONPATH="${PYTHONPATH}:$HOME/caffe/python"
#建议重启
#继续安装需要用到的软件包,建议直接用whl
pip3 install Pillow-8.4.0-cp37-cp37m-linux_armv7l.whl
pip3 install ffmpeg-1.4-py3-none-any.whl
pip3 install onnxruntime-1.8.1-cp37-cp37m-linux_armv7l.whl
#pytorch网上有说怎么编译的,能编译通过,就是很花时间,建议下载whl安装
pip3 install torch-1.8.0a0+56b43f4-cp37-cp37m-linux_armv7l.whl
pip3 install torchvision-0.9.0a0+8fb5838-cp37-cp37m-linux_armv7l.whl
pip3 install tqdm
pip3 install seaborn
#检查相关的内容是否有?
find /usr -name "opencv.hpp"
find /usr -name "libopencv_highgui.so"
pkg-config --cflags opencv4
#可选安装codeblocks
sudo apt-get install -y codeblocks
#到此AI开发环境基本建立,可以根据需要继续增加AI的内容和测试代码等等
粤ICP备18155588号
粤公网安备44030002010547号