AIO-3399Pro刷ubuntu系统同时配置rknntoolkit 1.6.0 环境
由于本人所做项目需要将轻量级的深度学习算法进行部署,故前些日子购买了核心板为RK3399的深度学习开发板,用起来固然没有NVIDIA的jetson开发板舒服,但价格便宜,性价比较高,在前期配置环境时,走了不少弯路,今天将最完整的配置方法记录下来,希望能给新手提供一点帮助。切记,如果要用3399的板子,一定要到官方或者稍微大点儿公司(firefly、风火轮)的淘宝店去买,不然你一定会后悔!!!
一、刷官方ubuntu固件
板子一般拿到手上的时候里面默认刷的是android系统,由于个人需要在linux环境下开发,毕竟这样可以省下好多事,因此拿到手的第一件事就是刷机,有点儿类似于单片机烧写程序。详细步骤如下:
1.安装驱动
进入firefly官网,找到其产品AIO-3399Pro,点击资料下载,下载资料的网址为:https://www.t-firefly.com/doc/download/76.html
,下载其中的RK驱动助手和AndroidTools以及固件中的Ubuntu(GPT),固件下载尽量选择ubuntu18.04
版本的,后面刷固件要用到。
下载完成后,直接运行DriverInstall.exe文件,打开后直接点击驱动安装,驱动会自动安装。
2.进入板子刷机模式
驱动安装完并且固件下载完成后,便可进行刷机操作。先给板子断电,用USB线连接板子和电脑,打开所下载的AndriodTool工具,然后长按板子上的recovery键,长按的同时给板子供上电,此时可在工具中看到检测到一个loader设备,点击高级功能,点击进入maskrom,此时下方会提示进入maskrom模式。
3.刷固件
点击升级固件,然后点击固件按钮进行固件选择,固件解压后的文件格式为.img文件,导入固件后,软件会自动识别,后点击升级等待升级成功即可。若一次刷机没成功,可通过擦除Flash重试。
firefly所提供的固件使用起来非常方便,这是其他小公司所做不到的,并且刷机也没有那么麻烦,所以前面我建议买比较权威点淘宝店的板子。
注:
若一不小心把板子里原本的固件给刷没了,指长按recovery键也无法进入刷机模式的情况,如果遇到这种情况,先不要慌,可通过下面此网站https://wiki.t-firefly.com/AIO-3399ProC/04-maskrom_mode.html
中的方法进行尝试。
二、安装rknntoolkit 1.6.0开发环境
rknntoolkit1.3.0的开发环境本人也配置过,刚上手板子的人,一般在按照官方教程配置时,总会报许多错误,有空的时候,本人会把之前所遇到的错误汇总一下,供大家参考。
本次用AIO-3399Pro板子安装时,基本没遇到什么错误,大家可进行借鉴,相关的.whl包我会放在文章最后,让大家快些进行安装,毕竟在板子上编译的时候,是需要很长时间的。
1.更新DRV版本
在终端执行如下指令:
sudo apt update
sudo apt install firefly-3399pronpu-driver
更新完成后,查看DRV的版本
firefly@firefly:~$ dpkg -l | grep 3399pro
ii firefly-3399pronpu-driver 1.6.0 arm64 <insert up to 60 chars description>
2.安装合适的python版本
firefly提供的固件基本都是python3.7版本,但系统自带的是python2.7和python3.6,面对这种多python版本并存的情况,建议安装virtualenv进行管理,其实用方法类似于conda。
(1)安装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
(2)安装virtualenv,配置python环境
#创建 virtualenv环境
sudo apt install virtualenv #安装virtualenv软件
virtualenv -p /usr/bin/python3.7 venv #创建虚拟环境
source venv/bin/activate #激活venv环境
(venv) firefly@firefly:~$ python
Python 3.7.12 (default, Jan 15 2022, 18:42:10)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
此时查看python版本,可以看到python版本已经是python3.7,本人试了一下,不改变软连接,使用起来也没有太大影响。
3.安装rknntoolkit1.6.0环境依赖
首先进入刚刚创建的环境,指令为:
source venv/bin/activate
安装相关依赖包
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
sudo apt-get install libhdf5-dev
sudo apt-get install libopenblas-dev
pip3 install --upgrade pip #更新pip包的版本
pip3 install wheel setuptools #安装 Python 打包工具
4.安装numpy,opencv,h5py,onnx,grpcio
首先进入放相关.whl包的文件夹,本人的文件夹位置为:/home/firefly/rknnPack
,利用pip3 install
安装相关
包:
cd /home/firefly/rknnPack
pip3 install grpcio-1.36.1-cp37-cp37m-linux_aarch64.whl
pip3 install numpy-1.16.3-cp37-cp37m-linux_aarch64.whl
pip3 install h5py-2.8.0-cp37-cp37m-linux_aarch64.whl
pip3 install onnx-1.6.0-cp37-cp37m-linux_aarch64.whl
pip3 install opencv_python-4.3.0.38-cp37-cp37m-linux_aarch64.whl
5.安装rknntoolkit 1.6.0
接上面的操作,利用pip3 install
进行安装:
pip3 install rknn_toolkit-1.6.0-cp37-cp37m-linux_aarch64.whl
6.安装tensorflow 2.0 和 pytorch 1.5.0
由于相关的包都是本人已经在板子上编译过的,所以安装起来比较简单,还是直接用 pip3 install
进行安装:
pip3 install tensorflow-2.0.0-cp37-none-linux_aarch64.whl
pip3 install torch-1.5.0a0+923085e-cp37-cp37m-linux_aarch64.whl
pip3 install torchvision-0.6.0a0+fe36f06-cp37-cp37m-linux_aarch64.whl
文章最后所提供的安装包中还有其他版本,大家可以选择性进行安装。
三、运行官方代码进行测试
直接下载官方提供的测试代码,这里选用pytorch的测试案例,定位到指定文件夹,运行test.py文件进行测试:
--> Init runtime environment
I NPUTransfer: Starting NPU Transfer Client, Transfer version 2.1.0 (b5861e7@2020-11-23T11:50:51)
D RKNNAPI: ==============================================
D RKNNAPI: RKNN VERSION:
D RKNNAPI: API: 1.6.0 (79320de build: 2020-12-29 10:57:09)
D RKNNAPI: DRV: 1.6.0 (159d2d3 build: 2021-01-12 15:23:09)
D RKNNAPI: ==============================================
done
--> Running model
D RKNNAPI: __can_use_fixed_point: use_fixed_point = 1.
mobilenet_v1
-----TOP 5-----
[156]: 0.8505859375
[155]: 0.0916748046875
[205]: 0.013580322265625
[284]: 0.00646209716796875
[194]: 0.0024871826171875
done
--> Begin evaluate model performance
W When performing performance evaluation, inputs can be set to None to use fake inputs.
========================================================================
Performance
========================================================================
Total Time(us): 5551
FPS: 180.15
========================================================================
done
四、总结
此次只是介绍了rknn环境的配置,目的是让新手少走些弯路,后面的博文中个人会更新下自己针对这块板子的一些轻量级模型部署。最后附上RKNN相关whl包的链接: