树梅派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号