Paddle-Lite-RaspberryPiでPythonAPIに基づいてPaddleモデルをデプロイします

パドルライト環境の準備

ハードウェアの準備

  • ラズベリーパイ4B
  • usbカメラ
  • バスターミラーソースがインストールされたSDカード

基本的なソフトウェア環境の準備

カメラの準備

参考記事:Raspberry Piカメラのインストール、構成、検証

コンパイルライブラリの準備

gcc、g ++、opencv、cmakeのインストールを完了します。

sudo apt-get update
sudo apt-get install gcc g++ make wget unzip libopencv-dev pkg-config
#下载cmake
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz

このステップでダウンロードが遅い場合は、cmake-3.10.3.tar.gzパッケージも提供してます自分でダウンロードできます

#解压
tar -zxvf cmake-3.10.3.tar.gz
#进入文件夹
cd cmake-3.10.3
#环境配置
sudo ./configure
#make
sudo make

ここに画像の説明を挿入

sudo make install

ここに画像の説明を挿入
ここですべての環境準備が完了しました。

Paddle-Liteをダウンロード

遅いgitクローンを持っている学生については、ブログを参照してください:gitクローン高速化する方法

# 1. 下载Paddle-Lite源码 并切换到release分支
git clone https://github.com/PaddlePaddle/Paddle-Lite.git
cd Paddle-Lite && git checkout release/v2.6

# 删除此目录,编译脚本会自动从国内CDN下载第三方库文件
rm -rf third-party

コンパイル

cd Paddle-Lite
./lite/tools/build_linux.sh --arch=armv7hf --with_python=ON --python_version=3.7 --with_extra=ON --with_cv=ON

ここに画像の説明を挿入

コンパイルオプション

./lite/tools/build_linux.sh help
  • 特定のオプション
--------------------------------------------------------------------------------------------------------------------------------------------------------
| Methods of compiling Padddle-Lite Linux library:                                                                                                     |
--------------------------------------------------------------------------------------------------------------------------------------------------------
|  compile linux library: (armv8, gcc)                                                                                                                 |
|     ./lite/tools/build_linux.sh                                                                                                                      |
|  print help information:                                                                                                                             |
|     ./lite/tools/build_linux.sh help                                                                                                                 |
|                                                                                                                                                      |
|  optional argument:                                                                                                                                  |
|     --arch: (armv8|armv7hf|armv7), default is armv8                                                                                                  |
|     --toolchain: (gcc|clang), defalut is gcc                                                                                                         |
|     --with_extra: (OFF|ON); controls whether to publish extra operators and kernels for (sequence-related model such as OCR or NLP), default is OFF  |
|     --with_python: (OFF|ON); controls whether to build python lib or whl, default is OFF                                                             |
|     --python_version: (2.7|3.5|3.7); controls python version to compile whl, default is None                                                         |
|     --with_cv: (OFF|ON); controls whether to compile cv functions into lib, default is OFF                                                           |
|     --with_log: (OFF|ON); controls whether to print log information, default is ON                                                                   |
|     --with_exception: (OFF|ON); controls whether to throw the exception when error occurs, default is OFF                                            |
|                                                                                                                                                      |
|  arguments of striping lib according to input model:                                                                                                 |
|     ./lite/tools/build_linux.sh --with_strip=ON --opt_model_dir=YourOptimizedModelDir                                                                |
|     --with_strip: (OFF|ON); controls whether to strip lib accrding to input model, default is OFF                                                    |
|     --opt_model_dir: (absolute path to optimized model dir) required when compiling striped library                                                  |
|  detailed information about striping lib:  https://paddle-lite.readthedocs.io/zh/latest/user_guides/library_tailoring.html                           |
|                                                                                                                                                      |
|  arguments of opencl library compiling:                                                                                                              |
|     ./lite/tools/build_linux.sh --with_opencl=ON                                                                                                     |
|     --with_opencl: (OFF|ON); controls whether to compile lib for opencl, default is OFF                                                              |
|                                                                                                                                                      |
|  arguments of rockchip npu library compiling:                                                                                                        |
|     ./lite/tools/build_linux.sh --with_rockchip_npu=ON --rockchip_npu_sdk_root=YourRockchipNpuSdkPath                                                |
|     --with_rockchip_npu: (OFF|ON); controls whether to compile lib for rockchip_npu, default is OFF                                                  |
|     --rockchip_npu_sdk_root: (path to rockchip_npu DDK file) required when compiling rockchip_npu library                                            |
|                                                                                                                                                      |
|  arguments of baidu xpu library compiling:                                                                                                           |
|     ./lite/tools/build_linux.sh --with_baidu_xpu=ON --baidu_xpu_sdk_root=YourBaiduXpuSdkPath                                                         |
|     --with_baidu_xpu: (OFF|ON); controls whether to compile lib for baidu_xpu, default is OFF                                                        |
|     --baidu_xpu_sdk_root: (path to baidu_xpu DDK file) required when compiling baidu_xpu library                                                     |
--------------------------------------------------------------------------------------------------------------------------------------------------------

