总述
本文使用的板子是 Orange Pi Zero2,这款板子的处理器是 Allwinner H616(Cortex-A53),是 armv8 架构,因此 MNN 的官方代码是直接支持编译的。由于 Zero2 只有 1GB 的内存,编译过程中遇到了内存不足的问题,本文也给出了解决方法。
目录
- 总述
- 阅前参考
- 安装步骤
- 一、配置交换空间
- 1) 创建并设置 swap 文件
- 2) 添加开机启动
- 3) 重启并查看内存
- 二、克隆仓库并编译
- 1) 安装编译依赖
- 2) 克隆 github 仓库
- 3) 编译 whl 并安装
- 参考资料
阅前参考
- Orange Pi 开发板型号查询
开发板(Orange Pi)-Orange Pi官网-香橙派开发板,开源硬件,开源软件,开源芯片,电脑键盘 - arm 常见架构区别速览
arm64,aarch64,armv8,armel,armhf以及x86,arm,mips杂谈 - 江州司马 - MNN 官方仓库
alibaba_MNN: MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases in Alibaba
安装步骤
一、配置交换空间
由于 Orange Pi Zero2 只有 1GB 的内存,如果没有配置交换空间(虚拟内存),编译过程中会遇到内存不足的问题。因此,在编译前首先需要配置交换空间。具体命令如下:
1) 创建并设置 swap 文件
首先创建一个 4GB 的 swapfile 文件,然后启用该文件:
cd usr
sudo mkdir swap
sudo dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096
sudo mkswap /usr/swap/swapfile
sudo swapon /usr/swap/swapfile
2) 添加开机启动
打开 /etc/fstab
文件:
sudo vim /etc/fstab
在文件末尾添加以下内容并保存:
/usr/swap/swapfile swap swap defaults 0 0
3) 重启并查看内存
运行 reboot
命令重启,运行 free -m
命令查看内存:
reboot
free -h
此时已经出现了 4GB 的名为 swap 的交换空间内存。
二、克隆仓库并编译
1) 安装编译依赖
sudo apt-get install cmake libprotobuf-dev protobuf-compiler
2) 克隆 github 仓库
git clone https://github.com/alibaba/MNN
3) 编译 whl 并安装
进入克隆下来的 MNN 目录,运行 ./schema/generate.sh
。接着进入 pymnn/pip_package
目录,先运行 build_deps.py 文件编译所有依赖,再运行 build_wheel.py
编译 whl 文件。
这两个编译步骤可能要好几个小时,提前做好准备。
注意在运行 build_wheel.py
时需要指定版本号,这个可以根据在 release 里最新的版本号来填。
cd MNN
./schema/generate.sh
cd pymnn/pip_package
python build_deps.py
python build_wheel.py --version 2.2.0
编译完成后,编译好的 whl 文件在 pymnn/pip_package/dist
文件夹下。切换到该目录,ls
查看文件名,将该文件的后缀改为 manylinux2014_aarch64.whl
然后用 pip 安装该文件。
cd dist
ls
pip install MNN-2.2.0-cp39-cp39-manylinux2014_aarch64.whl
参考资料
[1] 在树莓派4B上手动编译whl文件安装python的MNN包_叼辣条闯天涯的博客-CSDN博客
[2] Linux系统设置虚拟内存_谁是笨小孩_的博客-CSDN博客