CV工程师
2024-01-18 08:16:37 阅读:1447
领导给了一块香橙派5plus想要测试一下我们模型在这上面的推理速度。前段时间出差,现在回来了正好研究一下。
不得不说这玩意真的好坑呀,充电口用的是type-c口,但是一般的type-c口充电器又不能用,插上电以后只亮灯,不开机。要求的是5v-4a的电源适配器,恰好家里有个支持5v-5a的,然并卵,还是购买香橙派官网提供的适配器吧。
目前还没有开机,所以题目所说的“初玩体验”完全是在云~
虽然无法开机,但是仍然不影响我对这块板子的研究,或者说是对RK3588的研究,经过了解,这块板子的主控RK3588瑞芯微旗下的一款带NPU的芯片,我的理解就是带显卡的CPU。
# 1)安装virtualenv 环境、Python3.6 和 pip3
sudo apt-get install virtualenv \
sudo apt-get install python3 python3-dev python3-pip
# 2)安装相关依赖
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc
# 3)使用 virtualenv 管理 Python 环境并激活python环境
virtualenv -p /usr/bin/python3 venv
source venv/bin/activate
4. 安装RKNN SDK并检测
# 4)进入RKNN SDK文件夹并安装python依赖
cd RK_NPU_SDK_1.2.0/release/rknn-toolkit2-1.2.0
pip3 install -r doc/requirements_cp36-*.txt
# 5)安装 RKNN-Toolkit2,如rknn_toolkit2-1.3.0_11912b58-cp36-cp36m-linux_x86_64.whl
sudo pip3 install packages/rknn_toolkit2*cp36*.whl
# 6)检查RKNN-Toolkit2是否安装成功,可按ctrl+d组合键退出
(venv) firefly@T-chip:~/rknn-toolkit2$ python3
>>> from rknn.api import RKNN
>>>
最终效果:
正常来讲从第四步开始就有可能安装出现各种问题了。
这种问题比较容易解决,pip镜像下载:pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
安装报错的可能性有很多,我把我自己遇到的问题以及解决方案说一下。
Could not find a version that satisfies the requirement onnxruntime==1.6.0 (from rknn-toolkit2==1.2.0-f7bb160f) (from versions: 0.1.2, 0.1.3, 0.1.4, 0.2.1, 0.3.0, 0.4.0, 1.0.0, 1.1.0, 1.1.1, 1.1.2, 1.2.0, 1.3.0)
No matching distribution found for onnxruntime==1.6.0 (from rknn-toolkit2==1.2.0-f7bb160f)
经过一系列处理,我的解决方案是使用命令: pip install onnxruntime==1.6.0
安装即可。
其他处理办法: 实际上这个错误我网上找了一下解决方案,主要就是自己下载这个onnxruntime的whl,然后安装。
参考资料: https://blog.csdn.net/zichuanning520/article/details/125724571
结果遇到了这个问题:
ERROR: onnxruntime-1.6.0-cp36-cp36m-manylinux_x86_64.whl is not a supported wheel on this platform.
解决方案是重命名下载的这个whl,不过我没研究明白这个命名规则,于是就想自动安装,发现了上面直接pip安装的方法可以解决问题。
将RKNN SDK安装好以后就可以新建一个:onnx2rknn.py的文件,用于模型转换。代码:
from rknn.api import RKNN
import os
if __name__ == '__main__':
platform = 'rk3588'
'''step 1: create RKNN object'''
rknn = RKNN()
'''step 2: load the .onnx model'''
rknn.config(target_platform='rk3588')
print('--> Loading model')
ret = rknn.load_onnx('your onnx model.onnx')
if ret != 0:
print('load model failed')
exit(ret)
print('done')
'''step 3: building model'''
print('-->Building model')
ret = rknn.build(do_quantization=False)
if ret != 0:
print('build model failed')
exit()
print('done')
'''step 4: export and save the .rknn model'''
OUT_DIR = 'rknn_models'
RKNN_MODEL_PATH = './{}/actor_simple.rknn'.format(OUT_DIR)
if not os.path.exists(OUT_DIR):
os.mkdir(OUT_DIR)
print('--> Export RKNN model: {}'.format(RKNN_MODEL_PATH))
ret = rknn.export_rknn(RKNN_MODEL_PATH)
if ret != 0:
print('Export rknn model failed.')
exit(ret)
print('done')
'''step 5: release the model'''
rknn.release()
将上面的your onnx model换成自己的onnx名称,运行这段代码,既可在同目录下生成一个名为rknn_models的文件夹,生成的rknn模型就在这个文件夹下。
至此,在pc端的工作已经基本结束,接下来要做的是开发一个测试模型速度的小工具,然后等待orange pi5 plus电源的到来。
评论
扫描二维码获取文章详情
更多精彩内容尽在:WWW.ZNGG.NET