Conda简介
查看当前系统的环境列表
conda env list
base为基础环境
py3.6-rknn-1.7.3为模型转换环境,rknn-toolkit版本V1.7.3,python版本3.6
py3.6-tensorflow-2.5.0为tensorflow模型训练环境,tensorflow版本2.5.0,python版本3.6
py3.8-pytorch-1.13.0为pytorch、yolo模型训练环境,pytorch版本1.13.0,python版本3.8
进入模型转换环境
conda activate py3.6-rknn-1.7.3
进入tensorflow模型训练环境
conda activate py3.6-tensorflow-2.5.0
进入pytorch yolo模型训练环境
conda activate py3.8-pytorch-1.13.0
退出当前终端下的虚拟环境
conda deactivate
模型转换介绍
RV1126使用RKNN格式的模型文件。各深度学习框架不能直接使用,需要转换后才能放在RV1126上跑
模型转换环境版本介绍
rknn-toolkit V1.7.3
python==3.6
tensorflow==1.14.0
mxnet==1.5.0
torch==1.10.0
torchvision==0.11.0
opencv-python==4.3.0.38
模型转换实操
//进入模型环境
conda activate py3.6-rknn-1.7.3
cd ModelConvertSample/
转换ONNX ->RKNN
python convert-onnx-to-rknn-pre.py
注意提示缺少libcudart.so属正常现象,原因是虚拟机使用cpu处理无法使用GPU处理,所以没有显卡cuda库文件
该脚本读取"./original_model/best.onnx"模型文件,
使用数据集'./dataset/dataset1.txt',
转换后保存为'./rknn_model/yolov5-7.0-onnx.rknn'文件
转换pytorch ->RKNN
python convert-pytorch-to-rknn-pre.py
最终在rknn_model目录生成rknn文件
该脚本读取"./original_model/best.torchscript"模型文件,
使用数据集'./dataset/dataset1.txt',
转换后保存为'./rknn_model/yolov5-7.0-torchscript.rknn'文件
转换tensorflow ->RKNN
python convert-tensorflow-to-rknn-pre.py
该脚本读取'./original_model/ssd_mobilenet_v1_coco_2018_01_28/frozen_inference_graph.pb'
模型文件,
使用数据集'./dataset/dataset3.txt',
转换后保存为'./rknn_model/ssd_mobilenet_v1_coco.rknn'文件
转换tflite ->RKNN
python convert-tflite-to-rknn-pre.py
该脚本读取'./original_model/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224.tflite'模型文件,
使用数据集'./dataset/dataset2.txt',
转换后保存为'./rknn_model/mobilenet_v1_1.0_224.rknn'文件
转换结果:生成以下四个rknn模型文件,后续我们将对这些模型全部部署到开发板运行
退出环境
conda deactivate
转换其他模型
参考RK官方资料
https://github.com/rockchip-linux/rknn-toolkit
附:操作命令
一、TFLite预训练模型转换 tflite->rknn
说明:
TFLite预训练模型下载地址:https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md
下载MobileNet_v1_1.0_224
数据集: ILSVRC-2012-CLS image
标签文件:https://github.com/leferrad/tensorflow-mobilenet/blob/master/imagenet/labels.txt
convert-tflite-to-rknn.py
target = 'rv1126' //确定目标设备target
rknn = RKNN() //创建RKNN对象
rknn.config(quantized_dtype='asymmetric_affine-u8', //配置RKNN模型
mean_values=[[127.5, 127.5, 127.5]],#归一化
std_values=[[127.5, 127.5, 127.5]],
reorder_channel='0 1 2',#RGB
target_platform=[target])#指定平台
rknn.load_tflite(model='./original_model/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224.tflite')//加载模型
rknn.build(do_quantization=True, dataset='./dataset/dataset2.txt',pre_compile=True)//构建RKNN模型:指定参数需要量化,且指定量化数据集dataset2
rknn.release()# 释放RKNN对象
python convert-tflite-to-rknn-pre.py
二、TensorFlow预训练模型(ssd)转换rknn pb->rknn
TF预训练模型下载地址:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md
http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz
数据集:MSCOCO数据集https://cocodataset.org
Object(论文版本)有90类物体(加上一个背景类就是91类),label_map可参考:
https://github.com/tensorflow/models/blob/master/research/object_detection/data/mscoco_label_map.pbtxt
注:很多时候,在目标检测这块,只用到了原论文版本90类中的80类(加上背景类,就是81类)物体。
Object(2014年版本)和Object(2017年版本)的label_map对应的说明文件可参考:
https://github.com/tensorflow/models/blob/master/research/object_detection/data/mscoco_complete_label_map.pbtxt
python convert-tensorflow-to-rknn-pre.py