Directorio de artículos
Preparación del entorno de Paddle Lite
Preparación de hardware
- Frambuesa Pi 4B
- cámara usb
- Tarjeta SD con fuente de espejo Buster instalada
Preparación básica del entorno de software
Preparación de la cámara
Artículo de referencia: Instalación, configuración y verificación de la cámara Raspberry Pi
Preparación de la biblioteca de compilación
Complete la instalación de 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
Si la descarga es lenta en este paso, también proporciono el paquete cmake-3.10.3.tar.gz , y puede descargarlo usted mismo .
#解压
tar -zxvf cmake-3.10.3.tar.gz
#进入文件夹
cd cmake-3.10.3
#环境配置
sudo ./configure
#make
sudo make
sudo make install
Todos los preparativos ambientales se han completado aquí.
Descarga Paddle-Lite
Para los estudiantes que tienen un clon de git lento, consulte el blog: Cómo acelerar el clon de 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
Compilar
cd Paddle-Lite
./lite/tools/build_linux.sh --arch=armv7hf --with_python=ON --python_version=3.7 --with_extra=ON --with_cv=ON
Opciones de compilación
./lite/tools/build_linux.sh help
- Opciones específicas
--------------------------------------------------------------------------------------------------------------------------------------------------------
| 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 |
--------------------------------------------------------------------------------------------------------------------------------------------------------
La compilación está completa
Instale el paquete python paddle-lite compilado
进入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
Ejecute el programa de demostración basado en la API de Python
Preparar archivos de modelo
- Descargar modelo
wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz
tar zxf mobilenet_v1.tar.gz
- Convertir modelo con la herramienta opt
paddle_lite_opt --model_dir=./mobilenet_v1 \
--optimize_out=mobilenet_v1_opt \
--optimize_out_type=naive_buffer \
--valid_targets=arm
Conversión exitosa
Ejecuta el modelo
Cabe señalar que aquí hay dos archivos de demostración, la diferencia entre ellos es
full_api.py
El archivo de modelo necesario en el archivo es el archivo__model__
y__param__
, la API se explica en detalle: CxxPredictorlight_api.py
El archivo de modelo necesario en la opción es elmodel.nb
archivo después de la conversión de la opción . API detallada: LightPredictor
# light api的输入为优化后模型文件mobilenet_v1_opt.nb
python3 mobilenetv1_light_api.py --model_dir=mobilenet_v1_opt.nb
Implementa tu propio modelo
El modelo utilizado por Paddle para razonar se save_inference_model
guarda a través de esta API. Hay dos formatos para guardar. Aquí, el archivo de parámetros del modelo generado al ejecutar en AI Studio se descarga y se monta en la Raspberry Pi:
Dos formatos de modelo
-
forma no combinada : un archivo separado para guardar parámetros, como establecer
model_filename
enNone
,params_filename
enNone
-
forma combinada : los argumentos en el mismo archivo, como la configuración
model_filename
esmodel
,params_filename
comoparams
Compila la herramienta opt
Compilar en Raspberry Pi:
cd Paddle-Lite
./lite/tools/build.sh build_optimize_tool
Convertir modelo usando opt
paddle_lite_opt --model_dir=./mobilenet_v1 \
--valid_targets=arm \
--optimize_out_type=naive_buffer \
--optimize_out=mobilenet_v1_opt
Los detalles específicos de la API se refieren a:
Referencia del proceso de compilación: