樹莓派上深度學習推理框架的環境搭建教程
機器人與自動駕駛課程請關注深藍學院
我是來自山區、樸實、不偷電瓶的 AI 算法工程師阿 chai,給大家分享人工智能、自動駕駛、機器人、3D 感知相關的知識
樹莓派是一款優秀的卡片式電腦,是很多創客玩家必修的心法。對於想要將深度學習模型部署的小夥伴來說,樹莓派是我們絕對首選的設備,但是樹莓派畢竟是嵌入式,嵌入式上搭建環境經常很多坑,今天阿 chai 給大家整理一下樹莓派上安裝深度學習推理框架的過程,希望對大家做模型部署有幫助。
這裏先說明一下,阿 chai 測試的平臺是 4B、3B,其他的樹莓派平臺未測試過,系統用的是官方的 raspbian OS 與 Lite,Ubuntu Mate 可能會出一些問題。
1.Caffe
安裝依賴:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
clone Caffe 的代碼:
git clone https://github.com/BVLC/caffe.git
進入 Caffe 的工程文件夾打開配置文件,工程中包含一個 Makefile 的例子,我們需將它複製並修改:
cp Makefile.config.example Makefile.config
nano Makefile.config
使用的 CPU 版本:
# CPU_ONLY := 1
CPU_ONLY := 1
編譯 (不要多開):
mkdir build && cd build
cmake ..
make
sudo make install
2.Caffe2
現在 Caffe2 集成在了 PyTorch 裏面,所以需要 clone PyTorch 的項目。
git clone https://github.com/pytorch/pytorch.git
我們看一下官方提供的編譯腳本 build_raspbian.sh
CAFFE2_ROOT="$( cd "$(dirname -- "$0")"/.. ; pwd -P)"
echo "Caffe2 codebase root is: $CAFFE2_ROOT"
BUILD_ROOT=${BUILD_ROOT:-"$CAFFE2_ROOT/build"}
mkdir -p $BUILD_ROOT
echo "Build Caffe2 raspbian into: $BUILD_ROOT"
# obtain dependencies.
echo "Installing dependencies."
sudo apt-get install \
cmake \
libgflags-dev \
libgoogle-glog-dev \
libprotobuf-dev \
libpython-dev \
python-pip \
python-numpy \
protobuf-compiler \
python-protobuf
# python dependencies
sudo pip install hypothesis
# Now, actually build the raspbian target.
echo "Building caffe2"
cd $BUILD_ROOT
# Note: you can add more dependencies above if you need libraries such as
# leveldb, lmdb, etc.
cmake "$CAFFE2_ROOT" \
-DCMAKE_VERBOSE_MAKEFILE=1 \
-DCAFFE2_CPU_FLAGS="-mfpu=neon -mfloat-abi=hard" \
|| exit 1
# Note: while Raspberry pi has 4 cores, running too many builds in parallel may
# cause out of memory errors so we will simply run -j 2 only.
make -j 2 || exit 1
可以根據自己的需求把裏面的部分進行修改,比如對 python 的添加等,如果想要使用 python 調用直接運行即可。
bash build_raspbian.sh
3.opencv DNN
下載 opencv 與 opencv-contrib:
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
下載慢可以使用 sftp 的 put 命令從本地上傳到樹莓派。
安裝相關依賴:
sudo apt-get install devscripts debhelper cmake libgtkmm-3.0-dev libarchive-dev libcurl4-openssl-dev intltool
sudo apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev libblas-dev libeigen{2,3}-dev liblapack-dev gfortran
編譯
cd opencv-master
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH= 你的路徑/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
make -j4
sudo make install
4.TF-Lite
TensorFlow 官方提供了非常不錯的樹莓派上 build 的教程,過程非常的簡單。
編譯前請先安裝 opencv。
首先 clone 下來:
git clone https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi.git
我們修改一下 build 文件:
nano get_pi_requirements.sh
將 opencv 的版本切換爲自己需要的,比如 4.X,一般來說不會有什麼大的影響。
修改後我們直接執行 build 腳本即可:
bash get_pi_requirements.sh
5.Tengine
編譯前請先安裝 opencv。
a. 直接編譯
在樹莓派上卸載源碼 (如果網速慢請切換成 gitee):
git clone -b tengine-lite https://github.com/OAID/Tengine.git Tengine-Lite
編譯:
cd Tengine-Lite
mkdir build
cd build
cmake ..
make
make install
b.PC 上交叉編譯
Arm64 Linux 交叉編譯
cd Tengine-Lite
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake ..
make
make install
Arm32 Linux 交叉編譯
cd Tengine-Lite
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake ..
make
make install
編譯完成後會生成 libtengine-lite.so
文件,並且會把相關的頭文件、libtengine-lite.so
文件和相關的測試程序複製到 build/install
目錄中。
6.NCNN
編譯前請先安裝 opencv。
安裝依賴:
sudo apt-get install -y git cmake
sudo apt-get install -y gfortran
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev
編譯 (vulkan 得等等, 樹莓派的這個很玄學):
mkdir build && cd build
cmake -DCMAKE_VERBOSE_MAKEFILE=1 -DCAFFE2_CPU_FLAGS="-mfpu=neon -mfloat-abi=hard" ..
make
sudo make install
7.MNN
編譯前請先安裝 opencv。
安裝依賴:
sudo apt-get install autoconf automake libtool curl cmake g++
編譯 protobuf:
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig
編譯 MNN:
git clone https://gitee.com/mirrors/mnn.git (用的碼雲,git太慢)
cd MNN/
./schema/generate.sh
mkdir build
cd build
cmake .. -DMNN_BUILD_CONVERTER=true && make -j4
8.Paddle-Lite
編譯前請先安裝 opencv。
安裝依賴:
sudo apt-get install gcc g++ git wget python
CMake 版本要高於 3.10。
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
tar -zxvf cmake-3.10.3.tar.gz
cd cmake-3.10.3
./configure
make
sudo make install
編譯:
git clone https://github.com/PaddlePaddle/Paddle-Lite.git
cd Paddle-Lite/lite/tools/
bash build_linux.sh --arch=armv7hf
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/0BHshC8WpvxAJtdN1zBSsg