当前位置: 首页 > article >正文

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 


http://www.kler.cn/a/525755.html

相关文章:

  • 【自学笔记】计算机网络的重点知识点-持续更新
  • 基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发
  • 从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
  • 具身智能研究报告
  • 渗透测试之WAF规则触发绕过规则之规则库绕过方式
  • Unity游戏(Assault空对地打击)开发(1) 创建项目和选择插件
  • 开源 OA 办公系统
  • AI大模型开发原理篇-9:GPT模型的概念和基本结构
  • 亚博microros小车-原生ubuntu支持系列:17 gmapping
  • 指针(C语言)从0到1掌握指针,为后续学习c++打下基础
  • 小程序-基础加强-自定义组件
  • Java Stream API中的状态性操作与陷阱
  • JSR303校验教学
  • 某盾Blackbox参数参数逆向
  • 网络安全技术简介
  • Linux gdisk 命令使用详解
  • 跨平台物联网漏洞挖掘算法评估框架设计与实现文献综述之总结与展望
  • 未来可期|在真实与虚拟之间:AI+游戏如何再造娱乐体验
  • 74-《猴面小龙兰》
  • EtherCAT主站IGH-- 22 -- IGH之fsm_sii.h/c文件解析
  • unity学习23:场景scene相关,场景信息,场景跳转
  • HCIA-Access V2.5_10_1_PPP协议
  • 【Block总结】OutlookAttention注意力,捕捉细节和局部特征|即插即用
  • vim操作简要记录
  • 日志技术的使用
  • 网络编程套接字(上)