Tic商业评论

关注微信公众号【站长自定义模块】,定时推送前沿、专业、深度的商业资讯。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

  • QQ空间
  • 回复
  • 收藏

在Raspberry Pi 4上安装Paddle Lite深度学习框架

lijingle 环境搭建 2021-12-25 21:29 2172人围观

介绍
本文主要在树莓派 4 上安装百度的 Paddle Lite 框架。C++ 代码示例是在树莓派 4 的 Code::Blocks IDE 中编写的。只介绍基础知识, 所以最后,你可以构建你的应用程序。 Paddle Lite 库的更多信息,请参见:https://github.com/PaddlePaddle/Paddle-Lite 或中文教程 https://paddle-lite.readthedocs.io/zh/latest/。 安装的是C++版本,它不适合 Python。

依赖
Paddle Lite 框架几乎没有依赖项。 OpenCV 会很有用,但它也可以不用。 我们安装OpenCV是因为我们的大多数软件都或多或少使用 OpenCV。

版本检查
在 Raspberry Pi 4 上安装 Paddle Lite 之前,先检查操作系统。运行命令 uname -a 并使用下面的图像所示验证你的版本。


如果是 64 位操作系统,还请使用命令 gcc -v 检查您的 C++ 编译器。 必须是 aarch64-linux-gnu 版本。 如果 gcc 版本不同,请使用最新版本重新安装整个操作系统。 该指南位于此处:在 Raspberry Pi 4 上安装 64 位操作系统。必须拥有 64 位 C++ 编译器,因为我们将编译 Paddle Lite 库。

还要注意根据我们的说明安装后 zram swap大小超过 3 GB。


Raspberry Pi 32-bit OS

安装

由于 CPU(armv8)和编译器(arm-linux-gnueabihf)不兼容,Paddle-Lite 无法安装在 32 位操作系统的树莓派 4 上。 生成的库使用 armv8 中缺少的寄存器 (VFPV3)。 更换编译器那是相当痛苦。 你可以在 Raspberry Pi 3 上安装 Paddle-Lite,或者更好,使用新的 SD 卡并安装最新的 Raspberry Pi 64 位操作系统。

对于使用 Raspberry Pi 3 的用户,如果尚未安装,请先安装 OpenCV。 安装指南在这里,大约需要一个小时。

最新版 Paddle Lite (v2.6.3) 在 32 位操作系统 (Raspbian) 上的整个安装过程如下。

Raspberry Pi 3 only !
# check for updates
$ sudo apt-get update
$ sudo apt-get upgrade
# install dependencies
$ sudo apt-get install cmake wget
# download Paddle Lite
$ git clone https://github.com/PaddlePaddle/Paddle-Lite.git
$ cd Paddle-Lite
# build 32-bit Paddle Lite
$ ./lite/tools/build.sh \
  --build_cv=ON \
  --build_extra=ON \
  --arm_os=armlinux \
  --arm_abi=armv7hf \
  --arm_lang=gcc \
  tiny_publish
