欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【深度学习】将模型pt模型转化成rknn模型,并在ubuntu搭建环境进行推理

【深度学习】将模型pt模型转化成rknn模型,并在ubuntu搭建环境进行推理

2025/9/24 6:10:27 来源:https://blog.csdn.net/weixin_40293999/article/details/143838171  浏览:    关键词:【深度学习】将模型pt模型转化成rknn模型,并在ubuntu搭建环境进行推理

说明

pytorch 训练出来的是pt权重,需要转成在瑞芯微板子上跑的rknn模型,但在Linux上无法运行rknn模型。
为了能够验证rknn的效果,而不用发版到嵌入式侧,所以需要:
模型转换 pt–》onnx-》rknn
在Linux上运行rknn,刚才说的在linux上无法运行rknn模型,但可以linux 通过usb插入瑞芯微的芯片,前后处理都在linux上,而推理在rknn上

所需仓库:
https://github.com/airockchip/yolov5/tree/master 模型转换使用
rknn-toolkit2-1.5.2
rknpu2
rknn_model_zoo

模型转换

# 切换conda env
# conda init
# conda activate rknn1
# python 路径 /home/justin/miniconda3/envs/rknn1/bin/python
# todo 把.pt 路径  --data 路径 改成传参的路径,并能改名
yolov5_path="/home/justin/Desktop/code/python_project/export/yolov5-master"
# exp_name="exp19"  一类的新模型
exp_name="exp11"
height=544
width=960
weight_path="/home/justin/Desktop/code/python_project/yolov5/runs/train/$exp_name/weights/best.pt"
data_path="/home/justin/Desktop/code/python_project/Jersey-Number/handball/data.yaml"
onnx_path="/home/justin/Desktop/code/python_project/yolov5/runs/train/$exp_name/weights/best.onnx"
rknn_path="/home/justin/Desktop/code/python_project/yolov5/runs/train/$exp_name/weights/best-640X640.rknn"cd $yolov5_path
/home/justin/miniconda3/envs/rknn1/bin/python export.py --rknpu --weight $weight_path  --imgsz $height $width --data $data_path
rknn_toolkit_path="/home/justin/Desktop/code/python_project/export/rknn-toolkit2-1.5.2/examples/onnx/yolov5"
cd $rknn_toolkit_path
/home/justin/miniconda3/envs/rknn1/bin/python export_from_yh.py $onnx_path  rv1106 i8 $rknn_path# cp /home/justin/Desktop/code/python_project/yolov5/runs/train/exp16/weights/best.rknn /home/data_for_ai_justin3/justin/handball/20241112-yh/handball/
# cp  /home/justin/Desktop/code/python_project/Jersey-Number/handball/data.yaml  /home/data_for_ai_justin3/justin/handball/20241112-yh/handball/# 下面是在windows 下的shell脚本
# adb push \\192.168.112.5\ai_justin3\justin\handball\20241112-yh\handball\best.rknn  /userdata/
# adb push \\192.168.112.5\ai_justin3\justin\handball\20241112-yh\handball\label.txt /userdata/

@todo 这里后面会全部改成传入参数的方式

到这里就完成了模型转换

搭建板子上的环境

在这里插入图片描述

https://github.com/rockchip-linux/rknpu2/blob/master/rknn_server_proxy.md
安装这个指引,该干嘛干嘛,主要是这几步骤。
RV1106启动步骤
RV1103/RV1106上使用的RKNPU Runtime库是librknnmrt.so,使用32-bit的rknn_server,启动步骤如下:

adb push RV1106/Linux/rknn_server/arm/usr/bin下的所有文件到/oem/usr/bin目录
adb push RV1106/Linux/librknn_api/armhf/librknnmrt.so到/oem/usr/lib目录
进入板子的串口终端,执行:
chmod +x /oem/usr/bin/rknn_server
chmod +x /oem/usr/bin/start_rknn.sh
chmod +x /oem/usr/bin/restart_rknn.sh
restart_rknn.sh
RV1106使用串口查看rknn_server详细日志
进入串口终端,设置日志等级
export RKNN_SERVER_LOGLEVEL=5
重启rknn_server进程
restart_rknn.sh
再次使用python接口连板推理
它先转成了 onnx,又转成了 rknn
然后进入 rknn_model_zoo\examples\yolov5\pythpn\yolov5.py

python yolov5.py --model_path /home/justin/Desktop/code/python_project/yolov5/runs/train/exp11/weights/best-640X640.rknn  --target rv1106 --device_id 9376f2d578f8bd36 --img_save --img_save_dir /home/data_for_ai_justin3/justin/handball/exp11  --img_folder /home/data_for_ai_justin3/justin/handball/20241114 --obj_thresh 0.35 --sample_ratio 0.1 --perf_debug --eval_mem

我有加了几个参数,大概就是这么一个意思。
然后还需要加的参数是, classes label文件 和 classes_id 文件,来回改文件的代码太麻烦了,不如直接给目录方便。
同时,其实也需要,obj_thresh 也用类的方式分开调参,否则太硬了,不灵活、

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词