OK3588的NPU加速推理MobileNet——Python语言篇
- Rknn_toolkit_lite2
- Miniconda安装
- 创建虚拟环境并运行NPU加速推理
- 代码注释
Rknn_toolkit_lite2
RKNN Toolkit Lite2 主要用于 RKNN 模型在 Rockchip NPU 上的部署。
在使用 RKNN Toolkit Lite2 之前,用户需要先通过 RKNN Toolkit2 将各深度学习框架导出的模
型转成 RKNN 模型。转换模型的方法在这篇博客里面讲到 使用rknn-toolkit2把YOLOV5部署到OK3588上。
RKNN-Toolkit-Lite2 为 Rockchip NPU 平台(RK3566、RK3568、RK3588)提供 Python 编程接口,帮助用户部署 RKNN 模型并加速 AI 应用程序的实现。提供了一种在RK3588上用python加速,开发应用的方法。
先把rknn_toolkit_lite2下载到板卡上
git clone https://github.com/rockchip-linux/rknn-toolkit2
cd rknn-toolkit2
ls
就看到了rknn_toolkit_lite2
Miniconda安装
Miniconda下载地址
选择这个版本下载
bash Miniconda3-py38_23.5.2-0-Linux-aarch64.sh
安装注意选择yes
创建虚拟环境并运行NPU加速推理
conda create -n ok3588 python=3.8
conda activate ok3588
cd rknn_toolkit_lite2/
pip install rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl #python3.8的虚拟环境,安装python3.8的rknn_toolkit_lite轮子
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple # 通过清华源安装opencv
进入相应的路径
cd rknn-toolkit2/rknn_toolkit_lite2/examples/inference_with_lite/
python test.py
如图
代码注释
if __name__ == '__main__':
host_name = get_host()#获取硬件平台信息
if host_name == 'RK3566_RK3568':
rknn_model = RK3566_RK3568_RKNN_MODEL
elif host_name == 'RK3562':
rknn_model = RK3562_RKNN_MODEL
elif host_name == 'RK3588':
rknn_model = RK3588_RKNN_MODEL
else:
print("This demo cannot run on the current platform: {}".format(host_name))
exit(-1)
rknn_lite = RKNNLite()
# load RKNN model
print('--> Load RKNN model')
ret = rknn_lite.load_rknn(rknn_model)#导入RKNN模型
if ret != 0:
print('Load RKNN model failed')
exit(ret)
print('done')
ori_img = cv2.imread('./space_shuttle_224.jpg')#读取图片
img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)#数据格式转换
# init runtime environment
print('--> Init runtime environment')#初始化runtime 环境
# run on RK356x/RK3588 with Debian OS, do not need specify target.
if host_name == 'RK3588':
ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_0)
else:
ret = rknn_lite.init_runtime()
if ret != 0:
print('Init runtime environment failed')
exit(ret)
print('done')
# Inference
print('--> Running model')
outputs = rknn_lite.inference(inputs=[img])#执行推理
show_top5(outputs) #打印推理结果
print('done')
rknn_lite.release()