openRv1126 AI算法部署实战之——TensorFlow TFLite Pytorch ONNX等模型转换实战

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 
相关推荐
Landy_Jay4 分钟前
跟李沐学AI:视频生成类论文精读(Movie Gen、HunyuanVideo)
人工智能
hamster202114 分钟前
力扣【501. 二叉搜索树中的众数】Java题解
java·算法·leetcode
花落已飘18 分钟前
RK3568 opencv播放视频
人工智能·opencv·音视频
Stuomasi_xiaoxin23 分钟前
深度剖析 PyTorch框架:从基础概念到高级应用的深度学习之旅!
人工智能·pytorch·深度学习
东临碣石8223 分钟前
【AI论文】Transformer^2: 自适应大语言模型
人工智能·语言模型·transformer
新加坡内哥谈技术44 分钟前
阿里巴巴Qwen团队发布AI模型,可操控PC和手机
人工智能·深度学习·学习·语言模型
Kevin Kou1 小时前
编程题-三数之和(中等)
数据结构·c++·算法
->yjy1 小时前
jupyter版本所引起的扩展插件问题
人工智能·python·jupyter
电棍2331 小时前
vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列
人工智能·pytorch·conda
kcarly2 小时前
Microsoft Power BI:融合 AI 的文本分析
人工智能·gpt·microsoft·bi