コンパイルが完了しました
ここに画像の説明を挿入

コンパイルされたpythonpaddle-liteパッケージをインストールします

进入dist目录下
cd /Paddle-Lite/build.lite.linux.armv7hf.gcc/inference_lite_lib.armlinux.armv7hf/python/install/dist

ここに画像の説明を挿入

pip3 install paddlelite-2708c2fe-cp37-cp37m-linux_armv7l.whl

ここに画像の説明を挿入

PythonAPIに基づいてデモプログラムを実行します

モデルファイルを準備する

  • モデルのダウンロード
wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz
tar zxf mobilenet_v1.tar.gz
  • optツールでモデルを変換する
paddle_lite_opt --model_dir=./mobilenet_v1  \
                --optimize_out=mobilenet_v1_opt \
                --optimize_out_type=naive_buffer \
                --valid_targets=arm

変換の成功
ここに画像の説明を挿入

モデルを実行する

ここには2つのデモファイルがあることに注意してください。それらの違いは次のとおりです。

  • full_api.pyファイルに必要なモデルファイルは__model__and__param__ファイルであり、APIは詳細に説明されています:CxxPredictor
  • light_api.pyoptで必要なモデルファイルは、opt変換後のmodel.nbファイルです。詳細なAPI:LightPredictor
# light api的输入为优化后模型文件mobilenet_v1_opt.nb
python3 mobilenetv1_light_api.py --model_dir=mobilenet_v1_opt.nb

ここに画像の説明を挿入

独自のモデルをデプロイする

Paddleが推論に使用するモデルは、save_inference_modelこのAPIを介して保存されます。保存には2つの形式があります。ここでは、AIスタジオで実行して生成されたモデルパラメーターファイルがダウンロードされ、RaspberryPiにマウントされます。

2つのモデル形式

  • 非複合形態:パラメータを保存するために、別のファイル、例えば集合としてmodel_filenameNoneparams_filenameNone
    ここに画像の説明を挿入

  • 組み合わせフォーム:このような設定と同じファイルに引数、model_filenamemodelparams_filenameなどparams

ここに画像の説明を挿入

optツールをコンパイルします

Raspberry Piでコンパイル:

cd Paddle-Lite
./lite/tools/build.sh build_optimize_tool

ここに画像の説明を挿入

optを使用してモデルを変換する

paddle_lite_opt --model_dir=./mobilenet_v1 \
      --valid_targets=arm \
      --optimize_out_type=naive_buffer \
      --optimize_out=mobilenet_v1_opt

具体的なAPIの詳細は次のとおりです。

コンパイルプロセスリファレンス:

おすすめ

転載: blog.csdn.net/qq_45779334/article/details/112006696