码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [深度学习]基于C++和onnxruntime部署yolov10的onnx模型


    基于C++和ONNX Runtime部署YOLOv10的ONNX模型,可以遵循以下步骤:

    1. 准备环境:首先,确保已经下载后指定版本opencv和onnruntime的C++库。

    2. 模型转换:按照官方源码:https://github.com/THU-MIG/yolov10 安装好yolov10环境并将YOLOv10模型转换为ONNX格式。这通常涉及使用深度学习框架(如PyTorch或TensorFlow)加载原始模型,并导出为ONNX格式。转换指令

      1. # End-to-End ONNX
      2. yolo export model=jameslahm/yolov10{n/s/m/b/l/x} format=onnx opset=13 simplify
      3. # Predict with ONNX
      4. yolo predict model=yolov10n/s/m/b/l/x.onnx
    3. C++环境配置:在CMakeLists.txt项目中正确引用了opencv和ONNX Runtime的头文件,并链接到相应的库。这允许在C++代码中使用ONNX Runtime的功能。

    4. 加载模型:使用ONNX Runtime的API加载转换后的YOLOv10 ONNX模型。

    5. 执行推理:通过ONNX Runtime的推理引擎,将图像数据输入到模型中,并执行目标检测任务。

    6. 处理结果:解析模型输出的结果,这通常涉及将输出的张量数据转换为可理解的检测结果,如边界框坐标和类别标签。

    通过这些步骤,可以在C++环境中利用ONNX Runtime高效地部署YOLOv10模型,实现实时的目标检测功能。

    【测试环境】

    windows10 x64
    vs2019
    cmake==2.24.3
    onnxruntime==1.12.0
    opencv==4.7.0
    【使用步骤】
    首先cmake生成exe文件,然后将onnxruntime.dll和onnxruntime_providers_shared.dll放到exe一起,不然会提示报错0xc000007b,这是因为系统目录也有个onnxruntime.dll引发冲突,并把car.mp4也放到exe一起。运行直接输入
    yolov10.exe C:\Users\Administrator\Desktop\yolov10-onnx-cplus\models\yolov10n.onnx
    注意onnx路径要是你真实路径我的onnx路径是我桌面上地址

    【代码调用】

    注意onnxruntime使用的cpu版本库,如需使用GPU还需要修改代码才行

    1. #include "YOlov10Manager.h"
    2. #include <iostream>
    3. #include <opencv2/opencv.hpp>
    4. int main(int argc, char const *argv[])
    5. {
    6. std::string model_path = argv[1];
    7. cv::namedWindow("yolov10", cv::WINDOW_AUTOSIZE);
    8. Yolov10Manager detector(model_path);
    9. cv::VideoCapture cap("car.mp4");//这个地方也可以修改成视频路径或者摄像头索引
    10. if (!cap.isOpened())
    11. {
    12. std::cerr << "ERROR! Unable to open camera\n";
    13. return -1;
    14. }
    15. cv::Mat frame;
    16. std::cout << "Start detect" << std::endl << "Press any key to terminate" << std::endl;
    17. for (;;)
    18. {
    19. cap.read(frame);
    20. if (frame.empty())
    21. {
    22. std::cerr << "ERROR! blank frame grabbed\n";
    23. break;
    24. }
    25. auto timer = cv::getTickCount();
    26. std::vector<Detection> detections = detector.Inference(frame);
    27. double fps = cv::getTickFrequency() / ((double)cv::getTickCount() - timer);
    28. cv::putText(frame, "FPS: " + std::to_string(fps), cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2, 8);
    29. cv::Mat resultImg = detector.DrawImage(frame, detections);
    30. cv::imshow("yolov10", resultImg);
    31. if (cv::waitKey(5) >= 0)
    32. break;
    33. }
    34. return 0;
    35. }

    【视频演示】

    基于C++和onnxruntime部署yolov10的onnx模型_哔哩哔哩_bilibili测试环境:windows10 x64vs2019cmake==2.24.3onnxruntime==1.12.0opencv==4.7.0使用步骤:首先cmake生成exe文件,然后将onnxruntime.dll和onnxruntime_providers_shared.dll放到exe一起,不然会提示报错0xc000007b,这是因为系统目录也有个onnxruntime.dll引发冲突,并把c, 视频播放量 4、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 1、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:易语言部署yolox的onnx模型,yolov5最新版onnx部署Android安卓ncnn,C#使用纯opencvsharp部署yolov8-onnx图像分类模型,老师可真会玩!,使用C#部署yolov8的目标检测tensorrt模型,C# winform部署yolov10的onnx模型,YOLOv8检测界面-PyQt5实现,2024年新版【YOLOV5从入门到实战教程】B站最良心的YOLOV5全套教程(适合小白)含源码!—YOLOV5、YOLOV5实战、目标检测、计算机视觉,C#使用onnxruntime部署Detic检测2万1千种类别的物体,使用纯opencv部署yolov8目标检测模型onnxicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Zw4m1v7iz/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

    【源码下载】

  • 相关阅读:
    python基于PHP+MyQL的科研实验室管理系统
    常见IO模型(非常详细)
    通过云服务器对内网穿透实现外网访问群晖NAS
    智工教育:每年必考!教师编制这些考点必背!
    分组查询以及筛选的区别
    Go语言进阶,结构体与json字符串格式的互相转换
    DC-DC模块升压电源直流隔离低压升高压正负输出变换器
    [Linux] 网络层-----IP协议、ICMP协议、NAT技术
    【0146】判断System V shared memory以前的段是否存在并正在使用?(3)
    从C语言到C++(五)
  • 原文地址:https://blog.csdn.net/FL1623863129/article/details/139651791
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号