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

yolov12 部署瑞芯微 rk3588、RKNN 部署工程难度小、模型推理速度快

yolov12 部署又来了

特别说明:如有侵权告知删除,谢谢。

完整代码:包括onnx转rknn和测试代码、rknn板端部署C++代码:

【onnx转rknn和测试代码】

【rknn板端部署C++代码】

1 模型训练

  yolov12训练官方开源的已经非常详细了,参考官方代码。

2 导出 yolov12 onnx

   导出onnx修改以下几处。
第一处:修改导出onnx的检测头
在这里插入图片描述

        # 导出 onnx 增加
        y = []
        for i in range(self.nl):
            t1 = self.cv2[i](x[i])
            t2 = self.cv3[i](x[i])
            y.append(t1)
            y.append(t2)
        return y

第二处:增加保存onnx代码
在这里插入图片描述

        print("===========  onnx =========== ")
        import torch
        dummy_input = torch.randn(1, 3, 640, 640)
        input_names = ["data"]
        output_names = ["output1", "output2", "output3", "output4", "output5", "output6"]
        torch.onnx.export(self.model, dummy_input, "./yolov12n_zq.onnx",
                          verbose=False, input_names=input_names, output_names=output_names, opset_version=11)
        print("======================== convert onnx Finished! .... ")

修改完以上两处,运行以下代码:

from ultralytics import YOLO
model = YOLO(model='yolov12n.pt')  # load a pretrained model (recommended for training)
results = model(task='detect', source='./test.jpg', save=True)  # predict on an image

特别说明: 修改完以上两处后运行会报错,但不影响onnx的生成;生成onnx后强烈建议用from onnxsim import simplify 处理一下再转rknn。

import onnx
from onnxsim import simplify

model_path = 'yolov12n.onnx'
model_proto = onnx.load(model_path)
model_sim, check = simplify(model_proto)
onnx.save(model_sim, 'yolov12n_smi.onnx')

print('simplify finished.')

3 测试onnx效果

pytorch效果
在这里插入图片描述
onnx效果
在这里插入图片描述

4 onnx转rknn

onnx转rknn后仿真结果
在这里插入图片描述

5 rk3588板子测试yolov12模型

使用的 rknn_toolkit 版本:rknn_toolkit2-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
C++代码中的库和工具链的版本注意对应适配。

1)编译

cd examples/rknn_yolov12_demo_dfl_open

bash build-linux_RK3588.sh

2)运行

cd install/rknn_yolo_demo_Linux

./rknn_yolo_demo 

注意:修改模型、测试图像、保存图像的路径,修改文件为src下的main.cc

int main(int argc, char **argv)
{
    char model_path[256] = "/home/zhangqian/rknn/examples/rknn_yolov12_demo_dfl_open/model/RK3588/yolov12n_zq.r";
    char image_path[256] = "/home/zhangqian/rknn/examples/rknn_yolov12_demo_dfl_open/test.jpg";
    char save_image_path[256] = "/home/zhangqian/rknn/examples/rknn_yolov12_demo_dfl_open/test_result.jpg";

    detect(model_path, image_path, save_image_path);
    return 0;
}

3)板端效果和时耗

在这里插入图片描述

在这里插入图片描述
这个时耗非常高,查看转rknn时的日志,很多操作切换到cpu上进行计算。
在这里插入图片描述

相关文章:

  • 计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
  • 计算机网络之传输层(tcp协议)
  • kubernetes 高可用集群搭建
  • Dify v1.0.0 里程碑版本正式亮相
  • Metal学习笔记九:光照基础
  • WPF高级 | WPF 与数据库交互:连接、查询与数据更新
  • 《操作系统 - 清华大学》 8 -11:进程管理:上下文切换
  • 从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(六) 导航栏 和 个人信息设置
  • C语言基础系列【17】位域
  • 【NLP 30、大模型中的 ”Token“】
  • Tagr 5 for Mac v5.8.0 [MAS] 音频标签编辑工具 支持M、Intel芯片
  • 4.万事开头难—第一个Java程序
  • 使用Maven搭建Spring Boot框架
  • DH法建立6自由度机械臂正运动学模型
  • python (第九章 项目开发阶段)
  • explore与explode词源故事
  • 高频面试题(含笔试高频算法整理)基本总结回顾16
  • 992. K 个不同整数的子数组
  • nginx+keepalived实现高可用负载均衡
  • Python中文自然语言处理库SnowNLP
  • python人狗大csdn/网站自然排名怎么优化
  • 在家没事做建什么网站好/关键词排名优化公司哪家好
  • 网站seo策略/58同城如何发广告
  • 我想做网站怎么做昆山/上海seo优化bwyseo
  • 外贸企业网站推广公司/在线客服系统
  • wordpress网站建设/网络广告网站