前言
实验室的项目需要用到Firefly的AIO-3399 ProC开发板,该型号开发板集成了硬件加速芯片NPU(神经网络加速单元),经tensorflow、PyTorch等训练好的模型可用官方提供的RKNN Toolkit工具转换为.rknn格式的模型,运行在开发板上利用NPU进行对数据的后向推理加速处理。RKNN Toolkit开发套件安装繁琐,前前后后折腾了一周的时间才算部署成功,故记录下部署过程及遇到的问题,以供自己和各位参考。
一、开发部署环境
| 开发环境 | 软件版本/配置 |
|---|---|
| 开发板型号 | Firefly AIO-3399 ProC开发板 (3+16GB) |
| 开发板操作系统 | Ubuntu 18.04LTS |
| 开发板固件版本 | AIO-RK3399PROC-UBUNTU18.04-GPT-20200525-1016.img |
| RKNN Toolkit版本 | 1.6.0 (rknn_toolkit-1.6.0-cp37-cp37m-linux_aarch64.whl) |
| Python版本 | Python 3.7.10 |
| 电脑远程软件 | Xshell 6&Xftpd 6 |
二、RKNN 三件套介绍
1、RKNN-Toolkit → 基于 Python 环境的模型转换推理开发工具
2、DRV → NPU 和上位机通信的服务
3、API → 调用NPU 硬件的 API 接口
三、安装过程
3.1 查看开发板中DRV的版本(1.3.1)
firefly@firefly:~$ dpkg -l | grep 3399pro
ii firefly-3399pronpu-driver 1.3.1 arm64 <insert up to 60 chars description>
更新DRV的版本
sudo apt update
sudo apt install firefly-3399pronpu-driver
更新完后,检查DRV的版本已升级至1.6.0
firefly@firefly:~$ dpkg -l | grep 3399pro
ii firefly-3399pronpu-driver 1.6.0 arm64 <insert up to 60 chars description>
3.2 关闭开发板当前系统的图形界面
使用Xshell 6 SSH登录开发板,进行下列操作,防止后续编译软件包时因系统内存不足导致编译失败
(谨慎使用,最新固件AIO-RK3399PROC-UBUNTU-20210304-1705.img关闭图形界面后会导致系统无法启动,串口显示如下报错信息:
4189 串口[ 4.772713] 00000040: 000002a5 000002a5 00000000 00000000 00000000 00000000 00000000 00000000
4190 串口[ 4.773490] 00000060: 00000004 00000004 00000753 00000753 00000000 00000000 00000000 00000000
4191 串口[ 4.774254] 00000080: 00000000 00000000
4192 串口[ 4.820522] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
4193 串口[ 4.820522]
4194 串口DDR Version 1.24 20191016
AIO-RK3399PROC-UBUNTU18.04-GPT-20200525-1016.img该版本可以正常操作)
sudo systemctl set-default multi-user.target
sudo reboot
#未关GUI界面时的系统占用
Memory usage: 12 % of 1893MB
Usage of /: 24% of 15G
#关闭GUI界面时的系统占用
Memory usage: 4 % of 1893MB
Usage of /: 24% of 15G
(PS:待RKNN Toolkit安装完成后可再手动开启用户界面
sudo systemctl set-default graphical.target
sudo reboot
)
3.3 安装Python3.7
sudo apt update #检查可更新文件
sudo apt install software-properties-common #安装可添加源的工具
sudo add-apt-repository ppa:deadsnakes/ppa #添加源,否则会无法找到python3.7-dev软件包
sudo apt install python3.7-dev #安装python3.7
3.4 用virtualenv管理python版本
(开发板系统中同时存在多个 Python(Python2.7&python3.6)版本,建议使用 virtualenv来管
理 Python环境)
#创建 virtualenv环境
sudo apt install virtualenv #安装virtualenv软件
virtualenv -p /usr/bin/python3.7 venv #创建虚拟环境
source venv/bin/activate #激活venv环境
(venv) firefly@firefly:~$ pip3 -V #查看当前pip3所在Python的路径
pip 21.0.1 from /home/firefly/venv/lib/python3.7/site-packages/pip (python 3.7)pip
修改python默认为python3.7:
为了因为C++调用python时,默认是调用python2.7,这导致很多python3.7的语法报错。所以需要更改python默认软连接
#查看路径python,python3.7路径
which python python3.7
/usr/bin/python
/usr/bin/python3.7
sudo rm /usr/bin/python
sudo rm /usr/bin/python3
#创建python3.软连接到python&Python3
sudo ln -s /usr/bin/python3.7 /usr/bin/python
sudo ln -s /usr/bin/python3.7 /usr/bin/python3
至此Python3.7环境配置完成。
3.5 安装相关依赖包(numpy、h5py &opencv)
3.5.1 安装并更新相关依赖包
sudo apt-get update
sudo apt-get install cmake gcc g++ libprotobuf-dev protobuf-compiler
sudo apt-get install liblapack-dev libjpeg-dev zlib1g-dev
pip3 install --upgrade pip #更新pip包的版本
pip3 install wheel setuptools #安装 Python 打包工具
3.5.2 安装并编译numpy、h5py
(PS:opencv-python和h5py同时依赖的numpy包的版本必须是1.16.3,故需先安装编译numpy包。较难编译和费时较长的whl包已上传至网盘,如有需要,可从文末的链接下载到PC端,通过Xftpd软件上传至开发板安装目录,离线安装即可
)
重要 :安装包的顺序不可调换,否则默认安装的依赖包版本与RKNN所要求的冲突
执行以下命令:
pip3 install numpy==1.16.3 #安装numpy包,编译完成即可进行下一步
#或将离线包下载后安装
#pip3 install numpy-1.16.3-cp37-cp37m-linux_aarch64.whl
pip3 install h5py==2.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple #安装h5py包,编译完成即可进行下一步
这时编译h5py包报错
/tmp/pip-install-g8zeu2wp/h5py_e742916510854ca6b68f847f94f04c44/h5py/api_compat.h:27:10: fatal error: hdf5.h: No such file or directory
#include "hdf5.h"
^~~~~~~~
compilation terminated
error: command 'aarch64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1:
需执行以下操作,安装缺少的依赖包,重新编译h5py

本文详细介绍在Firefly AIO-3399ProC开发板上部署RKNN Toolkit 1.6.0的过程,包括环境搭建、依赖安装及常见问题解决。
2885

被折叠的 条评论
为什么被折叠?



