模型部署RV11126的流程大致为:训练得到.pth模型、pth2onnx、onnx2rknn,最后在边缘计算设备上完成部署,本文介绍RKNN的环境搭建的另一种方法——windows上搭建。个人更推荐linux配置RKNN环境,参考:深度学习模型部署RV1126准备工作(一)——Ubuntu搭建Rknn环境_ubuntu rknn环境配置-优快云博客
一、所需条件
- windows系统
二、Windows配置rknn环境
(1)
安装anaconda3:
(2)在
windows
中安装RKNN-toolkit-1.7.1,将onnx文件转换为rknn文件
rknn_toolkit文件下载地址:Index of /pypi/simple/rknn-toolkit/ (rock-chips.com)
pytorch配置:
conda create --name=rknn python=3.6.8 //创建环境
conda activate rknn //进入环境
pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html --user
pip install mxnet==1.5.0
pip install opencv-python==3.4.9.31 //若直接下载rknn,容易进程卡住
pip install gluoncv
pip install rknn_toolkit-1.7.1-cp36-cp36m-win_amd64.whl
//输入以下指令若未报错,则安装成功
python
from rknn.api import RKNN
tensorflow配置,下载地址如下:
https://download.pytorch.org/whl/torch/
download.pytorch.org/whl/torchvision/
conda create -n rv1126 python=3.6
conda activate rv1126
pip install tensorflow==1.14.0
pip install "torch-1.5.1+cpu-cp36-cp36m-win_amd64.whl"
pip install "torchvision-0.4.0+cpu-cp36-cp36m-win_amd64.whl"
pip install mxnet==1.5.0
pip install rknn_toolkit-1.7.1-cp36-cp36m-win_amd64.whl
//出现版本不匹配问题
pip uninstall mxnet
pip install mxnet==1.0.0
(3)tensorflow的onnx_rknn的转换架构,
仅为示例,之后的博客还会详细介绍onnx转rknn的代码
:
import os
import urllib
import traceback
import time
import sys
from rknn.api import RKNN
ONNX_MODEL = 'best.onnx'
RKNN_MODEL = 'yolov5s.rknn'
DATASET = './dataset.txt'
QUANTIZE_ON = True
BOX_THRESH = 0.5
NMS_THRESH = 0.6
IMG_SIZE = 640
if __name__ == '__main__':
# Create RKNN object
rknn = RKNN()
if not os.path.exists(ONNX_MODEL):
print('model not exist')
exit(-1)
# pre-process config
print('--> Config model')
rknn.config(reorder_channel='0 1 2',
mean_values=[[0, 0, 0]],
std_values=[[255, 255, 255]],
optimization_level=3,
target_platform='rv1126',
output_optimize=1,
quantize_input_node=QUANTIZE_ON)
print('done')
# Load ONNX model,output的名称需要修改
print('--> Loading model')
ret = rknn.load_onnx(model=ONNX_MODEL,outputs=['output', '350', '416', '482'])
if ret != 0:
print('Load yolov5 failed!')
exit(ret)
print('done')
# Build model
print('--> Building model')
ret = rknn.build(do_quantization=False, dataset=DATASET) #do_quantization=QUANTIZE_ON
if ret != 0:
print('Build yolov5 failed!')
exit(ret)
print('done')
# Export RKNN model
print('--> Export RKNN model')
ret = rknn.export_rknn(RKNN_MODEL)
if ret != 0:
print('Export yolov5rknn failed!')
exit(ret)
print('done')
rknn.release()
参考:
yolov5-5.0训练模型+瑞芯微rv1126上实现模型部署_rv1126部署yolov5-优快云博客
RKNN-toolkit-1.7.1 安装踩坑记录(安装成功)_yolov5 和 rknn toolkit 1.7.1-优快云博客