树莓派(8):树莓派搭建MNN

本文详细介绍在树莓派4B上搭建MNN轻量级深度神经网络推理引擎的过程,包括硬件和软件环境配置、MNN版本选择、编译选项设置及编译步骤。提供亲测可行的MNN版本,附带编译后的MNN库文件下载链接。


在这里插入图片描述
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。

最近在树莓派上部署了一下,跑神经网络能够达到非常不错的效果。关于MNN的资料非常多,相信大家可以轻松找到,比如语雀这里就有很详细的资料,其github也是有更为直接的资料。

在此只记录一下树莓派搭建MNN的过程,包括安装界面以及遇到的一些坑,以便下次有需求时能顺利搭建,同时也供大家参考。

0.环境

0.1硬件环境

我用的是树莓派4B(4G版本),应该是各种树莓派型号都可以。

0.2软件环境

我用的是树莓派镜像buster版本,另外,MNN对于cmake、protobuf、gcc的版本是有一定要求的——

  • cmake (version >=3.10 is recommended)
  • protobuf (version >= 3.0 is required)
  • gcc (version >= 4.9 is required)

这个比较简单,更新到最新版本就OK了。

1.获取MNN

git clone https://github.com/alibaba/MNN.git
此方法要慎重,MNN版本不对会很麻烦。比如出现下面这种状况——

### 树莓派MNN.llm安装配置及使用教程 #### 1. 树莓派简介 树莓派是一种基于ARM架构的小型单板计算机,广泛应用于嵌入式开发、物联网项目以及机器学习模型部署等领域。其低功耗特性和强大的硬件支持使其成为开发者青睐的选择之一[^1]。 #### 2. MNN框架概述 MNN (Mobile Neural Network) 是阿里巴巴开源的一个轻量级神经网络推理框架,专为移动设备优化设计。它能够高效运行各种深度学习模型,在资源受限环境下表现出优异性能[^2]。 #### 3. 环境准备 在开始之前,请确认已准备好以下条件: - 已完成操作系统镜像烧录并正常启动的树莓派设备; - Python环境版本建议Python 3.x以上; - 连接至互联网以便下载必要的依赖库文件。 #### 4. 安装过程详解 ##### (1)更新系统包管理器索引 执行命令刷新APT源列表以获取最新软件信息。 ```bash sudo apt update && sudo apt upgrade -y ``` ##### (2)安装基础构建工具链及相关组件 为了编译自定义模块或者处理特定需求可能需要用到gcc/g++编译器以及其他辅助程序。 ```bash sudo apt install build-essential cmake git python3-dev libatlas-base-dev -y ``` ##### (3)克隆官方仓库到本地目录下 通过Git命令拉取远程存储库中的代码副本用于后续操作。 ```bash git clone https://github.com/alibaba/MNN.git ~/MNN cd ~/MNN ``` ##### (4)切换分支标签匹配目标平台特性 由于不同硬件可能存在差异因此需选取适配版次进行定制化调整。 ```bash git checkout v1.3.0 # 或者其他稳定发行版本号 ``` ##### (5)生成Makefile脚本前先指定交叉编译参数选项 考虑到Raspberry Pi系列采用的是armv7l指令集结构所以这里要特别指明主机类型等相关细节设置。 ```bash mkdir build && cd build cmake .. \ -DCMAKE_SYSTEM_NAME=Linux \ -DCMAKE_SYSTEM_PROCESSOR=arm \ -DMNN_BUILD_FOR_RASPBERRY=true \ -DMNN_USE_THREAD_POOL=false make -j$(nproc) ``` ##### (6)验证成功与否并通过简单测试案例检验功能可用性 加载预训练权重数据后调用接口方法实现图像分类预测等功能演示效果展示给用户看。 ```python from PIL import Image import numpy as np from mnn import Interpreter, Session def load_model(path): interpreter = Interpreter(path) session = Session(interpreter) input_tensor = interpreter.getSessionInput(session) return interpreter, session, input_tensor image_path = 'test.jpg' model_file = './example/mobilenet_v1_1.0_224_quant.mnn' img = Image.open(image_path).resize((224, 224)) data = np.array(img.convert('RGB')).astype(np.float32)[np.newaxis,...]/255. interpreter, session, input_tensor = load_model(model_file) tmp_buffer = data.tobytes() input_tensor.copyFrom(tmp_buffer) interpreter.runSession(session) output_tensor = interpreter.getSessionOutputAll(session)['MobilenetV1/Predictions/Reshape_1'] print(output_tensor.getData()) ``` #### 5. 常见问题排查指南 如果遇到错误提示无法顺利完成整个流程可以尝试按照如下方式逐一解决: - 检查联网状态确保能顺利访问外部站点; - 对照文档说明仔细核对每一步骤输入是否正确无误; - 查阅社区论坛寻求帮助交流经验技巧;
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值