# copy the headers and library to /usr/local/
$ sudo mkdir -p /usr/local/include/paddle-lite
$ sudo cp -r build.lite.armlinux.armv7hf.gcc/inference_lite_lib.armlinux.armv8/cxx/include/*.* /usr/local/include/paddle-lite

$ sudo mkdir -p /usr/local/lib/paddle-lite
$ sudo cp -r build.lite.armlinux.armv7hf.gcc/inference_lite_lib.armlinux.armv8/cxx/lib/*.* /usr/local/lib/paddle-lite.

Raspberry Pi 64-bit OS.

安装

如果尚未安装 OpenCV,请先安装它。 安装指南在这里,大约需要一个小时。
最新版 Paddle Lite (v2.6.3) 在 64 位操作系统的树莓派上的整个安装过程如下。
# check for updates (64-bit OS is still under development!)
$ sudo apt-get update
$ sudo apt-get upgrade
# install dependencies
$ sudo apt-get install cmake wget
# download Paddle Lite
$ git clone https://github.com/PaddlePaddle/Paddle-Lite.git
$ cd Paddle-Lite
# build 64-bit Paddle Lite (±1 hour)
$ ./lite/tools/build.sh \
  --build_cv=ON \
  --build_extra=ON \
  --arm_os=armlinux \
  --arm_abi=armv8 \
  --arm_lang=gcc \
  tiny_publish
# copy the headers and library to /usr/local/
$ sudo mkdir -p /usr/local/include/paddle-lite
$ sudo cp -r build.lite.armlinux.armv8.gcc/inference_lite_lib.armlinux.armv8/cxx/include/*.* /usr/local/include/paddle-lite
$ sudo mkdir -p /usr/local/lib/paddle-lite
$ sudo cp -r build.lite.armlinux.armv8.gcc/inference_lite_lib.armlinux.armv8/cxx/lib/*.* /usr/local/lib/paddle-lite

如果一切顺利,你将获得以下输出。


另请注意带有例子的文件夹。


转换为 Paddle Lite

本节描述了常规的、所谓的liquid模型从 PaddlePaddle 框架到嵌入式系统(如 Raspberry Pi 4 或 Jetson Nano)中使用的 Paddle Lite 模型的转换。 与 TensorFlow Lite 一样,并非所有模型都可以移植到 Lite 框架。 不支持某些操作。 如果出现这种情况,转换工具会通知你。 在我们编译转换工具之前,需要做一些准备工作。 首先,我们需要至少 6 GB 的 RAM,就像从头开始构建 PaddlePaddle 一样。


按照此处此页面上的步骤增加 RAM。 完成后,请确保你有所需的 RAM 量。


接下来,应禁用 -m64 标志,因为 aarch64 系统无法识别此标志。


-m64 标志在 flags.cmake 的第 151 行声明。该文件位于 ~/Paddle-Lite/cmake 文件夹中。

使用文本 AND NOT(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") 展开第 151 行,如下所示。

它有效地禁用了 aarch64 机器未知的 -m64 标志。


完成这些步骤后,你可以开始编译 Paddle Lite 转换工具。 假设你已经成功编译了如上所述的 Paddle Lite 框架。 转换工具的编译如下。

$ cd ~/Paddle-Lite
# build 64-bit Paddle Lite optimize tool
$ ./lite/tools/build.sh \
  --build_cv=ON \
  --arm_os=armlinux \
  --arm_abi=armv8 \
  --arm_lang=gcc \
  build_optimize_tool


在文件夹 /home/pi/Paddle-Lite/build.opt/lite/api 中,你可以找到名为 opt 的优化工具。


拥有优化器后,您现在可以使用 PaddleHub 下载您感兴趣的深度学习模型。 此处介绍了该过程。 例如,我们将使用口罩检测器。 liquid模型,正如 PaddlePaddle 所说的深度学习模型,有两种变体。 要么是将参数(拓扑)和权重放在一个文件中的组合模型,

要么将参数和权重分别存储在一个单独的文件中。优化器处理这两种类型。 碰巧的是,口罩检测器有两个文件。

所以下一步通过一些 Python 指令将从网络中提取这些 __model__ 和 __param__。 我们同时使用了 PaddlePaddle 和 PaddleHub。

$ python3
>>> import paddlehub as hub 
>>> import paddle

>>> paddle.enable_static() 
>>> pyramidbox_lite_mobile_mask = hub.Module(name="pyramidbox_lite_mobile_mask") 
>>> pyramidbox_lite_mobile_mask.save_inference_model(dirname="test_program")


最后一个步骤是通过build opt 应用程序将模型和参数转换为 Paddle Lite 版本 这是通过以下命令完成的。

$ ./opt \--model_file=/home/pi/test_program/mask_detector/__model__ \--param_file=/home/pi/test_program/mask_detector/__params__ \--valid_targets=arm \--optimize_out_type=naive_buffer \--optimize_out=opt_model_v2.7


请注意版本号 V2.7。 大多数模型既不向后也不向前兼容。 关于优化工具的更多信息可以在 wiki https://github.com/PaddlePaddle/Paddle-Lite/wiki/model_optimize_tool 中找到。 如果你必须重新安装 dphys-swapfile,那可以再次卸载它了。 这样你就可以延长 SD 卡的使用寿命。


路过

雷人

握手

鲜花

鸡蛋
我有话说......

TA还没有介绍自己。

电话咨询: 135xxxxxxx
关注微信